Commit 19bad6fc6ea1d7c8b96c402b61393f1cfb6958fe
Exists in
master
and in
29 other branches
Merge branch 'stable'
Conflicts: public/stylesheets/application.css
Showing
27 changed files
with
170 additions
and
43 deletions
Show diff stats
app/models/event.rb
app/models/gallery.rb
app/models/profile_search_block.rb
app/views/cms/_event.rhtml
... | ... | @@ -15,5 +15,5 @@ |
15 | 15 | |
16 | 16 | <%= labelled_form_field(_('Address:'), text_field(:article, :address)) %> |
17 | 17 | |
18 | -<%= labelled_form_field(_('Information about the event:'), text_area(:article, :body, :cols => 64)) %> | |
18 | +<%= labelled_form_field(_('Information about the event:'), text_area(:article, :body, :cols => 64, :class => 'mceEditor')) %> | |
19 | 19 | ... | ... |
app/views/cms/suggest_an_article.rhtml
... | ... | @@ -21,10 +21,10 @@ |
21 | 21 | <em><%= _('Used when a short version of your text is needed.') %></em> |
22 | 22 | |
23 | 23 | <div id="article-lead"> |
24 | - <%= labelled_form_field(_('Lead'), text_area(:task , 'article_abstract', :style => 'width: 100%; height: 200px;')) %> | |
24 | + <%= labelled_form_field(_('Lead'), text_area(:task , 'article_abstract', :style => 'width: 100%; height: 200px;', :class => 'mceEditor')) %> | |
25 | 25 | </div> |
26 | 26 | <div style="margin-top: 10px;"> |
27 | - <%= labelled_form_field(_('Text'), text_area(:task, 'article_body', :style => 'width:100%; height: 500px;')) %> | |
27 | + <%= labelled_form_field(_('Text'), text_area(:task, 'article_body', :style => 'width:100%; height: 500px;', :class => 'mceEditor')) %> | |
28 | 28 | </div> |
29 | 29 | |
30 | 30 | <div id="captcha"> | ... | ... |
app/views/profile/_common.rhtml
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | <script type="text/javascript"> |
3 | 3 | jQuery( function() { |
4 | 4 | var parent_selector = '.profile-wall-description, .profile-activity-description, .profile-network-description'; |
5 | - var child_selector = '.icon-delete, .icon-reply, .icon-scrap'; | |
5 | + var child_selector = '.icon-delete, .icon-reply'; | |
6 | 6 | jQuery(parent_selector).live('mouseover', function () { jQuery(this).find(child_selector).css('visibility', 'visible'); }); |
7 | 7 | jQuery(parent_selector).live('mouseout', function () { jQuery(this).find(child_selector).css('visibility', 'hidden'); }); |
8 | 8 | }); | ... | ... |
app/views/profile/_profile_network_activities.rhtml
... | ... | @@ -3,7 +3,7 @@ |
3 | 3 | <div class='profile-network-image'> |
4 | 4 | <%= link_to(profile_image(activity.user, :minor), activity.user.url) %> |
5 | 5 | <% if logged_in? && current_person.follows?(activity.user) && current_person != activity.user %> |
6 | - <p class='profile-network-send-message'><%= link_to_function _('Scrap'), "hide_and_show(['#profile-network-message-response-#{activity.id}'],['#profile-network-message-#{activity.id}', '#profile-network-form-#{activity.id}']);$('content_#{activity.id}').value='';return false", :class => "profile-send-message icon-scrap" %></p> | |
6 | + <p class='profile-network-send-message'><%= link_to_function _('Scrap'), "hide_and_show(['#profile-network-message-response-#{activity.id}'],['#profile-network-message-#{activity.id}', '#profile-network-form-#{activity.id}']);$('content_#{activity.id}').value='';return false", :class => "profile-send-message", :title => _("Send a message to %s") % activity.user.name %></p> | |
7 | 7 | <% end %> |
8 | 8 | </div> |
9 | 9 | <div class='profile-network-description'> | ... | ... |
app/views/profile/_profile_scrap.rhtml
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | <div class='profile-wall-image'> |
3 | 3 | <%= link_to(profile_image(scrap.sender, :minor), scrap.sender.url) %> |
4 | 4 | <% if logged_in? && current_person.follows?(scrap.sender) && current_person != scrap.sender %> |
5 | - <p class='profile-wall-send-message'><%= link_to_function _('Scrap'), "hide_and_show(['#profile-wall-message-response-#{scrap.id}'],['#profile-wall-message-#{scrap.id}', '#profile-wall-form-#{scrap.id}']);$('content_#{scrap.id}').value='';return false", :class => "profile-send-message icon-scrap" %></p> | |
5 | + <p class='profile-wall-send-message'><%= link_to_function _('Scrap'), "hide_and_show(['#profile-wall-message-response-#{scrap.id}'],['#profile-wall-message-#{scrap.id}', '#profile-wall-form-#{scrap.id}']);$('content_#{scrap.id}').value='';return false", :class => "profile-send-message", :title => _("Send a message to %s") % scrap.sender.name %></p> | |
6 | 6 | <% end %> |
7 | 7 | </div> |
8 | 8 | <% comment_balloon :class => 'profile-wall-description' do %> | ... | ... |
app/views/search/_article.rhtml
1 | -<li> | |
2 | - <strong><%= link_to(article.title, article.url, :class => icon_for_article(article)) %></strong> | |
1 | +<li class="<%= icon_for_article(article) %>"> | |
2 | + <strong><%= link_to(article.title, article.url) %></strong> | |
3 | 3 | <div class="item_meta"> |
4 | 4 | <% if article.last_changed_by %> |
5 | 5 | <span class="cat_item_by"> | ... | ... |
app/views/tasks/_suggest_article_accept_details.rhtml
1 | +<%= render :file => 'shared/tiny_mce' %> | |
2 | + | |
1 | 3 | <%= labelled_form_field(_("Sent by: "), f.text_field(:name)) %> |
2 | 4 | <p><%= label_tag(_("Email: %s") % task.email) %> </p> |
3 | 5 | <%= required labelled_form_field(_('Title'), f.text_field(:article_name, :size => 50)) %> |
... | ... | @@ -8,10 +10,10 @@ |
8 | 10 | <%= labelled_form_field(_('Highlight this article'), f.check_box(:highlighted)) %> |
9 | 11 | |
10 | 12 | <div> |
11 | - <%= labelled_form_field(_('Lead'), f.text_area(:article_abstract, :style => 'width: 482px; height: 200px;')) %> | |
13 | + <%= labelled_form_field(_('Lead'), f.text_area(:article_abstract, :style => 'width: 482px; height: 200px;', :class => 'mceEditor')) %> | |
12 | 14 | </div> |
13 | 15 | <em><%= _('Used when a short version your text is needed.') %></em> |
14 | 16 | |
15 | 17 | <div style="margin-top: 10px;"> |
16 | - <%= labelled_form_field(_('Text'), f.text_area(:article_body, :style => 'width:482px; height: 500px;')) %> | |
18 | + <%= labelled_form_field(_('Text'), f.text_area(:article_body, :style => 'width:482px; height: 500px;', :class => 'mceEditor')) %> | |
17 | 19 | </div> | ... | ... |
debian/changelog
1 | +noosfero (0.28.5) unstable; urgency=low | |
2 | + | |
3 | + * Bugfixes Version release. (Closes: AI#1867 AI#1866 AI#1870 AI#1854 AI#1851 AI#1810 AI#1889 AI#1868 AI#1855 AI#1887) | |
4 | + | |
5 | + -- Joenio Costa <joenio@perl.org.br> Sun, 20 Feb 2011 12:13:25 -0300 | |
6 | + | |
1 | 7 | noosfero (0.28.4) unstable; urgency=low |
2 | 8 | |
3 | 9 | * Bugfixes Version release. (Closes: AI#1865) | ... | ... |
lib/noosfero.rb
public/designs/icons/tango/style.css
... | ... | @@ -90,7 +90,6 @@ |
90 | 90 | .icon-media-next { background-image: url(Tango/16x16/actions/media-skip-forward.png) } |
91 | 91 | .icon-lock { background-image: url(Tango/16x16/actions/lock.png) } |
92 | 92 | .icon-chat { background-image: url(Tango/16x16/apps/internet-group-chat.png); background-repeat: no-repeat } |
93 | -.icon-scrap { background-image: url(Tango/16x16/actions/format-justify-left.png) } | |
94 | 93 | .icon-reply { background-image: url(Tango/16x16/actions/mail-reply-sender.png) } |
95 | 94 | .icon-newforum { background-image: url(Tango/16x16/apps/system-users.png) } |
96 | 95 | .icon-forum { background-image: url(Tango/16x16/apps/system-users.png) } | ... | ... |
public/designs/templates/default/stylesheets/style.css
public/designs/templates/leftbar/stylesheets/style.css
public/designs/templates/rightbar/stylesheets/style.css
public/stylesheets/application.css
... | ... | @@ -1047,6 +1047,10 @@ code input { |
1047 | 1047 | background: transparent url(/images/zoom.png) left center no-repeat; |
1048 | 1048 | } |
1049 | 1049 | |
1050 | +#article pre { | |
1051 | + white-space: pre-wrap; | |
1052 | +} | |
1053 | + | |
1050 | 1054 | /* * * Comments * * */ |
1051 | 1055 | |
1052 | 1056 | .comments { } |
... | ... | @@ -1208,6 +1212,7 @@ a.comment-picture { |
1208 | 1212 | color: #000; |
1209 | 1213 | } |
1210 | 1214 | |
1215 | +#profile-activity .profile-activity-send-message a:hover, #profile-network .profile-network-send-message a:hover, #profile-wall .profile-wall-send-message a:hover, | |
1211 | 1216 | #article .comment-reply-link:hover { |
1212 | 1217 | text-decoration: underline; |
1213 | 1218 | } |
... | ... | @@ -1722,10 +1727,28 @@ input.disabled { |
1722 | 1727 | margin-left: 40px; |
1723 | 1728 | } |
1724 | 1729 | |
1730 | + | |
1731 | +/******** tagged-items list ***************************/ | |
1732 | + | |
1725 | 1733 | .search-tagged-items { |
1726 | 1734 | margin-top: 1em; |
1727 | 1735 | } |
1728 | 1736 | |
1737 | +.controller-search .search-tagged-items li { | |
1738 | + padding-left: 20px; | |
1739 | + background-repeat: no-repeat; | |
1740 | + background-position: left 2px; | |
1741 | + border: none; | |
1742 | +} | |
1743 | + | |
1744 | +.controller-search .search-tagged-items .icon:hover { | |
1745 | + background-color: transparent; | |
1746 | +} | |
1747 | + | |
1748 | +.controller-search .search-tagged-items .item_meta { | |
1749 | + margin-top: 2px; | |
1750 | +} | |
1751 | + | |
1729 | 1752 | /***** search-popup ***************************/ |
1730 | 1753 | |
1731 | 1754 | #search-popup h3 { |
... | ... | @@ -3985,11 +4008,13 @@ h1#agenda-title { |
3985 | 4008 | } |
3986 | 4009 | |
3987 | 4010 | .controller-profile_design .article-block-edition select, |
3988 | -.controller-profile_design .article-block-edition option { | |
3989 | - width: 300px; | |
4011 | +.controller-environment_design .article-block-edition select{ | |
4012 | + width: 100%; | |
3990 | 4013 | } |
3991 | 4014 | |
3992 | -.controller-profile_design .article-block-edition option { | |
4015 | +.controller-profile_design .article-block-edition option, | |
4016 | +.controller-environment_design .article-block-edition option { | |
4017 | + width: 470px; | |
3993 | 4018 | overflow-x: hidden; |
3994 | 4019 | } |
3995 | 4020 | |
... | ... | @@ -5548,10 +5573,8 @@ h1#agenda-title { |
5548 | 5573 | } |
5549 | 5574 | |
5550 | 5575 | #profile-activity .profile-activity-send-message, #profile-network .profile-network-send-message, #profile-wall .profile-wall-send-message { |
5551 | - text-decoration: none; | |
5552 | - font-size: 11px; | |
5553 | - color: #000; | |
5554 | - margin: 10px 0 0 0; | |
5576 | + font-size: 10px; | |
5577 | + margin: 2px 0 0 0; | |
5555 | 5578 | } |
5556 | 5579 | |
5557 | 5580 | #profile-activity .profile-activity-send-message a, #profile-network .profile-network-send-message a, #profile-wall .profile-wall-send-message a { |
... | ... | @@ -5654,21 +5677,6 @@ h1#agenda-title { |
5654 | 5677 | margin: 0; |
5655 | 5678 | } |
5656 | 5679 | |
5657 | -.profile-send-message { | |
5658 | - color: #555; | |
5659 | - border: 1px solid #ccc; | |
5660 | - background-color: #eee; | |
5661 | - padding: 4px 4px 4px 20px; | |
5662 | - background-repeat: no-repeat; | |
5663 | - background-position: 4px center; | |
5664 | -} | |
5665 | - | |
5666 | -.ui-widget-content .profile-send-message:hover, | |
5667 | -.profile-send-message:hover { | |
5668 | - color: #eee; | |
5669 | - background-color: #555; | |
5670 | -} | |
5671 | - | |
5672 | 5680 | .limited-text-area p { |
5673 | 5681 | margin: 0; |
5674 | 5682 | font-size: 11px; |
... | ... | @@ -5847,7 +5855,7 @@ h1#agenda-title { |
5847 | 5855 | |
5848 | 5856 | /* friends online }}} */ |
5849 | 5857 | |
5850 | -#profile-wall .profile-wall-description .icon-scrap, #profile-wall .profile-wall-description .icon-reply { | |
5858 | +#profile-wall .profile-wall-description .icon-reply { | |
5851 | 5859 | visibility: hidden; |
5852 | 5860 | border-radius: 3px; |
5853 | 5861 | -webkit-border-radius: 3px; |
... | ... | @@ -5887,6 +5895,7 @@ h1#agenda-title { |
5887 | 5895 | |
5888 | 5896 | #profile-activity .profile-activity-description, #profile-network .profile-network-description, #profile-wall .profile-wall-description { |
5889 | 5897 | width: 80%; |
5898 | + word-wrap: break-word; | |
5890 | 5899 | } |
5891 | 5900 | |
5892 | 5901 | #profile-wall .profile-wall-scrap-replies textarea, |
... | ... | @@ -5953,7 +5962,6 @@ h1#agenda-title { |
5953 | 5962 | .msie7 #profile-network .profile-network-send-message, |
5954 | 5963 | .msie7 #profile-wall .profile-wall-send-message { |
5955 | 5964 | line-height: 24px; |
5956 | - margin-top: 2px; | |
5957 | 5965 | } |
5958 | 5966 | |
5959 | 5967 | .msie7 #profile-wall a.button.with-text.icon-cancel { | ... | ... |
... | ... | @@ -0,0 +1,37 @@ |
1 | +#!/usr/bin/env ruby | |
2 | +require File.dirname(__FILE__) + '/../config/environment' | |
3 | + | |
4 | +# tourn on autoflush | |
5 | +STDOUT.sync = true | |
6 | + | |
7 | +profiles = Profile.all | |
8 | +SUBJECTS = ['got a new car', 'release a new version of project X', "doesn't like wales no more", "doesn't use free-software no more"] | |
9 | +TAGS = ['free-software', 'noosfero', 'development', 'rails', 'ruby'] | |
10 | + | |
11 | +print "Creating some TinyMce articles: " | |
12 | +for subject in SUBJECTS | |
13 | + rand(20).times do |i| | |
14 | + profile = profiles.rand | |
15 | + profile.articles << TinyMceArticle.new( | |
16 | + :name => "%s #{subject}" % profile.name, | |
17 | + :body => "%s #{subject}" % profile.name, | |
18 | + :tag_list => [TAGS.rand, TAGS.rand] | |
19 | + ) | |
20 | + print '.' | |
21 | + end | |
22 | +end | |
23 | +puts ' done!' | |
24 | + | |
25 | +print "Creating some galleries: " | |
26 | +for subject in SUBJECTS | |
27 | + rand(20).times do |i| | |
28 | + profile = profiles.rand | |
29 | + profile.articles << Gallery.new( | |
30 | + :name => "Gallery %s #{subject}" % profile.name, | |
31 | + :body => "Gallery %s #{subject}" % profile.name, | |
32 | + :tag_list => [TAGS.rand, TAGS.rand] | |
33 | + ) | |
34 | + print '.' | |
35 | + end | |
36 | +end | |
37 | +puts ' done!' | ... | ... |
script/sample-data
script/sample-profiles
... | ... | @@ -112,3 +112,11 @@ ze = User.create!({ |
112 | 112 | }).person |
113 | 113 | environment.add_admin(ze) |
114 | 114 | |
115 | +admin = User.create!({ | |
116 | + :login => "adminuser", | |
117 | + :email => 'adminuser@localhost.localdomain', | |
118 | + :password => 'admin', | |
119 | + :password_confirmation => 'admin', | |
120 | + :environment => environment, | |
121 | +}).person | |
122 | +environment.add_admin(admin) | ... | ... |
test/functional/cms_controller_test.rb
... | ... | @@ -1423,6 +1423,14 @@ class CmsControllerTest < Test::Unit::TestCase |
1423 | 1423 | assert_template 'suggest_an_article' |
1424 | 1424 | end |
1425 | 1425 | |
1426 | + should 'render TinyMce Editor on suggestion of article' do | |
1427 | + logout | |
1428 | + get :suggest_an_article, :profile => profile.identifier | |
1429 | + | |
1430 | + assert_tag :tag => 'textarea', :attributes => { :name => /article_abstract/, :class => 'mceEditor' } | |
1431 | + assert_tag :tag => 'textarea', :attributes => { :name => /article_body/, :class => 'mceEditor' } | |
1432 | + end | |
1433 | + | |
1426 | 1434 | should 'create a task suggest task to a profile' do |
1427 | 1435 | c = Community.create!(:name => 'test comm', :identifier => 'test_comm', :moderated_articles => true) |
1428 | 1436 | |
... | ... | @@ -1576,4 +1584,9 @@ class CmsControllerTest < Test::Unit::TestCase |
1576 | 1584 | assert_redirected_to :action => 'view', :id => f |
1577 | 1585 | end |
1578 | 1586 | |
1587 | + should 'render TinyMce Editor for events' do | |
1588 | + get :new, :profile => @profile.identifier, :type => 'Event' | |
1589 | + assert_tag :tag => 'textarea', :attributes => { :class => 'mceEditor' } | |
1590 | + end | |
1591 | + | |
1579 | 1592 | end | ... | ... |
test/functional/tasks_controller_test.rb
... | ... | @@ -231,6 +231,19 @@ class TasksControllerTest < Test::Unit::TestCase |
231 | 231 | assert_equal Task::Status::ACTIVE, task.status |
232 | 232 | end |
233 | 233 | |
234 | + should 'render TinyMce Editor when approving suggested article task' do | |
235 | + Task.destroy_all | |
236 | + c = fast_create(Community) | |
237 | + c.add_admin profile | |
238 | + @controller.stubs(:profile).returns(c) | |
239 | + SuggestArticle.skip_captcha! | |
240 | + t = SuggestArticle.create!(:article_name => 'test name', :article_abstract => 'test abstract', :article_body => 'test body', :name => 'some name', :email => 'test@localhost.com', :target => c) | |
241 | + | |
242 | + get :index | |
243 | + assert_tag :tag => 'textarea', :content => 'test abstract', :attributes => { :name => /article_abstract/, :class => 'mceEditor' } | |
244 | + assert_tag :tag => 'textarea', :content => 'test body', :attributes => { :name => /article_body/, :class => 'mceEditor' } | |
245 | + end | |
246 | + | |
234 | 247 | should 'create TinyMceArticle article after finish approve suggested article task' do |
235 | 248 | TinyMceArticle.destroy_all |
236 | 249 | c = fast_create(Community) | ... | ... |
test/unit/article_test.rb
test/unit/event_test.rb
test/unit/feed_writer_test.rb
... | ... | @@ -14,6 +14,16 @@ class FeedWriterTest < Test::Unit::TestCase |
14 | 14 | assert_match('/tagger/' + articles.first.slug, feed) |
15 | 15 | end |
16 | 16 | |
17 | + should 'generate feed with a gallery' do | |
18 | + articles = [] | |
19 | + profile = fast_create(:profile, :identifier => "tagger") | |
20 | + articles << fast_create(:gallery, :name => 'my pics', :profile_id => profile.id) | |
21 | + writer = FeedWriter.new | |
22 | + | |
23 | + feed = writer.write(articles) | |
24 | + assert_match('my pics', feed) | |
25 | + end | |
26 | + | |
17 | 27 | should 'use title, link and description' do |
18 | 28 | writer = FeedWriter.new |
19 | 29 | rss = writer.write([], :title => "my title", :description => "my description", :link => "http://example.com/") | ... | ... |
test/unit/profile_search_block_test.rb
... | ... | @@ -6,8 +6,8 @@ class ProfileSearchBlockTest < Test::Unit::TestCase |
6 | 6 | assert_not_equal Block.description, ProfileSearchBlock.description |
7 | 7 | end |
8 | 8 | |
9 | - should 'provide a default title' do | |
10 | - assert_not_equal Block.new.default_title, ProfileSearchBlock.new.default_title | |
9 | + should 'not provide a default title' do | |
10 | + assert_equal Block.new.default_title, ProfileSearchBlock.new.default_title | |
11 | 11 | end |
12 | 12 | |
13 | 13 | should 'render profile search' do | ... | ... |
test/unit/tiny_mce_article_test.rb
... | ... | @@ -236,4 +236,9 @@ class TinyMceArticleTest < Test::Unit::TestCase |
236 | 236 | assert_equal false, a.advertise? |
237 | 237 | assert_equal false, a.is_trackable? |
238 | 238 | end |
239 | + | |
240 | + should 'tiny mce editor is enabled' do | |
241 | + assert TinyMceArticle.new.tiny_mce? | |
242 | + end | |
243 | + | |
239 | 244 | end | ... | ... |