From 59fb0d69cb6bed0488537bb2710a20823d795355 Mon Sep 17 00:00:00 2001 From: Stephen Crosby Date: Sun, 15 Mar 2015 17:49:32 -0700 Subject: [PATCH] new image icon interface --- Gemfile.lock | 4 ++-- app/assets/javascripts/form.js | 10 ++++++++-- app/assets/stylesheets/application.css.erb | 6 ------ app/assets/stylesheets/errbit.css.erb | 34 +++++++++++++++++++++++++++++----- app/assets/stylesheets/issue_tracker_icons.css.erb | 9 --------- app/decorators/issue_tracker_decorator.rb | 9 +++++++++ app/helpers/application_helper.rb | 1 - app/models/issue_tracker.rb | 4 ++++ app/views/apps/_issue_tracker_fields.html.haml | 7 +------ config/initializers/assets.rb | 3 --- 10 files changed, 53 insertions(+), 34 deletions(-) delete mode 100644 app/assets/stylesheets/issue_tracker_icons.css.erb diff --git a/Gemfile.lock b/Gemfile.lock index 8b78ff6..fdabd8a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,6 +1,6 @@ GIT remote: git://github.com/errbit/errbit_github_plugin.git - revision: 7eb48d540b94d2fa4b8f9805ec0148322ae2bffe + revision: 3597f2d2c6aa75e014251747a30eeb5d19f641dd specs: errbit_github_plugin (0.1.0) errbit_plugin @@ -8,7 +8,7 @@ GIT GIT remote: git://github.com/errbit/errbit_plugin.git - revision: 6a0b93d71a6b4545198f0c68b99b8e8f9281c17e + revision: 9cfe43119be46bfa36cbf4b940b80d39229595ef specs: errbit_plugin (0.4.0) diff --git a/app/assets/javascripts/form.js b/app/assets/javascripts/form.js index b79ceca..0c2e054 100644 --- a/app/assets/javascripts/form.js +++ b/app/assets/javascripts/form.js @@ -82,11 +82,17 @@ function activateTypeSelector(field_class, section_class) { .attr('disabled','disabled').val(''); $('div.'+field_class).find('.choose input[name*=type]').on('click', function(){ + var input = $(this); // Look for section in 'data-section', and fall back to 'value' - var chosen = $(this).data("section") || $(this).val(); - var wrapper = $(this).closest('.nested'); + var chosen = input.data("section") || input.val(); + var wrapper = input.closest('.nested'); + var allLabels = wrapper.find('.label_radio'); + wrapper.find('div.chosen.'+section_class).removeClass('chosen').find('input').attr('disabled','disabled'); wrapper.find('div.'+section_class+'.'+chosen).addClass('chosen').find('input').removeAttr('disabled'); + + wrapper.find('.icon').each(function(){ $(this).attr('src', $(this).data('iconInactive')) }); + input.siblings('.icon').each(function(){ $(this).attr('src', $(this).data('iconCreate')) }); }); } diff --git a/app/assets/stylesheets/application.css.erb b/app/assets/stylesheets/application.css.erb index 6a5032e..2ddf0e9 100644 --- a/app/assets/stylesheets/application.css.erb +++ b/app/assets/stylesheets/application.css.erb @@ -2,12 +2,6 @@ *= require reset *= require jquery.alerts *= require errbit - *= require issue_tracker_icons *= require notification_service_icons *= require_self */ - -// Allow any gems named 'errbit_*' to require their own assets -<% Gem.loaded_specs.keys.grep(/^errbit_/).each do |plugin| - require_asset(plugin) rescue Sprockets::FileNotFound -end %> diff --git a/app/assets/stylesheets/errbit.css.erb b/app/assets/stylesheets/errbit.css.erb index 63f92ab..be9840d 100644 --- a/app/assets/stylesheets/errbit.css.erb +++ b/app/assets/stylesheets/errbit.css.erb @@ -552,31 +552,55 @@ div.nested .choose { margin-bottom: 0.5em; } -div.issue_tracker.nested .choose, div.notification_service.nested .choose { +div.issue_tracker.nested .choose { background-color: #ebebeb; border: 1px solid #dddddd; margin: 0 0 15px; padding: 12px; } -div.issue_tracker.nested img, div.notification_service.nested img { + +div.notification_service.nested .choose { + background-color: #ebebeb; + border: 1px solid #dddddd; + margin: 0 0 15px; + padding: 12px; + +} +div.issue_tracker.nested img { + vertical-align: middle; +} + +div.notification_service.nested img { vertical-align: middle; } /* Icons for Issue Tracker Radio Buttons */ -div.issue_tracker.nested label.label_radio, div.notification_service.nested label.label_radio { +div.issue_tracker.nested label.label_radio { + color: #929292; + margin-right: 8px; +} + +div.notification_service.nested label.label_radio { color: #929292; padding-left: 33px; margin-bottom: 6px; margin-right: 8px; line-height: 30px; } -div.issue_tracker.nested .choose, div.notification_service.nested .choose { + +div.notification_service.nested .choose { padding-bottom: 6px; } + div.issue_tracker.nested label.label_radio:hover, div.notification_service.nested label.label_radio:hover { color: #696969; } -div.issue_tracker.nested .label_radio input, div.notification_service.nested .label_radio input { + +div.issue_tracker.nested .label_radio input { + display: none; +} + +div.notification_service.nested .label_radio input { position: absolute; left: -9999px; } diff --git a/app/assets/stylesheets/issue_tracker_icons.css.erb b/app/assets/stylesheets/issue_tracker_icons.css.erb deleted file mode 100644 index fca8eae..0000000 --- a/app/assets/stylesheets/issue_tracker_icons.css.erb +++ /dev/null @@ -1,9 +0,0 @@ -/* Issue Tracker inactive, select, create and goto icons */ - -<% ErrbitPlugin::Registry.issue_trackers.keys.each do |label| %> -div.issue_tracker.nested label.<%= label %> { background: url(<%= asset_path "#{ label }_inactive.png" %>) no-repeat; } -div.issue_tracker.nested label.r_on.<%= label %> { background: url(<%= asset_path "#{ label }_create.png" %>) no-repeat; } -#action-bar a.<%= label %>_create { background: transparent url(<%= asset_path "#{ label }_create.png" %>) 6px 5px no-repeat; } -#action-bar a.<%= label %>_goto { background: transparent url(<%= asset_path "#{ label }_goto.png" %>) 6px 5px no-repeat; } -<% end %> - diff --git a/app/decorators/issue_tracker_decorator.rb b/app/decorators/issue_tracker_decorator.rb index c7ab0e4..5f8e0a9 100644 --- a/app/decorators/issue_tracker_decorator.rb +++ b/app/decorators/issue_tracker_decorator.rb @@ -14,6 +14,15 @@ class IssueTrackerDecorator < Draper::Decorator end end + def icons + tracker_icons = object.icons + return unless tracker_icons + + tracker_icons.reduce({}) do |c, (k,v)| + c[k] = "data:#{v[0]};base64,#{Base64.encode64(v[1])}"; c + end + end + def note object.note.html_safe end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index f100e82..49f4948 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -79,4 +79,3 @@ module ApplicationHelper end end - diff --git a/app/models/issue_tracker.rb b/app/models/issue_tracker.rb index b4648b3..09cefba 100644 --- a/app/models/issue_tracker.rb +++ b/app/models/issue_tracker.rb @@ -18,6 +18,10 @@ class IssueTracker end end + def type_tracker + self.attributes['type_tracker'] ? self.attributes['type_tracker'] : 'none' + end + # Allow the tracker to validate its own params def validate_tracker (tracker.errors || {}).each do |k,v| diff --git a/app/views/apps/_issue_tracker_fields.html.haml b/app/views/apps/_issue_tracker_fields.html.haml index 36e9228..735130a 100644 --- a/app/views/apps/_issue_tracker_fields.html.haml +++ b/app/views/apps/_issue_tracker_fields.html.haml @@ -5,6 +5,7 @@ %div.choose - issue_tracker_form.object.issue_trackers do |tracker| = issue_tracker_form.label :type_tracker, :class => "label_radio #{tracker.label}", :value => tracker.key do + %img.icon{"src" => tracker.icons[:inactive], "data-icon" => tracker.icons} = issue_tracker_form.radio_button :type_tracker, tracker.key, 'data-section' => tracker.label = tracker.label @@ -15,9 +16,3 @@ - tracker.fields do |field| = options_form.label field.key, field.label = field.input(options_form, issue_tracker_form.object) - - .image_preloader - - issue_tracker_form.object.issue_trackers do |tracker| - = image_tag "#{tracker.label}_inactive.png" - = image_tag "#{tracker.label}_create.png" - diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index df7ec59..d2f4ec3 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -6,6 +6,3 @@ Rails.application.config.assets.version = '1.0' # Precompile additional assets. # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. # Rails.application.config.assets.precompile += %w( search.js ) - -# Need to initialize Rails environment for issue_tracker_icons.css.erb -Rails.application.config.assets.initialize_on_precompile = true -- libgit2 0.21.2