publish multiple quizzes at the same time
When we import quizzes from another system we leave them all unpublished so the teacher can review the import results before publishing. This adds a "Publish Multiple Quizzes" button that will, well, publish multiple quizzes -- at the same time. fixes #3636 Change-Id: I9b762da0e938a0b2e1986e3bdb9a216dd5bc7142 Reviewed-on: https://gerrit.instructure.com/2175 Tested-by: Hudson <hudson@instructure.com> Reviewed-by: Bracken Mosbacker <bracken@instructure.com>
This commit is contained in:
parent
c917bc8c1b
commit
00124e9566
|
@ -176,6 +176,20 @@ class QuizzesController < ApplicationController
|
|||
end
|
||||
protected :take_quiz
|
||||
|
||||
def publish
|
||||
if authorized_action(@context, @current_user, :manage_assignments)
|
||||
@quizzes = @context.quizzes.active.find_all_by_id(params[:quizzes]).compact.select{|q| !q.available? }
|
||||
@quizzes.each do |quiz|
|
||||
quiz.generate_quiz_data
|
||||
quiz.published_at = Time.now
|
||||
quiz.workflow_state = 'available'
|
||||
quiz.save
|
||||
end
|
||||
flash[:notice] = "#{@quizzes.length} quizzes successfully published!"
|
||||
redirect_to named_context_url(@context, :context_quizzes_url)
|
||||
end
|
||||
end
|
||||
|
||||
def reorder
|
||||
if authorized_action(@quiz, @current_user, :update)
|
||||
items = []
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
<% end %>
|
||||
</div>
|
||||
<a href="<%= context_url(@context, :context_quiz_url, q) %>" class="quiz_title"><%= q.quiz_title || q.readable_type %></a>
|
||||
<span class="quiz_id" style="display: none;"><%= (q && q.id) || nbsp %></span>
|
||||
<% if q && q.assignment_id %>
|
||||
<span style="font-size: 0.8em; font-weight: normal;">(<%= pluralize(q.assignment.points_possible, "pt") if q.assignment.points_possible %>)</span>
|
||||
<% end %>
|
||||
|
|
|
@ -9,6 +9,9 @@
|
|||
<% if can_do(@context, @current_user, :manage_assignments) && feature_enabled?(:question_banks) %>
|
||||
<a href="<%= context_url(@context, :context_question_banks_url) %>" class="button button-sidebar-wide"><%= image_tag "edit.png" %> Manage Question Banks</a>
|
||||
<% end %>
|
||||
<% if can_do(@context, @current_user, :manage_assignments) && @unpublished_quizzes.length > 1 %>
|
||||
<a href="#" class="button button-sidebar-wide publish_multiple_quizzes_link">Publish Multiple Quizzes</a>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
@ -40,9 +43,25 @@ ul.quiz_list li.quiz div.description {
|
|||
<% end %>
|
||||
<% if can_do(@context, @current_user, :manage_assignments) && @unpublished_quizzes && !@unpublished_quizzes.empty? %>
|
||||
<h2>Unpublished Quizzes</h2>
|
||||
<ul class="quiz_list">
|
||||
<ul class="quiz_list" id="unpublished_quizzes">
|
||||
<%= render :partial => "quiz_summary", :collection => @unpublished_quizzes, :locals => {:unpublished => true} %>
|
||||
</ul>
|
||||
<div id="publish_multiple_quizzes_dialog" style="display: none;">
|
||||
<% form_tag context_url(@context, :context_quizzes_publish_url), :id => "publish_quizzes_form" do %>
|
||||
<h3>Publish Multiple Quizzes</h3>
|
||||
Select the quizzes you would like to publish at this time:
|
||||
<ul class="quiz_list unstyled_list">
|
||||
<li class="quiz_item blank" style="display: none;">
|
||||
<input type="checkbox" value="1" name="quizzes[]" class="id"/>
|
||||
<label class="title"> </label>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="button-container">
|
||||
<button type="submit" class="button submit_button">Publish Quizzes</button>
|
||||
<button type="button" class="button button-secondary cancel_button">Cancel</button>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% if @assignment_quizzes.empty? && @open_quizzes.empty? %>
|
||||
<h2>Course Quizzes</h2>
|
||||
|
|
|
@ -165,6 +165,7 @@ ActionController::Routing::Routes.draw do |map|
|
|||
course.resources :assessment_questions do |question|
|
||||
question.move_question 'move', :controller => 'assessment_questions', :action => 'move'
|
||||
end
|
||||
course.quizzes_publish 'quizzes/publish', :controller => 'quizzes', :action => 'publish'
|
||||
course.resources :quizzes do |quiz|
|
||||
quiz.reorder "reorder", :controller => "quizzes", :action => "reorder"
|
||||
quiz.history "history", :controller => "quizzes", :action => "history"
|
||||
|
|
|
@ -27,6 +27,30 @@ $(document).ready(function() {
|
|||
}
|
||||
});
|
||||
});
|
||||
$(".publish_multiple_quizzes_link").click(function(event) {
|
||||
event.preventDefault();
|
||||
var $dialog = $("#publish_multiple_quizzes_dialog");
|
||||
var $template = $dialog.find(".quiz_item.blank:first").clone(true);
|
||||
var $list = $dialog.find(".quiz_list").find(".quiz_item:not(.blank)").remove().end();
|
||||
$("#unpublished_quizzes .quiz").each(function() {
|
||||
var $quiz_item = $template.clone(true);
|
||||
var data = $(this).getTemplateData({textValues: ['quiz_id', 'quiz_title']});
|
||||
$quiz_item.find(".id").val(data.quiz_id).attr('id', 'quiz_checkbox_' + data.quiz_id).end()
|
||||
.find(".title").text(data.quiz_title || 'Unnamed Quiz').attr('for', 'quiz_checkbox_' + data.quiz_id);
|
||||
$list.append($quiz_item.show());
|
||||
});
|
||||
$dialog.find("button").attr('disabled', false);
|
||||
$dialog.dialog('close').dialog({
|
||||
autoOpen: false,
|
||||
width: 400
|
||||
}).dialog('open');
|
||||
});
|
||||
$("#publish_quizzes_form").submit(function() {
|
||||
$(this).find("button").attr('disabled', true).filter('.submit_button').text('Publishing Quizzes...');
|
||||
});
|
||||
$("#publish_multiple_quizzes_dialog .cancel_button").click(function() {
|
||||
$("#publish_multiple_quizzes_dialog").dialog('close');
|
||||
});
|
||||
if($("#quiz_locks_url").length > 0) {
|
||||
var data = {};
|
||||
var assets = [];
|
||||
|
|
Loading…
Reference in New Issue