Commit 6cb08f2faa5f0441be031781747e45090d3ca378
Exists in
master
and in
29 other branches
Merge commit 'refs/merge-requests/366' of git://gitorious.org/noosfero/noosfero …
…into merge-requests/366 Conflicts: INSTALL script/install-dependencies/debian-squeeze.sh
Showing
6 changed files
with
63 additions
and
15 deletions
Show diff stats
INSTALL.md
... | ... | @@ -23,7 +23,7 @@ You need to install some packages Noosfero depends on. On Debian GNU/Linux or De |
23 | 23 | # apt-get install ruby rake po4a libgettext-ruby-util libgettext-ruby1.8 \ |
24 | 24 | libsqlite3-ruby rcov librmagick-ruby libredcloth-ruby libhpricot-ruby \ |
25 | 25 | libwill-paginate-ruby iso-codes libfeedparser-ruby libdaemons-ruby thin \ |
26 | - tango-icon-theme | |
26 | + tango-icon-theme libnokogiri-ruby | |
27 | 27 | |
28 | 28 | On other systems, they may or may not be available through your regular package management system. Below are the links to their homepages. |
29 | 29 | |
... | ... | @@ -41,6 +41,7 @@ On other systems, they may or may not be available through your regular package |
41 | 41 | * Thin: http://code.macournoyer.com/thin |
42 | 42 | * tango-icon-theme: http://tango.freedesktop.org/Tango_Icon_Library |
43 | 43 | * Hpricot: http://hpricot.com |
44 | +* Nokogiri: http://nokogiri.org/ | |
44 | 45 | |
45 | 46 | If you manage to install Noosfero successfully on other systems than Debian, |
46 | 47 | please feel free to contact the Noosfero development mailing with the | ... | ... |
app/helpers/application_helper.rb
... | ... | @@ -1382,16 +1382,16 @@ module ApplicationHelper |
1382 | 1382 | end |
1383 | 1383 | |
1384 | 1384 | def convert_macro(html, source) |
1385 | - doc = Hpricot(html) | |
1385 | + doc = Nokogiri::HTML(html) | |
1386 | 1386 | #TODO This way is more efficient but do not support macro inside of |
1387 | 1387 | # macro. You must parse them from the inside-out in order to enable |
1388 | 1388 | # that. |
1389 | - doc.search('.macro').each do |macro| | |
1389 | + doc.css('.macro').each do |macro| | |
1390 | 1390 | macro_name = macro['data-macro'] |
1391 | 1391 | result = @plugins.parse_macro(macro_name, macro, source) |
1392 | - macro.inner_html = result.kind_of?(Proc) ? self.instance_eval(&result) : result | |
1392 | + macro.content = result.kind_of?(Proc) ? self.instance_eval(&result) : result | |
1393 | 1393 | end |
1394 | - doc.html | |
1394 | + doc.xpath('//body/*').to_s | |
1395 | 1395 | end |
1396 | 1396 | |
1397 | 1397 | def default_folder_for_image_upload(profile) | ... | ... |
config/initializers/dependencies.rb
debian/control
script/install-dependencies/debian-squeeze.sh
... | ... | @@ -5,7 +5,7 @@ run sudo apt-get -y install $runtime_dependencies |
5 | 5 | sudo apt-get -y install iceweasel || sudo apt-get -y install firefox |
6 | 6 | |
7 | 7 | # needed for development |
8 | -run sudo apt-get -y install libtidy-ruby libhpricot-ruby libmocha-ruby imagemagick po4a xvfb libxml2-dev libxslt-dev postgresql openjdk-6-jre | |
8 | +run sudo apt-get -y install libtidy-ruby libhpricot-ruby libnokogiri-ruby libmocha-ruby imagemagick po4a xvfb libxml2-dev libxslt-dev postgresql openjdk-6-jre | |
9 | 9 | gem which bundler >/dev/null 2>&1 || gem_install bundler |
10 | 10 | setup_rubygems_path |
11 | 11 | run bundle install | ... | ... |
test/functional/cms_controller_test.rb
... | ... | @@ -644,8 +644,13 @@ class CmsControllerTest < ActionController::TestCase |
644 | 644 | article = profile.articles.create!(:name => 'test', :published => false) |
645 | 645 | |
646 | 646 | get :edit, :profile => profile.identifier, :id => article.id |
647 | - assert_tag :tag => 'input', :attributes => { :type => 'radio', :name => 'article[published]', :id => 'article_published_true' } | |
648 | - assert_tag :tag => 'input', :attributes => { :type => 'radio', :name => 'article[published]', :id => 'article_published_false', :checked => 'checked' } | |
647 | + assert_select 'input#article_published_true[name=?][type="radio"]', 'article[published]' | |
648 | + assert_select 'input#article_published_false[name=?][type="radio"]', 'article[published]' do |elements| | |
649 | + assert elements.length > 0 | |
650 | + elements.each do |element| | |
651 | + assert element["checked"] | |
652 | + end | |
653 | + end | |
649 | 654 | end |
650 | 655 | |
651 | 656 | should 'be able to add image with alignment' do |
... | ... | @@ -844,13 +849,23 @@ class CmsControllerTest < ActionController::TestCase |
844 | 849 | should 'display posts per page input with default value on edit blog' do |
845 | 850 | n = Blog.new.posts_per_page.to_s |
846 | 851 | get :new, :profile => profile.identifier, :type => 'Blog' |
847 | - assert_tag :tag => 'select', :attributes => { :name => 'article[posts_per_page]' }, :child => { :tag => 'option', :attributes => {:value => n, :selected => 'selected'} } | |
852 | + assert_select 'select[name=?] option[value=?]', 'article[posts_per_page]', n do |elements| | |
853 | + assert elements.length > 0 | |
854 | + elements.each do |element| | |
855 | + assert element["selected"] | |
856 | + end | |
857 | + end | |
848 | 858 | end |
849 | 859 | |
850 | 860 | should 'display options for blog visualization with default value on edit blog' do |
851 | 861 | format = Blog.new.visualization_format |
852 | 862 | get :new, :profile => profile.identifier, :type => 'Blog' |
853 | - assert_tag :tag => 'select', :attributes => { :name => 'article[visualization_format]' }, :child => { :tag => 'option', :attributes => {:value => 'full', :selected => 'selected'} } | |
863 | + assert_select 'select[name=?] option[value=full]', 'article[visualization_format]' do |elements| | |
864 | + assert elements.length > 0 | |
865 | + elements.each do |element| | |
866 | + assert element["selected"] | |
867 | + end | |
868 | + end | |
854 | 869 | end |
855 | 870 | |
856 | 871 | should 'not offer to create special article types' do |
... | ... | @@ -985,6 +1000,11 @@ class CmsControllerTest < ActionController::TestCase |
985 | 1000 | assert_tag :tag => 'a', :content => 'Cancel', :attributes => { :href => /\/myprofile\/#{profile.identifier}/ } |
986 | 1001 | end |
987 | 1002 | |
1003 | + should 'have only one mandatory field in the blog creation form' do | |
1004 | + get :new, :profile => profile.identifier, :type => Blog.name | |
1005 | + assert_select '.required-field .formfieldline', 1 | |
1006 | + end | |
1007 | + | |
988 | 1008 | should 'create icon upload file in folder' do |
989 | 1009 | f = Gallery.create!(:name => 'test_folder', :profile => profile) |
990 | 1010 | post :new, :profile => profile.identifier, |
... | ... | @@ -1076,7 +1096,12 @@ class CmsControllerTest < ActionController::TestCase |
1076 | 1096 | profile.articles << Blog.new(:name => 'test blog', :profile => profile) |
1077 | 1097 | profile.blog.create_external_feed(:address => 'address', :enabled => true) |
1078 | 1098 | get :edit, :profile => profile.identifier, :id => profile.blog.id |
1079 | - assert_tag :tag => 'input', :attributes => { :name => 'article[external_feed_builder][enabled]', :checked => 'checked' } | |
1099 | + assert_select 'input[type=checkbox][name=?]', 'article[external_feed_builder][enabled]' do |elements| | |
1100 | + elements.length > 0 | |
1101 | + elements.each do |element| | |
1102 | + assert element["checked"] | |
1103 | + end | |
1104 | + end | |
1080 | 1105 | end |
1081 | 1106 | |
1082 | 1107 | should "display 'Fetch posts from an external feed' unchecked if blog has disabled external feed" do |
... | ... | @@ -1094,7 +1119,12 @@ class CmsControllerTest < ActionController::TestCase |
1094 | 1119 | |
1095 | 1120 | should 'only_once option marked by default' do |
1096 | 1121 | get :new, :profile => profile.identifier, :type => 'Blog' |
1097 | - assert_tag :tag => 'input', :attributes => { :name => 'article[external_feed_builder][only_once]', :checked => 'checked', :value => 'true' } | |
1122 | + assert_select 'input[name=?][value="true"]', 'article[external_feed_builder][only_once]' do |elements| | |
1123 | + assert elements.length > 0 | |
1124 | + elements.each do |element| | |
1125 | + assert element['checked'] | |
1126 | + end | |
1127 | + end | |
1098 | 1128 | end |
1099 | 1129 | |
1100 | 1130 | should 'display media listing when it is TinyMceArticle and enabled on environment' do |
... | ... | @@ -1250,7 +1280,12 @@ class CmsControllerTest < ActionController::TestCase |
1250 | 1280 | should 'display posts per page input with default value on edit forum' do |
1251 | 1281 | n = Forum.new.posts_per_page.to_s |
1252 | 1282 | get :new, :profile => profile.identifier, :type => 'Forum' |
1253 | - assert_tag :tag => 'select', :attributes => { :name => 'article[posts_per_page]' }, :child => { :tag => 'option', :attributes => {:value => n, :selected => 'selected'} } | |
1283 | + assert_select 'select[name=?] option[value=?]', 'article[posts_per_page]', n do |elements| | |
1284 | + assert elements.length > 0 | |
1285 | + elements.each do |element| | |
1286 | + assert element['selected'] | |
1287 | + end | |
1288 | + end | |
1254 | 1289 | end |
1255 | 1290 | |
1256 | 1291 | should 'offer to edit a forum' do |
... | ... | @@ -1419,7 +1454,12 @@ class CmsControllerTest < ActionController::TestCase |
1419 | 1454 | should 'display display posts in current language input checked when editing blog' do |
1420 | 1455 | profile.articles << Blog.new(:name => 'Blog for test', :profile => profile, :display_posts_in_current_language => true) |
1421 | 1456 | get :edit, :profile => profile.identifier, :id => profile.blog.id |
1422 | - assert_tag :tag => 'input', :attributes => { :type => 'checkbox', :name => 'article[display_posts_in_current_language]', :checked => 'checked' } | |
1457 | + assert_select 'input[type=checkbox][name=?]', 'article[display_posts_in_current_language]' do |elements| | |
1458 | + assert elements.length > 0 | |
1459 | + elements.each do |element| | |
1460 | + assert element["checked"] | |
1461 | + end | |
1462 | + end | |
1423 | 1463 | end |
1424 | 1464 | |
1425 | 1465 | should 'display display posts in current language input not checked on new blog' do |
... | ... | @@ -1444,7 +1484,12 @@ class CmsControllerTest < ActionController::TestCase |
1444 | 1484 | should 'be checked display posts in current language checkbox' do |
1445 | 1485 | profile.articles << Blog.new(:name => 'Blog for test', :profile => profile, :display_posts_in_current_language => true) |
1446 | 1486 | get :edit, :profile => profile.identifier, :id => profile.blog.id |
1447 | - assert_tag :tag => 'input', :attributes => { :type => 'checkbox', :name => 'article[display_posts_in_current_language]', :checked => 'checked' } | |
1487 | + assert_select 'input[type=checkbox][name=?]', 'article[display_posts_in_current_language]' do |elements| | |
1488 | + assert elements.length > 0 | |
1489 | + elements.each do |element| | |
1490 | + assert element["checked"] | |
1491 | + end | |
1492 | + end | |
1448 | 1493 | end |
1449 | 1494 | |
1450 | 1495 | should 'be unchecked display posts in current language checkbox' do | ... | ... |