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 | ... | ... |