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 new file mode 100644 index 0000000..8d34bf9 --- /dev/null +++ b/plugins/work_assignment/controllers/myprofile/work_assignment_plugin_cms_controller.rb @@ -0,0 +1,18 @@ +class WorkAssignmentPluginCmsController < CmsController + + def edits + @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} + 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/controllers/public/work_assignment_plugin_content_viewer_controller.rb b/plugins/work_assignment/controllers/public/work_assignment_plugin_content_viewer_controller.rb deleted file mode 100644 index 7919205..0000000 --- a/plugins/work_assignment/controllers/public/work_assignment_plugin_content_viewer_controller.rb +++ /dev/null @@ -1,19 +0,0 @@ -class WorkAssignmentPluginContentViewerController < ContentViewerController - def toggle_friends_permission - folder = environment.articles.find_by_id(params[:folder_id]) - puts "#{params[:folder_id]}" - - if folder - author = folder.author - work_assignment = folder.parent - - if !work_assignment.only_friends.include?(author) - work_assignment.only_friends << author - else - work_assignment.only_friends.delete(author) - end - end - redirect_to :action => :index - #render :action => 'view' - 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 405ba93..d956c01 100644 --- a/plugins/work_assignment/lib/work_assignment_plugin.rb +++ b/plugins/work_assignment/lib/work_assignment_plugin.rb @@ -9,20 +9,18 @@ class WorkAssignmentPlugin < Noosfero::Plugin end def self.can_download_submission?(user, submission) - work_assignment = submission.parent.parent + work_assignment = submission.parent.parent + submission_folder = submission.parent - if work_assignment.publish_submissions - if work_assignment.only_friends.include?(submission.author) - submission.author.friends.include?(user) + if work_assignment.allow_privacy_edition + submission_folder.published? || (user && (submission.author == user || + user.has_permission?('view_private_content', work_assignment.profile))) else - true + # 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 - elsif (user && (submission.author == user || user.has_permission?('view_private_content', work_assignment.profile))) - #work_assignment.publish_submissions || (user && (submission.author == user || user.has_permission?('view_private_content', work_assignment.profile))) - true - else - false - end end def self.is_submission?(content) diff --git a/plugins/work_assignment/lib/work_assignment_plugin/helper.rb b/plugins/work_assignment/lib/work_assignment_plugin/helper.rb index 6423f2d..567d93b 100644 --- a/plugins/work_assignment/lib/work_assignment_plugin/helper.rb +++ b/plugins/work_assignment/lib/work_assignment_plugin/helper.rb @@ -7,6 +7,7 @@ module WorkAssignmentPlugin::Helper content_tag('th', c_('Author'), :style => 'width: 50%') + content_tag('th', _('Submission date')) + content_tag('th', _('Versions'), :style => 'text-align: center') + + content_tag('th', '') + content_tag('th', '') ).html_safe + work_assignment.children.map {|author_folder| display_author_folder(author_folder, user)}.join("\n").html_safe @@ -15,14 +16,13 @@ module WorkAssignmentPlugin::Helper def display_author_folder(author_folder, user) return if author_folder.children.empty? - only_friends = author_folder.parent.only_friends action = 'toggle_friends_permission' content_tag('tr', content_tag('td', link_to_last_submission(author_folder, user)) + content_tag('td', time_format(author_folder.children.last.created_at)) + content_tag('td', author_folder.children.count, :style => 'text-align: center') + content_tag('td', content_tag('button', _('View all versions'), :class => 'view-author-versions', 'data-folder-id' => author_folder.id)) + - content_tag('td', button('toggle_friends_permission', only_friends.include?(author_folder.author) ? _('All') : _('Only Friends'),:controller => 'work_assignment_plugin_content_viewer', :action => action, :folder_id => author_folder.id)) + content_tag('td', display_privacy_button(author_folder, user)) ).html_safe + author_folder.children.map {|submission| display_submission(submission, user)}.join("\n").html_safe end @@ -69,4 +69,23 @@ module WorkAssignmentPlugin::Helper def display_delete_button(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))) + @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) + end + 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 0f95034..f8311ec 100644 --- a/plugins/work_assignment/lib/work_assignment_plugin/work_assignment.rb +++ b/plugins/work_assignment/lib/work_assignment_plugin/work_assignment.rb @@ -2,12 +2,12 @@ class WorkAssignmentPlugin::WorkAssignment < Folder settings_items :publish_submissions, :type => :boolean, :default => false settings_items :default_email, :type => :string, :default => "" - settings_items :only_friends, :type => Array, :default => [] + settings_items :allow_privacy_edition, :type => :boolean, :default => false attr_accessible :publish_submissions attr_accessible :default_email - attr_accessible :only_friends - + attr_accessible :allow_privacy_edition + def self.icon_name(article = nil) 'work-assignment' end @@ -39,7 +39,15 @@ class WorkAssignmentPlugin::WorkAssignment < Folder end def find_or_create_author_folder(author) - children.find_by_slug(author.name.to_slug) || Folder.create!(:name => author.name, :parent => self, :profile => profile, :author => author) + children.find_by_slug(author.name.to_slug) || Folder.create!( + { + :name => author.name, + :parent => self, + :profile => profile, + :author => author, + }, + :without_protection => true + ) end def submissions diff --git a/plugins/work_assignment/public/style.css b/plugins/work_assignment/public/style.css index 4046fbf..e574362 100644 --- a/plugins/work_assignment/public/style.css +++ b/plugins/work_assignment/public/style.css @@ -1,2 +1,7 @@ .icon-newwork-assignment { background-image: url(../../designs/icons/tango/Tango/16x16/categories/applications-office.png) } -.icon-work-assignment { background-image: url(../../designs/icons/tango/Tango/16x16/categories/applications-office.png) } \ No newline at end of file +.icon-work-assignment { background-image: url(../../designs/icons/tango/Tango/16x16/categories/applications-office.png) } +.select-privacy-options { + padding: 5px 20px; + width: 400px; + height: 300px; +} \ 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 new file mode 100644 index 0000000..9d907f4 --- /dev/null +++ b/plugins/work_assignment/views/cms/edits.html.erb @@ -0,0 +1,24 @@ + +
+ +