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 | ... | ... |