Commit 9ce6f648f649c2714b17f7a72be136184f0b1268
1 parent
ab197b95
Exists in
master
and in
28 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,9 +2,9 @@ class ProfileDesignController < BoxOrganizerController | ||
| 2 | 2 | ||
| 3 | needs_profile | 3 | needs_profile |
| 4 | 4 | ||
| 5 | - BLOCKS = [ | ||
| 6 | - Block | ||
| 7 | - ] | 5 | + def available_blocks |
| 6 | + @available_blocks ||= [ Block, ArticleBlock ] | ||
| 7 | + end | ||
| 8 | 8 | ||
| 9 | def index | 9 | def index |
| 10 | render :action => 'index' | 10 | render :action => 'index' |
| @@ -13,14 +13,14 @@ class ProfileDesignController < BoxOrganizerController | @@ -13,14 +13,14 @@ class ProfileDesignController < BoxOrganizerController | ||
| 13 | def add_block | 13 | def add_block |
| 14 | type = params[:type] | 14 | type = params[:type] |
| 15 | if ! type.blank? | 15 | if ! type.blank? |
| 16 | - if BLOCKS.map(&:name).include?(type) | 16 | + if available_blocks.map(&:name).include?(type) |
| 17 | boxes_holder.boxes.find(params[:box_id]).blocks << type.constantize.new | 17 | boxes_holder.boxes.find(params[:box_id]).blocks << type.constantize.new |
| 18 | redirect_to :action => 'index' | 18 | redirect_to :action => 'index' |
| 19 | else | 19 | else |
| 20 | raise ArgumentError.new("Type %s is not allowed. Go away." % type) | 20 | raise ArgumentError.new("Type %s is not allowed. Go away." % type) |
| 21 | end | 21 | end |
| 22 | else | 22 | else |
| 23 | - @block_types = BLOCKS | 23 | + @block_types = available_blocks |
| 24 | @boxes = boxes_holder.boxes | 24 | @boxes = boxes_holder.boxes |
| 25 | render :action => 'add_block', :layout => false | 25 | render :action => 'add_block', :layout => false |
| 26 | end | 26 | end |
app/helpers/application_helper.rb
| @@ -261,7 +261,7 @@ module ApplicationHelper | @@ -261,7 +261,7 @@ module ApplicationHelper | ||
| 261 | end | 261 | end |
| 262 | 262 | ||
| 263 | def button(type, label, url, html_options = {}) | 263 | def button(type, label, url, html_options = {}) |
| 264 | - the_class = "button #{type}" | 264 | + the_class = "button with_text #{type}" |
| 265 | if html_options.has_key?(:class) | 265 | if html_options.has_key?(:class) |
| 266 | the_class << ' ' << html_options[:class] | 266 | the_class << ' ' << html_options[:class] |
| 267 | end | 267 | end |
| @@ -297,6 +297,15 @@ module ApplicationHelper | @@ -297,6 +297,15 @@ module ApplicationHelper | ||
| 297 | content_tag('div', '', html_options.merge(:class => the_class)) | 297 | content_tag('div', '', html_options.merge(:class => the_class)) |
| 298 | end | 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 | def button_bar(options = {}, &block) | 309 | def button_bar(options = {}, &block) |
| 301 | concat(content_tag('div', capture(&block) + tag('br', :style => 'clear: left;'), { :class => 'button-bar' }.merge(options)), block.binding) | 310 | concat(content_tag('div', capture(&block) + tag('br', :style => 'clear: left;'), { :class => 'button-bar' }.merge(options)), block.binding) |
| 302 | end | 311 | end |
app/helpers/boxes_helper.rb
| @@ -55,7 +55,7 @@ module BoxesHelper | @@ -55,7 +55,7 @@ module BoxesHelper | ||
| 55 | 55 | ||
| 56 | classes = 'block' # ['block', block.class.name.underscore.gsub('_', '-') ].uniq.join(' ') | 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 | end | 59 | end |
| 60 | 60 | ||
| 61 | module DontMoveBlocks | 61 | module DontMoveBlocks |
| @@ -67,7 +67,7 @@ module BoxesHelper | @@ -67,7 +67,7 @@ module BoxesHelper | ||
| 67 | def self.block_handle(block) | 67 | def self.block_handle(block) |
| 68 | '' | 68 | '' |
| 69 | end | 69 | end |
| 70 | - def self.block_move_buttons(block) | 70 | + def self.block_edit_buttons(block) |
| 71 | '' | 71 | '' |
| 72 | end | 72 | end |
| 73 | end | 73 | end |
| @@ -96,14 +96,17 @@ module BoxesHelper | @@ -96,14 +96,17 @@ module BoxesHelper | ||
| 96 | draggable_element("block-#{block.id}", :revert => true) | 96 | draggable_element("block-#{block.id}", :revert => true) |
| 97 | end | 97 | end |
| 98 | 98 | ||
| 99 | - def block_move_buttons(block) | 99 | + def block_edit_buttons(block) |
| 100 | buttons = [] | 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 | end | 110 | end |
| 108 | 111 | ||
| 109 | end | 112 | end |
app/models/article_block.rb
| @@ -4,8 +4,8 @@ class ArticleBlock < Block | @@ -4,8 +4,8 @@ class ArticleBlock < Block | ||
| 4 | _('Display one of your contents.') | 4 | _('Display one of your contents.') |
| 5 | end | 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 | end | 9 | end |
| 10 | 10 | ||
| 11 | def article_id | 11 | def article_id |
| @@ -29,4 +29,8 @@ class ArticleBlock < Block | @@ -29,4 +29,8 @@ class ArticleBlock < Block | ||
| 29 | @article = obj | 29 | @article = obj |
| 30 | end | 30 | end |
| 31 | 31 | ||
| 32 | + def editor | ||
| 33 | + { :controller => 'profile_design', :action => 'edit', :id => self.id } | ||
| 34 | + end | ||
| 35 | + | ||
| 32 | end | 36 | end |
app/models/block.rb