Changeset 870

Show
Ignore:
Timestamp:
05/16/08 15:13:20 (3 months ago)
Author:
seancribbs
Message:

Integrate shards into core.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/radiant/app/helpers/application_helper.rb

    r865 r870  
    11module ApplicationHelper 
    22  include LocalTime 
     3  include Admin::RegionsHelper 
    34   
    45  def config 
  • trunk/radiant/app/views/admin/layout/edit.html.haml

    r865 r870  
    1 - if @layout.new_record? 
    2   %h1 New Layout 
    3 - else 
    4   %h1 Edit Layout 
     1- render_region :main do |main| 
     2  - main.edit_header do 
     3    - if @layout.new_record? 
     4      %h1 New Layout 
     5    - else 
     6      %h1 Edit Layout 
     7  - main.edit_form do 
     8    - form_tag do 
     9      .form-area 
     10        = render_region :form_top 
     11        = hidden_field 'layout', 'lock_version' 
     12        - render_region :form do |form| 
     13          - form.edit_title do 
     14            %p.title 
     15              %label{:for=>"layout_name"} Name 
     16              = text_field 'layout', 'name', :maxlength => 100, :class => "textbox" 
     17          - form.edit_extended_metadata do 
     18            #extended-metadata.row{meta_visible(:meta)} 
     19              %table.fieldset{:cellpadding=>"0", :cellspacing=>"0", :border=>"0"} 
     20                %tr 
     21                  %th.label 
     22                    %label{:for=>"layout_content_type"} Content‑Type 
     23                  %td.field 
     24                    = text_field 'layout', 'content_type', :maxlength => 40, :class => "textbox" 
     25                = render_region :extended_metadata 
     26            %p.more-or-less 
     27              %small 
     28                %a#more-extended-metadata{meta_visible(:meta_more), :href => "#", :onclick=>toggle_javascript_for('extended-metadata')} More 
     29                %a#less-extended-metadata{meta_visible(:meta_less), :href => "#", :onclick=>toggle_javascript_for('extended-metadata')} Less 
     30          - form.edit_content do 
     31            %p.content 
     32              %label{:for=>"layout_content"} Body 
     33              ~ text_area 'layout', 'content', :size => '40x20', :style => 'width: 100%', :class => "textarea" 
     34          - form.edit_timestamp do 
     35            = updated_stamp @layout 
    536 
    6 - form_tag do 
    7  
    8   .form-area 
    9     = hidden_field 'layout', 'lock_version' 
    10     %p.title 
    11       %label{:for=>"layout_name"} Name 
    12       = text_field 'layout', 'name', :maxlength => 100, :class => "textbox" 
    13  
    14     #extended-metadata.row{meta_visible(:meta)} 
    15       %table.fieldset{:cellpadding=>"0", :cellspacing=>"0", :border=>"0"} 
    16         %tr 
    17           %th.label 
    18             %label{:for=>"layout_content_type"} Content‑Type 
    19           %td.field 
    20             = text_field 'layout', 'content_type', :maxlength => 40, :class => "textbox" 
    21  
    22     %p.more-or-less 
    23       %small 
    24         %a#more-extended-metadata{meta_visible(:meta_more), :href => "#", :onclick=>toggle_javascript_for('extended-metadata')} More 
    25         %a#less-extended-metadata{meta_visible(:meta_less), :href => "#", :onclick=>toggle_javascript_for('extended-metadata')} Less 
    26  
    27     %p.content 
    28       %label{:for=>"layout_content"} Body 
    29       ~ text_area 'layout', 'content', :size => '40x20', :style => 'width: 100%', :class => "textarea" 
    30     = updated_stamp @layout 
    31  
    32   = javascript_tag "$('layout_name').activate()" 
    33  
    34   %p.buttons 
    35     = save_model_button @layout 
    36     = save_model_and_continue_editing_button @layout 
    37     or 
    38     = link_to "Cancel", layout_index_url 
     37      = javascript_tag "$('layout_name').activate()" 
     38      - render_region :form_bottom do |form_bottom| 
     39        - form_bottom.edit_buttons do 
     40          %p.buttons 
     41            = save_model_button @layout 
     42            = save_model_and_continue_editing_button @layout 
     43            or 
     44            = link_to "Cancel", layout_index_url 
  • trunk/radiant/app/views/admin/page/_node.html.haml

    r865 r870  
    11%tr.node{:id => "page-#{page.id}", :class =>"level-#{level}#{children_class}#{virtual_class}"} 
    2   %td.page{:style => "padding-left: #{padding_left(level)}px"} 
    3     %span.w1 
    4       - if simple 
    5         = icon 
    6         = node_title 
    7       - else 
    8         = expander + link_to("#{icon} #{node_title}", page_edit_url(:id => page), :title => page.url) 
    9         = page_type 
    10         = spinner 
    11   - unless simple 
    12     %td.status{:class => "#{page.status.name.downcase}-status"}= page.status.name 
    13     %td.add-child= link_to image('add-child', :alt => 'add child'), page_new_url(:parent_id => page) 
    14     %td.remove= link_to image('remove', :alt => 'remove page'), page_remove_url(:id => page) 
     2  - render_region :node, :locals => {:page => page, :level => level, :simple => simple} do |node| 
     3    - node.title_column do 
     4      %td.page{:style => "padding-left: #{padding_left(level)}px"} 
     5        %span.w1 
     6          - if simple 
     7            = icon 
     8            = node_title 
     9          - else 
     10            = expander + link_to("#{icon} #{node_title}", page_edit_url(:id => page), :title => page.url) 
     11            = page_type 
     12            = spinner 
     13    - node.status_column do 
     14      - unless simple 
     15        %td.status{:class => "#{page.status.name.downcase}-status"}= page.status.name 
     16    - node.add_child_column do 
     17      - unless simple 
     18        %td.add-child= link_to image('add-child', :alt => 'add child'), page_new_url(:parent_id => page) 
     19    - node.remove_column do 
     20      - unless simple 
     21        %td.remove= link_to image('remove', :alt => 'remove page'), page_remove_url(:id => page) 
    1522 
    1623- if expanded 
  • trunk/radiant/app/views/admin/page/_part.html.haml

    r865 r870  
    1212        %span{:id => "tag-reference-link-#{@index}"} 
    1313          = link_to_function 'Available Tags', "load_tag_reference(#{@index});" 
     14      = render_region :part_controls 
    1415    %div 
    1516      ~ text_area_tag "part[#{@index}][content]", h(part.content), :class => "textarea", :style => "width: 100%", :id => "part_#{@index}_content" 
  • trunk/radiant/app/views/admin/page/edit.html.haml

    r865 r870  
    1414            .textbox 
    1515              width: 90% 
    16 - if @page.new_record? 
    17   %h1 New Page 
    18 - else 
    19   %h1 Edit Page 
     16- render_region :main do |main| 
     17  - main.edit_header do 
     18    - if @page.new_record? 
     19      %h1 New Page 
     20    - else 
     21      %h1 Edit Page 
     22  - main.edit_form do 
     23    - form_tag({}, {:multipart => true}) do 
     24      = hidden_field 'page', 'lock_version' 
     25      = render_region :form_top 
     26      .form-area 
     27        - render_region :form do |form| 
     28          - form.edit_title do 
     29            %p.title 
     30              %label{:for=>"page_title"} 
     31                Page Title 
     32              = text_field "page", "title", :class => 'textbox', :maxlength => 255 
     33          - form.edit_extended_metadata do 
     34            #extended-metadata.row{meta_visible(:meta)} 
     35              %table.fieldset 
     36                = render :partial => "meta_row", :collection => @meta 
     37                = render_region :extended_metadata 
     38            %p.more-or-less 
     39              %small 
     40                %a#more-extended-metadata{meta_visible(:meta_more), :href => "#", :onclick=>toggle_javascript_for('extended-metadata')} More 
     41                %a#less-extended-metadata{meta_visible(:meta_less), :href => "#", :onclick=>toggle_javascript_for('extended-metadata')} Less 
     42          - form.edit_page_parts do 
     43            #tab-control 
     44              #tabs.tabs 
     45                #tab-toolbar 
     46                  = link_to_function image('plus', :alt => 'plus'), 'toggle_add_part_popup()', :title => 'Add Tab' 
     47                  = link_to_function image('minus', :alt => 'minus'), 'if(confirm(\'Delete the current tab?\')) { tabControl.removeTab(tabControl.selected) }', :title => 'Remove Tab' 
    2048 
    21 - form_tag({}, {:multipart => true}) do 
    22   = hidden_field 'page', 'lock_version' 
    23   .form-area 
    24     %p.title 
    25       %label{:for=>"page_title"} 
    26         Page Title 
    27       = text_field "page", "title", :class => 'textbox', :maxlength => 255 
     49              #pages.pages 
     50                = render :partial => 'part', :collection => @page.parts 
     51            - render_region :parts_bottom do |parts_bottom| 
     52              - parts_bottom.edit_layout_and_type do 
     53                .row 
     54                  %p 
     55                    %label{:for=>"page_layout_id"} 
     56                      Layout 
     57                    = select "page", "layout_id", [['<inherit>', '']] + Layout.find(:all).map { |s| [s.name, s.id] } 
     58                  %p 
     59                    %label{:for=>"page_class_name"} 
     60                      Page Type 
     61                    = select "page", "class_name", [['<normal>', 'Page']] + Page.descendants.map { |p| [p.display_name, p.name] }.sort_by { |p| p.first } 
     62                  %p 
     63                    %label{:for=>"page_status_id"} 
     64                      Status 
     65                    = select "page", "status_id", Status.find_all.map { |s| [s.name, s.id] }, {} 
     66                  %p#publication-date{:style => "display: none"} 
     67                    %label{:for=>"page_published_at"} 
     68                      Published At 
     69                    = datetime_select "page", "published_at", :disabled => true 
     70                  = render_region :layout_row 
     71                %span.clear &nbsp; 
     72              - parts_bottom.edit_timestamp do 
     73                = updated_stamp @page 
     74      - render_region :form_bottom do |form_bottom| 
     75        - form_bottom.edit_buttons do 
     76          - @buttons_partials.each do |partial| 
     77            = render :partial => partial 
     78          %p.buttons 
     79            = save_model_button(@page) 
     80            = save_model_and_continue_editing_button(@page) 
     81            or 
     82            = link_to 'Cancel', page_index_url 
     83  - main.edit_popups do 
     84    - content_for 'popups' do 
     85      #add-part-popup.popup{:style => "display: none"} 
     86        #busy.busy{:style => "display: none"}= image 'spinner.gif' 
     87        %h3 Add Part 
     88        - form_remote_tag(:url => page_add_part_url, :update => "pages", :position => :bottom, :loading => 'part_loading()', :complete => 'part_added()', :condition => 'valid_part_name()') do 
     89          %div 
     90            = hidden_field_tag 'index', @index, :id => 'part-index-field' 
     91            = text_field_tag "part[name]", "", :id => 'part-name-field', :maxlength => 100 
     92            = submit_tag "Add Part", :id => 'add-part-button' 
     93          %p 
     94            = link_to_function 'Close', "$(this).up('.popup').hide()", :class => 'close-link' 
    2895 
    29     #extended-metadata.row{meta_visible(:meta)} 
    30       %table.fieldset 
    31         = render :partial => "meta_row", :collection => @meta 
     96      #tag-reference-popup.popup{ :style => "display:none;" } 
     97        %div{ :style => "float:right" } 
     98          %label{:for=> 'search-tag-reference'} Search Tags: 
     99          %input#search-tag-reference{ :type => "text" }/ 
     100        %h3 
     101          Available Tags for 
     102          %span#page-type= @page.class.display_name 
     103        #tag-reference= tag_reference(@page.class.name) 
     104        %p 
     105          = link_to 'Close', '#', :class => 'close' 
    32106 
    33     %p.more-or-less 
    34       %small 
    35         %a#more-extended-metadata{meta_visible(:meta_more), :href => "#", :onclick=>toggle_javascript_for('extended-metadata')} More 
    36         %a#less-extended-metadata{meta_visible(:meta_less), :href => "#", :onclick=>toggle_javascript_for('extended-metadata')} Less 
    37  
    38     #tab-control 
    39       #tabs.tabs 
    40         #tab-toolbar 
    41           = link_to_function image('plus', :alt => 'plus'), 'toggle_add_part_popup()', :title => 'Add Tab' 
    42           = link_to_function image('minus', :alt => 'minus'), 'if(confirm(\'Delete the current tab?\')) { tabControl.removeTab(tabControl.selected) }', :title => 'Remove Tab' 
    43  
    44       #pages.pages 
    45         = render :partial => 'part', :collection => @page.parts 
    46  
    47     .row 
    48       %p 
    49         %label{:for=>"page_layout_id"} 
    50           Layout 
    51         = select "page", "layout_id", [['<inherit>', '']] + Layout.find(:all).map { |s| [s.name, s.id] } 
    52       %p 
    53         %label{:for=>"page_class_name"} 
    54           Page Type 
    55         = select "page", "class_name", [['<normal>', 'Page']] + Page.descendants.map { |p| [p.display_name, p.name] }.sort_by { |p| p.first } 
    56       %p 
    57         %label{:for=>"page_status_id"} 
    58           Status 
    59         = select "page", "status_id", Status.find_all.map { |s| [s.name, s.id] }, {} 
    60       %p#publication-date{:style => "display: none"} 
    61         %label{:for=>"page_published_at"} 
    62           Published At 
    63         = datetime_select "page", "published_at", :disabled => true 
    64     %span.clear &nbsp; 
    65     = updated_stamp @page 
    66    
    67   - @buttons_partials.each do |partial| 
    68     = render :partial => partial 
    69  
    70   %p.buttons 
    71     = save_model_button(@page) 
    72     = save_model_and_continue_editing_button(@page) 
    73     or 
    74     = link_to 'Cancel', page_index_url 
    75  
    76 - content_for 'popups' do 
    77   #add-part-popup.popup{:style => "display: none"} 
    78     #busy.busy{:style => "display: none"}= image 'spinner.gif' 
    79     %h3 Add Part 
    80     - form_remote_tag(:url => page_add_part_url, :update => "pages", :position => :bottom, :loading => 'part_loading()', :complete => 'part_added()', :condition => 'valid_part_name()') do 
    81       %div 
    82         = hidden_field_tag 'index', @index, :id => 'part-index-field' 
    83         = text_field_tag "part[name]", "", :id => 'part-name-field', :maxlength => 100 
    84         = submit_tag "Add Part", :id => 'add-part-button' 
    85       %p 
    86         = link_to_function 'Close', "$(this).up('.popup').hide()", :class => 'close-link' 
    87  
    88   #tag-reference-popup.popup{ :style => "display:none;" } 
    89     %div{ :style => "float:right" } 
    90       %label{:for=> 'search-tag-reference'} Search Tags: 
    91       %input#search-tag-reference{ :type => "text" }/ 
    92     %h3 
    93       Available Tags for 
    94       %span#page-type= @page.class.display_name 
    95     #tag-reference= tag_reference(@page.class.name) 
    96     %p 
    97       = link_to 'Close', '#', :class => 'close' 
    98  
    99   #filter-reference-popup.popup{ :style => "display:none;" } 
    100     %h3 
    101       %span#filter-type= default_filter_name 
    102       Reference 
    103     #filter-reference= filter_reference(default_filter_name) 
    104     %p 
    105       = link_to_function 'Close', "Element.hide('filter-reference-popup')", :class => 'close-link' 
     107      #filter-reference-popup.popup{ :style => "display:none;" } 
     108        %h3 
     109          %span#filter-type= default_filter_name 
     110          Reference 
     111        #filter-reference= filter_reference(default_filter_name) 
     112        %p 
     113          = link_to_function 'Close', "Element.hide('filter-reference-popup')", :class => 'close-link' 
     114      = render_region :popups 
  • trunk/radiant/app/views/admin/page/index.html.haml

    r865 r870  
    33%h1 Pages 
    44 
     5= render_region :top 
     6 
    57%table#site-map.index{:summary=>"Page hierarchy of the current site"} 
    68  %thead 
    79    %tr 
    8       %th.page Page 
    9       %th.status Status 
    10       %th.modify{:colspan=>"2"} Modify 
     10      - render_region :sitemap_head do |sitemap_head| 
     11        - sitemap_head.title_column_header do 
     12          %th.page Page 
     13        - sitemap_head.status_column_header do 
     14          %th.status Status 
     15        - sitemap_head.modify_column_header do 
     16          %th.modify{:colspan=>"2"} Modify 
    1117  %tbody 
    1218    - if @homepage 
     
    1622        %td.note{:colspan => 4} No Pages 
    1723 
     24= render_region :bottom 
     25 
    1826- unless @homepage 
    1927  %p 
  • trunk/radiant/app/views/admin/snippet/edit.html.haml

    r865 r870  
    1 - if @snippet.new_record? 
    2   %h1 New Snippet 
    3 - else 
    4   %h1 Edit Snippet 
     1- render_region :main do |main| 
     2  - main.edit_header do 
     3    - if @snippet.new_record? 
     4      %h1 New Snippet 
     5    - else 
     6      %h1 Edit Snippet 
     7  - main.edit_form do 
     8    - form_tag do 
     9      = hidden_field 'snippet', 'lock_version' 
     10      = render_region :form_top 
     11      .form-area 
     12        - render_region :form do |form| 
     13          - form.edit_title do 
     14            %p.title 
     15              %label{:for=>"snippet_name"} Name 
     16              = text_field "snippet", "name", :class => 'textbox', :maxlength => 100 
     17          - form.edit_content do 
     18            %p.content 
     19              %label{:for=>"snippet_content"} Body 
     20              ~ text_area "snippet", "content", :class => "textarea", :style => "width: 100%" 
     21          - form.edit_filter do 
     22            %p 
     23              %label{:for=>"snippet_filter"} Filter 
     24              = select_tag "snippet[filter_id]", options_for_select([['none', '']] + TextFilter.descendants.map { |f| f.filter_name }.sort, @snippet.filter_id), :id => 'snippet_filter'  
     25          - form.edit_timestamp do 
     26            = updated_stamp @snippet 
    527 
    6 - form_tag do 
    7   = hidden_field 'snippet', 'lock_version' 
    8   .form-area 
    9  
    10     %p.title 
    11       %label{:for=>"snippet_name"} Name 
    12       = text_field "snippet", "name", :class => 'textbox', :maxlength => 100 
    13  
    14     %p.content 
    15       %label{:for=>"snippet_content"} Body 
    16       ~ text_area "snippet", "content", :class => "textarea", :style => "width: 100%" 
    17  
    18     %p 
    19       %label{:for=>"snippet_filter"} Filter 
    20       = select_tag "snippet[filter_id]", options_for_select([['none', '']] + TextFilter.descendants.map { |f| f.filter_name }.sort, @snippet.filter_id), :id => 'snippet_filter'  
    21  
    22     = updated_stamp @snippet 
    23  
    24   = javascript_tag "$('snippet_name').activate()" 
    25    
    26   %p.buttons 
    27     = save_model_button(@snippet) 
    28     = save_model_and_continue_editing_button(@snippet) 
    29     or 
    30     = link_to 'Cancel', snippet_index_url 
     28      = javascript_tag "$('snippet_name').activate()" 
     29       
     30      - render_region :form_bottom do |form_bottom| 
     31        - form_bottom.edit_buttons do 
     32          %p.buttons 
     33            = save_model_button(@snippet) 
     34            = save_model_and_continue_editing_button(@snippet) 
     35            or 
     36            = link_to 'Cancel', snippet_index_url 
  • trunk/radiant/app/views/admin/user/edit.html.haml

    r865 r870  
    1 - if @user.new_record? 
    2   %h1 New User 
    3 - else 
    4   %h1 Edit User 
    5  
    6 - form_tag do 
    7   = hidden_field 'user', 'lock_version' 
    8   %table.fieldset{:cellpadding=>0, :cellspacing=>0, :border=>0} 
    9     %tr 
    10       %th.label 
    11         %label{:for=>"user_name"} Name 
    12       %td.field 
    13         = text_field "user", "name", :class => 'textbox', :maxlength => 100  
    14       %td.help Required. 
    15     %tr 
    16       %th.label 
    17         %label.optional{:for=>"user_email"} E-mail 
    18       %td.field 
    19         = text_field "user", "email", :class => 'textbox', :maxlength => 255 
    20       %td.help 
    21         Optional. Please use a valid e-mail address. 
    22     %tr 
    23       %th.label 
    24         %label{:for=>"user_login"} Username 
    25       %td.field 
    26         = text_field "user", "login", :class => 'textbox', :maxlength => 40  
    27       %td.help 
    28         At least 3 characters. Must be unique. 
    29     %tr 
    30       %th.label 
    31         %label{:for=>"user_password"} Password 
    32       %td.field 
    33         = password_field "user", "password", :class => 'textbox', :value => '', :maxlength => 40 
    34       %td.help{:rowspan=>2} 
    35         At least 5 characters. 
    36         - unless @user.new_record? 
    37           Leave password blank for it to remain unchanged. 
    38     %tr 
    39       %th.label 
    40         %label{:for=>"user_password_confirmation"} Confirm&nbsp;Password 
    41       %td.field 
    42         = password_field "user", "password_confirmation", :class => 'textbox', :value => '', :maxlength => 40 
    43     %tr 
    44       %th.label 
    45         %label{:for=>"user_admin"} Roles 
    46       %td.field 
    47         %span.checkbox 
    48           = check_box "user", "admin"  
    49           %label{:for=> "user_admin"} Administrator 
    50         %span.checkbox 
    51           = check_box "user", "developer"  
    52           %label{:for=> "user_developer"} Developer 
    53       %td.help 
    54         Roles restrict user privileges and turn parts of the administrative interface on or off. 
    55     %tr 
    56       %th.label 
    57         %label.optional{:for=>"user_notes"} Notes 
    58       %td.field 
    59         ~ text_area "user", "notes", :size => '40x4', :class => "textarea"  
    60       %td.help 
    61         Optional. 
    62  
    63   = updated_stamp @user   
    64    
    65   %p.buttons 
    66     = save_model_button(@user) 
    67     = save_model_and_continue_editing_button(@user) 
    68     or  
    69     = link_to "Cancel", user_index_url 
     1- render_region :main do |main| 
     2  - main.edit_header do 
     3    - if @user.new_record? 
     4      %h1 New User 
     5    - else 
     6      %h1 Edit User 
     7  - main.edit_form do 
     8    - form_tag do 
     9      = hidden_field 'user', 'lock_version' 
     10      = render_region :form_top 
     11      %table.fieldset{:cellpadding=>0, :cellspacing=>0, :border=>0} 
     12        - render_region :form do |form| 
     13          - form.edit_name do 
     14            %tr 
     15              %th.label 
     16                %label{:for=>"user_name"} Name 
     17              %td.field 
     18                = text_field "user", "name", :class => 'textbox', :maxlength => 100  
     19              %td.help Required. 
     20          - form.edit_email do 
     21            %tr 
     22              %th.label 
     23                %label.optional{:for=>"user_email"} E-mail 
     24              %td.field 
     25                = text_field "user", "email", :class => 'textbox', :maxlength => 255 
     26              %td.help 
     27                Optional. Please use a valid e-mail address. 
     28          - form.edit_username do 
     29            %tr 
     30              %th.label 
     31                %label{:for=>"user_login"} Username 
     32              %td.field 
     33                = text_field "user", "login", :class => 'textbox', :maxlength => 40  
     34              %td.help 
     35                At least 3 characters. Must be unique. 
     36          - form.edit_password do 
     37            %tr 
     38              %th.label 
     39                %label{:for=>"user_password"} Password 
     40              %td.field 
     41                = password_field "user", "password", :class => 'textbox', :value => '', :maxlength => 40 
     42              %td.help{:rowspan=>2} 
     43                At least 5 characters. 
     44                - unless @user.new_record? 
     45                  Leave password blank for it to remain unchanged. 
     46            %tr 
     47              %th.label 
     48                %label{:for=>"user_password_confirmation"} Confirm&nbsp;Password 
     49              %td.field 
     50                = password_field "user", "password_confirmation", :class => 'textbox', :value => '', :maxlength => 40 
     51          - form.edit_roles do 
     52            %tr 
     53              %th.label 
     54                %label{:for=>"user_admin"} Roles 
     55              %td.field 
     56                %span.checkbox 
     57                  = check_box "user", "admin"  
     58                  %label{:for=> "user_admin"} Administrator 
     59                %span.checkbox 
     60                  = check_box "user", "developer"  
     61                  %label{:for=> "user_developer"} Developer 
     62              %td.help 
     63                Roles restrict user privileges and turn parts of the administrative interface on or off. 
     64          - form.edit_notes do 
     65            %tr 
     66              %th.label 
     67                %label.optional{:for=>"user_notes"} Notes 
     68              %td.field 
     69                ~ text_area "user", "notes", :size => '40x4', :class => "textarea"  
     70              %td.help 
     71                Optional. 
     72      - render_region :form_bottom do |form_bottom| 
     73        - form_bottom.edit_timestamp do 
     74          = updated_stamp @user   
     75        - form_bottom.edit_buttons do 
     76          %p.buttons 
     77            = save_model_button(@user) 
     78            = save_model_and_continue_editing_button(@user) 
     79            or  
     80            = link_to "Cancel", user_index_url 
  • trunk/radiant/lib/radiant/admin_ui.rb

    r405 r870  
    11require 'simpleton' 
     2require 'ostruct' 
    23 
    34module Radiant 
    45  class AdminUI 
     6    # This may be loaded before ActiveSupport, so do an explicit require 
     7    require 'radiant/admin_ui/region_set' 
    58     
    69    class DuplicateTabNameError < StandardError; end 
     
    7578    attr_accessor :tabs 
    7679     
     80    # Region sets 
     81    attr_accessor :page, :snippet, :layout, :user 
     82     
    7783    def initialize 
    7884      @tabs = TabSet.new 
     85      load_default_regions 
    7986    end 
    8087     
     88    private 
     89 
     90    def load_default_regions 
     91      @page = load_default_page_regions 
     92      @snippet = load_default_snippet_regions 
     93      @layout = load_default_layout_regions 
     94      @user = load_default_user_regions 
     95    end 
     96       
     97    def load_default_page_regions 
     98      returning OpenStruct.new do |page| 
     99        page.edit = RegionSet.new do |edit| 
     100            edit.main.concat %w{edit_header edit_form edit_popups} 
     101            edit.form.concat %w{edit_title edit_extended_metadata 
     102                                  edit_page_parts} 
     103            edit.form_bottom.concat %w{edit_buttons} 
     104            edit.parts_bottom.concat %w{edit_layout_and_type edit_timestamp} 
     105        end 
     106        page.index = RegionSet.new do |index| 
     107          index.sitemap_head.concat %w{title_column_header status_column_header 
     108                                      modify_column_header} 
     109          index.node.concat %w{title_column status_column add_child_column remove_column} 
     110        end 
     111        page.remove = page.children = page.index 
     112        page._part = page.edit 
     113      end 
     114    end 
     115 
     116    def load_default_user_regions 
     117      returning OpenStruct.new do |user| 
     118        user.edit = RegionSet.new do |edit| 
     119          edit.main.concat %w{edit_header edit_form} 
     120          edit.form.concat %w{edit_name edit_email edit_username edit_password  
     121                              edit_roles edit_notes} 
     122          edit.form_bottom.concat %w{edit_timestamp edit_buttons} 
     123        end 
     124      end 
     125    end 
     126 
     127    def load_default_snippet_regions 
     128      returning OpenStruct.new do |snippet| 
     129        snippet.edit = RegionSet.new do |edit| 
     130          edit.main.concat %w{edit_header edit_form} 
     131          edit.form.concat %w{edit_title edit_content edit_filter edit_timestamp} 
     132          edit.form_bottom.concat %w{edit_buttons} 
     133        end 
     134      end 
     135    end 
     136 
     137    def load_default_layout_regions 
     138      returning OpenStruct.new do |layout| 
     139        layout.edit = RegionSet.new do |edit| 
     140          edit.main.concat %w{edit_header edit_form} 
     141          edit.form.concat %w{edit_title edit_extended_metadata edit_content edit_timestamp} 
     142          edit.form_bottom.concat %w{edit_buttons} 
     143        end 
     144      end 
     145    end 
    81146  end 
    82147end 
  • trunk/radiant/spec/controllers/admin/abstract_model_controller_spec.rb

    r785 r870  
    1010    "#{Admin::LayoutController.controller_path}/#{default_action_name}" 
    1111  end 
     12   
     13  before_filter {|c| c.send(:instance_variable_set, "@controller_name", 'layout')} 
    1214end 
    1315 
  • trunk/radiant/spec/helpers/application_helper_spec.rb

    r865 r870  
    164164    admin.should == Radiant::AdminUI.instance 
    165165  end 
     166   
     167  it "should include the regions helper" do 
     168    ApplicationHelper.included_modules.should include(Admin::RegionsHelper) 
     169  end 
    166170end 
  • trunk/radiant/spec/lib/radiant/admin_ui_spec.rb

    r607 r870  
    33describe Radiant::AdminUI do 
    44  before :each do 
    5     @admin = Radiant::AdminUI.instance 
     5    @admin = Radiant::AdminUI.new 
    66  end 
    7    
     7 
    88  it "should be a Simpleton" do 
    99    Radiant::AdminUI.included_modules.should include(Simpleton) 
    1010    Radiant::AdminUI.should respond_to(:instance) 
    1111  end 
    12    
     12 
    1313  it "should have a TabSet" do 
    1414    @admin.should respond_to(:tabs) 
    1515    @admin.tabs.should_not be_nil 
    1616    @admin.tabs.should be_instance_of(Radiant::AdminUI::TabSet) 
     17  end 
     18 
     19  it "should have collections of Region Sets for every controller" do 
     20    %w{page snippet layout user}.each do |collection| 
     21      @admin.should respond_to(collection) 
     22      @admin.send(collection).should_not be_nil 
     23      @admin.send(collection).should be_kind_of(OpenStruct) 
     24    end 
     25  end 
     26 
     27  it "should load the default page regions" do 
     28    page = @admin.page 
     29    %w{edit remove children index}.each do |action| 
     30      page.send(action).should_not be_nil 
     31      page.send(action).should be_kind_of(Radiant::AdminUI::RegionSet) 
     32    end 
     33    page.edit.main.should == %w{edit_header edit_form edit_popups} 
     34    page.edit.form.should == %w{edit_title edit_extended_metadata 
     35                                edit_page_parts} 
     36    page.edit.parts_bottom.should == %w{edit_layout_and_type edit_timestamp} 
     37    page.edit.form_bottom.should == %w{edit_buttons} 
     38    page.index.sitemap_head.should == %w{title_column_header 
     39                                        status_column_header 
     40                                        modify_column_header} 
     41    page.index.node.should == %w{title_column status_column add_child_column 
     42                                  remove_column} 
     43    page.remove.should === page.index 
     44    page.children.should === page.index 
     45    page._part.should === page.edit 
     46  end 
     47 
     48  it "should load the default snippet regions" do 
     49    snippet = @admin.snippet 
     50    snippet.edit.should_not be_nil 
     51    snippet.edit.main.should == %w{edit_header edit_form} 
     52    snippet.edit.form.should == %w{edit_title edit_content edit_filter 
     53                                   edit_timestamp} 
     54    snippet.edit.form_bottom.should == %w{edit_buttons} 
     55  end 
     56 
     57  it "should load the default layout regions" do 
     58    layout = @admin.layout 
     59    layout.edit.should_not be_nil 
     60    layout.edit.main.should == %w{edit_header edit_form} 
     61    layout.edit.form.should == %w{edit_title edit_extended_metadata 
     62                                  edit_content edit_timestamp} 
     63    layout.edit.form_bottom.should == %w{edit_buttons} 
     64  end 
     65 
     66  it "should load the default user regions" do 
     67    user = @admin.user 
     68    user.edit.should_not be_nil 
     69    user.edit.main.should == %w{edit_header edit_form} 
     70    user.edit.form.should == %w{edit_name edit_email edit_username 
     71                                edit_password edit_roles edit_notes} 
     72    user.edit.form_bottom.should == %w{edit_timestamp edit_buttons} 
    1773  end 
    1874end 
     
    3187    @tabs.class.included_modules.should include(Enumerable) 
    3288  end 
    33    
     89 
    3490  it "should have its tabs accessible by name using brackets" do 
    3591    @tabs.should respond_to(:[]) 
     
    3995    end 
    4096  end 
    41    
     97 
    4298  it "should have its tabs accessible by index using brackets" do 
    4399    @tab_names.each_with_index do |name, index| 
    44100      @tabs[index].should be_instance_of(Radiant::AdminUI::Tab) 
    45101      @tabs[index].name.should == name 
    46     end  
     102    end 
    47103  end 
    48    
     104 
    49105  it "should add new tabs to the end by default" do 
    50106    @tabs.size.should == 3 
     
    52108    @tabs[3].name.should == "Test" 
    53109  end 
    54    
     110 
    55111  it "should add a new tab before the specified tab" do 
    56112    @tabs[1].name.should == "Second" 
     
    59115    @tabs[2].name.should == "Second" 
    60116  end 
    61    
     117 
    62118  it "should add a new tab after the specified tab" do 
    63119    @tabs[1].name.should == "Second" 
     
    68124    @tabs[3].name.should == "Third" 
    69125  end 
    70    
     126 
    71127  it "should remove a tab by name" do 
    72128    @tabs.size.should == 3 
     
    75131    @tabs[1].name.should == "Third" 
    76132  end 
    77    
     133 
    78134  it "should not allow adding a tab with the same name as an existing tab" do 
    79135    lambda { @tabs.add "First", "/first" }.should raise_error(Radiant::AdminUI::DuplicateTabNameError) 
    80136  end 
    81    
     137 
    82138  it "should remove all tabs when cleared" do 
    83139    @tabs.size.should == 3 
     
    100156    end 
    101157  end 
    102    
     158 
    103159  it "should be shown only to admin users when visibility is admin" do 
    104160    @tab.visibility = [:admin] 
     
    108164    end 
    109165  end 
    110    
     166 
    111167  it "should be shown only to developer users when visibility is developer" do 
    112168    @tab.visibility = [:developer] 
     
    114170    [:existing, :another, :admin, :non_admin].each do |user| 
    115171      @tab.should_not be_shown_for(users(user)) 
    116     end     
     172    end 
    117173  end 
    118    
     174 
    119175  it "should assign visibility from :for option when created" do 
    120176    @tab = Radiant::AdminUI::Tab.new "Test", "/test", :for => :developer 
    121177    @tab.visibility.should == [:developer] 
    122178  end 
    123    
     179 
    124180  it "should assign visibility from :visibility option when created" do 
    125181    @tab = Radiant::AdminUI::Tab.new "Test", "/test", :visibility => :developer 
    126182    @tab.visibility.should == [:developer] 
    127183  end 
    128    
     184 
    129185  it "should assign visibility from both :for and :visibility options when created" do 
    130186    @tab = Radiant::AdminUI::Tab.new "Test", "/test", :for => :developer, :visibility => :admin