diff --git a/controllers/myprofile/proposals_discussion_plugin_myprofile_controller.rb b/controllers/myprofile/proposals_discussion_plugin_myprofile_controller.rb index 5f08665..faa1951 100644 --- a/controllers/myprofile/proposals_discussion_plugin_myprofile_controller.rb +++ b/controllers/myprofile/proposals_discussion_plugin_myprofile_controller.rb @@ -1,5 +1,7 @@ class ProposalsDiscussionPluginMyprofileController < MyProfileController + before_filter :check_edit_permission_to_proposal, :only => :publish_proposal + def select_topic @discussion = profile.articles.find(params[:parent_id]) render :file => 'select_topic' @@ -9,4 +11,20 @@ class ProposalsDiscussionPluginMyprofileController < MyProfileController redirect_to :controller => 'cms', :action => 'new', :type => "ProposalsDiscussionPlugin::Proposal", :parent_id => params[:discussion][:topic] end + def publish_proposal + if @proposal.update_attribute(:published, true) + session[:notice] = _('Proposal published!') + else + session[:notice] = _('Failed to publish your proposal.') + end + redirect_to @proposal.view_url + end + + protected + + def check_edit_permission_to_proposal + @proposal = profile.articles.find(params[:proposal_id]) + render_access_denied unless @proposal.allow_edit?(user) + end + end diff --git a/controllers/public/proposals_discussion_plugin_public_controller.rb b/controllers/public/proposals_discussion_plugin_public_controller.rb index 8e64ae1..7243eeb 100644 --- a/controllers/public/proposals_discussion_plugin_public_controller.rb +++ b/controllers/public/proposals_discussion_plugin_public_controller.rb @@ -9,7 +9,7 @@ class ProposalsDiscussionPluginPublicController < ApplicationController page = (params[:page] || 1).to_i set_seed - proposals = holder.proposals.includes(:parent, :profile).reorder('random()') + proposals = holder.proposals.public.reorder('random()') proposals = proposals.page(page).per_page(5) unless proposals.empty? diff --git a/lib/proposals_discussion_plugin/discussion.rb b/lib/proposals_discussion_plugin/discussion.rb index 9c4421f..e4b1ef8 100644 --- a/lib/proposals_discussion_plugin/discussion.rb +++ b/lib/proposals_discussion_plugin/discussion.rb @@ -1,7 +1,6 @@ class ProposalsDiscussionPlugin::Discussion < Folder - alias :topics :children - + has_many :topics, :class_name => 'ProposalsDiscussionPlugin::Topic', :foreign_key => 'parent_id' has_many :proposals, :class_name => 'ProposalsDiscussionPlugin::Proposal', :through => :children, :source => :children def self.short_description diff --git a/lib/proposals_discussion_plugin/proposal.rb b/lib/proposals_discussion_plugin/proposal.rb index 6b3028f..8175a4e 100644 --- a/lib/proposals_discussion_plugin/proposal.rb +++ b/lib/proposals_discussion_plugin/proposal.rb @@ -1,5 +1,7 @@ class ProposalsDiscussionPlugin::Proposal < TinyMceArticle + scope :private, lambda {|user| {:conditions => {:last_changed_by_id => user.id, :published => false}}} + alias :topic :parent def self.short_description @@ -19,4 +21,8 @@ class ProposalsDiscussionPlugin::Proposal < TinyMceArticle end end + def allow_edit?(user) + super || created_by == user + end + end diff --git a/lib/proposals_discussion_plugin/proposal_helper.rb b/lib/proposals_discussion_plugin/proposal_helper.rb new file mode 100644 index 0000000..980768f --- /dev/null +++ b/lib/proposals_discussion_plugin/proposal_helper.rb @@ -0,0 +1,8 @@ +module ProposalsDiscussionPlugin::ProposalHelper + + def visibility_options(article, tokenized_children) + article.published = false if article.new_record? + super + end + +end diff --git a/lib/proposals_discussion_plugin/topic.rb b/lib/proposals_discussion_plugin/topic.rb index 13244ba..e51f3aa 100644 --- a/lib/proposals_discussion_plugin/topic.rb +++ b/lib/proposals_discussion_plugin/topic.rb @@ -1,8 +1,8 @@ class ProposalsDiscussionPlugin::Topic < Folder alias :discussion :parent - alias :proposals :children + has_many :proposals, :class_name => 'ProposalsDiscussionPlugin::Proposal', :foreign_key => 'parent_id' has_many :proposals_comments, :class_name => 'Comment', :through => :children, :source => :comments has_many :proposals_authors, :class_name => 'Person', :through => :children, :source => :created_by diff --git a/public/style.css b/public/style.css index 3a22bc3..058ebff 100644 --- a/public/style.css +++ b/public/style.css @@ -1,3 +1,7 @@ +.private-proposals .proposal { + background: rgb(249, 252, 193); +} + .proposal { background: rgb(236, 236, 236); width: 100%; @@ -30,7 +34,7 @@ } .proposal .content:hover, .proposal .topic:hover { - background: rgb(223, 223, 223); + background: rgba(0, 0, 0, 0.1); } .proposal .title { diff --git a/views/content_viewer/_proposals_list.html.erb b/views/content_viewer/_proposals_list.html.erb index fc3aabe..d636220 100644 --- a/views/content_viewer/_proposals_list.html.erb +++ b/views/content_viewer/_proposals_list.html.erb @@ -9,7 +9,16 @@ }); +<% private_proposals = @page.proposals.private(user)%> +<% unless private_proposals.empty? %> +
+
<%= _('My private proposals') %>
+ <%= render :partial => 'content_viewer/proposal_card', :collection => private_proposals %> +
+<% end %> +
+
<%= _('Proposals') %>
Loading<%= _("Loading...") %> <%= link_to '', url_for({:controller => 'proposals_discussion_plugin_public', :action => 'load_proposals', :holder_id => holder.id, :profile => profile.identifier }) %> diff --git a/views/content_viewer/proposal.html.erb b/views/content_viewer/proposal.html.erb index 46697cb..44e0f9e 100644 --- a/views/content_viewer/proposal.html.erb +++ b/views/content_viewer/proposal.html.erb @@ -17,3 +17,11 @@
<%= _('Body') %>
<%= @page.body %>
+ +<% if @page.allow_edit?(user) && !@page.published %> +
+ <%= link_to url_for({:controller => 'proposals_discussion_plugin_myprofile', :action => 'publish_proposal', :proposal_id => @page.id}), :class => 'button with-text icon-add' do %> + <%= _("Publish") %> + <% end %> +
+<% end %> -- libgit2 0.21.2