Commit b2451593d2681e421b8e45fe2b57995f873ebe7e
1 parent
ce0d03ab
Exists in
master
and in
23 other branches
added support for attribute ordering in display content plugin
Showing
7 changed files
with
108 additions
and
20 deletions
Show diff stats
app/models/article.rb
| ... | ... | @@ -0,0 +1,13 @@ |
| 1 | +class AddImageToArticle < ActiveRecord::Migration | |
| 2 | + | |
| 3 | + def self.up | |
| 4 | + add_column :articles, :image_id, :integer | |
| 5 | + add_column :article_versions, :image_id, :integer | |
| 6 | + end | |
| 7 | + | |
| 8 | + def self.down | |
| 9 | + remove_column :articles, :image_id | |
| 10 | + remove_column :article_versions, :image_id | |
| 11 | + end | |
| 12 | + | |
| 13 | +end | ... | ... |
| ... | ... | @@ -0,0 +1,13 @@ |
| 1 | +class AddPositionToArticle < ActiveRecord::Migration | |
| 2 | + | |
| 3 | + def self.up | |
| 4 | + add_column :articles, :position, :integer | |
| 5 | + add_column :article_versions, :position, :integer | |
| 6 | + end | |
| 7 | + | |
| 8 | + def self.down | |
| 9 | + remove_column :articles, :position | |
| 10 | + remove_column :article_versions, :position | |
| 11 | + end | |
| 12 | + | |
| 13 | +end | ... | ... |
plugins/display_content/lib/display_content_block.rb
| ... | ... | @@ -2,8 +2,13 @@ class DisplayContentBlock < Block |
| 2 | 2 | |
| 3 | 3 | settings_items :nodes, :type => Array, :default => [] |
| 4 | 4 | settings_items :parent_nodes, :type => Array, :default => [] |
| 5 | - settings_items :chosen_attributes, :type => Array, :default => ['title'] | |
| 6 | - | |
| 5 | + settings_items :sections, | |
| 6 | + :type => Array, | |
| 7 | + :default => [{:name => _('Title'), :checked => true}, | |
| 8 | + {:name => _('Abstract'), :checked => true}, | |
| 9 | + {:name => _('Body'), :checked => false}, | |
| 10 | + {:name => _('Image'), :checked => false}] | |
| 11 | + | |
| 7 | 12 | def self.description |
| 8 | 13 | _('Display your contents') |
| 9 | 14 | end |
| ... | ... | @@ -39,13 +44,27 @@ class DisplayContentBlock < Block |
| 39 | 44 | include ActionController::UrlWriter |
| 40 | 45 | def content(args={}) |
| 41 | 46 | docs = owner.articles.find(:all, :conditions => {:id => self.nodes}) |
| 47 | + | |
| 48 | + content_sections = '' | |
| 49 | + | |
| 42 | 50 | block_title(title) + |
| 43 | - content_tag('ul', docs.map {|item| | |
| 44 | - content_tag('li', | |
| 45 | - (display_attribute?('title') ? content_tag('div', link_to(h(item.title), item.url), :class => 'title') : '') + | |
| 46 | - (display_attribute?('abstract') ? content_tag('div', item.abstract ,:class => 'lead') : '') + | |
| 47 | - (display_attribute?('body') ? content_tag('div', item.body ,:class => 'body') : '') | |
| 48 | - ) | |
| 51 | + content_tag('ul', docs.map {|item| | |
| 52 | + sections.select { |section| | |
| 53 | + case section[:name] | |
| 54 | + when 'title' | |
| 55 | + content_sections += (display_section?(section) ? (content_tag('div', link_to(h(item.title), item.url), :class => 'title') ) : '') | |
| 56 | + when 'abstract' | |
| 57 | + content_sections += (display_section?(section) ? (content_tag('div', item.abstract ,:class => 'lead')) : '' ) | |
| 58 | + when 'body' | |
| 59 | + content_sections += (display_section?(section) ? (content_tag('div', item.body ,:class => 'body')) : '' ) | |
| 60 | + when 'image' | |
| 61 | + image_section = image_tag item.image.public_filename if item.image | |
| 62 | + if !image_section.blank? | |
| 63 | + content_sections += (display_section?(section) ? (content_tag('div', image_section ,:class => 'image')) : '' ) | |
| 64 | + end | |
| 65 | + end | |
| 66 | + } | |
| 67 | + content_tag('li', content_sections) | |
| 49 | 68 | }.join("\n")) |
| 50 | 69 | |
| 51 | 70 | end |
| ... | ... | @@ -61,8 +80,8 @@ class DisplayContentBlock < Block |
| 61 | 80 | params |
| 62 | 81 | end |
| 63 | 82 | |
| 64 | - def display_attribute?(attr) | |
| 65 | - chosen_attributes.include?(attr) | |
| 83 | + def display_section?(section) | |
| 84 | + section[:checked] | |
| 66 | 85 | end |
| 67 | 86 | |
| 68 | 87 | protected | ... | ... |
plugins/display_content/lib/display_content_plugin.rb
plugins/display_content/public/style.css
| 1 | -#display_content_plugin ul { | |
| 1 | +#display_content_plugin .sections { | |
| 2 | + width: auto; | |
| 3 | +} | |
| 4 | + | |
| 5 | +#display_content_plugin .sections td { | |
| 6 | + padding: 2px; | |
| 7 | +} | |
| 8 | + | |
| 9 | +.block.display-content-block ul { | |
| 2 | 10 | list-style: none; |
| 11 | + padding: 0px; | |
| 12 | +} | |
| 13 | + | |
| 14 | +.block.display-content-block li { | |
| 15 | + margin: 5px; | |
| 16 | +} | |
| 17 | + | |
| 18 | +.block.display-content-block .title, | |
| 19 | +.block.display-content-block .lead, | |
| 20 | +.block.display-content-block .body, | |
| 21 | +.block.display-content-block .image { | |
| 22 | + margin: 2px 0px 2px 0px; | |
| 3 | 23 | } |
| 4 | 24 | |
| 5 | -#display_content_plugin .display_attributes li{ | |
| 6 | - display: inline; | |
| 25 | +.block.display-content-block .title { | |
| 26 | + //border: 1px solid green; | |
| 7 | 27 | } |
| 28 | + | |
| 29 | +.block.display-content-block .lead { | |
| 30 | + //border: 1px solid purple; | |
| 31 | +} | |
| 32 | + | |
| 33 | +.block.display-content-block .body { | |
| 34 | + //border: 1px solid blue; | |
| 35 | +} | |
| 36 | + | |
| 37 | +.block.display-content-block .image { | |
| 38 | + //border: 1px solid yellow; | |
| 39 | + display: table; | |
| 40 | +} | |
| 41 | + | ... | ... |
plugins/display_content/views/box_organizer/_display_content_block.rhtml
| 1 | 1 | <div id="display_content_plugin"> |
| 2 | 2 | |
| 3 | -<h3> <%= _('Choose which attributes should be displayed:') %> </h3> | |
| 4 | -<ul class='display_attributes'> | |
| 5 | - <li> <%= _('Title: ')%> <%= check_box_tag "block[chosen_attributes][]", 'title', @block.display_attribute?('title') %> </li> | |
| 6 | - <li> <%= _('Abstract: ')%> <%= check_box_tag "block[chosen_attributes][]", 'abstract', @block.display_attribute?('abstract') %> </li> | |
| 7 | - <li> <%= _('Body: ')%> <%= check_box_tag "block[chosen_attributes][]", 'body', @block.display_attribute?('body') %> </li> | |
| 8 | -</ul> | |
| 3 | +<h3> <%= _('Choose which attributes should be displayed and drag to reorder them:') %> </h3> | |
| 4 | + | |
| 5 | +<table class="sections"> | |
| 6 | + <tbody id="sortable"> | |
| 7 | + <% for section in @block.sections do %> | |
| 8 | + <tr> | |
| 9 | + <td><%= hidden_field_tag 'block[sections][][name]', section[:name] %> <%= check_box_tag 'block[sections][][checked]', section[:name], section[:checked] %></td> | |
| 10 | + <td><%= section[:name]%></td> | |
| 11 | + </tr> | |
| 12 | + <% end %> | |
| 13 | + </tbody> | |
| 14 | +</table> | |
| 9 | 15 | |
| 10 | 16 | <h3> <%= _('Choose which content should be displayed:') %> </h3> |
| 11 | 17 | <div id="display_content"> |
| ... | ... | @@ -31,5 +37,7 @@ jQuery_1_8_3("#display_content").jstree({ |
| 31 | 37 | } |
| 32 | 38 | }); |
| 33 | 39 | |
| 40 | +jQuery( "#sortable" ).sortable(); | |
| 41 | + | |
| 34 | 42 | </script> |
| 35 | 43 | </div> | ... | ... |