diff --git a/app/coffeescripts/views/wiki/WikiPageIndexItemView.coffee b/app/coffeescripts/views/wiki/WikiPageIndexItemView.coffee index 83f23ec3e17..8cd2d5d4ee6 100644 --- a/app/coffeescripts/views/wiki/WikiPageIndexItemView.coffee +++ b/app/coffeescripts/views/wiki/WikiPageIndexItemView.coffee @@ -62,7 +62,9 @@ define [ # TODO: Consider allowing duplicating pages in other contexts DUPLICATE: !!@WIKI_RIGHTS.manage && @contextName == 'courses' - json.cannot_edit_by_master_course = json.is_master_course_child_content && json.restricted_by_master_course + if json.is_master_course_child_content && json.restricted_by_master_course + json.cannot_delete_by_master_course = true + json.cannot_edit_by_master_course = json.master_course_restrictions.content json.wiki_page_menu_tools = ENV.wiki_page_menu_tools || [] json.wiki_page_menu_tools.forEach (tool) => diff --git a/app/coffeescripts/views/wiki/WikiPageView.coffee b/app/coffeescripts/views/wiki/WikiPageView.coffee index 3e401225b08..b117fd01e8b 100644 --- a/app/coffeescripts/views/wiki/WikiPageView.coffee +++ b/app/coffeescripts/views/wiki/WikiPageView.coffee @@ -166,7 +166,9 @@ define [ else $.datetimeString(json.lock_info.unlock_at) - json.cannot_edit_by_master_course = json.is_master_course_child_content && json.restricted_by_master_course + if json.is_master_course_child_content && json.restricted_by_master_course + json.cannot_delete_by_master_course = true + json.cannot_edit_by_master_course = json.master_course_restrictions.content json.wiki_page_menu_tools = ENV.wiki_page_menu_tools _.each json.wiki_page_menu_tools, (tool) => diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 693ebc7371f..393e9b77c72 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -247,8 +247,8 @@ class ApplicationController < ActionController::Base end helper_method :master_courses? - def setup_master_course_restrictions(objects, course) - return unless master_courses? && course.is_a?(Course) && course.grants_right?(@current_user, session, :read_as_admin) + def setup_master_course_restrictions(objects, course, user_can_edit: false) + return unless master_courses? && course.is_a?(Course) && (user_can_edit || course.grants_right?(@current_user, session, :read_as_admin)) if MasterCourses::MasterTemplate.is_master_course?(course) MasterCourses::Restrictor.preload_default_template_restrictions(objects, course) @@ -2108,8 +2108,8 @@ class ApplicationController < ActionController::Base end if @page - if @context.wiki.grants_right?(@current_user, :manage) - mc_status = setup_master_course_restrictions(@page, @context) + if @page.grants_any_right?(@current_user, session, :update, :update_content) + mc_status = setup_master_course_restrictions(@page, @context, user_can_edit: true) end hash[:WIKI_PAGE] = wiki_page_json(@page, @current_user, session, true, :deep_check_if_needed => true, :master_course_status => mc_status) diff --git a/app/controllers/wiki_pages_controller.rb b/app/controllers/wiki_pages_controller.rb index b49b5881fae..ebd15656221 100644 --- a/app/controllers/wiki_pages_controller.rb +++ b/app/controllers/wiki_pages_controller.rb @@ -114,7 +114,7 @@ class WikiPagesController < ApplicationController end def edit - if @page.grants_any_right?(@current_user, session, :update, :update_content) + if @page.grants_any_right?(@current_user, session, :update, :update_content) && !@page.editing_restricted?(:content) set_master_course_js_env_data(@page, @context) js_env ConditionalRelease::Service.env_for @context diff --git a/app/views/jst/wiki/WikiPage.handlebars b/app/views/jst/wiki/WikiPage.handlebars index 1a0eab1af81..fb7ada4dd1f 100644 --- a/app/views/jst/wiki/WikiPage.handlebars +++ b/app/views/jst/wiki/WikiPage.handlebars @@ -32,9 +32,11 @@ {{/if}} {{/if}} {{/unless}} - {{#if CAN.UPDATE_CONTENT}} - {{#t 'buttons.edit'}}Edit{{/t}} - {{/if}} + {{#unless cannot_edit_by_master_course}} + {{#if CAN.UPDATE_CONTENT}} + {{#t 'buttons.edit'}}Edit{{/t}} + {{/if}} + {{/unless}} {{#if CAN.ACCESS_GEAR_MENU}}