Commit cac3874d9c34fe62e55435a96b75ac238fd9de5f
Exists in
master
and in
29 other branches
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 | 3 | protect 'manage_environment_users', :environment |
4 | 4 | |
5 | 5 | def index |
6 | - @users = environment.users | |
7 | 6 | respond_to do |format| |
8 | 7 | format.html |
9 | 8 | format.xml do |
9 | + @users = User.find(:all, :conditions => {:environment_id => environment.id}, :include => [:person]) | |
10 | 10 | render :xml => @users.to_xml( |
11 | 11 | :skip_types => true, |
12 | 12 | :only => %w[email login created_at updated_at], |
... | ... | @@ -14,6 +14,7 @@ class UsersController < AdminController |
14 | 14 | ) |
15 | 15 | end |
16 | 16 | format.csv do |
17 | + @users = User.find(:all, :conditions => {:environment_id => environment.id}, :include => [:person]) | |
17 | 18 | render :template => "users/index_csv.rhtml", :content_type => 'text/csv', :layout => false |
18 | 19 | end |
19 | 20 | end | ... | ... |
app/helpers/application_helper.rb
... | ... | @@ -985,7 +985,7 @@ module ApplicationHelper |
985 | 985 | 'thickbox', |
986 | 986 | 'lightbox', |
987 | 987 | 'colorpicker', |
988 | - colorbox_stylesheet_path, | |
988 | + 'colorbox', | |
989 | 989 | pngfix_stylesheet_path, |
990 | 990 | ] + |
991 | 991 | tokeninput_stylesheets |
... | ... | @@ -1000,10 +1000,6 @@ module ApplicationHelper |
1000 | 1000 | 'iepngfix/iepngfix.css' |
1001 | 1001 | end |
1002 | 1002 | |
1003 | - def colorbox_stylesheet_path | |
1004 | - 'colorbox/colorbox.css' | |
1005 | - end | |
1006 | - | |
1007 | 1003 | def tokeninput_stylesheets |
1008 | 1004 | ['token-input', 'token-input-facebook', 'token-input-mac'] |
1009 | 1005 | end | ... | ... |
app/models/product.rb
app/models/theme.rb
... | ... | @@ -43,8 +43,11 @@ class Theme |
43 | 43 | |
44 | 44 | def approved_themes(owner) |
45 | 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 | 51 | end.map do |desc| |
49 | 52 | new(File.basename(desc)) |
50 | 53 | end | ... | ... |
plugins/shopping_cart/public/style.css
po/pt/noosfero.po
... | ... | @@ -14,7 +14,7 @@ msgid "" |
14 | 14 | msgstr "" |
15 | 15 | "Project-Id-Version: noosfero 0.34.3\n" |
16 | 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 | 18 | "Last-Translator: Joenio Costa <joenio@colivre.coop.br>\n" |
19 | 19 | "Language-Team: LANGUAGE TEAM <E-MAIL@ADDRESS or HOME PAGE>\n" |
20 | 20 | "Language: \n" |
... | ... | @@ -6735,7 +6735,7 @@ msgstr "" |
6735 | 6735 | |
6736 | 6736 | #: app/views/cms/publish_on_portal_community.rhtml:2 |
6737 | 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 | 6740 | #: app/views/cms/publish_on_portal_community.rhtml:14 |
6741 | 6741 | msgid "There is no portal community in this environment." |
... | ... | @@ -9151,7 +9151,7 @@ msgstr "Enviar pedido de compra" |
9151 | 9151 | |
9152 | 9152 | #: plugins/shopping_cart/views/shopping_cart_plugin_myprofile/edit.html.erb:1 |
9153 | 9153 | msgid "Basket options" |
9154 | -msgstr "Opçôes do cesto" | |
9154 | +msgstr "Opções do cesto" | |
9155 | 9155 | |
9156 | 9156 | #: plugins/shopping_cart/views/shopping_cart_plugin_myprofile/edit.html.erb:5 |
9157 | 9157 | msgid "Delivery?" | ... | ... |
112 Bytes
1.22 KB
111 Bytes
215 Bytes
217 Bytes
108 Bytes
108 Bytes
111 Bytes
216 Bytes
214 Bytes
9.21 KB
157 Bytes
182 Bytes
public/stylesheets/application.css
... | ... | @@ -2993,9 +2993,10 @@ div#activation_enterprise div { |
2993 | 2993 | #product-list li.product { |
2994 | 2994 | width: 200px; |
2995 | 2995 | min-height: 280px; |
2996 | - float: left; | |
2997 | 2996 | padding: 10px 30px 10px 0; |
2998 | 2997 | margin-bottom: 10px; |
2998 | + display: inline-block; | |
2999 | + vertical-align: top; | |
2999 | 3000 | } |
3000 | 3001 | #product-list .expand-box:hover { |
3001 | 3002 | background-color: #28F091; | ... | ... |
... | ... | @@ -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 | -/* | |
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 < ActiveSupport::TestCase |
510 | 510 | assert_equal "50.00", product.formatted_value(:inputs_cost) |
511 | 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 | 535 | end | ... | ... |
test/unit/theme_test.rb
... | ... | @@ -170,6 +170,14 @@ class ThemeTest < ActiveSupport::TestCase |
170 | 170 | assert ! Theme.approved_themes(profile).include?(Theme.find(t3.id)) |
171 | 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 | 181 | should 'set theme to public' do |
174 | 182 | t = Theme.new('mytheme') |
175 | 183 | t.public = true | ... | ... |