2011-02-01 09:57:29 +08:00
/ * *
* Copyright ( C ) 2011 Instructure , Inc .
*
* This file is part of Canvas .
*
* Canvas is free software : you can redistribute it and / or modify it under
* the terms of the GNU Affero General Public License as published by the Free
* Software Foundation , version 3 of the License .
*
* Canvas is distributed in the hope that it will be useful , but WITHOUT ANY
* WARRANTY ; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE . See the GNU Affero General Public License for more
* details .
*
* You should have received a copy of the GNU Affero General Public License
* along with this program . If not , see < http : //www.gnu.org/licenses/>.
* /
2012-03-06 01:37:09 +08:00
define ( [
2011-11-11 00:31:45 +08:00
'i18n!quizzes.show' ,
'jquery' /* $ */ ,
2013-03-22 04:49:35 +08:00
'compiled/views/MessageStudentsDialog' ,
2012-08-15 03:59:38 +08:00
'quiz_arrows' ,
'quiz_inputs' ,
2013-06-15 01:39:23 +08:00
'compiled/models/Publishable' ,
'compiled/views/PublishButtonView' ,
2011-11-11 00:31:45 +08:00
'jquery.instructure_date_and_time' /* dateString, time_field, datetime_field */ ,
2012-04-07 01:02:00 +08:00
'jqueryui/dialog' ,
2013-03-22 04:49:35 +08:00
'compiled/jquery/fixDialogButtons' ,
'compiled/jquery.rails_flash_notifications' ,
2011-11-11 00:31:45 +08:00
'jquery.instructure_misc_helpers' /* scrollSidebar */ ,
'jquery.instructure_misc_plugins' /* ifExists, confirmDelete */ ,
2013-02-28 07:07:34 +08:00
'jquery.disableWhileLoading' ,
2011-11-11 00:31:45 +08:00
'message_students' /* messageStudents */
2013-06-15 01:39:23 +08:00
] , function ( I18n , $ , MessageStudentsDialog , showAnswerArrows , inputMethods , Publishable , PublishButtonView ) {
2013-06-08 03:25:57 +08:00
$ ( document ) . ready ( function ( ) {
function ensureStudentsLoaded ( callback ) {
if ( $ ( '#quiz_details' ) . length ) {
return callback ( ) ;
} else {
return $ . get ( $ ( "#quiz_details_wrapper" ) . data ( 'url' ) , function ( data ) {
$ ( "#quiz_details_wrapper" ) . html ( data ) ;
callback ( ) ;
} ) ;
} ;
2011-06-23 06:26:54 +08:00
}
2013-06-08 03:25:57 +08:00
showAnswerArrows ( ) ;
inputMethods . disableInputs ( '[type=radio], [type=checkbox]' ) ;
inputMethods . setWidths ( ) ;
$ ( ".delete_quiz_link" ) . click ( function ( event ) {
event . preventDefault ( ) ;
var deleteConfirmMessage = I18n . t ( 'confirms.delete_quiz' , "Are you sure you want to delete this quiz?" ) ;
submittedCount = parseInt ( $ ( '#quiz_details_wrapper' ) . data ( 'submitted-count' ) ) ;
if ( submittedCount > 0 ) {
deleteConfirmMessage += "\n\n" + I18n . t ( 'confirms.delete_quiz_submissions_warning' ,
{ 'one' : "Warning: 1 student has already taken this quiz. If you delete it, any completed submissions will be deleted and no longer appear in the gradebook." ,
'other' : "Warning: %{count} students have already taken this quiz. If you delete it, any completed submissions will be deleted and no longer appear in the gradebook." } ,
{ 'count' : submittedCount } ) ;
2011-02-01 09:57:29 +08:00
}
2013-06-08 03:25:57 +08:00
$ ( "nothing" ) . confirmDelete ( {
url : $ ( this ) . attr ( 'href' ) ,
message : deleteConfirmMessage ,
success : function ( ) {
window . location . href = ENV . QUIZZES _URL ;
}
} ) ;
2011-02-01 09:57:29 +08:00
} ) ;
2013-06-08 03:25:57 +08:00
var hasOpenedQuizDetails = false ;
$ ( ".quiz_details_link" ) . click ( function ( event ) {
event . preventDefault ( ) ;
$ ( "#quiz_details_wrapper" ) . disableWhileLoading (
ensureStudentsLoaded ( function ( ) {
var $quizResultsText = $ ( '#quiz_details_text' ) ;
$ ( "#quiz_details" ) . slideToggle ( ) ;
if ( hasOpenedQuizDetails ) {
if ( ENV . IS _SURVEY ) {
$quizResultsText . text ( I18n . t ( 'links.show_student_survey_results' ,
'Show Student Survey Results' ) ) ;
} else {
$quizResultsText . text ( I18n . t ( 'links.show_student_quiz_results' ,
'Show Student Quiz Results' ) ) ;
}
2013-03-21 05:22:29 +08:00
} else {
2013-06-08 03:25:57 +08:00
if ( ENV . IS _SURVEY ) {
$quizResultsText . text ( I18n . t ( 'links.hide_student_survey_results' ,
'Hide Student Survey Results' ) ) ;
} else {
$quizResultsText . text ( I18n . t ( 'links.hide_student_quiz_results' ,
'Hide Student Quiz Results' ) ) ;
}
2013-03-21 05:22:29 +08:00
}
2013-06-08 03:25:57 +08:00
hasOpenedQuizDetails = ! hasOpenedQuizDetails ;
} )
) ;
} ) ;
$ ( ".message_students_link" ) . click ( function ( event ) {
event . preventDefault ( ) ;
ensureStudentsLoaded ( function ( ) {
var submissionList = ENV . QUIZ _SUBMISSION _LIST ;
var unsubmittedStudents = submissionList . UNSUBMITTED _STUDENTS ;
var submittedStudents = submissionList . SUBMITTED _STUDENTS ;
var haveTakenQuiz = I18n . t ( 'students_who_have_taken_the_quiz' , "Students who have taken the quiz" ) ;
var haveNotTakenQuiz = I18n . t ( 'students_who_have_not_taken_the_quiz' , "Students who have NOT taken the quiz" ) ;
var dialog = new MessageStudentsDialog ( {
context : ENV . QUIZ . title ,
recipientGroups : [
{ name : haveTakenQuiz , recipients : submittedStudents } ,
{ name : haveNotTakenQuiz , recipients : unsubmittedStudents }
]
} ) ;
dialog . open ( ) ;
} ) ;
} ) ;
$ . scrollSidebar ( ) ;
$ ( "#let_students_take_this_quiz_button" ) . ifExists ( function ( $link ) {
var $unlock _for _how _long _dialog = $ ( "#unlock_for_how_long_dialog" ) ;
$link . click ( function ( ) {
$unlock _for _how _long _dialog . dialog ( 'open' ) ;
return false ;
} ) ;
$unlock _for _how _long _dialog . dialog ( {
autoOpen : false ,
modal : true ,
resizable : false ,
width : 400 ,
buttons : {
'Unlock' : function ( ) {
var dateString = $ ( this ) . find ( '.datetime_suggest' ) . text ( ) ;
$ ( '#quiz_unlock_form' )
// append this back to the form since it got moved to be a child of body when we called .dialog('open')
. append ( $ ( this ) . dialog ( 'destroy' ) )
. find ( '#quiz_lock_at' ) . val ( dateString ) . end ( )
. submit ( ) ;
2013-03-21 05:22:29 +08:00
}
}
2013-06-08 03:25:57 +08:00
} ) . find ( '.datetime_field' ) . datetime _field ( ) ;
2013-03-22 04:49:35 +08:00
} ) ;
2013-06-08 03:25:57 +08:00
$ ( '#lock_this_quiz_now_link' ) . ifExists ( function ( $link ) {
$link . click ( function ( e ) {
e . preventDefault ( ) ;
$ ( '#quiz_lock_form' ) . submit ( ) ;
} )
2011-02-01 09:57:29 +08:00
} ) ;
2013-06-08 03:25:57 +08:00
if ( $ ( 'ul.page-action-list' ) . find ( 'li' ) . length > 0 ) {
$ ( 'ul.page-action-list' ) . show ( ) ;
}
$ ( '#publish_quiz_form' ) . formSubmit ( {
beforeSubmit : function ( data ) {
$ ( this ) . find ( 'button' ) . attr ( 'disabled' , true ) . text ( I18n . t ( 'buttons.publishing' , "Publishing..." ) ) ;
} ,
success : function ( data ) {
$ ( this ) . find ( 'button' ) . text ( I18n . t ( 'buttons.already_published' , "Published!" ) ) ;
location . reload ( ) ;
2011-02-01 09:57:29 +08:00
}
2013-06-08 03:25:57 +08:00
} ) ;
2013-06-15 01:39:23 +08:00
var $el = $ ( '#quiz-publish-link' ) ;
var model = new Publishable ( { published : $el . hasClass ( 'published' ) , id : $el . attr ( 'data-id' ) } , { url : $el . attr ( 'data-url' ) , root : 'quiz' } ) ;
var view = new PublishButtonView ( { model : model , el : $el } ) ;
view . render ( ) ;
2013-02-14 03:37:17 +08:00
} ) ;
2011-02-01 09:57:29 +08:00
} ) ;