diff --git a/app/assets/stylesheets/dashboard.scss b/app/assets/stylesheets/dashboard.scss index 62fb6210a..b7f9e5e16 100644 --- a/app/assets/stylesheets/dashboard.scss +++ b/app/assets/stylesheets/dashboard.scss @@ -86,6 +86,17 @@ margin: $line-height 0; } +.dashboard-related-content { + + .related-content { + border-top: 0; + + .margin-bottom { + margin-bottom: 0; + } + } +} + // 02. Actions // ----------- diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb index efe8bf9f0..4ed198efa 100644 --- a/app/controllers/dashboard_controller.rb +++ b/app/controllers/dashboard_controller.rb @@ -1,7 +1,7 @@ class DashboardController < Dashboard::BaseController helper_method :dashboard_action, :active_resources, :course before_action :set_done_and_pending_actions, only: [:recommended_actions, :progress] - before_action :authorize_dashboard, only: [:show, :progress, :community, :recommended_actions, :messages] + before_action :authorize_dashboard, except: :publish def show end @@ -25,6 +25,10 @@ class DashboardController < Dashboard::BaseController def messages end + def related_content + @related_contents = Kaminari.paginate_array(proposal.relationed_contents).page(params[:page]).per(5) + end + private def active_resources diff --git a/app/helpers/proposals_dashboard_helper.rb b/app/helpers/proposals_dashboard_helper.rb index 576473b93..16efad83a 100644 --- a/app/helpers/proposals_dashboard_helper.rb +++ b/app/helpers/proposals_dashboard_helper.rb @@ -11,6 +11,10 @@ module ProposalsDashboardHelper controller_name == "dashboard" && action_name == "messages" end + def related_content_menu_active? + controller_name == "dashboard" && action_name == "related_content" + end + def progress_menu_active? is_proposed_action_request? || (controller_name == "dashboard" && action_name == "progress") end diff --git a/app/views/dashboard/_menu.html.erb b/app/views/dashboard/_menu.html.erb index bd71bb2c5..65798f20f 100644 --- a/app/views/dashboard/_menu.html.erb +++ b/app/views/dashboard/_menu.html.erb @@ -96,4 +96,11 @@ <%= t("dashboard.menu.messages") %> <% end %> + +
  • "> + + <%= link_to related_content_proposal_dashboard_path(proposal) do %> + <%= t("dashboard.menu.related_content") %> + <% end %> +
  • diff --git a/app/views/dashboard/related_content.html.erb b/app/views/dashboard/related_content.html.erb new file mode 100644 index 000000000..e9efcc536 --- /dev/null +++ b/app/views/dashboard/related_content.html.erb @@ -0,0 +1,3 @@ + diff --git a/config/locales/en/general.yml b/config/locales/en/general.yml index 1b9adb735..dd337a680 100644 --- a/config/locales/en/general.yml +++ b/config/locales/en/general.yml @@ -488,6 +488,7 @@ en: poster: Poster recommended_actions: Recommended actions messages: Message to users + related_content: Related content form: request: Request create_request: diff --git a/config/locales/es/general.yml b/config/locales/es/general.yml index f55bb69d8..51fe7d00a 100644 --- a/config/locales/es/general.yml +++ b/config/locales/es/general.yml @@ -488,6 +488,7 @@ es: poster: Póster recommended_actions: Acciones recomendadas messages: Mensajes a usuarios + related_content: Contenido relacionado form: request: Solicitar create_request: diff --git a/config/routes/proposal.rb b/config/routes/proposal.rb index eed13dc2d..8e1bc54e4 100644 --- a/config/routes/proposal.rb +++ b/config/routes/proposal.rb @@ -6,6 +6,7 @@ resources :proposals do get :community get :recommended_actions get :messages + get :related_content end resources :resources, only: [:index], controller: "dashboard/resources" diff --git a/spec/features/dashboard/dashboard_spec.rb b/spec/features/dashboard/dashboard_spec.rb index e6e1d71f4..46952266b 100644 --- a/spec/features/dashboard/dashboard_spec.rb +++ b/spec/features/dashboard/dashboard_spec.rb @@ -389,6 +389,31 @@ describe "Proposal's dashboard" do anchor: "tab-notifications")) end + scenario "Dashboard has a related content section" do + related_debate = create(:debate) + related_proposal = create(:proposal) + + create(:related_content, parent_relationable: proposal, + child_relationable: related_debate, author: build(:user)) + + create(:related_content, parent_relationable: proposal, + child_relationable: related_proposal, author: build(:user)) + + within("#side_menu") do + click_link "Related content" + end + + expect(page).to have_button("Add related content") + + within(".dashboard-related-content") do + expect(page).to have_content("Related content (2)") + expect(page).to have_selector(".related-content-title", text: "Proposal") + expect(page).to have_link related_proposal.title + expect(page).to have_selector(".related-content-title", text: "Debate") + expect(page).to have_link related_debate.title + end + end + scenario "On recommended actions section display from the fourth proposed actions when click see_proposed_actions_link", js: true do create_list(:dashboard_action, 4, :proposed_action, :active)