Commit b3e60f94024fd563d7bb3871cdec9f3ab15b2012
1 parent
37e9940b
Exists in
master
and in
22 other branches
r262@sede: terceiro | 2007-07-29 20:34:06 -0300
ActionItem0: moving available design components into Design module git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@266 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
3 changed files
with
65 additions
and
17 deletions
Show diff stats
vendor/plugins/design/lib/design.rb
... | ... | @@ -8,10 +8,13 @@ require 'design/editor' |
8 | 8 | |
9 | 9 | module Design |
10 | 10 | |
11 | + def design_plugin_data | |
12 | + @design_plugin_data ||= Hash.new | |
13 | + end | |
14 | + | |
11 | 15 | # gets the Design object for this controller |
12 | 16 | def design |
13 | - @design_plugin_data ||= Hash.new | |
14 | - data = @design_plugin_data | |
17 | + data = design_plugin_data | |
15 | 18 | |
16 | 19 | return data[:design] if data.has_key?(:design) |
17 | 20 | |
... | ... | @@ -54,5 +57,17 @@ module Design |
54 | 57 | Design.instance_variable_set('@public_filesystem_root', value) |
55 | 58 | end |
56 | 59 | |
60 | + def Design.available_templates | |
61 | + Dir.glob(File.join(Design.public_filesystem_root, Design.design_root, 'templates', '*')).select {|item| File.directory?(item) }.map {|item| File.basename(item) } | |
62 | + end | |
63 | + | |
64 | + def Design.available_themes | |
65 | + Dir.glob(File.join(Design.public_filesystem_root, Design.design_root, 'themes', '*')).select {|item| File.directory?(item) }.map {|item| File.basename(item) } | |
66 | + end | |
67 | + | |
68 | + def Design.available_icon_themes | |
69 | + Dir.glob(File.join(Design.public_filesystem_root, Design.design_root, 'icons', '*')).select {|item| File.directory?(item) }.map {|item| File.basename(item) } | |
70 | + end | |
71 | + | |
57 | 72 | |
58 | 73 | end | ... | ... |
vendor/plugins/design/lib/design/editor.rb
... | ... | @@ -6,11 +6,7 @@ module Design |
6 | 6 | # from flexible_template |
7 | 7 | module Editor |
8 | 8 | |
9 | - #FIXME: move extraction of these values elsewhere | |
10 | - def start | |
11 | - @ft_config[:available_templates] = parse_path(Dir.glob("#{RAILS_ROOT}/public/templates/*"), 'templates/') | |
12 | - @ft_config[:available_themes] = parse_path(Dir.glob("#{RAILS_ROOT}/public/themes/*"), 'themes/') | |
13 | - @ft_config[:available_icon_themes] = parse_path(Dir.glob("#{RAILS_ROOT}/public/icons/*"), 'icons/') | |
9 | + def designer | |
14 | 10 | end |
15 | 11 | |
16 | 12 | def flexible_template_edit_template? |
... | ... | @@ -19,21 +15,21 @@ module Design |
19 | 15 | |
20 | 16 | # Set the default template to the profile |
21 | 17 | def set_default_template |
22 | - set_template(@ft_config[:owner],params[:template_name]) if exist_template? params[:template_name] | |
18 | + set_template(design,params[:template_name]) if exist_template? params[:template_name] | |
23 | 19 | end |
24 | 20 | |
25 | 21 | # Set the default theme to the profile |
26 | 22 | def set_default_theme |
27 | - set_theme(@ft_config[:owner],params[:theme_name]) if exist_theme? params[:theme_name] | |
23 | + set_theme(design,params[:theme_name]) if exist_theme? params[:theme_name] | |
28 | 24 | end |
29 | 25 | |
30 | 26 | # Set the default icons theme to the profile |
31 | 27 | def set_default_icon_theme |
32 | - set_icon_theme(@ft_config[:owner],params[:icon_theme_name]) if exist_icon_theme? params[:icon_theme_name] | |
28 | + set_icon_theme(design,params[:icon_theme_name]) if exist_icon_theme? params[:icon_theme_name] | |
33 | 29 | end |
34 | 30 | |
35 | 31 | def flexible_template_set_sort_mode |
36 | - box = @ft_config[:owner].boxes.find(params[:box_id]) | |
32 | + box = design.boxes.find(params[:box_id]) | |
37 | 33 | render :update do |page| |
38 | 34 | page.replace_html "box_#{box.number}", edit_blocks(box) |
39 | 35 | page.sortable "sort_#{box.number}", :url => {:action => 'flexible_template_sort_box', :box_number => box.number} |
... | ... | @@ -56,19 +52,19 @@ module Design |
56 | 52 | # updates all boxes at the ends |
57 | 53 | def flexible_template_change_box |
58 | 54 | #TODO fix it i tried the source code comment but i have no success |
59 | - #b = @ft_config[:owner].blocks.detect{|b| b.id.to_s == params[:block].to_s } | |
55 | + #b = design.blocks.detect{|b| b.id.to_s == params[:block].to_s } | |
60 | 56 | b = Block.find(params[:block]) |
61 | - b.box = @ft_config[:owner].boxes.find(params[:box_id]) | |
57 | + b.box = design.boxes.find(params[:box_id]) | |
62 | 58 | b.save |
63 | 59 | render :update do |page| |
64 | - @ft_config[:owner].boxes.each do |box| | |
60 | + design.boxes.each do |box| | |
65 | 61 | page.replace_html "box_#{box.number}", edit_blocks(box) |
66 | 62 | end |
67 | 63 | end |
68 | 64 | end |
69 | 65 | |
70 | 66 | def flexible_template_new_block |
71 | - box = @ft_config[:owner].boxes.find(params[:box_id]) | |
67 | + box = design.boxes.find(params[:box_id]) | |
72 | 68 | render :update do |page| |
73 | 69 | page.replace_html "box_#{box.number}", new_block_form(box) |
74 | 70 | end |
... | ... | @@ -127,14 +123,14 @@ module Design |
127 | 123 | #If no chosen_template was selected the default template is set |
128 | 124 | def ft_load_boxes |
129 | 125 | n = boxes_by_template(@ft_config[:template]) |
130 | - boxes = @ft_config[:owner].boxes | |
126 | + boxes = design.boxes | |
131 | 127 | |
132 | 128 | if boxes.length >= n |
133 | 129 | boxes = boxes.first(n) |
134 | 130 | else |
135 | 131 | while boxes.length < n do |
136 | 132 | b = Box.new |
137 | - b.owner = @ft_config[:owner] | |
133 | + b.owner = design | |
138 | 134 | raise _('The box cannot be saved becaus of erros %s') % b.errors if !b.save |
139 | 135 | boxes.push(b) |
140 | 136 | end | ... | ... |
vendor/plugins/design/test/design_test.rb
... | ... | @@ -2,6 +2,13 @@ require File.join(File.dirname(__FILE__), 'test_helper') |
2 | 2 | |
3 | 3 | class DesignTest < Test::Unit::TestCase |
4 | 4 | |
5 | + def setup | |
6 | + Design.public_filesystem_root = File.join(File.dirname(__FILE__)) | |
7 | + end | |
8 | + def teardown | |
9 | + Design.public_filesystem_root = nil | |
10 | + end | |
11 | + | |
5 | 12 | def test_design_should_include_design_module |
6 | 13 | assert FixedDesignTestController.included_modules.include?(Design) |
7 | 14 | end |
... | ... | @@ -59,4 +66,34 @@ class DesignTest < Test::Unit::TestCase |
59 | 66 | assert_equal 'sample_object', InheritanceDesignTestController.send(:design_plugin_config)[:holder] |
60 | 67 | end |
61 | 68 | |
69 | + def test_should_list_available_templates | |
70 | + ['empty', 'default'].each do |item| | |
71 | + assert Design.available_templates.include?(item) | |
72 | + end | |
73 | + end | |
74 | + | |
75 | + def test_should_ignore_non_directory_when_listing_available_templates | |
76 | + assert ! Design.available_templates.include?('non_directory_should_be_ignored') | |
77 | + end | |
78 | + | |
79 | + def test_should_list_available_themes | |
80 | + ['empty', 'default'].each do |item| | |
81 | + assert Design.available_themes.include?(item) | |
82 | + end | |
83 | + end | |
84 | + | |
85 | + def test_should_ignore_non_directory_when_listing_available_themes | |
86 | + assert ! Design.available_themes.include?('non_directory_should_be_ignored') | |
87 | + end | |
88 | + | |
89 | + def test_should_list_available_icon_themes | |
90 | + ['empty', 'default'].each do |item| | |
91 | + assert Design.available_icon_themes.include?(item) | |
92 | + end | |
93 | + end | |
94 | + | |
95 | + def test_should_ignore_non_directory_when_listing_available_icon_themes | |
96 | + assert ! Design.available_icon_themes.include?('non_directory_should_be_ignored') | |
97 | + end | |
98 | + | |
62 | 99 | end | ... | ... |