Commit 9ce6f648f649c2714b17f7a72be136184f0b1268
1 parent
ab197b95
Exists in
master
and in
29 other branches
ActionItem152: adding a new block type and playing with block editor
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1238 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
5 changed files
with
35 additions
and
15 deletions
Show diff stats
app/controllers/my_profile/profile_design_controller.rb
| ... | ... | @@ -2,9 +2,9 @@ class ProfileDesignController < BoxOrganizerController |
| 2 | 2 | |
| 3 | 3 | needs_profile |
| 4 | 4 | |
| 5 | - BLOCKS = [ | |
| 6 | - Block | |
| 7 | - ] | |
| 5 | + def available_blocks | |
| 6 | + @available_blocks ||= [ Block, ArticleBlock ] | |
| 7 | + end | |
| 8 | 8 | |
| 9 | 9 | def index |
| 10 | 10 | render :action => 'index' |
| ... | ... | @@ -13,14 +13,14 @@ class ProfileDesignController < BoxOrganizerController |
| 13 | 13 | def add_block |
| 14 | 14 | type = params[:type] |
| 15 | 15 | if ! type.blank? |
| 16 | - if BLOCKS.map(&:name).include?(type) | |
| 16 | + if available_blocks.map(&:name).include?(type) | |
| 17 | 17 | boxes_holder.boxes.find(params[:box_id]).blocks << type.constantize.new |
| 18 | 18 | redirect_to :action => 'index' |
| 19 | 19 | else |
| 20 | 20 | raise ArgumentError.new("Type %s is not allowed. Go away." % type) |
| 21 | 21 | end |
| 22 | 22 | else |
| 23 | - @block_types = BLOCKS | |
| 23 | + @block_types = available_blocks | |
| 24 | 24 | @boxes = boxes_holder.boxes |
| 25 | 25 | render :action => 'add_block', :layout => false |
| 26 | 26 | end | ... | ... |
app/helpers/application_helper.rb
| ... | ... | @@ -261,7 +261,7 @@ module ApplicationHelper |
| 261 | 261 | end |
| 262 | 262 | |
| 263 | 263 | def button(type, label, url, html_options = {}) |
| 264 | - the_class = "button #{type}" | |
| 264 | + the_class = "button with_text #{type}" | |
| 265 | 265 | if html_options.has_key?(:class) |
| 266 | 266 | the_class << ' ' << html_options[:class] |
| 267 | 267 | end |
| ... | ... | @@ -297,6 +297,15 @@ module ApplicationHelper |
| 297 | 297 | content_tag('div', '', html_options.merge(:class => the_class)) |
| 298 | 298 | end |
| 299 | 299 | |
| 300 | + def icon_button(type, text, url, html_options = {}) | |
| 301 | + the_class = "button #{type}" | |
| 302 | + if html_options.has_key?(:class) | |
| 303 | + the_class << ' ' << html_options[:class] | |
| 304 | + end | |
| 305 | + | |
| 306 | + link_to(content_tag('span', text), url, html_options.merge(:class => the_class, :title => text)) | |
| 307 | + end | |
| 308 | + | |
| 300 | 309 | def button_bar(options = {}, &block) |
| 301 | 310 | concat(content_tag('div', capture(&block) + tag('br', :style => 'clear: left;'), { :class => 'button-bar' }.merge(options)), block.binding) |
| 302 | 311 | end | ... | ... |
app/helpers/boxes_helper.rb
| ... | ... | @@ -55,7 +55,7 @@ module BoxesHelper |
| 55 | 55 | |
| 56 | 56 | classes = 'block' # ['block', block.class.name.underscore.gsub('_', '-') ].uniq.join(' ') |
| 57 | 57 | |
| 58 | - box_decorator.block_target(block.box, block) + content_tag('div', result + box_decorator.block_move_buttons(block), :class => classes, :id => "block-#{block.id}") + box_decorator.block_handle(block) | |
| 58 | + box_decorator.block_target(block.box, block) + content_tag('div', result + box_decorator.block_edit_buttons(block), :class => classes, :id => "block-#{block.id}") + box_decorator.block_handle(block) | |
| 59 | 59 | end |
| 60 | 60 | |
| 61 | 61 | module DontMoveBlocks |
| ... | ... | @@ -67,7 +67,7 @@ module BoxesHelper |
| 67 | 67 | def self.block_handle(block) |
| 68 | 68 | '' |
| 69 | 69 | end |
| 70 | - def self.block_move_buttons(block) | |
| 70 | + def self.block_edit_buttons(block) | |
| 71 | 71 | '' |
| 72 | 72 | end |
| 73 | 73 | end |
| ... | ... | @@ -96,14 +96,17 @@ module BoxesHelper |
| 96 | 96 | draggable_element("block-#{block.id}", :revert => true) |
| 97 | 97 | end |
| 98 | 98 | |
| 99 | - def block_move_buttons(block) | |
| 99 | + def block_edit_buttons(block) | |
| 100 | 100 | buttons = [] |
| 101 | 101 | |
| 102 | - # FIXME hardcoded paths !!! | |
| 103 | - buttons << link_to(image_tag('/designs/icons/default/gtk-go-up.png', :alt => _('Move block up')), { :action => 'move_block_up', :id => block.id }, { :method => 'post' }) unless block.first? | |
| 104 | - buttons << link_to(image_tag('/designs/icons/default/gtk-go-down.png', :alt => _('Move block down')), { :action => 'move_block_down' ,:id => block.id }, { :method => 'post'}) unless block.last? | |
| 102 | + buttons << icon_button(:up, _('Move block up'), { :action => 'move_block_up', :id => block.id }, { :method => 'post' }) unless block.first? | |
| 103 | + buttons << icon_button(:down, _('Move block down'), { :action => 'move_block_down' ,:id => block.id }, { :method => 'post'}) unless block.last? | |
| 105 | 104 | |
| 106 | - content_tag('div', buttons.join("\n"), :class => 'block-move-buttons') | |
| 105 | + if block.editor | |
| 106 | + buttons << lightbox_button(:edit, _('Edit'), block.editor) | |
| 107 | + end | |
| 108 | + | |
| 109 | + content_tag('div', buttons.join("\n") + tag('br', :style => 'clear: left'), :class => 'button-bar') | |
| 107 | 110 | end |
| 108 | 111 | |
| 109 | 112 | end | ... | ... |
app/models/article_block.rb
| ... | ... | @@ -4,8 +4,8 @@ class ArticleBlock < Block |
| 4 | 4 | _('Display one of your contents.') |
| 5 | 5 | end |
| 6 | 6 | |
| 7 | - def content | |
| 8 | - article.to_html | |
| 7 | + def content(main = nil) | |
| 8 | + article ? article.to_html : _('Article not selected yet.') | |
| 9 | 9 | end |
| 10 | 10 | |
| 11 | 11 | def article_id |
| ... | ... | @@ -29,4 +29,8 @@ class ArticleBlock < Block |
| 29 | 29 | @article = obj |
| 30 | 30 | end |
| 31 | 31 | |
| 32 | + def editor | |
| 33 | + { :controller => 'profile_design', :action => 'edit', :id => self.id } | |
| 34 | + end | |
| 35 | + | |
| 32 | 36 | end | ... | ... |