Commit 0b8db772dc24fa6e039018cd9f467dc94beed49c
Exists in
master
and in
29 other branches
Merge branch 'AI2892-display_content_order_attributes' of /mnt/ebs/repositories/…
…participa/noosfero into next
Showing
11 changed files
with
191 additions
and
54 deletions
Show diff stats
app/views/shared/_lead_and_body.rhtml
| ... | ... | @@ -7,11 +7,18 @@ |
| 7 | 7 | <% lead_id ||= 0%> |
| 8 | 8 | <% f ||= false%> |
| 9 | 9 | |
| 10 | +<% if @article %> | |
| 11 | + <% fields_for 'article[image_builder]', @article.image do |i| %> | |
| 12 | + <%= file_field_or_thumbnail(_('Image:'), @article.image, i) %> | |
| 13 | + <% end %> | |
| 14 | +<% end %> | |
| 15 | + | |
| 10 | 16 | <br style="clear: both;"/> |
| 11 | 17 | <%= button :add, _("Lead"), '#', :class => "lead-button", :article_id => "#article-lead-"+lead_id.to_s, :style => "margin-left: 0px;" %> |
| 12 | 18 | <em><%= _('Used when a short version of your text is needed.') %></em> |
| 13 | 19 | |
| 14 | 20 | <div class='article-lead' id="article-lead-<%=lead_id.to_s%>"> |
| 21 | + | |
| 15 | 22 | <% if f %> |
| 16 | 23 | <%= labelled_form_field(_(abstract_label), f.text_area(abstract_method, :style => 'width: 98%; height: 200px;', :class => editor_type)) %> |
| 17 | 24 | <% else %> | ... | ... |
plugins/display_content/README
| ... | ... | @@ -33,7 +33,7 @@ As a Noosfero administrator user, go to administrator panel: |
| 33 | 33 | DEVELOPMENT |
| 34 | 34 | =========== |
| 35 | 35 | |
| 36 | -Noosfero uses jQuery 1.5.1 and the jsTree doesn't works fine with this jQuery version. | |
| 36 | +Noosfero uses jQuery 1.5.1 and the jsTree doesn't works fine with this jQuery version. | |
| 37 | 37 | Until Noosfero upgrade its JQuery version to a newer one is necessary to load jQuery 1.8.3 inside plugin and apply some changes in jsTree to avoid jQuery conflit. |
| 38 | 38 | |
| 39 | 39 | Get the Display Content (Noosfero with Display Content Plugin) development repository: | ... | ... |
plugins/display_content/controllers/display_content_plugin_admin_controller.rb
plugins/display_content/controllers/display_content_plugin_module.rb
| ... | ... | @@ -18,10 +18,10 @@ module DisplayContentPluginController |
| 18 | 18 | node[:data] = article.title |
| 19 | 19 | node[:attr] = { 'node_id' => article.id, 'parent_id' => article.parent_id} |
| 20 | 20 | if block.nodes.include?(article.id) |
| 21 | - node[:attr].merge!('class' => 'jstree-checked') | |
| 21 | + node[:attr].merge!('class' => 'jstree-checked') | |
| 22 | 22 | elsif block.parent_nodes.include?(article.id) |
| 23 | 23 | node[:children] = get_node(block, article.children) |
| 24 | - node[:attr].merge!('class' => 'jstree-undetermined') | |
| 24 | + node[:attr].merge!('class' => 'jstree-undetermined') | |
| 25 | 25 | end |
| 26 | 26 | node[:state] = 'closed' if Article.exists?(:parent_id => article.id) |
| 27 | 27 | nodes.push(node) | ... | ... |
plugins/display_content/controllers/display_content_plugin_myprofile_controller.rb
plugins/display_content/lib/display_content_block.rb
| 1 | 1 | class DisplayContentBlock < Block |
| 2 | 2 | |
| 3 | + MONTHS = [ | |
| 4 | + N_('January'), | |
| 5 | + N_('February'), | |
| 6 | + N_('March'), | |
| 7 | + N_('April'), | |
| 8 | + N_('May'), | |
| 9 | + N_('June'), | |
| 10 | + N_('July'), | |
| 11 | + N_('August'), | |
| 12 | + N_('September'), | |
| 13 | + N_('October'), | |
| 14 | + N_('November'), | |
| 15 | + N_('December') | |
| 16 | + ] | |
| 17 | + | |
| 3 | 18 | settings_items :nodes, :type => Array, :default => [] |
| 4 | 19 | settings_items :parent_nodes, :type => Array, :default => [] |
| 5 | - settings_items :chosen_attributes, :type => Array, :default => ['title'] | |
| 20 | + settings_items :sections, | |
| 21 | + :type => Array, | |
| 22 | + :default => [{:name => _('Publish date'), :checked => true}, | |
| 23 | + {:name => _('Title'), :checked => true}, | |
| 24 | + {:name => _('Abstract'), :checked => true}, | |
| 25 | + {:name => _('Body'), :checked => false}, | |
| 26 | + {:name => _('Image'), :checked => false}, | |
| 27 | + {:name => _('Tags'), :checked => false}] | |
| 6 | 28 | |
| 7 | 29 | def self.description |
| 8 | 30 | _('Display your contents') |
| ... | ... | @@ -33,20 +55,50 @@ class DisplayContentBlock < Block |
| 33 | 55 | |
| 34 | 56 | def articles_of_parent(parent = nil) |
| 35 | 57 | return [] if self.holder.nil? |
| 36 | - holder.articles.find(:all, :conditions => {:type => VALID_CONTENT, :parent_id => (parent.nil? ? nil : parent)}) | |
| 58 | + holder.articles.find(:all, :conditions => {:type => VALID_CONTENT, :parent_id => (parent.nil? ? nil : parent)}) | |
| 37 | 59 | end |
| 38 | 60 | |
| 39 | 61 | include ActionController::UrlWriter |
| 40 | 62 | def content(args={}) |
| 41 | 63 | docs = owner.articles.find(:all, :conditions => {:id => self.nodes}) |
| 64 | + | |
| 42 | 65 | block_title(title) + |
| 43 | - content_tag('ul', docs.map {|item| | |
| 44 | - content_tag('li', | |
| 45 | - (display_attribute?('title') ? content_tag('div', link_to(h(item.title), item.url), :class => 'title') : '') + | |
| 46 | - (display_attribute?('abstract') ? content_tag('div', item.abstract ,:class => 'lead') : '') + | |
| 47 | - (display_attribute?('body') ? content_tag('div', item.body ,:class => 'body') : '') | |
| 48 | - ) | |
| 49 | - }.join("\n")) | |
| 66 | + content_tag('ul', docs.map {|item| | |
| 67 | + | |
| 68 | + content_sections = '' | |
| 69 | + read_more_section = '' | |
| 70 | + tags_section = '' | |
| 71 | + | |
| 72 | + sections.select { |section| | |
| 73 | + case section[:name] | |
| 74 | + when 'Publish date' | |
| 75 | + content_sections += (display_section?(section) ? (content_tag('div', show_date(item.published_at, false), :class => 'published-at') ) : '') | |
| 76 | + when 'Title' | |
| 77 | + content_sections += (display_section?(section) ? (content_tag('div', link_to(h(item.title), item.url), :class => 'title') ) : '') | |
| 78 | + when 'Abstract' | |
| 79 | + content_sections += (display_section?(section) ? (content_tag('div', item.abstract , :class => 'lead')) : '' ) | |
| 80 | + if display_section?(section) | |
| 81 | + read_more_section = content_tag('div', link_to(_('Read more'), item.url), :class => 'read_more') | |
| 82 | + end | |
| 83 | + when 'Body' | |
| 84 | + content_sections += (display_section?(section) ? (content_tag('div', item.body ,:class => 'body')) : '' ) | |
| 85 | + when 'Image' | |
| 86 | + image_section = image_tag item.image.public_filename if item.image | |
| 87 | + if !image_section.blank? | |
| 88 | + content_sections += (display_section?(section) ? (content_tag('div', link_to( image_section, item.url ) ,:class => 'image')) : '' ) | |
| 89 | + end | |
| 90 | + when 'Tags' | |
| 91 | + if !item.tags.empty? | |
| 92 | + tags_section = item.tags.map { |t| content_tag('span', t.name) }.join("") | |
| 93 | + content_sections += (display_section?(section) ? (content_tag('div', tags_section, :class => 'tags')) : '') | |
| 94 | + end | |
| 95 | + end | |
| 96 | + } | |
| 97 | + | |
| 98 | + content_sections += read_more_section if !read_more_section.blank? | |
| 99 | + | |
| 100 | + content_tag('li', content_sections) | |
| 101 | + }.join(" ")) | |
| 50 | 102 | |
| 51 | 103 | end |
| 52 | 104 | |
| ... | ... | @@ -61,15 +113,15 @@ class DisplayContentBlock < Block |
| 61 | 113 | params |
| 62 | 114 | end |
| 63 | 115 | |
| 64 | - def display_attribute?(attr) | |
| 65 | - chosen_attributes.include?(attr) | |
| 116 | + def display_section?(section) | |
| 117 | + section[:checked] | |
| 66 | 118 | end |
| 67 | 119 | |
| 68 | 120 | protected |
| 69 | 121 | |
| 70 | 122 | def holder |
| 71 | 123 | return nil if self.box.nil? || self.box.owner.nil? |
| 72 | - if self.box.owner.kind_of?(Environment) | |
| 124 | + if self.box.owner.kind_of?(Environment) | |
| 73 | 125 | return nil if self.box.owner.portal_community.nil? |
| 74 | 126 | self.box.owner.portal_community |
| 75 | 127 | else |
| ... | ... | @@ -87,4 +139,20 @@ class DisplayContentBlock < Block |
| 87 | 139 | { :profile => [:article], :environment => [:article] } |
| 88 | 140 | end |
| 89 | 141 | |
| 142 | + def show_date(date, use_numbers = false, year=true) | |
| 143 | + if date && use_numbers | |
| 144 | + date_format = year ? _('%{month}/%{day}/%{year}') : _('%{month}/%{day}') | |
| 145 | + date_format % { :day => date.day, :month => date.month, :year => date.year } | |
| 146 | + elsif date | |
| 147 | + date_format = year ? _('%{month_name} %{day}, %{year}') : _('%{month_name} %{day}') | |
| 148 | + date_format % { :day => date.day, :month_name => month_name(date.month), :year => date.year } | |
| 149 | + else | |
| 150 | + '' | |
| 151 | + end | |
| 152 | + end | |
| 153 | + | |
| 154 | + def month_name(n) | |
| 155 | + _(MONTHS[n-1]) | |
| 156 | + end | |
| 157 | + | |
| 90 | 158 | end | ... | ... |
plugins/display_content/lib/display_content_plugin.rb
plugins/display_content/public/style.css
| 1 | -#display_content_plugin ul { | |
| 1 | +#display_content_plugin .sections { | |
| 2 | + width: auto; | |
| 3 | +} | |
| 4 | + | |
| 5 | +#display_content_plugin .sections td { | |
| 6 | + padding: 2px; | |
| 7 | +} | |
| 8 | + | |
| 9 | +.block.display-content-block ul { | |
| 2 | 10 | list-style: none; |
| 11 | + padding: 0px; | |
| 12 | +} | |
| 13 | + | |
| 14 | +.block.display-content-block li { | |
| 15 | + margin: 5px; | |
| 16 | +} | |
| 17 | + | |
| 18 | +.block.display-content-block .published-at, | |
| 19 | +.block.display-content-block .title, | |
| 20 | +.block.display-content-block .lead, | |
| 21 | +.block.display-content-block .body, | |
| 22 | +.block.display-content-block .image, | |
| 23 | +.block.display-content-block .read_more, | |
| 24 | +.block.display-content-block .tags { | |
| 25 | + margin: 2px 0px 2px 0px; | |
| 26 | +} | |
| 27 | + | |
| 28 | +.block.display-content-block .tags span { | |
| 29 | + margin-right: 3px; | |
| 3 | 30 | } |
| 4 | 31 | |
| 5 | -#display_content_plugin .display_attributes li{ | |
| 6 | - display: inline; | |
| 32 | +.block.display-content-block .tags a { | |
| 33 | + text-decoration: none; | |
| 34 | + -webkit-border-radius: 3px; | |
| 35 | + background-color: #BBB; | |
| 36 | + color: #FFF; | |
| 37 | + padding: 2px; | |
| 7 | 38 | } | ... | ... |
plugins/display_content/test/functional/display_content_plugin_admin_controller_test.rb
| ... | ... | @@ -19,7 +19,7 @@ class DisplayContentPluginAdminControllerTest < ActionController::TestCase |
| 19 | 19 | @environment.enabled_plugins = ['DisplayContentPlugin'] |
| 20 | 20 | @environment.portal_community = fast_create(Community, :name => 'my test profile', :identifier => 'mytestcommunity') |
| 21 | 21 | @environment.save! |
| 22 | - | |
| 22 | + | |
| 23 | 23 | box = Box.new(:owner => @environment, :position => 1) |
| 24 | 24 | box.save |
| 25 | 25 | ... | ... |
plugins/display_content/test/unit/display_content_block_test.rb
| ... | ... | @@ -515,7 +515,7 @@ class DisplayContentBlockTest < ActiveSupport::TestCase |
| 515 | 515 | Article.delete_all |
| 516 | 516 | a1 = fast_create(invalid_article, :name => 'test article 1', :profile_id => profile.id) |
| 517 | 517 | a2 = fast_create(VALID_KIND_OF_ARTICLE.first, :name => 'test article 2', :profile_id => profile.id) |
| 518 | - | |
| 518 | + | |
| 519 | 519 | block = DisplayContentBlock.new |
| 520 | 520 | box = mock() |
| 521 | 521 | box.stubs(:owner).returns(profile) |
| ... | ... | @@ -523,7 +523,7 @@ class DisplayContentBlockTest < ActiveSupport::TestCase |
| 523 | 523 | assert_equal [], [a2] - block.articles_of_parent |
| 524 | 524 | assert_equal [], block.articles_of_parent - [a2] |
| 525 | 525 | end |
| 526 | - | |
| 526 | + | |
| 527 | 527 | end |
| 528 | 528 | |
| 529 | 529 | VALID_KIND_OF_ARTICLE.map do |valid_article| |
| ... | ... | @@ -533,14 +533,14 @@ class DisplayContentBlockTest < ActiveSupport::TestCase |
| 533 | 533 | Article.delete_all |
| 534 | 534 | a1 = fast_create(valid_article, :name => 'test article 1', :profile_id => profile.id) |
| 535 | 535 | a2 = fast_create(INVALID_KIND_OF_ARTICLE.first, :name => 'test article 2', :profile_id => profile.id) |
| 536 | - | |
| 536 | + | |
| 537 | 537 | block = DisplayContentBlock.new |
| 538 | 538 | box = mock() |
| 539 | 539 | box.stubs(:owner).returns(profile) |
| 540 | 540 | block.stubs(:box).returns(box) |
| 541 | 541 | assert_equal [a1], block.articles_of_parent |
| 542 | 542 | end |
| 543 | - | |
| 543 | + | |
| 544 | 544 | end |
| 545 | 545 | |
| 546 | 546 | should 'list links for all articles title defined in nodes' do |
| ... | ... | @@ -554,7 +554,7 @@ class DisplayContentBlockTest < ActiveSupport::TestCase |
| 554 | 554 | box = mock() |
| 555 | 555 | block.stubs(:box).returns(box) |
| 556 | 556 | box.stubs(:owner).returns(profile) |
| 557 | - | |
| 557 | + | |
| 558 | 558 | assert_match /.*<a.*>#{a1.title}<\/a>/, block.content |
| 559 | 559 | assert_match /.*<a.*>#{a2.title}<\/a>/, block.content |
| 560 | 560 | end |
| ... | ... | @@ -566,12 +566,12 @@ class DisplayContentBlockTest < ActiveSupport::TestCase |
| 566 | 566 | a2 = fast_create(TextArticle, :name => 'test article 2', :profile_id => profile.id, :abstract => 'abstract article 2') |
| 567 | 567 | |
| 568 | 568 | block = DisplayContentBlock.new |
| 569 | - block.chosen_attributes = ['abstract'] | |
| 569 | + block.sections = [{:name => 'Abstract', :checked => true}] | |
| 570 | 570 | block.nodes = [a1.id, a2.id] |
| 571 | 571 | box = mock() |
| 572 | 572 | block.stubs(:box).returns(box) |
| 573 | 573 | box.stubs(:owner).returns(profile) |
| 574 | - | |
| 574 | + | |
| 575 | 575 | assert_match /<div class="lead">#{a1.lead}<\/div>/, block.content |
| 576 | 576 | assert_match /<div class="lead">#{a2.lead}<\/div>/, block.content |
| 577 | 577 | end |
| ... | ... | @@ -585,7 +585,7 @@ class DisplayContentBlockTest < ActiveSupport::TestCase |
| 585 | 585 | box = mock() |
| 586 | 586 | block.stubs(:box).returns(box) |
| 587 | 587 | box.stubs(:owner).returns(profile) |
| 588 | - | |
| 588 | + | |
| 589 | 589 | Article.delete_all |
| 590 | 590 | assert_match /<ul><\/ul>/, block.content |
| 591 | 591 | end |
| ... | ... | @@ -595,7 +595,7 @@ class DisplayContentBlockTest < ActiveSupport::TestCase |
| 595 | 595 | block = DisplayContentBlock.new |
| 596 | 596 | block.box = profile.boxes.first |
| 597 | 597 | block.save! |
| 598 | - | |
| 598 | + | |
| 599 | 599 | params = {:block_id => block.id} |
| 600 | 600 | params[:controller] = "display_content_plugin_myprofile" |
| 601 | 601 | params[:profile] = profile.identifier |
| ... | ... | @@ -607,7 +607,7 @@ class DisplayContentBlockTest < ActiveSupport::TestCase |
| 607 | 607 | block = DisplayContentBlock.new |
| 608 | 608 | block.box = environment.boxes.first |
| 609 | 609 | block.save! |
| 610 | - | |
| 610 | + | |
| 611 | 611 | params = {:block_id => block.id} |
| 612 | 612 | params[:controller] = "display_content_plugin_admin" |
| 613 | 613 | assert_equal params, block.url_params |
| ... | ... | @@ -619,11 +619,11 @@ class DisplayContentBlockTest < ActiveSupport::TestCase |
| 619 | 619 | |
| 620 | 620 | block = DisplayContentBlock.new |
| 621 | 621 | block.nodes = [a.id] |
| 622 | - block.chosen_attributes = ['title'] | |
| 622 | + block.sections = [{:name => 'Title', :checked => true}] | |
| 623 | 623 | box = mock() |
| 624 | 624 | block.stubs(:box).returns(box) |
| 625 | 625 | box.stubs(:owner).returns(profile) |
| 626 | - | |
| 626 | + | |
| 627 | 627 | assert_match /.*<a.*>#{a.title}<\/a>/, block.content |
| 628 | 628 | end |
| 629 | 629 | |
| ... | ... | @@ -633,11 +633,11 @@ class DisplayContentBlockTest < ActiveSupport::TestCase |
| 633 | 633 | |
| 634 | 634 | block = DisplayContentBlock.new |
| 635 | 635 | block.nodes = [a.id] |
| 636 | - block.chosen_attributes = ['abstract'] | |
| 636 | + block.sections = [{:name => 'Abstract', :checked => true}] | |
| 637 | 637 | box = mock() |
| 638 | 638 | block.stubs(:box).returns(box) |
| 639 | 639 | box.stubs(:owner).returns(profile) |
| 640 | - | |
| 640 | + | |
| 641 | 641 | assert_match /#{a.abstract}/, block.content |
| 642 | 642 | end |
| 643 | 643 | |
| ... | ... | @@ -647,11 +647,11 @@ class DisplayContentBlockTest < ActiveSupport::TestCase |
| 647 | 647 | |
| 648 | 648 | block = DisplayContentBlock.new |
| 649 | 649 | block.nodes = [a.id] |
| 650 | - block.chosen_attributes = ['body'] | |
| 650 | + block.sections = [{:name => 'Body', :checked => true}] | |
| 651 | 651 | box = mock() |
| 652 | 652 | block.stubs(:box).returns(box) |
| 653 | 653 | box.stubs(:owner).returns(profile) |
| 654 | - | |
| 654 | + | |
| 655 | 655 | assert_match /#{a.body}/, block.content |
| 656 | 656 | end |
| 657 | 657 | |
| ... | ... | @@ -659,17 +659,41 @@ class DisplayContentBlockTest < ActiveSupport::TestCase |
| 659 | 659 | profile = create_user('testuser').person |
| 660 | 660 | |
| 661 | 661 | block = DisplayContentBlock.new |
| 662 | - | |
| 663 | - assert block.display_attribute?('title') | |
| 662 | + | |
| 663 | + assert block.display_section?({:name => 'Title', :checked => true}) | |
| 664 | 664 | end |
| 665 | 665 | |
| 666 | 666 | should 'display_attribute be true if the attribute was chosen' do |
| 667 | 667 | profile = create_user('testuser').person |
| 668 | 668 | |
| 669 | 669 | block = DisplayContentBlock.new |
| 670 | - block.chosen_attributes = ['body'] | |
| 671 | - | |
| 672 | - assert block.display_attribute?('body') | |
| 670 | + | |
| 671 | + block.sections = [{:name => 'Body', :checked => true}] | |
| 672 | + section = block.sections.first | |
| 673 | + | |
| 674 | + assert block.display_section?(section) | |
| 675 | + end | |
| 676 | + | |
| 677 | + should 'display_attribute be true for publish date by default' do | |
| 678 | + profile = create_user('testuser').person | |
| 679 | + | |
| 680 | + block = DisplayContentBlock.new | |
| 681 | + | |
| 682 | + assert block.display_section?({:name => 'Publish date', :checked => true}) | |
| 683 | + end | |
| 684 | + | |
| 685 | + should 'show publishd date if defined by user' do | |
| 686 | + profile = create_user('testuser').person | |
| 687 | + a = fast_create(TextArticle, :name => 'test article 1', :profile_id => profile.id, :body => 'some body') | |
| 688 | + | |
| 689 | + block = DisplayContentBlock.new | |
| 690 | + block.nodes = [a.id] | |
| 691 | + block.sections = [{:name => 'Publish date', :checked => true}] | |
| 692 | + box = mock() | |
| 693 | + block.stubs(:box).returns(box) | |
| 694 | + box.stubs(:owner).returns(profile) | |
| 695 | + | |
| 696 | + assert_match /#{a.published_at}/, block.content | |
| 673 | 697 | end |
| 674 | 698 | |
| 675 | 699 | end | ... | ... |
plugins/display_content/views/box_organizer/_display_content_block.rhtml
| 1 | 1 | <div id="display_content_plugin"> |
| 2 | 2 | |
| 3 | -<h3> <%= _('Choose which attributes should be displayed:') %> </h3> | |
| 4 | -<ul class='display_attributes'> | |
| 5 | - <li> <%= _('Title: ')%> <%= check_box_tag "block[chosen_attributes][]", 'title', @block.display_attribute?('title') %> </li> | |
| 6 | - <li> <%= _('Abstract: ')%> <%= check_box_tag "block[chosen_attributes][]", 'abstract', @block.display_attribute?('abstract') %> </li> | |
| 7 | - <li> <%= _('Body: ')%> <%= check_box_tag "block[chosen_attributes][]", 'body', @block.display_attribute?('body') %> </li> | |
| 8 | -</ul> | |
| 3 | +<h3> <%= _('Choose which attributes should be displayed and drag to reorder them:') %> </h3> | |
| 4 | + | |
| 5 | +<table class="sections"> | |
| 6 | + <tbody id="sortable"> | |
| 7 | + <% for section in @block.sections do %> | |
| 8 | + <tr> | |
| 9 | + <td><%= hidden_field_tag 'block[sections][][name]', section[:name] %> <%= check_box_tag 'block[sections][][checked]', section[:name], section[:checked] %></td> | |
| 10 | + <td><%= section[:name]%></td> | |
| 11 | + </tr> | |
| 12 | + <% end %> | |
| 13 | + </tbody> | |
| 14 | +</table> | |
| 9 | 15 | |
| 10 | 16 | <h3> <%= _('Choose which content should be displayed:') %> </h3> |
| 11 | 17 | <div id="display_content"> |
| ... | ... | @@ -16,20 +22,22 @@ |
| 16 | 22 | jQuery_1_8_3("#display_content").jstree({ |
| 17 | 23 | plugins : ["themes","json_data", "checkbox"], |
| 18 | 24 | checkbox : { |
| 19 | - real_checkboxes : true, | |
| 20 | - real_checkboxes_names : function (n) { return [("block[checked_nodes[" + n.attr('node_id') + "]]"), 1]; } | |
| 25 | + real_checkboxes : true, | |
| 26 | + real_checkboxes_names : function (n) { return [("block[checked_nodes[" + n.attr('node_id') + "]]"), 1]; } | |
| 21 | 27 | }, |
| 22 | 28 | themes : {"theme" : "classic", "icons" : true, "url": "/plugins/display_content/javascripts/jstree/themes/classic/style.css"}, |
| 23 | 29 | json_data : { |
| 24 | - ajax : { | |
| 25 | - url : '<%= url_for @block.url_params %>', | |
| 30 | + ajax : { | |
| 31 | + url : '<%= url_for @block.url_params %>', | |
| 26 | 32 | async: true, |
| 27 | - data : function (m) { | |
| 33 | + data : function (m) { | |
| 28 | 34 | return m.attr ? {"id" : m.attr("node_id")} : {}; |
| 29 | 35 | } |
| 30 | 36 | } |
| 31 | 37 | } |
| 32 | 38 | }); |
| 33 | 39 | |
| 40 | +jQuery( "#sortable" ).sortable(); | |
| 41 | + | |
| 34 | 42 | </script> |
| 35 | 43 | </div> | ... | ... |