Commit 59fb0d69cb6bed0488537bb2710a20823d795355

Authored by Stephen Crosby
1 parent 6cf43dc5
Exists in master and in 1 other branch production

new image icon interface

1 GIT 1 GIT
2 remote: git://github.com/errbit/errbit_github_plugin.git 2 remote: git://github.com/errbit/errbit_github_plugin.git
3 - revision: 7eb48d540b94d2fa4b8f9805ec0148322ae2bffe 3 + revision: 3597f2d2c6aa75e014251747a30eeb5d19f641dd
4 specs: 4 specs:
5 errbit_github_plugin (0.1.0) 5 errbit_github_plugin (0.1.0)
6 errbit_plugin 6 errbit_plugin
@@ -8,7 +8,7 @@ GIT @@ -8,7 +8,7 @@ GIT
8 8
9 GIT 9 GIT
10 remote: git://github.com/errbit/errbit_plugin.git 10 remote: git://github.com/errbit/errbit_plugin.git
11 - revision: 6a0b93d71a6b4545198f0c68b99b8e8f9281c17e 11 + revision: 9cfe43119be46bfa36cbf4b940b80d39229595ef
12 specs: 12 specs:
13 errbit_plugin (0.4.0) 13 errbit_plugin (0.4.0)
14 14
app/assets/javascripts/form.js
@@ -82,11 +82,17 @@ function activateTypeSelector(field_class, section_class) { @@ -82,11 +82,17 @@ function activateTypeSelector(field_class, section_class) {
82 .attr('disabled','disabled').val(''); 82 .attr('disabled','disabled').val('');
83 83
84 $('div.'+field_class).find('.choose input[name*=type]').on('click', function(){ 84 $('div.'+field_class).find('.choose input[name*=type]').on('click', function(){
  85 + var input = $(this);
85 // Look for section in 'data-section', and fall back to 'value' 86 // Look for section in 'data-section', and fall back to 'value'
86 - var chosen = $(this).data("section") || $(this).val();  
87 - var wrapper = $(this).closest('.nested'); 87 + var chosen = input.data("section") || input.val();
  88 + var wrapper = input.closest('.nested');
  89 + var allLabels = wrapper.find('.label_radio');
  90 +
88 wrapper.find('div.chosen.'+section_class).removeClass('chosen').find('input').attr('disabled','disabled'); 91 wrapper.find('div.chosen.'+section_class).removeClass('chosen').find('input').attr('disabled','disabled');
89 wrapper.find('div.'+section_class+'.'+chosen).addClass('chosen').find('input').removeAttr('disabled'); 92 wrapper.find('div.'+section_class+'.'+chosen).addClass('chosen').find('input').removeAttr('disabled');
  93 +
  94 + wrapper.find('.icon').each(function(){ $(this).attr('src', $(this).data('iconInactive')) });
  95 + input.siblings('.icon').each(function(){ $(this).attr('src', $(this).data('iconCreate')) });
90 }); 96 });
91 } 97 }
92 98
app/assets/stylesheets/application.css.erb
@@ -2,12 +2,6 @@ @@ -2,12 +2,6 @@
2 *= require reset 2 *= require reset
3 *= require jquery.alerts 3 *= require jquery.alerts
4 *= require errbit 4 *= require errbit
5 - *= require issue_tracker_icons  
6 *= require notification_service_icons 5 *= require notification_service_icons
7 *= require_self 6 *= require_self
8 */ 7 */
9 -  
10 -// Allow any gems named 'errbit_*' to require their own assets  
11 -<% Gem.loaded_specs.keys.grep(/^errbit_/).each do |plugin|  
12 - require_asset(plugin) rescue Sprockets::FileNotFound  
13 -end %>  
app/assets/stylesheets/errbit.css.erb
@@ -552,31 +552,55 @@ div.nested .choose { @@ -552,31 +552,55 @@ div.nested .choose {
552 margin-bottom: 0.5em; 552 margin-bottom: 0.5em;
553 } 553 }
554 554
555 -div.issue_tracker.nested .choose, div.notification_service.nested .choose { 555 +div.issue_tracker.nested .choose {
556 background-color: #ebebeb; 556 background-color: #ebebeb;
557 border: 1px solid #dddddd; 557 border: 1px solid #dddddd;
558 margin: 0 0 15px; 558 margin: 0 0 15px;
559 padding: 12px; 559 padding: 12px;
560 } 560 }
561 -div.issue_tracker.nested img, div.notification_service.nested img { 561 +
  562 +div.notification_service.nested .choose {
  563 + background-color: #ebebeb;
  564 + border: 1px solid #dddddd;
  565 + margin: 0 0 15px;
  566 + padding: 12px;
  567 +
  568 +}
  569 +div.issue_tracker.nested img {
  570 + vertical-align: middle;
  571 +}
  572 +
  573 +div.notification_service.nested img {
562 vertical-align: middle; 574 vertical-align: middle;
563 } 575 }
564 576
565 /* Icons for Issue Tracker Radio Buttons */ 577 /* Icons for Issue Tracker Radio Buttons */
566 -div.issue_tracker.nested label.label_radio, div.notification_service.nested label.label_radio { 578 +div.issue_tracker.nested label.label_radio {
  579 + color: #929292;
  580 + margin-right: 8px;
  581 +}
  582 +
  583 +div.notification_service.nested label.label_radio {
567 color: #929292; 584 color: #929292;
568 padding-left: 33px; 585 padding-left: 33px;
569 margin-bottom: 6px; 586 margin-bottom: 6px;
570 margin-right: 8px; 587 margin-right: 8px;
571 line-height: 30px; 588 line-height: 30px;
572 } 589 }
573 -div.issue_tracker.nested .choose, div.notification_service.nested .choose { 590 +
  591 +div.notification_service.nested .choose {
574 padding-bottom: 6px; 592 padding-bottom: 6px;
575 } 593 }
  594 +
576 div.issue_tracker.nested label.label_radio:hover, div.notification_service.nested label.label_radio:hover { 595 div.issue_tracker.nested label.label_radio:hover, div.notification_service.nested label.label_radio:hover {
577 color: #696969; 596 color: #696969;
578 } 597 }
579 -div.issue_tracker.nested .label_radio input, div.notification_service.nested .label_radio input { 598 +
  599 +div.issue_tracker.nested .label_radio input {
  600 + display: none;
  601 +}
  602 +
  603 +div.notification_service.nested .label_radio input {
580 position: absolute; left: -9999px; 604 position: absolute; left: -9999px;
581 } 605 }
582 606
app/assets/stylesheets/issue_tracker_icons.css.erb
@@ -1,9 +0,0 @@ @@ -1,9 +0,0 @@
1 -/* Issue Tracker inactive, select, create and goto icons */  
2 -  
3 -<% ErrbitPlugin::Registry.issue_trackers.keys.each do |label| %>  
4 -div.issue_tracker.nested label.<%= label %> { background: url(<%= asset_path "#{ label }_inactive.png" %>) no-repeat; }  
5 -div.issue_tracker.nested label.r_on.<%= label %> { background: url(<%= asset_path "#{ label }_create.png" %>) no-repeat; }  
6 -#action-bar a.<%= label %>_create { background: transparent url(<%= asset_path "#{ label }_create.png" %>) 6px 5px no-repeat; }  
7 -#action-bar a.<%= label %>_goto { background: transparent url(<%= asset_path "#{ label }_goto.png" %>) 6px 5px no-repeat; }  
8 -<% end %>  
9 -  
app/decorators/issue_tracker_decorator.rb
@@ -14,6 +14,15 @@ class IssueTrackerDecorator &lt; Draper::Decorator @@ -14,6 +14,15 @@ class IssueTrackerDecorator &lt; Draper::Decorator
14 end 14 end
15 end 15 end
16 16
  17 + def icons
  18 + tracker_icons = object.icons
  19 + return unless tracker_icons
  20 +
  21 + tracker_icons.reduce({}) do |c, (k,v)|
  22 + c[k] = "data:#{v[0]};base64,#{Base64.encode64(v[1])}"; c
  23 + end
  24 + end
  25 +
17 def note 26 def note
18 object.note.html_safe 27 object.note.html_safe
19 end 28 end
app/helpers/application_helper.rb
@@ -79,4 +79,3 @@ module ApplicationHelper @@ -79,4 +79,3 @@ module ApplicationHelper
79 end 79 end
80 80
81 end 81 end
82 -  
app/models/issue_tracker.rb
@@ -18,6 +18,10 @@ class IssueTracker @@ -18,6 +18,10 @@ class IssueTracker
18 end 18 end
19 end 19 end
20 20
  21 + def type_tracker
  22 + self.attributes['type_tracker'] ? self.attributes['type_tracker'] : 'none'
  23 + end
  24 +
21 # Allow the tracker to validate its own params 25 # Allow the tracker to validate its own params
22 def validate_tracker 26 def validate_tracker
23 (tracker.errors || {}).each do |k,v| 27 (tracker.errors || {}).each do |k,v|
app/views/apps/_issue_tracker_fields.html.haml
@@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
5 %div.choose 5 %div.choose
6 - issue_tracker_form.object.issue_trackers do |tracker| 6 - issue_tracker_form.object.issue_trackers do |tracker|
7 = issue_tracker_form.label :type_tracker, :class => "label_radio #{tracker.label}", :value => tracker.key do 7 = issue_tracker_form.label :type_tracker, :class => "label_radio #{tracker.label}", :value => tracker.key do
  8 + %img.icon{"src" => tracker.icons[:inactive], "data-icon" => tracker.icons}
8 = issue_tracker_form.radio_button :type_tracker, tracker.key, 'data-section' => tracker.label 9 = issue_tracker_form.radio_button :type_tracker, tracker.key, 'data-section' => tracker.label
9 = tracker.label 10 = tracker.label
10 11
@@ -15,9 +16,3 @@ @@ -15,9 +16,3 @@
15 - tracker.fields do |field| 16 - tracker.fields do |field|
16 = options_form.label field.key, field.label 17 = options_form.label field.key, field.label
17 = field.input(options_form, issue_tracker_form.object) 18 = field.input(options_form, issue_tracker_form.object)
18 -  
19 - .image_preloader  
20 - - issue_tracker_form.object.issue_trackers do |tracker|  
21 - = image_tag "#{tracker.label}_inactive.png"  
22 - = image_tag "#{tracker.label}_create.png"  
23 -  
config/initializers/assets.rb
@@ -6,6 +6,3 @@ Rails.application.config.assets.version = &#39;1.0&#39; @@ -6,6 +6,3 @@ Rails.application.config.assets.version = &#39;1.0&#39;
6 # Precompile additional assets. 6 # Precompile additional assets.
7 # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. 7 # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
8 # Rails.application.config.assets.precompile += %w( search.js ) 8 # Rails.application.config.assets.precompile += %w( search.js )
9 -  
10 -# Need to initialize Rails environment for issue_tracker_icons.css.erb  
11 -Rails.application.config.assets.initialize_on_precompile = true