From 1db348b82e1aa60abc6679bb75225604e2e696c0 Mon Sep 17 00:00:00 2001 From: Marcos Date: Tue, 16 Dec 2014 17:33:25 -0200 Subject: [PATCH] WorkAssignment submissions visibility edition is now working for admins user --- app/controllers/my_profile/cms_controller.rb | 5 ++++- lib/noosfero/plugin.rb | 6 ++++++ plugins/work_assignment/controllers/myprofile/work_assignment_plugin_cms_controller.rb | 9 +++++---- plugins/work_assignment/lib/work_assignment_plugin.rb | 22 +++++++++------------- plugins/work_assignment/lib/work_assignment_plugin/helper.rb | 13 +++++++------ plugins/work_assignment/lib/work_assignment_plugin/work_assignment.rb | 1 + plugins/work_assignment/public/content_resize.js | 3 +++ plugins/work_assignment/views/cms/edit_visibility.html.erb | 24 ++++++++++++++++++++++++ plugins/work_assignment/views/cms/edits.html.erb | 24 ------------------------ 9 files changed, 59 insertions(+), 48 deletions(-) create mode 100644 plugins/work_assignment/public/content_resize.js create mode 100644 plugins/work_assignment/views/cms/edit_visibility.html.erb delete mode 100644 plugins/work_assignment/views/cms/edits.html.erb diff --git a/app/controllers/my_profile/cms_controller.rb b/app/controllers/my_profile/cms_controller.rb index c70285a..6d1494b 100644 --- a/app/controllers/my_profile/cms_controller.rb +++ b/app/controllers/my_profile/cms_controller.rb @@ -30,7 +30,8 @@ class CmsController < MyProfileController (user && (user.has_permission?('post_content', profile) || user.has_permission?('publish_content', profile))) end - protect_if :except => [:suggest_an_article, :set_home_page, :edit, :destroy, :publish, :upload_files, :new] do |c, user, profile| + action_list = [:suggest_an_article, :set_home_page, :edit, :destroy, :publish, :upload_files, :new] + protect_if :except => action_list do |c, user, profile| user && (user.has_permission?('post_content', profile) || user.has_permission?('publish_content', profile)) end @@ -48,6 +49,8 @@ class CmsController < MyProfileController profile.articles.find(c.params[:id]).allow_edit?(user) end + + def boxes_holder profile end diff --git a/lib/noosfero/plugin.rb b/lib/noosfero/plugin.rb index 575f3df..d975e7d 100644 --- a/lib/noosfero/plugin.rb +++ b/lib/noosfero/plugin.rb @@ -224,6 +224,12 @@ class Noosfero::Plugin false end + # -> Add action names to a list of filtered actions on cms controller + # returns = [] + def add_action_to_list + [] + end + # -> Adds buttons to the control panel # returns = { :title => title, :icon => icon, :url => url } # title = name that will be displayed. diff --git a/plugins/work_assignment/controllers/myprofile/work_assignment_plugin_cms_controller.rb b/plugins/work_assignment/controllers/myprofile/work_assignment_plugin_cms_controller.rb index 8d34bf9..3bbf79d 100644 --- a/plugins/work_assignment/controllers/myprofile/work_assignment_plugin_cms_controller.rb +++ b/plugins/work_assignment/controllers/myprofile/work_assignment_plugin_cms_controller.rb @@ -1,18 +1,19 @@ class WorkAssignmentPluginCmsController < CmsController - def edits + def edit_visibility @folder = profile.articles.find(params[:article_id]) @back_to = url_for(@folder.parent.url) if request.post? @folder.published = params[:article][:published] unless params[:q].nil? @folder.article_privacy_exceptions = params[:q].split(/,/).map{|n| environment.people.find n.to_i} + @folder.children.each do |c| + c.article_privacy_exceptions = params[:q].split(/,/).map{|n| environment.people.find n.to_i} + c.save! + end end @folder.save! redirect_to @back_to - x = Article.find_by_id(@folder.id) - puts "a"*55 - puts "#{x.published?}" end end end \ No newline at end of file diff --git a/plugins/work_assignment/lib/work_assignment_plugin.rb b/plugins/work_assignment/lib/work_assignment_plugin.rb index d956c01..12a941a 100644 --- a/plugins/work_assignment/lib/work_assignment_plugin.rb +++ b/plugins/work_assignment/lib/work_assignment_plugin.rb @@ -9,18 +9,8 @@ class WorkAssignmentPlugin < Noosfero::Plugin end def self.can_download_submission?(user, submission) - work_assignment = submission.parent.parent - submission_folder = submission.parent - - if work_assignment.allow_privacy_edition - submission_folder.published? || (user && (submission.author == user || - user.has_permission?('view_private_content', work_assignment.profile))) - else - # work_assignment.publish_submissions || (user && (submission.author == user || - # user.has_permission?('view_private_content', work_assignment.profile) || - # work_assignment.display_unpublished_article_to?(user))) - false - end + submission.published? || (user && (submission.author == user || user.has_permission?('view_private_content', submission.profile) || + submission.display_unpublished_article_to?(user))) end def self.is_submission?(content) @@ -47,7 +37,7 @@ class WorkAssignmentPlugin < Noosfero::Plugin def content_viewer_controller_filters block = proc do - path = params[:page] + path = get_path(params[:page], params[:format]) content = profile.articles.find_by_path(path) if WorkAssignmentPlugin.is_submission?(content) && !WorkAssignmentPlugin.can_download_submission?(user, content) @@ -92,4 +82,10 @@ class WorkAssignmentPlugin < Noosfero::Plugin end end + def add_action_to_list + proc do + action_list.append(", edits, search_article_privacy_exceptions") + end + end + end diff --git a/plugins/work_assignment/lib/work_assignment_plugin/helper.rb b/plugins/work_assignment/lib/work_assignment_plugin/helper.rb index 567d93b..dc181fb 100644 --- a/plugins/work_assignment/lib/work_assignment_plugin/helper.rb +++ b/plugins/work_assignment/lib/work_assignment_plugin/helper.rb @@ -50,7 +50,6 @@ module WorkAssignmentPlugin::Helper end end - def link_to_last_submission(author_folder, user) if WorkAssignmentPlugin.can_download_submission?(user, author_folder.children.last) link_to(author_folder.name, author_folder.children.last.url) @@ -58,6 +57,7 @@ module WorkAssignmentPlugin::Helper author_folder.name end end + # FIXME Copied from custom-froms. Consider passing it to core... def time_format(time) minutes = (time.min == 0) ? '' : ':%M' @@ -67,23 +67,24 @@ module WorkAssignmentPlugin::Helper end def display_delete_button(article) - expirable_button article, :delete, _('Delete'), {:controller =>'cms', :action => 'destroy', :id => article.id }, :method => :post, :confirm => delete_article_message(article) + expirable_button article, :delete, _('Delete'), + {:controller =>'cms', :action => 'destroy', :id => article.id }, + :method => :post, :confirm => delete_article_message(article) end - def display_privacy_button(author_folder, user) if author_folder @folder = environment.articles.find_by_id(author_folder.id) work_assignment = @folder.parent - if(user && (author_folder.author_id == user.id || user.has_permission?('view_private_content', work_assignment.profile))) + if(user && work_assignment.allow_privacy_edition && (author_folder.author_id == user.id || user.has_permission?('view_private_content', work_assignment.profile))) @tokenized_children = prepare_to_token_input( profile.members.includes(:articles_with_access).find_all{ |m| m.articles_with_access.include?(@folder) } ) - colorbox_button('edit', _('Edit'), :controller => 'work_assignment_plugin_cms', - :action => 'edits', :layout => false, :article_id => @folder.id, :tokenized_children => @tokenized_children) + colorbox_button :edit, _('Edit'), { :controller => 'work_assignment_plugin_cms', + :action => 'edit_visibility', :article_id => @folder.id, :tokenized_children => @tokenized_children} end end end diff --git a/plugins/work_assignment/lib/work_assignment_plugin/work_assignment.rb b/plugins/work_assignment/lib/work_assignment_plugin/work_assignment.rb index f8311ec..26c0278 100644 --- a/plugins/work_assignment/lib/work_assignment_plugin/work_assignment.rb +++ b/plugins/work_assignment/lib/work_assignment_plugin/work_assignment.rb @@ -45,6 +45,7 @@ class WorkAssignmentPlugin::WorkAssignment < Folder :parent => self, :profile => profile, :author => author, + :published => publish_submissions, }, :without_protection => true ) diff --git a/plugins/work_assignment/public/content_resize.js b/plugins/work_assignment/public/content_resize.js new file mode 100644 index 0000000..0ebf4cd --- /dev/null +++ b/plugins/work_assignment/public/content_resize.js @@ -0,0 +1,3 @@ + + + alert( 'oi'); diff --git a/plugins/work_assignment/views/cms/edit_visibility.html.erb b/plugins/work_assignment/views/cms/edit_visibility.html.erb new file mode 100644 index 0000000..9d907f4 --- /dev/null +++ b/plugins/work_assignment/views/cms/edit_visibility.html.erb @@ -0,0 +1,24 @@ + +
+<%= labelled_form_for 'article', :html => { :multipart => true, :class => @type } do |f| %> + + <% @article = environment.articles.find_by_id((params[:article_id]))%> + + <% @tokenized_children = params[:tokenized_children]%> + + <%= hidden_field_tag('article_id', @article.id) %> + +
+ <%= options_for_article(@article, @tokenized_children) %> +
+ + <% button_bar do %> + <%= submit_button :save, _('Save') %> + <%= colorbox_close_button(_('Cancel')) %> + <% end %> +<% end %> +
+ +
+ +<%= javascript_include_tag "article.js" %> \ No newline at end of file diff --git a/plugins/work_assignment/views/cms/edits.html.erb b/plugins/work_assignment/views/cms/edits.html.erb deleted file mode 100644 index 9d907f4..0000000 --- a/plugins/work_assignment/views/cms/edits.html.erb +++ /dev/null @@ -1,24 +0,0 @@ - -
-<%= labelled_form_for 'article', :html => { :multipart => true, :class => @type } do |f| %> - - <% @article = environment.articles.find_by_id((params[:article_id]))%> - - <% @tokenized_children = params[:tokenized_children]%> - - <%= hidden_field_tag('article_id', @article.id) %> - -
- <%= options_for_article(@article, @tokenized_children) %> -
- - <% button_bar do %> - <%= submit_button :save, _('Save') %> - <%= colorbox_close_button(_('Cancel')) %> - <% end %> -<% end %> -
- -
- -<%= javascript_include_tag "article.js" %> \ No newline at end of file -- libgit2 0.21.2