Commit cac3874d9c34fe62e55435a96b75ac238fd9de5f

Authored by Daniela Feitosa
2 parents c008814f 7d22740a

Merge branch 'stable'

Showing 37 changed files with 127 additions and 95 deletions   Show diff stats
app/controllers/admin/users_controller.rb
@@ -3,10 +3,10 @@ class UsersController < AdminController @@ -3,10 +3,10 @@ class UsersController < AdminController
3 protect 'manage_environment_users', :environment 3 protect 'manage_environment_users', :environment
4 4
5 def index 5 def index
6 - @users = environment.users  
7 respond_to do |format| 6 respond_to do |format|
8 format.html 7 format.html
9 format.xml do 8 format.xml do
  9 + @users = User.find(:all, :conditions => {:environment_id => environment.id}, :include => [:person])
10 render :xml => @users.to_xml( 10 render :xml => @users.to_xml(
11 :skip_types => true, 11 :skip_types => true,
12 :only => %w[email login created_at updated_at], 12 :only => %w[email login created_at updated_at],
@@ -14,6 +14,7 @@ class UsersController < AdminController @@ -14,6 +14,7 @@ class UsersController < AdminController
14 ) 14 )
15 end 15 end
16 format.csv do 16 format.csv do
  17 + @users = User.find(:all, :conditions => {:environment_id => environment.id}, :include => [:person])
17 render :template => "users/index_csv.rhtml", :content_type => 'text/csv', :layout => false 18 render :template => "users/index_csv.rhtml", :content_type => 'text/csv', :layout => false
18 end 19 end
19 end 20 end
app/helpers/application_helper.rb
@@ -985,7 +985,7 @@ module ApplicationHelper @@ -985,7 +985,7 @@ module ApplicationHelper
985 'thickbox', 985 'thickbox',
986 'lightbox', 986 'lightbox',
987 'colorpicker', 987 'colorpicker',
988 - colorbox_stylesheet_path, 988 + 'colorbox',
989 pngfix_stylesheet_path, 989 pngfix_stylesheet_path,
990 ] + 990 ] +
991 tokeninput_stylesheets 991 tokeninput_stylesheets
@@ -1000,10 +1000,6 @@ module ApplicationHelper @@ -1000,10 +1000,6 @@ module ApplicationHelper
1000 'iepngfix/iepngfix.css' 1000 'iepngfix/iepngfix.css'
1001 end 1001 end
1002 1002
1003 - def colorbox_stylesheet_path  
1004 - 'colorbox/colorbox.css'  
1005 - end  
1006 -  
1007 def tokeninput_stylesheets 1003 def tokeninput_stylesheets
1008 ['token-input', 'token-input-facebook', 'token-input-mac'] 1004 ['token-input', 'token-input-facebook', 'token-input-mac']
1009 end 1005 end
app/models/product.rb
@@ -196,6 +196,7 @@ class Product < ActiveRecord::Base @@ -196,6 +196,7 @@ class Product < ActiveRecord::Base
196 end 196 end
197 197
198 def price_description_percentage 198 def price_description_percentage
  199 + return 0 if price.blank? || price.zero?
199 total_production_cost * 100 / price 200 total_production_cost * 100 / price
200 end 201 end
201 202
app/models/theme.rb
@@ -43,8 +43,11 @@ class Theme @@ -43,8 +43,11 @@ class Theme
43 43
44 def approved_themes(owner) 44 def approved_themes(owner)
45 Dir.glob(File.join(system_themes_dir, '*')).select do |item| 45 Dir.glob(File.join(system_themes_dir, '*')).select do |item|
46 - config = YAML.load_file(File.join(item, 'theme.yml'))  
47 - (config['owner_type'] == owner.class.base_class.name) && (config['owner_id'] == owner.id) || config['public'] 46 + if File.exists?( File.join(item, 'theme.yml') )
  47 + config = YAML.load_file(File.join(item, 'theme.yml'))
  48 + (config['owner_type'] == owner.class.base_class.name) &&
  49 + (config['owner_id'] == owner.id) || config['public']
  50 + end
48 end.map do |desc| 51 end.map do |desc|
49 new(File.basename(desc)) 52 new(File.basename(desc))
50 end 53 end
plugins/shopping_cart/public/style.css
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 .cart { 19 .cart {
20 position: fixed; 20 position: fixed;
21 right: 20px; 21 right: 20px;
22 - bottom: 0px; 22 + top: 0px;
23 width: 200px; 23 width: 200px;
24 z-index: 1000; 24 z-index: 1000;
25 border: 1px solid #777; 25 border: 1px solid #777;
po/pt/noosfero.po
@@ -14,7 +14,7 @@ msgid "" @@ -14,7 +14,7 @@ msgid ""
14 msgstr "" 14 msgstr ""
15 "Project-Id-Version: noosfero 0.34.3\n" 15 "Project-Id-Version: noosfero 0.34.3\n"
16 "POT-Creation-Date: 2012-01-26 18:34-0200\n" 16 "POT-Creation-Date: 2012-01-26 18:34-0200\n"
17 -"PO-Revision-Date: 2012-01-26 18:40-0200\n" 17 +"PO-Revision-Date: 2012-02-06 22:28-0200\n"
18 "Last-Translator: Joenio Costa <joenio@colivre.coop.br>\n" 18 "Last-Translator: Joenio Costa <joenio@colivre.coop.br>\n"
19 "Language-Team: LANGUAGE TEAM <E-MAIL@ADDRESS or HOME PAGE>\n" 19 "Language-Team: LANGUAGE TEAM <E-MAIL@ADDRESS or HOME PAGE>\n"
20 "Language: \n" 20 "Language: \n"
@@ -6735,7 +6735,7 @@ msgstr &quot;&quot; @@ -6735,7 +6735,7 @@ msgstr &quot;&quot;
6735 6735
6736 #: app/views/cms/publish_on_portal_community.rhtml:2 6736 #: app/views/cms/publish_on_portal_community.rhtml:2
6737 msgid "Publish your article on portal community" 6737 msgid "Publish your article on portal community"
6738 -msgstr "Publicar seu artigoi na comunidade portal" 6738 +msgstr "Publicar seu artigo na comunidade portal"
6739 6739
6740 #: app/views/cms/publish_on_portal_community.rhtml:14 6740 #: app/views/cms/publish_on_portal_community.rhtml:14
6741 msgid "There is no portal community in this environment." 6741 msgid "There is no portal community in this environment."
@@ -9151,7 +9151,7 @@ msgstr &quot;Enviar pedido de compra&quot; @@ -9151,7 +9151,7 @@ msgstr &quot;Enviar pedido de compra&quot;
9151 9151
9152 #: plugins/shopping_cart/views/shopping_cart_plugin_myprofile/edit.html.erb:1 9152 #: plugins/shopping_cart/views/shopping_cart_plugin_myprofile/edit.html.erb:1
9153 msgid "Basket options" 9153 msgid "Basket options"
9154 -msgstr "Opçôes do cesto" 9154 +msgstr "Opções do cesto"
9155 9155
9156 #: plugins/shopping_cart/views/shopping_cart_plugin_myprofile/edit.html.erb:5 9156 #: plugins/shopping_cart/views/shopping_cart_plugin_myprofile/edit.html.erb:5
9157 msgid "Delivery?" 9157 msgid "Delivery?"
public/images/colorbox/border.png 0 → 100644

112 Bytes

public/images/colorbox/controls.png 0 → 100644

1.22 KB

public/images/colorbox/ie6/borderBottomCenter.png 0 → 100644

111 Bytes

public/images/colorbox/ie6/borderBottomLeft.png 0 → 100644

215 Bytes

public/images/colorbox/ie6/borderBottomRight.png 0 → 100644

217 Bytes

public/images/colorbox/ie6/borderMiddleLeft.png 0 → 100644

108 Bytes

public/images/colorbox/ie6/borderMiddleRight.png 0 → 100644

108 Bytes

public/images/colorbox/ie6/borderTopCenter.png 0 → 100644

111 Bytes

public/images/colorbox/ie6/borderTopLeft.png 0 → 100644

216 Bytes

public/images/colorbox/ie6/borderTopRight.png 0 → 100644

214 Bytes

public/images/colorbox/loading.gif 0 → 100644

9.21 KB

public/images/colorbox/loading_background.png 0 → 100644

157 Bytes

public/images/colorbox/overlay.png 0 → 100644

182 Bytes

public/stylesheets/application.css
@@ -2993,9 +2993,10 @@ div#activation_enterprise div { @@ -2993,9 +2993,10 @@ div#activation_enterprise div {
2993 #product-list li.product { 2993 #product-list li.product {
2994 width: 200px; 2994 width: 200px;
2995 min-height: 280px; 2995 min-height: 280px;
2996 - float: left;  
2997 padding: 10px 30px 10px 0; 2996 padding: 10px 30px 10px 0;
2998 margin-bottom: 10px; 2997 margin-bottom: 10px;
  2998 + display: inline-block;
  2999 + vertical-align: top;
2999 } 3000 }
3000 #product-list .expand-box:hover { 3001 #product-list .expand-box:hover {
3001 background-color: #28F091; 3002 background-color: #28F091;
public/stylesheets/colorbox.css 0 → 100644
@@ -0,0 +1,82 @@ @@ -0,0 +1,82 @@
  1 +/*
  2 + ColorBox Core Style:
  3 + The following CSS is consistent between example themes and should not be altered.
  4 +*/
  5 +#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
  6 +#cboxOverlay{position:fixed; width:100%; height:100%;}
  7 +#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
  8 +#cboxContent{position:relative;}
  9 +#cboxLoadedContent{overflow:auto;}
  10 +#cboxTitle{margin:0;}
  11 +#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}
  12 +#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
  13 +.cboxPhoto{float:left; margin:auto; border:0; display:block;}
  14 +.cboxIframe{width:100%; height:100%; display:block; border:0;}
  15 +
  16 +/*
  17 + User Style:
  18 + Change the following styles to modify the appearance of ColorBox. They are
  19 + ordered & tabbed in a way that represents the nesting of the generated HTML.
  20 +*/
  21 +#cboxOverlay{background:url(../images/colorbox/overlay.png) repeat 0 0;}
  22 +#colorbox{}
  23 + #cboxTopLeft{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -100px 0;}
  24 + #cboxTopRight{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -129px 0;}
  25 + #cboxBottomLeft{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -100px -29px;}
  26 + #cboxBottomRight{width:21px; height:21px; background:url(../images/colorbox/controls.png) no-repeat -129px -29px;}
  27 + #cboxMiddleLeft{width:21px; background:url(../images/colorbox/controls.png) left top repeat-y;}
  28 + #cboxMiddleRight{width:21px; background:url(../images/colorbox/controls.png) right top repeat-y;}
  29 + #cboxTopCenter{height:21px; background:url(../images/colorbox/border.png) 0 0 repeat-x;}
  30 + #cboxBottomCenter{height:21px; background:url(../images/colorbox/border.png) 0 -29px repeat-x;}
  31 + #cboxContent{background:#fff; overflow:hidden;}
  32 + #cboxError{padding:50px; border:1px solid #ccc;}
  33 + #cboxLoadedContent{margin-bottom:28px;}
  34 + #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;}
  35 + #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;}
  36 + #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;}
  37 + #cboxPrevious{position:absolute; bottom:0; left:0; background:url(../images/colorbox/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;}
  38 + #cboxPrevious.hover{background-position:-75px -25px;}
  39 + #cboxNext{position:absolute; bottom:0; left:27px; background:url(../images/colorbox/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;}
  40 + #cboxNext.hover{background-position:-50px -25px;}
  41 + #cboxLoadingOverlay{background:url(../images/colorbox/loading_background.png) no-repeat center center;}
  42 + #cboxLoadingGraphic{background:url(../images/colorbox/loading.gif) no-repeat center center;}
  43 + #cboxClose{position:absolute; bottom:0; right:0; background:url(../images/colorbox/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;}
  44 + #cboxClose.hover{background-position:-25px -25px;}
  45 +
  46 +/*
  47 + The following fixes a problem where IE7+ replaces a PNG's alpha transparency with a black fill
  48 + when an alpha filter (opacity change) is set on the element or ancestor element.
  49 +*/
  50 +.cboxIE #cboxTopLeft,
  51 +.cboxIE #cboxTopCenter,
  52 +.cboxIE #cboxTopRight,
  53 +.cboxIE #cboxBottomLeft,
  54 +.cboxIE #cboxBottomCenter,
  55 +.cboxIE #cboxBottomRight,
  56 +.cboxIE #cboxMiddleLeft,
  57 +.cboxIE #cboxMiddleRight {
  58 + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF);
  59 +}
  60 +
  61 +/*
  62 + The following provides PNG transparency support for IE6
  63 +*/
  64 +.cboxIE6 #cboxTopLeft{background:url(../images/colorbox/ie6/borderTopLeft.png);}
  65 +.cboxIE6 #cboxTopCenter{background:url(../images/colorbox/ie6/borderTopCenter.png);}
  66 +.cboxIE6 #cboxTopRight{background:url(../images/colorbox/ie6/borderTopRight.png);}
  67 +.cboxIE6 #cboxBottomLeft{background:url(../images/colorbox/ie6/borderBottomLeft.png);}
  68 +.cboxIE6 #cboxBottomCenter{background:url(../images/colorbox/ie6/borderBottomCenter.png);}
  69 +.cboxIE6 #cboxBottomRight{background:url(../images/colorbox/ie6/borderBottomRight.png);}
  70 +.cboxIE6 #cboxMiddleLeft{background:url(../images/colorbox/ie6/borderMiddleLeft.png);}
  71 +.cboxIE6 #cboxMiddleRight{background:url(../images/colorbox/ie6/borderMiddleRight.png);}
  72 +
  73 +.cboxIE6 #cboxTopLeft,
  74 +.cboxIE6 #cboxTopCenter,
  75 +.cboxIE6 #cboxTopRight,
  76 +.cboxIE6 #cboxBottomLeft,
  77 +.cboxIE6 #cboxBottomCenter,
  78 +.cboxIE6 #cboxBottomRight,
  79 +.cboxIE6 #cboxMiddleLeft,
  80 +.cboxIE6 #cboxMiddleRight {
  81 + _behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')");
  82 +}
public/stylesheets/colorbox/colorbox.css
@@ -1,82 +0,0 @@ @@ -1,82 +0,0 @@
1 -/*  
2 - ColorBox Core Style:  
3 - The following CSS is consistent between example themes and should not be altered.  
4 -*/  
5 -#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}  
6 -#cboxOverlay{position:fixed; width:100%; height:100%;}  
7 -#cboxMiddleLeft, #cboxBottomLeft{clear:left;}  
8 -#cboxContent{position:relative;}  
9 -#cboxLoadedContent{overflow:auto;}  
10 -#cboxTitle{margin:0;}  
11 -#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}  
12 -#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}  
13 -.cboxPhoto{float:left; margin:auto; border:0; display:block;}  
14 -.cboxIframe{width:100%; height:100%; display:block; border:0;}  
15 -  
16 -/*  
17 - User Style:  
18 - Change the following styles to modify the appearance of ColorBox. They are  
19 - ordered & tabbed in a way that represents the nesting of the generated HTML.  
20 -*/  
21 -#cboxOverlay{background:url(/stylesheets/colorbox/images/overlay.png) repeat 0 0;}  
22 -#colorbox{}  
23 - #cboxTopLeft{width:21px; height:21px; background:url(/stylesheets/colorbox/images/controls.png) no-repeat -100px 0;}  
24 - #cboxTopRight{width:21px; height:21px; background:url(/stylesheets/colorbox/images/controls.png) no-repeat -129px 0;}  
25 - #cboxBottomLeft{width:21px; height:21px; background:url(/stylesheets/colorbox/images/controls.png) no-repeat -100px -29px;}  
26 - #cboxBottomRight{width:21px; height:21px; background:url(/stylesheets/colorbox/images/controls.png) no-repeat -129px -29px;}  
27 - #cboxMiddleLeft{width:21px; background:url(/stylesheets/colorbox/images/controls.png) left top repeat-y;}  
28 - #cboxMiddleRight{width:21px; background:url(/stylesheets/colorbox/images/controls.png) right top repeat-y;}  
29 - #cboxTopCenter{height:21px; background:url(/stylesheets/colorbox/images/border.png) 0 0 repeat-x;}  
30 - #cboxBottomCenter{height:21px; background:url(/stylesheets/colorbox/images/border.png) 0 -29px repeat-x;}  
31 - #cboxContent{background:#fff; overflow:hidden;}  
32 - #cboxError{padding:50px; border:1px solid #ccc;}  
33 - #cboxLoadedContent{margin-bottom:28px;}  
34 - #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;}  
35 - #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;}  
36 - #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;}  
37 - #cboxPrevious{position:absolute; bottom:0; left:0; background:url(/stylesheets/colorbox/images/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;}  
38 - #cboxPrevious.hover{background-position:-75px -25px;}  
39 - #cboxNext{position:absolute; bottom:0; left:27px; background:url(/stylesheets/colorbox/images/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;}  
40 - #cboxNext.hover{background-position:-50px -25px;}  
41 - #cboxLoadingOverlay{background:url(/stylesheets/colorbox/images/loading_background.png) no-repeat center center;}  
42 - #cboxLoadingGraphic{background:url(/stylesheets/colorbox/images/loading.gif) no-repeat center center;}  
43 - #cboxClose{position:absolute; bottom:0; right:0; background:url(/stylesheets/colorbox/images/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;}  
44 - #cboxClose.hover{background-position:-25px -25px;}  
45 -  
46 -/*  
47 - The following fixes a problem where IE7+ replaces a PNG's alpha transparency with a black fill  
48 - when an alpha filter (opacity change) is set on the element or ancestor element.  
49 -*/  
50 -.cboxIE #cboxTopLeft,  
51 -.cboxIE #cboxTopCenter,  
52 -.cboxIE #cboxTopRight,  
53 -.cboxIE #cboxBottomLeft,  
54 -.cboxIE #cboxBottomCenter,  
55 -.cboxIE #cboxBottomRight,  
56 -.cboxIE #cboxMiddleLeft,  
57 -.cboxIE #cboxMiddleRight {  
58 - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF);  
59 -}  
60 -  
61 -/*  
62 - The following provides PNG transparency support for IE6  
63 -*/  
64 -.cboxIE6 #cboxTopLeft{background:url(/stylesheets/colorbox/images/ie6/borderTopLeft.png);}  
65 -.cboxIE6 #cboxTopCenter{background:url(/stylesheets/colorbox/images/ie6/borderTopCenter.png);}  
66 -.cboxIE6 #cboxTopRight{background:url(/stylesheets/colorbox/images/ie6/borderTopRight.png);}  
67 -.cboxIE6 #cboxBottomLeft{background:url(/stylesheets/colorbox/images/ie6/borderBottomLeft.png);}  
68 -.cboxIE6 #cboxBottomCenter{background:url(/stylesheets/colorbox/images/ie6/borderBottomCenter.png);}  
69 -.cboxIE6 #cboxBottomRight{background:url(/stylesheets/colorbox/images/ie6/borderBottomRight.png);}  
70 -.cboxIE6 #cboxMiddleLeft{background:url(/stylesheets/colorbox/images/ie6/borderMiddleLeft.png);}  
71 -.cboxIE6 #cboxMiddleRight{background:url(/stylesheets/colorbox/images/ie6/borderMiddleRight.png);}  
72 -  
73 -.cboxIE6 #cboxTopLeft,  
74 -.cboxIE6 #cboxTopCenter,  
75 -.cboxIE6 #cboxTopRight,  
76 -.cboxIE6 #cboxBottomLeft,  
77 -.cboxIE6 #cboxBottomCenter,  
78 -.cboxIE6 #cboxBottomRight,  
79 -.cboxIE6 #cboxMiddleLeft,  
80 -.cboxIE6 #cboxMiddleRight {  
81 - _behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')");  
82 -}  
public/stylesheets/colorbox/images/border.png

112 Bytes

public/stylesheets/colorbox/images/controls.png

1.22 KB

public/stylesheets/colorbox/images/ie6/borderBottomCenter.png

111 Bytes

public/stylesheets/colorbox/images/ie6/borderBottomLeft.png

215 Bytes

public/stylesheets/colorbox/images/ie6/borderBottomRight.png

217 Bytes

public/stylesheets/colorbox/images/ie6/borderMiddleLeft.png

108 Bytes

public/stylesheets/colorbox/images/ie6/borderMiddleRight.png

108 Bytes

public/stylesheets/colorbox/images/ie6/borderTopCenter.png

111 Bytes

public/stylesheets/colorbox/images/ie6/borderTopLeft.png

216 Bytes

public/stylesheets/colorbox/images/ie6/borderTopRight.png

214 Bytes

public/stylesheets/colorbox/images/loading.gif

9.21 KB

public/stylesheets/colorbox/images/loading_background.png

157 Bytes

public/stylesheets/colorbox/images/overlay.png

182 Bytes

test/unit/product_test.rb
@@ -510,4 +510,26 @@ class ProductTest &lt; ActiveSupport::TestCase @@ -510,4 +510,26 @@ class ProductTest &lt; ActiveSupport::TestCase
510 assert_equal "50.00", product.formatted_value(:inputs_cost) 510 assert_equal "50.00", product.formatted_value(:inputs_cost)
511 end 511 end
512 512
  513 + should 'return 0 on price_description_percentage by default' do
  514 + assert_equal 0, Product.new.price_description_percentage
  515 + end
  516 +
  517 + should 'return 0 on price_description_percentage if price is 0' do
  518 + product = fast_create(Product, :price => 0)
  519 +
  520 + assert_equal 0, product.price_description_percentage
  521 + end
  522 +
  523 + should 'return 0 on price_description_percentage if price is not defined' do
  524 + product = fast_create(Product)
  525 +
  526 + assert_equal 0, product.price_description_percentage
  527 + end
  528 +
  529 + should 'return 0 on price_description_percentage if total_production_cost is 0' do
  530 + product = fast_create(Product, :price => 50)
  531 +
  532 + assert_equal 0, product.price_description_percentage
  533 + end
  534 +
513 end 535 end
test/unit/theme_test.rb
@@ -170,6 +170,14 @@ class ThemeTest &lt; ActiveSupport::TestCase @@ -170,6 +170,14 @@ class ThemeTest &lt; ActiveSupport::TestCase
170 assert ! Theme.approved_themes(profile).include?(Theme.find(t3.id)) 170 assert ! Theme.approved_themes(profile).include?(Theme.find(t3.id))
171 end 171 end
172 172
  173 + should 'not list non theme files or dirs inside themes dir' do
  174 + Theme.stubs(:system_themes_dir).returns(TMP_THEMES_DIR)
  175 + Dir.mkdir(TMP_THEMES_DIR)
  176 + Dir.mkdir(TMP_THEMES_DIR+'/empty-dir')
  177 + File.new(TMP_THEMES_DIR+'/my-logo.png', File::CREAT)
  178 + assert Theme.approved_themes(Environment.default).empty?
  179 + end
  180 +
173 should 'set theme to public' do 181 should 'set theme to public' do
174 t = Theme.new('mytheme') 182 t = Theme.new('mytheme')
175 t.public = true 183 t.public = true