Changeset 588
- Timestamp:
- 11/08/07 18:06:13 (10 months ago)
- Files:
-
- trunk/extensions/shards/README (modified) (1 diff)
- trunk/extensions/shards/app/views/admin/page/_edit_buttons.rhtml (deleted)
- trunk/extensions/shards/app/views/admin/page/_edit_extended_metadata.rhtml (deleted)
- trunk/extensions/shards/app/views/admin/page/_edit_form.rhtml (modified) (1 diff)
- trunk/extensions/shards/app/views/admin/page/_edit_header.rhtml (deleted)
- trunk/extensions/shards/app/views/admin/page/_edit_layout_and_type.rhtml (deleted)
- trunk/extensions/shards/app/views/admin/page/_edit_page_parts.rhtml (deleted)
- trunk/extensions/shards/app/views/admin/page/_edit_timestamp.rhtml (deleted)
- trunk/extensions/shards/app/views/admin/page/_edit_title.rhtml (deleted)
- trunk/extensions/shards/app/views/admin/page/edit.rhtml (modified) (1 diff)
- trunk/extensions/shards/app/views/admin/page/index.rhtml (modified) (1 diff)
- trunk/extensions/shards/lib/shards/helper_extensions.rb (modified) (1 diff)
- trunk/extensions/shards/lib/shards/region_partials.rb (added)
- trunk/extensions/shards/test/unit/region_partials_test.rb (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/extensions/shards/README
r488 r588 1 1 = Shards 2 2 3 Description goes here 3 Created by: Sean Cribbs, September 2007 4 5 The Shards extension creates insertion points called "regions" into the admin 6 UI. Other extensions can modify these regions by adding or removing partials 7 in order to customize the UI and provide new or modify existing functionality. 8 9 Regions are accessed via the "admin" object within an extension class. If I 10 wanted to add a partial to the top of the page editing screen, I would do 11 so like this: 12 13 # Within the context of my extension class 14 def activate 15 admin.page.edit.add :main, "fuzzy_bears", :before => "edit_header" 16 end 17 18 The "fuzzy_bears" partial name is relative to the Admin::PageController, so it 19 should exist inside the app/views/admin/page directory in the extension. 20 21 More details can be found on the Radiant wiki: 22 23 http://wiki.radiantcms.org/UsingShardsExtension trunk/extensions/shards/app/views/admin/page/_edit_form.rhtml
r571 r588 1 <form method="post" enctype="multipart/form-data"> 2 <%= hidden_field "page", "lock_version" %> 3 <%= render_region :form_top %> 4 <div class="form-area"> 5 <%= render_region :form %> 6 </div> 7 <%= render_region :form_bottom %> 8 </form> 1 <form method="post" enctype="multipart/form-data"> 2 <%= hidden_field "page", "lock_version" %> 3 <%= render_region :form_top %> 4 <div class="form-area"> 5 <% render_region :form do |form| %> 6 <% form.edit_title do %> 7 <p class="title"> 8 <label for="page_title">Page Title</label> 9 <%= text_field "page", "title", :class => 'textbox', :maxlength => 255 %> 10 </p> 11 <% end %> 12 <% form.edit_extended_metadata do %> 13 <div id="extended-metadata" class="row"<%= meta_visible(:meta) %>> 14 <table class="fieldset"> 15 <% for meta in @meta %> 16 <%= render :partial => "meta_row", :object => meta %> 17 <% end %> 18 <%= render_region :extended_metadata %> 19 </table> 20 </div> 21 <p class="more-or-less"> 22 <small> 23 <a href="#" onclick="<%= toggle_javascript_for('extended-metadata') %>"<%= meta_visible(:meta_more) %> id="more-extended-metadata">More</a> 24 <a href="#" onclick="<%= toggle_javascript_for('extended-metadata') %>"<%= meta_visible(:meta_less) %> id="less-extended-metadata">Less</a> 25 </small> 26 </p> 27 <% end %> 28 <% form.edit_page_parts do %> 29 <div id="tab-control"> 30 <div id="tabs" class="tabs"> 31 <div id="tab-toolbar"> 32 <%= link_to image('plus'), 'javascript:toggle_add_part_popup()', :title => 'Add Tab' %> 33 <%= link_to image('minus'), 'javascript:tabControl.removeTab(tabControl.selected)', :title => 'Remove Tab', :confirm => 'Delete the current tab?' %> 34 </div> 35 </div> 36 <div id="pages" class="pages"> 37 <%= render :partial => 'part', :collection => @page.parts %> 38 </div> 39 </div> 40 <% render_region :parts_bottom do |parts_bottom| %> 41 <% parts_bottom.edit_layout_and_type do %> 42 <div class="row"> 43 <p><label for="page_layout_id">Layout</label> 44 <%= select "page", "layout_id", [['<inherit>', '']] + Layout.find(:all).map { |s| [s.name, s.id] } %></p> 45 <p><label for="page_class_name">Page Type</label> 46 <%= select "page", "class_name", [['<normal>', 'Page']] + Page.descendants.map { |p| [p.display_name, p.name] }.sort_by { |p| p.first } %></p> 47 <p><label for="page_status_id">Status</label> 48 <%= select "page", "status_id", Status.find_all.map { |s| [s.name, s.id] } %></p> 49 <%= render_region :layout_row %> 50 </div> 51 <span class="clear"> </span> 52 <% end %> 53 <% parts_bottom.edit_timestamp do %> 54 <%= updated_stamp @page %> 55 <% end %> 56 <% end %> 57 <% end %> 58 <% end %> 59 </div> 60 <% render_region :form_bottom do |form_bottom| %> 61 <% form_bottom.edit_buttons do %> 62 <p class="buttons"> 63 <% @buttons_partials.each do |partial| %> 64 <%= render :partial => partial %> 65 <% end %> 66 <%= save_model_button(@page) %> 67 <%= save_model_and_continue_editing_button(@page) %> 68 or 69 <%= link_to "Cancel", page_index_url %> 70 <%= render_region :buttons %> 71 </p> 72 <% end %> 73 <% end %> 74 </form> trunk/extensions/shards/app/views/admin/page/edit.rhtml
r488 r588 1 <%= render_region :main %> 1 <% render_region :main do |main| %> 2 <% main.edit_header do %> 3 <% if @page.new_record? -%> 4 <h1 id="new_page">New Page</h1> 5 <% else -%> 6 <h1 id="edit_page">Edit Page</h1> 7 <% end -%> 8 <% end %> 9 <% end %> 2 10 <%= render :partial => "edit_scripts_and_styles" %> trunk/extensions/shards/app/views/admin/page/index.rhtml
r561 r588 5 5 <thead> 6 6 <tr> 7 <%= render_region :sitemap_head %> 7 <% render_region :sitemap_head do |sitemap_head| %> 8 <% sitemap_head.index_sitemap_column_headers do %> 9 <th class="page">Page</th> 10 <th class="status">Status</th> 11 <th class="modify" colspan="2">Modify</th> 12 <% end %> 13 <% end %> 8 14 </tr> 9 15 </thead> trunk/extensions/shards/lib/shards/helper_extensions.rb
r567 r588 1 1 module Shards::HelperExtensions 2 def render_region(region, options={}) 3 @controller_name ||= @controller.controller_name 4 @template_name ||= File.basename(@first_render).split(".").last 5 admin.send(@controller_name).send(@template_name)[region].compact.map do |partial| 6 render options.merge(:partial => partial) 2 def render_region(region, options={}, &block) 3 lazy_initialize_region_set 4 default_partials = Shards::RegionPartials.new(@template) 5 if block_given? 6 junk = capture(default_partials, &block) 7 (options[:locals] ||= {}).merge!(:defaults => default_partials) 8 end 9 output = @region_set[region].compact.map do |partial| 10 begin 11 render options.merge(:partial => partial) 12 rescue ::ActionView::TemplateError => e # error in template 13 raise e 14 rescue ::ActionView::ActionViewError # couldn't find template 15 default_partials[partial] 16 end 7 17 end.join 18 block_given? ? concat(output, block.binding) : output 19 end 20 21 def lazy_initialize_region_set 22 unless @region_set 23 @controller_name ||= @controller.controller_name 24 @template_name ||= File.basename(@first_render).split(".").last 25 @region_set = admin.send(@controller_name).send(@template_name) 26 end 8 27 end 9 28 end
