Commit cf5172f0f099b484efc6564801c77b454052fb1f

Authored by LeandroNunes
1 parent bb5df40e

ActionItem0: loading boxes correctly

git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@89 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing 1 changed file with 35 additions and 11 deletions   Show diff stats
app/controllers/application.rb
... ... @@ -2,22 +2,14 @@
2 2 # available in all controllers.
3 3 class ApplicationController < ActionController::Base
4 4  
  5 + TEMPLATE_DIR_PATH = 'public/templates'
  6 + ICON_DIR_PATH = 'public/icons'
  7 +
5 8 before_filter :detect_stuff_by_domain
6 9 attr_reader :virtual_community
7 10  
8 11 uses_manage_template :edit => false
9 12  
10   - before_filter :load_boxes
11   - #TODO To diplay the content we need a variable called '@boxes'.
12   - #This variable is a set of boxes belongs to a owner
13   - #We have to see a better way to do that
14   - def load_boxes
15   - if Profile.exists?(1)
16   - owner = Profile.find(1)
17   - @boxes = owner.boxes
18   - end
19   - end
20   -
21 13 before_filter :load_template
22 14 # Load the template belongs to a Profile and set it at @chosen_template variable.
23 15 # If no profile exist the @chosen_template variable is set to 'default'
... ... @@ -28,6 +20,38 @@ class ApplicationController &lt; ActionController::Base
28 20 @chosen_template = @owner.nil? ? "default" : @owner.template
29 21 end
30 22  
  23 + before_filter :load_boxes
  24 + #Load a set of boxes belongs to a owner. We have to situations.
  25 + # 1 - The owner has equal or more boxes that boxes defined in template.
  26 + # The system limit the max number of boxes to the number permited in template
  27 + # 2 - The owner there isn't enough box that defined in template
  28 + # The system create the boxes needed to use the current template
  29 + def load_boxes
  30 + raise _('Template not found') if @chosen_template.nil?
  31 + n = boxes_by_template(@chosen_template)
  32 + @boxes = Array.new
  33 + if Profile.exists?(1)
  34 + owner = Profile.find(1)
  35 + @boxes = owner.boxes
  36 + end
  37 +
  38 + if @boxes.length >= n
  39 + @boxes = @boxes.first(n)
  40 + else
  41 + @boxes = @boxes
  42 + end
  43 +
  44 + end
  45 +
  46 + def boxes_by_template(template)
  47 + #f = YAML.load_file("#{TEMPLATE_DIR_PATH}/#{template}/#{template}.yml")
  48 + f = YAML.load_file("#{RAILS_ROOT}/public/templates/default/default.yml")
  49 + number_of_boxes = f[template.to_s]["number_of_boxes"]
  50 + raise _("The file #{template}.yml it's not a valid template filename") if number_of_boxes.nil?
  51 + number_of_boxes
  52 + end
  53 +
  54 +
31 55 def set_default_template
32 56 p = Profile.find(params[:object_id])
33 57 set_template(p,params[:template_name])
... ...