add build button to new quizzes kebab on modules

closes QUIZ-8352
flag = new_quizzes_skip_to_build_module_button

Test Plan:
- Turn on the feature flag (site admin)
- Navigate to the modules page for a course
  which has new quizzes.
- Click on the kebab menu for the new quiz.
- Build option should be present.
- Clicking build should open up the NQ build
  screen.

Change-Id: I881bc96e2a67f3cc92d565a237be0bf6fea77b74
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/272010
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jorge Arteaga <jorge.arteaga@instructure.com>
QA-Review: Mark McDermott <mmcdermott@instructure.com>
Product-Review: Susan Sorensen <susan.sorensen@instructure.com>
This commit is contained in:
James Logan 2021-08-23 12:42:12 -05:00
parent 4cb2279993
commit bd68b60a66
6 changed files with 46 additions and 1 deletions

View File

@ -1750,7 +1750,10 @@ class ApplicationController < ActionController::Base
def content_tag_redirect(context, tag, error_redirect_symbol, tag_type=nil)
url_params = tag.tag_type == 'context_module' ? { :module_item_id => tag.id } : {}
if tag.content_type == 'Assignment'
use_edit_url = Account.site_admin.feature_enabled?(:new_quizzes_modules_support) && @context.grants_right?(@current_user, :manage) && tag.quiz_lti
use_edit_url = params[:build].nil? &&
Account.site_admin.feature_enabled?(:new_quizzes_modules_support) &&
@context.grants_right?(@current_user, :manage) &&
tag.quiz_lti
redirect_symbol = use_edit_url ? :edit_context_assignment_url : :context_assignment_url
redirect_to named_context_url(context, redirect_symbol, tag.content_id, url_params)
elsif tag.content_type == 'WikiPage'

View File

@ -153,4 +153,8 @@ module ContextModulesHelper
end
TRANSLATED_COMMENT_TYPE[item.content_type.to_sym] || I18n.t('Unknown Content Type')
end
def module_item_new_quizzes_build_button_enabled?
Account.site_admin.feature_enabled?(:new_quizzes_skip_to_build_module_button)
end
end

View File

@ -29,6 +29,7 @@
'indent' => "<i class='icon-arrow-right'></i>".html_safe,
'outdent' => "<i class='icon-arrow-left'></i>".html_safe,
'edit' => "<i class='icon-edit'></i>".html_safe,
'quiz' => "<i class='icon-quiz'></i>".html_safe,
'delete' => "<i class='icon-end'></i>".html_safe,
'duplicate' => "<i class='icon-copy-course'></i>".html_safe,
'copy_to' => "<i class='icon-duplicate'></i>".html_safe,
@ -254,6 +255,9 @@
<li role="presentation"><a href="<%= context_url(@context, :context_url) %>/modules/items/<%= module_item ? module_item.id : "{{ id }}" %>" class="outdent_item_link" title="<%= t('Decrease indent') %>"><%= @module_item_image_tags['outdent'] %> <%= t('Decrease indent') %></a></li>
<li role="presentation"><a href="<%= context_url(@context, :context_url) %>/modules/items/<%= module_item ? module_item.id : "{{ id }}" %>" class="indent_item_link" title="<%= t('Increase indent') %>"><%= @module_item_image_tags['indent'] %> <%= t('Increase indent') %></a></li>
<li role="presentation"><a href="<%= context_url(@context, :context_url) %>/modules/items/<%= module_item ? module_item.id : "{{ id }}" %>" class="edit_item_link edit_link" title="<%= t('Edit item details') %>"><%= @module_item_image_tags['edit'] %> <%= t('Edit') %></a></li>
<% if module_item && module_item.quiz_lti && module_item_new_quizzes_build_button_enabled? %>
<li role="presentation"><a href="<%= context_url(@context, :context_url) %>/modules/items/<%= module_item ? module_item.id : "{{ id }}" %>?build=true" title="<%= t('Build quiz') %>"><%= @module_item_image_tags['quiz'] %> <%= t('Build') %></a></li>
<%end%>
<li class="dupe-option" role="presentation"><a href="/api/v1<%= context_url(@context, :context_url) %>/modules/items/<%= module_item ? module_item.id : "{{ id }}" %>/duplicate" class="duplicate_item_link" title="<%= t('Duplicate Item') %>"><%= @module_item_image_tags['duplicate'] %> <%= t('Duplicate') %></a></li>
<li role="presentation">
<a href="#<%= module_item ? module_item.id : "{{ id }}" %>"

View File

@ -46,3 +46,8 @@ new_quizzes_account_course_level_item_banks:
banks owned by specific courses and the root account in new quizzes.
applies_to: SiteAdmin
state: hidden
new_quizzes_skip_to_build_module_button:
display_name: New Quizzes Build Button In Module Items
description: Provides a button which navigates straight to the Build screen in the kebab menu for New Quizzes items on the Modules page.
applies_to: SiteAdmin
state: hidden

View File

@ -804,6 +804,19 @@ RSpec.describe ApplicationController do
allow(controller).to receive(:redirect_to)
controller.send(:content_tag_redirect, Account.default, tag, nil)
end
context 'when the build param is passed' do
it 'redirects to build for a quiz_lti assignment' do
tag = create_tag(content_type: 'Assignment')
allow(tag).to receive(:quiz_lti).and_return true
expect(controller).to receive(:named_context_url).with(
Account.default, :context_assignment_url, 44, {module_item_id: 42}
).and_return('nil')
allow(controller).to receive(:redirect_to)
controller.params[:build] = true
controller.send(:content_tag_redirect, Account.default, tag, nil)
end
end
end
it 'redirects for a quiz' do

View File

@ -349,4 +349,20 @@ describe ContextModulesHelper do
expect(cyoe_able?(item)).to eq false
end
end
describe 'module_item_new_quizzes_build_button_enabled?' do
it 'returns true when the feature flag is on' do
allow(Account.site_admin).to receive(:feature_enabled?)
.with(:new_quizzes_skip_to_build_module_button)
.and_return(true)
expect(module_item_new_quizzes_build_button_enabled?).to eq true
end
it 'returns false when the feature flag is off' do
allow(Account.site_admin).to receive(:feature_enabled?)
.with(:new_quizzes_skip_to_build_module_button)
.and_return(false)
expect(module_item_new_quizzes_build_button_enabled?).to eq false
end
end
end