Commit f16b74e2b8b540437ffce4543ce6a2f6233c78a4

Authored by LeandroNunes
1 parent ee41e5ff

ActionItem19: adding blocks configuration and fixing fixtures of design_blocks

git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@832 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/design_blocks/favorite_links/controllers/favorite_links_controller.rb 0 → 100644
... ... @@ -0,0 +1,73 @@
  1 +class FavoriteLinksController < ApplicationController
  2 +
  3 +
  4 + # The methods above are specific for noosfero application. I think
  5 + # this it not the correct way to get this method.
  6 + #
  7 + # We can create a method in the app/controllers/profile_admin folder
  8 + # the inherit this method and adds only the two lines above.
  9 + #
  10 + # With this way we can reuse this block on many others case and each case
  11 + # we follow the same way.
  12 + #
  13 + # Specific for app
  14 + needs_profile
  15 + design :holder => 'profile'
  16 + # End specific for app
  17 +
  18 +
  19 + acts_as_design_block
  20 +
  21 + CONTROL_ACTION_OPTIONS = {
  22 + 'manage_links' => _('Manage Links'),
  23 + 'edit' => _('Edit'),
  24 + }
  25 +
  26 + def index
  27 + get_favorite_links
  28 + design_render
  29 + end
  30 +
  31 + def edit
  32 + design_render_on_edit
  33 + end
  34 +
  35 + def save
  36 + if @design_block.update_attributes(params[:design_block])
  37 + get_favorite_links
  38 + design_render_on_edit :action => 'manage_links'
  39 + else
  40 + design_render_on_edit :nothing => true
  41 + end
  42 + end
  43 +
  44 + def manage_links
  45 + get_favorite_links
  46 + design_render_on_edit
  47 + end
  48 +
  49 + def add_link
  50 + design_render_on_edit
  51 + end
  52 +
  53 + def remove_link
  54 + @design_block.delete_link(params[:link])
  55 + get_favorite_links
  56 + design_render_on_edit :action => 'manage_links'
  57 + end
  58 +
  59 + def get_favorite_links
  60 + favorite_links = @design_block.favorite_links
  61 + @favorite_links_pages, @favorite_links = paginate_by_collection favorite_links
  62 + end
  63 +
  64 + def paginate_by_collection(collection, options = {})
  65 + page = ( 1).to_i
  66 + items_per_page = @design_block.limit_number
  67 + offset = (page - 1) * items_per_page
  68 + link_pages = Paginator.new(self, collection.size, items_per_page, page)
  69 + collection = collection[offset..(offset + items_per_page - 1)]
  70 + return link_pages, collection
  71 + end
  72 +
  73 +end
... ...
app/design_blocks/favorite_links/models/favorite_links.rb 0 → 100644
... ... @@ -0,0 +1,37 @@
  1 +class FavoriteLinks < Design::Block
  2 +
  3 + def self.description
  4 + _('Favorite Links')
  5 + end
  6 +
  7 + def limit_number= value
  8 + self.settings[:limit_number] = value.to_i
  9 + end
  10 +
  11 + def limit_number
  12 + self.settings[:limit_number] || 5
  13 + end
  14 +
  15 + def favorite_links_limited
  16 + self.favorite_links.first(self.limit_number)
  17 + end
  18 +
  19 + def favorite_links
  20 + self.settings[:favorite_links] ||= []
  21 + end
  22 +
  23 + def delete_link link
  24 + self.settings[:favorite_links].reject!{ |item| item == link }
  25 + self.save
  26 + end
  27 +
  28 + def favorite_link
  29 + nil
  30 + end
  31 +
  32 + def favorite_link= link
  33 + self.favorite_links.push(link)
  34 + self.favorite_links.uniq!
  35 + end
  36 +
  37 +end
... ...
app/design_blocks/favorite_links/views/add_link.rhtml 0 → 100644
... ... @@ -0,0 +1,13 @@
  1 +<h2> <%= _('Editing Favorite Links') %> </h2>
  2 +
  3 +<% design_form_remote_tag( :url => {:action => 'save'}) do %>
  4 +
  5 + <p>
  6 + <label for="design_block_title"> <%= _("Title") %> </label>
  7 + <%= text_field 'design_block', 'favorite_link'%>
  8 + </p>
  9 +
  10 + <%= submit_tag _('Save') %>
  11 +
  12 +<% end %>
  13 +
... ...
app/design_blocks/favorite_links/views/edit.rhtml 0 → 100644
... ... @@ -0,0 +1,29 @@
  1 +
  2 +<h2> <%= _('Editing Favorite Links') %> </h2>
  3 +
  4 + <% design_form_remote_tag( :url => {:action => 'save'}) do %>
  5 +
  6 + <p>
  7 + <label for="design_block_title"> <%= _("Title") %> </label>
  8 + <%= text_field 'design_block', 'title'%>
  9 + </p>
  10 +
  11 + <p>
  12 + <label for="design_block_display_header"> <%= _("Display header?") %> </label>
  13 + <%= check_box 'design_block', 'display_header', {}, 'true', 'false' %>
  14 + </p>
  15 +
  16 + <p>
  17 + <label for="design_block_display_title"> <%= _("Display title?") %> </label>
  18 + <%= check_box 'design_block', 'display_title', {}, 'true', 'false' %>
  19 + </p>
  20 +
  21 + <p>
  22 + <label for="design_block_limit_number"> <%= _("Max number of links") %> </label>
  23 + <%= text_field 'design_block', 'limit_number'%>
  24 + </p>
  25 +
  26 + <%= submit_tag _('Save') %>
  27 +
  28 +<% end %>
  29 +
... ...
app/design_blocks/favorite_links/views/index.rhtml 0 → 100644
... ... @@ -0,0 +1,16 @@
  1 +
  2 +<% if @favorite_links_pages.current.previous%>
  3 + <%= design_link_to_remote(_('Previous'), :url => {:action => 'index', :page => @favorite_links_pages.current.previous}) %>
  4 +<% end %>
  5 +<% if @favorite_links_pages.current.next %>
  6 + <%= design_link_to_remote(_('Next'), :url => {:action => 'index', :page => @favorite_links_pages.current.next}) %>
  7 +<% end %>
  8 +
  9 +<% @favorite_links.each do |link| %>
  10 + <ul>
  11 + <li>
  12 + <%= link_to link, link, :popup => true %>
  13 + </li>
  14 + </ul>
  15 +<% end %>
  16 +
... ...
app/design_blocks/favorite_links/views/manage_links.rhtml 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +
  2 +<h2>
  3 + <%= _('Favorite Links') %>
  4 + <%= design_link_to_remote(_('Add Link'), :url => {:action => 'add_link'} )%>
  5 +
  6 +</h2>
  7 +<% if @favorite_links_pages.current.previous%>
  8 + <%= design_link_to_remote(_('Previous'), :url => {:action => 'manage_links', :page => @favorite_links_pages.current.previous}) %>
  9 +<% end %>
  10 +<% if @favorite_links_pages.current.next %>
  11 + <%= design_link_to_remote(_('Next'), :url => {:action => 'manage_links', :page => @favorite_links_pages.current.next}) %>
  12 +<% end %>
  13 +
  14 +<% @favorite_links.each do |link| %>
  15 + <ul>
  16 + <li>
  17 + <%= link_to link, link, :popup => true %>
  18 + <%= design_link_to_remote content_tag(:span,_('Remove')), :url => {:action => 'remove_link', :link => link } %>
  19 + </li>
  20 + </ul>
  21 +<% end %>
... ...
test/fixtures/design_blocks.yml
... ... @@ -5,42 +5,40 @@ one:
5 5 box_id: 2
6 6 position: 1
7 7 type: 'MainBlock'
8   - helper: 'plain_content'
9   - name: 'Main Content'
10   -# Link Blocks
  8 + title: 'Main Content'
  9 +# FavoriteLinks Blocks
11 10 two:
12 11 id: 2
13 12 box_id: 1
14 13 position: 2
15   - type: 'LinkBlock'
16   - helper: 'list_content'
17   - name: 'List of Links 1'
  14 + type: 'FavoriteLinks'
  15 + title: 'List of Links 1'
18 16 three:
19 17 id: 3
20 18 box_id: 1
21 19 position: 3
22   - type: 'LinkBlock'
23   - helper: 'plain_content'
24   - name: 'List of Link 2'
  20 + type: 'FavoriteLinks'
  21 + title: 'List of Link 2'
25 22 #List Blocks
26   -four:
27   - id: 4
28   - box_id: 1
29   - position: 1
30   - type: 'ListBlock'
31   - helper: 'list_content'
32   - name: 'List of Names 1'
33   -five:
34   - id: 5
35   - box_id: 3
36   - position: 1
37   - type: 'ListBlock'
38   - helper: 'list_content'
39   - name: 'List of Names 2'
40   -six:
41   - id: 6
42   - box_id: 3
43   - position: 2
44   - type: 'ListBlock'
45   - helper: 'list_content'
46   - name: 'List of Names 3'
  23 +#FIXME Put other blocks to works
  24 +#four:
  25 +# id: 4
  26 +# box_id: 1
  27 +# position: 1
  28 +# type: 'ListBlock'
  29 +# helper: 'list_content'
  30 +# title: 'List of titles 1'
  31 +#five:
  32 +# id: 5
  33 +# box_id: 3
  34 +# position: 1
  35 +# type: 'ListBlock'
  36 +# helper: 'list_content'
  37 +# title: 'List of titles 2'
  38 +#six:
  39 +# id: 6
  40 +# box_id: 3
  41 +# position: 2
  42 +# type: 'ListBlock'
  43 +# helper: 'list_content'
  44 +# title: 'List of titles 3'
... ...