From aebcaa2cf97249e7f8d0a52b20bfa74293b02e16 Mon Sep 17 00:00:00 2001 From: Ethan McCutchen Date: Thu, 21 Mar 2013 22:10:23 -0600 Subject: [PATCH] polished off rule editor update --- app/assets/javascripts/wagn_pack.js.coffee | 4 +- app/assets/stylesheets/card.css | 16 +- app/assets/stylesheets/settings.css | 25 +-- lib/wagn/renderer/html.rb | 2 +- lib/wagn/set/all/rich_html.rb | 12 +- lib/wagn/set/right/permissions.rb | 69 ++++---- lib/wagn/set/right/rstar.rb | 174 ++++++--------------- lib/wagn/set/type/file_and_image.rb | 7 +- lib/wagn/set/type/set.rb | 3 +- spec/lib/wagn/renderer_spec.rb | 2 +- 10 files changed, 115 insertions(+), 199 deletions(-) diff --git a/app/assets/javascripts/wagn_pack.js.coffee b/app/assets/javascripts/wagn_pack.js.coffee index e07c0d193..9d0e6b58f 100644 --- a/app/assets/javascripts/wagn_pack.js.coffee +++ b/app/assets/javascripts/wagn_pack.js.coffee @@ -149,8 +149,8 @@ $(window).ready -> $(this).notify 'To what Set of cards does this Rule apply?' false - $('body').delegate '.rule-cancel-button', 'click', -> - $(this).closest('tr').find('.close-rule-link').click() +# $('body').delegate '.rule-cancel-button', 'click', -> +# $(this).closest('tr').find('.close-rule-link').click() # etherpad pack diff --git a/app/assets/stylesheets/card.css b/app/assets/stylesheets/card.css index 3c1e84dac..3105e5f54 100644 --- a/app/assets/stylesheets/card.css +++ b/app/assets/stylesheets/card.css @@ -548,21 +548,11 @@ div.search-result-list .search-result-item { /*------- permissions ------------------*/ -table.perm-editor th { - text-align: left; - padding-left: 20px; - background-color: inherit; - border: 0; - color: #666; -} -table.perm-editor td { - padding: 5px; - vertical-align: top; -} -table.perm-editor .pointer-item-text { - width: 200px; +.perm-group h5 { + margin-top: 0px; } + /*---------- comment-box -------------------------------------- */ .comment-box textarea { margin-bottom:5px; diff --git a/app/assets/stylesheets/settings.css b/app/assets/stylesheets/settings.css index 33391c5aa..93dd25a90 100644 --- a/app/assets/stylesheets/settings.css +++ b/app/assets/stylesheets/settings.css @@ -26,7 +26,7 @@ td.rule-setting { width: 30%; } -.closed-rule .rule-set { +.rule-set { color: #666; white-space: nowrap; } @@ -40,6 +40,7 @@ td.rule-setting { .closed-rule td { vertical-align: middle; } +.rule-placeholder, .closed-rule .rule-content { width: 350px; } @@ -60,33 +61,37 @@ td.missing-rule { background-color: #eee; border-bottom: 1px solid #fff; } - -.open-rule .rule-setting { +.show-rule div.rule-setting, +.edit-rule .rule-setting { padding-top: 4px; float: left; + width: 30%; +} +.rule-placeholder { + float: left; } -.open-rule .card-editor { +.show-rule .card-body, +.edit-rule .card-editor { clear: both; padding: 5px; } -.open-rule .set-editor ul { +.edit-rule .set-editor ul { list-style-type: none; margin: 0; padding: 0; } -.open-rule .set-editor .current-set-label { +.edit-rule .set-editor .current-set-label { font-weight: bold; } -.open-rule .edit-button-area { +.edit-rule .edit-button-area { clear:both; padding-top: 5px; } -.open-rule .instruction { +.edit-rule .instruction { float: right; + max-width: 70%; } - - .attention { border: 3px solid red; } diff --git a/lib/wagn/renderer/html.rb b/lib/wagn/renderer/html.rb index 733cdc783..87ee26bed 100644 --- a/lib/wagn/renderer/html.rb +++ b/lib/wagn/renderer/html.rb @@ -76,7 +76,7 @@ class Renderer::Html < Renderer { :view=>:edit_type, :text=>'type: %{type}' }, { :related=>{ :name=>:structure, :view=>:edit }, :text=>'structure', :if=>:structure }, ] }, - { :view=>:self, :text=>'view', :sub=> [ + { :view=>:home, :text=>'view', :sub=> [ { :view=>:home, :text=>'refresh' }, { :page=>:self, :text=>'page' }, { :view=>:changes, :text=>'history', :if=>:edit }, diff --git a/lib/wagn/set/all/rich_html.rb b/lib/wagn/set/all/rich_html.rb index 9305261e0..f8eea6470 100644 --- a/lib/wagn/set/all/rich_html.rb +++ b/lib/wagn/set/all/rich_html.rb @@ -329,17 +329,15 @@ module Set::All::RichHtml define_view :edit_in_form, :perms=>:update, :tags=>:unknown_ok do |args| eform = form_for_multi content = content_field eform, :nested=>true - attribs = { :class=> "card-editor RIGHT-#{ card.cardname.tag_name.safe_key }" } - link_target, help_settings = if card.new_card? + opts = { :attribs => { :class=> "card-editor RIGHT-#{ card.cardname.tag_name.safe_key }" } } + if card.new_card? content += raw( "\n #{ eform.hidden_field :type_id }" ) - [ card.cardname.tag, [:add_help, { :fallback => :edit_help } ] ] + opts[:help] = [:add_help, { :fallback => :edit_help } ] else attribs.merge :card_id=>card.id, :card_name=>(h card.name) - [ card.name, :edit_help ] - + opts[:help] = :edit_help end - label = link_to_page fancy_title, link_target - fieldset label, content, :help=>help_settings, :attribs=>attribs + fieldset fancy_title, content, opts end diff --git a/lib/wagn/set/right/permissions.rb b/lib/wagn/set/right/permissions.rb index e8fbb365b..177e08ff0 100644 --- a/lib/wagn/set/right/permissions.rb +++ b/lib/wagn/set/right/permissions.rb @@ -16,41 +16,42 @@ module Set::Right::Permissions item_names = inheriting ? [] : card.item_names - form.hidden_field( :content, :class=>'card-content') + - - content_tag(:table, :class=>'perm-editor') do - - content_tag(:tr, :class=>'perm-labels') do - content_tag(:th) { 'Groups'} + - content_tag(:th) { 'Individuals'} + - (inheritable ? content_tag(:th) { 'Inherit'} : '') - end + - - content_tag(:tr, :class=>'perm-options') do - content_tag(:td, :class=>'perm-group perm-vals') do - group_options.map do |option| - checked = !!item_names.delete(option.name) - %{
- #{ check_box_tag( "#{option.key}-perm-checkbox", option.name, checked, :class=>'perm-checkbox-button' ) } - -
} - end * "\n" - end + - - content_tag(:td, :class=>'perm-indiv perm-vals') do - _render_list :items=>item_names, :extra_css_class=>'perm-indiv-ul' - end + - - if inheritable - content_tag(:td, :class=>'perm-inherit') do - check_box_tag( 'inherit', 'inherit', inheriting ) + - content_tag(:a, :title=>"use #{card.cardname.tag} rule for left card") { '?' } + %{ + #{ form.hidden_field :content, :class=>'card-content' } +
+ +
+
Groups
+ #{ + group_options.map do |option| + checked = !!item_names.delete(option.name) + %{ +
+ #{ check_box_tag( "#{option.key}-perm-checkbox", option.name, checked, :class=>'perm-checkbox-button' ) } + +
+ } + end * "\n" + } +
+ +
+
Individuals
+ #{ _render_list :items=>item_names, :extra_css_class=>'perm-indiv-ul' } +
+ + #{ + if inheritable + %{ +
Inheritance
+ #{ check_box_tag 'inherit', 'inherit', inheriting } + #{ content_tag( :a, :title=>"use #{card.cardname.tag} rule for left card") { '?' } } + } end - else; ''; end - end - end - - + } + +
+ } end define_view :core, { :right=>'create'} do |args| diff --git a/lib/wagn/set/right/rstar.rb b/lib/wagn/set/right/rstar.rb index 11921fc92..2d5d0d798 100644 --- a/lib/wagn/set/right/rstar.rb +++ b/lib/wagn/set/right/rstar.rb @@ -37,7 +37,7 @@ module Set::Rstar define_view :open_rule, :rstar=>true, :tags=>:unknown_ok do |args| current_rule, prototype = find_current_rule_card setting_name = card.cardname.tag - current_rule ||= Card.new :name=> "*all+#{setting_name}" + current_rule ||= Card.new :name=> "*all+#{setting_name}" #FIXME use codename set_selected = false #~~~~~~ handle reloading due to type change @@ -54,18 +54,19 @@ module Set::Rstar set_selected = card_args[:name].to_name.left_name.to_s end - opts = { - :fallback_set => false, - :open_rule => card, - :edit_mode => (card.ok?(card.new_card? ? :create : :update) && !params[:success]), - :setting_name => setting_name, - :current_set_key => (current_rule.new_card? ? nil : current_rule.cardname.trunk_name.key), - :set_selected => set_selected - } - + edit_mode = !params[:success] and card.ok?( card.new_card? ? :create : :update ) + opts = { :open_rule => card, :setting_name=> setting_name } + rule_view = edit_mode ? :edit_rule : :show_rule + + if edit_mode + opts.merge!( { + :fallback_set => false, + :current_set_key => (current_rule.new_card? ? nil : current_rule.cardname.trunk_name.key), + :set_selected => set_selected + } ) + + #~~~~~~~~~~ determine the set options to which the user can apply the rule. - #~~~~~~~~~~ determine the set options to which the user can apply the rule. - if !opts[:read_only] set_options = prototype.set_names.reverse first = (csk=opts[:current_set_key]) ? set_options.index{|s| s.to_name.key == csk} : 0 if first > 0 @@ -85,14 +86,34 @@ module Set::Rstar end %{ - + - #{subrenderer( current_rule )._render_edit_rule opts } + #{ subrenderer( current_rule )._render rule_view, opts } } end + + define_view :show_rule, :rstar=>true, :tags=>:unknown_ok do |args| + setting_name = args[:setting_name] + %{ +
+ #{ link_to_view args[:setting_name].sub(/^\*/,''), :closed_rule, + :class=>'close-rule-link slotter', :path_opts=>{ :card=>args[:open_rule] } } +
+ +
 
+ +
+ #{ card.trunk.label } +
+ +
+ #{ render_core } +
+ } + end define_view :edit_rule, :rstar=>true, :tags=>:unknown_ok do |args| setting_name = args[:setting_name] @@ -106,14 +127,13 @@ module Set::Rstar %{ #{ hidden_field_tag( :success, open_rule.name ) } #{ hidden_field_tag( :view, 'open_rule' ) } -
-
- #{ link_to_view setting_name.sub(/^\*/,''), :closed_rule, :class=>'close-rule-link slotter', :path_opts=>{ :card=>open_rule } } -
-
- #{ process_content "{{#{setting_name}+*right+*edit help}}" } -
-
+
+ #{ link_to_view setting_name.sub(/^\*/,''), :closed_rule, :class=>'close-rule-link slotter', :path_opts=>{ :card=>open_rule } } +
+ +
+ #{ process_content "{{#{setting_name}+*right+*edit help}}" } +
#{ fieldset 'type', ( editor_wrap 'type' do @@ -142,7 +162,7 @@ module Set::Rstar end ) }
- +
#{ if !card.new_card? @@ -155,119 +175,15 @@ module Set::Rstar end } #{ submit_tag 'Submit', :class=>'rule-submit-button' } - #{ button_tag 'Cancel', :class=>'rule-cancel-button', :type=>'button' } + #{ button_tag 'Cancel', :class=>'rule-cancel-button slotter', :type=>'button', + :href=>path( :view=>( card.new_card? ? :closed_rule : :open_rule ), :card=>open_rule, :success=>true ) }
#{notice } } end end -=begin - define_view :edit_rule, :rstar=>true, :tags=>:unknown_ok do |args| - edit_mode = args[:edit_mode] - setting_name = args[:setting_name] - current_set_key = args[:current_set_key] || '*all' # Card[:all].name (should have a constant for this?) - open_rule = args[:open_rule] - args[:item] ||= :link - form_for card, :url=>path(:action=>:update, :no_id=>true), :remote=>true, :html=> - {:class=>"card-form card-rule-form #{edit_mode && 'slotter'}" } do |form| - - %{ - #{ hidden_field_tag( :success, open_rule.name ) } - #{ hidden_field_tag( :view, 'open_rule' ) } -
-
-
- #{ link_to( setting_name.sub(/^\*/,''), path(:card=>open_rule, :view=>:closed_rule), - :remote => true, :class => 'close-rule-link slotter', :rel => 'nofollow' ) } -
-
    - } + - - if edit_mode - raw( args[:set_options].map do |set_name| - set_label =Card.fetch(set_name).label - checked = ( args[:set_selected] == set_name or current_set_key && args[:set_options].length==1 ) - - '
  • ' + - raw( form.radio_button( :name, "#{set_name}+#{setting_name}", :checked=> checked ) ) + - if set_name.to_name.key == current_set_key - %{#{ set_label } (current)} - else - %{#{ set_label }} - end.html_safe + - '
  • ' - end.join) - else - %{ - - - #{current_set_key ? Card.fetch(current_set_key).label : 'No Current Rule' } - - }.html_safe - end + - - - %{
-
- -
-
- #{ raw process_content( "{{#{setting_name}+*right+*edit help}}" ).html_safe } -
-
}+ - - if edit_mode - %{}+ - raw(type_field( :class =>'type-field rule-type-field live-type-field', 'data-remote'=>true, - :href => path(:card=>open_rule, :view=>:open_rule, :type_reload=>true) ) ) - elsif current_set_key - ''+ - %{#{ current_set_key ? card.type_name : '' }} - else; ''; end.html_safe + - - - %{
-
- #{ - case - when edit_mode ; content_field form, :skip_rev_id=>true - when current_set_key ; render_core - else '' - end - } -
-
-
}.html_safe + - - if edit_mode || params[:success] - ('
' + - if params[:success] - (button_tag( 'Edit', :class=>'rule-edit-button slotter', :type=>'button', - :href => path(:card=>open_rule, :view=>:open_rule), :remote=>true ) + - button_tag( 'Close', :class=>'rule-cancel-button', :type=>'button' )).html_safe - else - (if !card.new_card? - b_args = { :remote=>true, :class=>'rule-delete-button slotter', :type=>'button' } - b_args[:href] = path :action=>:delete, :view=>:open_rule, :success=>open_rule.cardname.url_key - if fset = args[:fallback_set] - b_args['data-confirm']="Deleting will revert to #{setting_name} rule for #{Card.fetch(fset).label }" - end - %{#{ button_tag 'Delete', b_args }} - else; ''; end + - submit_tag( 'Submit', :class=>'rule-submit-button') + - button_tag( 'Cancel', :class=>'rule-cancel-button', :type=>'button' )).html_safe - end + - '
').html_safe - else ''; end + - notice.html_safe - - end.html_safe - - - end -=end module Model diff --git a/lib/wagn/set/type/file_and_image.rb b/lib/wagn/set/type/file_and_image.rb index d1447427d..bb7127381 100644 --- a/lib/wagn/set/type/file_and_image.rb +++ b/lib/wagn/set/type/file_and_image.rb @@ -10,7 +10,12 @@ module Set::Type::FileAndImage end define_view :source, :type=>'image' do |args| - style = @mode==:closed ? :icon : ( args[:size] || :medium ) + style = case + when @mode==:closed ; :icon + when args[:size] ; args[:size] + when main? ; :large + else ; :medium + end style = :original if style.to_sym == :full card.attach.url style end diff --git a/lib/wagn/set/type/set.rb b/lib/wagn/set/type/set.rb index c4ded440e..a3b892050 100644 --- a/lib/wagn/set/type/set.rb +++ b/lib/wagn/set/type/set.rb @@ -28,6 +28,7 @@ module Set end define_view :template_link, :type=>'set' do |args| + args.delete :style wrap :template_link, args do link = link_to_view args[:include], :template_editor, :class=>'slotter' #, 'slot-include'=>include_syntax "{{#{link}}}" @@ -41,7 +42,7 @@ module Set
#{content_tag :h1, card.label, :class=>'card-title'} - #{link_to_view '', :template_link, :class=>'slotter ui-icon ui-icon-close-thick template-editor-close'} + #{link_to_view '', :template_link, :class=>'slotter ui-icon ui-icon-closethick template-editor-close'}
#{ _render_core } diff --git a/spec/lib/wagn/renderer_spec.rb b/spec/lib/wagn/renderer_spec.rb index e83ec0593..fafec63fc 100644 --- a/spec/lib/wagn/renderer_spec.rb +++ b/spec/lib/wagn/renderer_spec.rb @@ -203,7 +203,7 @@ r = Wagn::Renderer.new(Card.fetch('*read+*right+*input',:new=>{})).render_open_rule r.should_not match(/error/i) r.should_not match('No Card!') - assert_view_select r, 'tr[class="card-slot open-rule"]' do + assert_view_select r, 'tr[class="card-slot edit-rule"]' do assert_select 'input[id="success"][name="success"][type="hidden"][value="*read+*right+*input"]' end end