diff --git a/controllers/myprofile/proposals_discussion_plugin_myprofile_controller.rb b/controllers/myprofile/proposals_discussion_plugin_myprofile_controller.rb new file mode 100644 index 0000000..5f08665 --- /dev/null +++ b/controllers/myprofile/proposals_discussion_plugin_myprofile_controller.rb @@ -0,0 +1,12 @@ +class ProposalsDiscussionPluginMyprofileController < MyProfileController + + def select_topic + @discussion = profile.articles.find(params[:parent_id]) + render :file => 'select_topic' + end + + def new_proposal + redirect_to :controller => 'cms', :action => 'new', :type => "ProposalsDiscussionPlugin::Proposal", :parent_id => params[:discussion][:topic] + end + +end diff --git a/lib/proposals_discussion_plugin.rb b/lib/proposals_discussion_plugin.rb index 6b2c097..23b2d3a 100644 --- a/lib/proposals_discussion_plugin.rb +++ b/lib/proposals_discussion_plugin.rb @@ -18,19 +18,26 @@ class ProposalsDiscussionPlugin < Noosfero::Plugin parent_id = context.params[:parent_id] parent = parent_id ? context.profile.articles.find(parent_id) : nil types << ProposalsDiscussionPlugin::Discussion unless parent - types << ProposalsDiscussionPlugin::Proposal if parent.kind_of?(ProposalsDiscussionPlugin::Discussion) + types << ProposalsDiscussionPlugin::Topic if parent.kind_of?(ProposalsDiscussionPlugin::Discussion) + types << ProposalsDiscussionPlugin::Proposal if parent.kind_of?(ProposalsDiscussionPlugin::Topic) types else - [ProposalsDiscussionPlugin::Discussion, ProposalsDiscussionPlugin::Proposal] + [ProposalsDiscussionPlugin::Discussion, + ProposalsDiscussionPlugin::Topic, + ProposalsDiscussionPlugin::Proposal] end end def content_remove_new(page) - page.kind_of?(ProposalsDiscussionPlugin::Discussion) || page.kind_of?(ProposalsDiscussionPlugin::Proposal) + page.kind_of?(ProposalsDiscussionPlugin::Discussion) || + page.kind_of?(ProposalsDiscussionPlugin::Topic) || + page.kind_of?(ProposalsDiscussionPlugin::Proposal) end def content_remove_upload(page) - page.kind_of?(ProposalsDiscussionPlugin::Discussion) || page.kind_of?(ProposalsDiscussionPlugin::Proposal) + page.kind_of?(ProposalsDiscussionPlugin::Discussion) || + page.kind_of?(ProposalsDiscussionPlugin::Topic) || + page.kind_of?(ProposalsDiscussionPlugin::Proposal) end end diff --git a/lib/proposals_discussion_plugin/discussion.rb b/lib/proposals_discussion_plugin/discussion.rb index daeb514..9c4421f 100644 --- a/lib/proposals_discussion_plugin/discussion.rb +++ b/lib/proposals_discussion_plugin/discussion.rb @@ -1,17 +1,20 @@ class ProposalsDiscussionPlugin::Discussion < Folder + alias :topics :children + + has_many :proposals, :class_name => 'ProposalsDiscussionPlugin::Proposal', :through => :children, :source => :children + def self.short_description _("Discussion") end def self.description - _('Container for proposals.') + _('Container for topics.') end def to_html(options = {}) - discussion = self proc do - render :file => 'content_viewer/discussion', :locals => {:discussion => discussion} + render :file => 'content_viewer/discussion' end end diff --git a/lib/proposals_discussion_plugin/proposal.rb b/lib/proposals_discussion_plugin/proposal.rb index 3863246..6b3028f 100644 --- a/lib/proposals_discussion_plugin/proposal.rb +++ b/lib/proposals_discussion_plugin/proposal.rb @@ -1,5 +1,7 @@ class ProposalsDiscussionPlugin::Proposal < TinyMceArticle + alias :topic :parent + def self.short_description _("Proposal") end @@ -10,4 +12,11 @@ class ProposalsDiscussionPlugin::Proposal < TinyMceArticle validates_presence_of :abstract + + def to_html(options = {}) + proc do + render :file => 'content_viewer/proposal' + end + end + end diff --git a/lib/proposals_discussion_plugin/topic.rb b/lib/proposals_discussion_plugin/topic.rb new file mode 100644 index 0000000..297e343 --- /dev/null +++ b/lib/proposals_discussion_plugin/topic.rb @@ -0,0 +1,27 @@ +class ProposalsDiscussionPlugin::Topic < Folder + + alias :discussion :parent + alias :proposals :children + + has_many :proposals_comments, :class_name => 'Comment', :through => :children, :source => :comments + has_many :proposals_authors, :class_name => 'Person', :through => :children, :source => :created_by + + def self.short_description + _("Discussion topic") + end + + def self.description + _('Container for proposals.') + end + + def most_active_participants + proposals_authors.group('profiles.id').order('count(articles.id) DESC').includes(:environment, :preferred_domain, :image) + end + + def to_html(options = {}) + proc do + render :file => 'content_viewer/topic' + end + end + +end diff --git a/public/style.css b/public/style.css index 1d2d44f..3a22bc3 100644 --- a/public/style.css +++ b/public/style.css @@ -1,19 +1,39 @@ .proposal { background: rgb(236, 236, 236); - width: 31%; + width: 100%; min-width: 272px; - display: inline-block; + display: table; vertical-align: top; - margin: 5px 13px 5px 0; + margin: 12px 13px 12px 0; box-shadow: 5px 5px 5px -2px #ddd; + padding: 5px; } -.proposal:hover { +.article-body-proposals-discussion-plugin_discussion .actions, +.article-body-proposals-discussion-plugin_topic .actions { + margin: 10px 0 25px 0; +} + +.proposal .content, .proposal .score, .proposal .topic { + display: table-cell; + border-right: 1px solid; + border-color: rgb(201, 201, 201); +} +.proposal .topic { + border-right: 0; + text-align: center; + width: 30%; +} +.proposal .score { + width: 8%; + text-align: center; +} + +.proposal .content:hover, .proposal .topic:hover { background: rgb(223, 223, 223); } .proposal .title { - background: rgba(0, 0, 0, 0.1); font-weight: bold; font-size: 15px; } @@ -25,16 +45,12 @@ display: inline-block; } -#article .proposal .title { - padding: 0px 5px; -} - #article .proposal .title a { padding: 8px 0px; } .proposal .content { - padding: 5px; + width: 60%; color: rgb(83, 83, 83); } @@ -42,31 +58,6 @@ padding-top: 8px; } -.proposal .info { - float: left; -} - -.proposal .info .comments { - background: url('/plugins/proposals_discussion/images/comments.gif') no-repeat left/15px; - padding-left: 18px; - display: inline; - font-size: 10px; - color: rgb(82, 82, 82); - opacity: 0.6; -} - -.proposal .actions { - float: right; -} - -.proposal .actions .vote-actions { - position: static; -} - -.proposal .actions .vote-actions .vote-action a { - opacity: 0.6; -} - form .proposals-discussion-plugin textarea { width: 98%; } diff --git a/views/content_viewer/_proposal_card.html.erb b/views/content_viewer/_proposal_card.html.erb index 9f05d64..8c39f8a 100644 --- a/views/content_viewer/_proposal_card.html.erb +++ b/views/content_viewer/_proposal_card.html.erb @@ -1,16 +1,16 @@