diff --git a/document_root/javascript/courses/edit.js b/document_root/javascript/courses/edit.js index 4aa883d73e8c53db35ea57b2b450cbd1875cd8dd..2d939209614718260df5b2c3885fcfe93d47a93a 100644 --- a/document_root/javascript/courses/edit.js +++ b/document_root/javascript/courses/edit.js @@ -45,11 +45,47 @@ $(document).ready(function() { $('#dialog').dialog({ autoOpen: false, - modal: true + modal: true, + beforeclose: dequeuePopup }); }); +function queuePopup(htmlContent, buttons) +{ + var dialog = $('#dialog'); + var queue = dialog.data('queue'); + + if (!dialog.data('queue')) { + queue = []; + } + + queue.push({htmlContent: htmlContent, buttons: buttons}); + dialog.data('queue', queue); + + if (!dialog.dialog('isOpen')) { + dequeuePopup(); + } +} + +function dequeuePopup() +{ + var dialog = $('#dialog'); + var queue = dialog.data('queue'); + + if (queue.length == 0) { + return true; + } + var args = queue.shift(); + dialog.data('queue', queue); + + dialog.html(args.htmlContent); + dialog.dialog('option', 'buttons', args.buttons); + dialog.dialog('open'); + + return false; +} + function handleAddRecord() { var currentTR = this.parentNode.parentNode; @@ -107,17 +143,18 @@ function handleAddRecord() newNode.className = 'grad_tie_in_row'; if ($('#courseNumber').val() < 400) { - $('#dialog').html('"800" grad courses cannot be tied to 100, 200, or 300 undergraduate courses'); - $('#dialog').dialog('option', 'buttons', { - 'Reset': function() { - $(newNode.childNodes[15].childNodes[1]).click(); - $(this).dialog('close'); - }, - 'Ignore': function() { - $(this).dialog('close'); - } - }); - $('#dialog').dialog('open'); + queuePopup( + '"800" grad courses cannot be tied to 100, 200, or 300 undergraduate courses', + { + 'Reset': function() { + $(newNode.childNodes[15].childNodes[1]).click(); + $(this).dialog('close'); + }, + 'Ignore': function() { + $(this).dialog('close'); + } + } + ); } } @@ -249,17 +286,18 @@ function handleChangeCourseNumber() if (message) { var courseNumberNode = this; - $('#dialog').html(message); - $('#dialog').dialog('option', 'buttons', { - 'Reset': function() { - courseNumberNode.value = courseNumberNode.defaultValue; - $(this).dialog('close'); - }, - 'Ignore': function() { - $(this).dialog('close'); + queuePopup( + message, + { + 'Reset': function() { + courseNumberNode.value = courseNumberNode.defaultValue; + $(this).dialog('close'); + }, + 'Ignore': function() { + $(this).dialog('close'); + } } - }); - $('#dialog').dialog('open'); + ); } } @@ -298,17 +336,18 @@ function handleChangeCourseLetter() if (message) { var courseLetterNode = this; - $('#dialog').html(message); - $('#dialog').dialog('option', 'buttons', { - 'Reset': function() { - courseLetterNode.value = courseLetterNode.defaultValue; - $(this).dialog('close'); - }, - 'Ignore': function() { - $(this).dialog('close'); - } - }); - $('#dialog').dialog('open'); + queuePopup( + message, + { + 'Reset': function() { + courseLetterNode.value = courseLetterNode.defaultValue; + $(this).dialog('close'); + }, + 'Ignore': function() { + $(this).dialog('close'); + } + } + ); } } @@ -340,17 +379,18 @@ function handleChangeActivity() if (message) { var activitySelectNode = this; - $('#dialog').html(message); - $('#dialog').dialog('option', 'buttons', { - 'Reset': function() { - activitySelectNode.selectedIndex = 0; - $(this).dialog('close'); - }, - 'Ignore': function() { - $(this).dialog('close'); - } - }); - $('#dialog').dialog('open'); + queuePopup( + message, + { + 'Reset': function() { + activitySelectNode.selectedIndex = 0; + $(this).dialog('close'); + }, + 'Ignore': function() { + $(this).dialog('close'); + } + } + ); } } @@ -407,17 +447,18 @@ function handleChangeCredits() if (message) { var creditNode = this; - $('#dialog').html(message); - $('#dialog').dialog('option', 'buttons', { - 'Reset': function() { - creditNode.value = creditNode.defaultValue; - $(this).dialog('close'); - }, - 'Ignore': function() { - $(this).dialog('close'); - } - }); - $('#dialog').dialog('open'); + queuePopup( + message, + { + 'Reset': function() { + creditNode.value = creditNode.defaultValue; + $(this).dialog('close'); + }, + 'Ignore': function() { + $(this).dialog('close'); + } + } + ); } } @@ -439,17 +480,18 @@ function handleChangeDfRemoval() if (message) { var dfRemovalNode = this; - $('#dialog').html(message); - $('#dialog').dialog('option', 'buttons', { - 'Reset': function() { - dfRemovalNode.checked = false; - $(this).dialog('close'); - }, - 'Ignore': function() { - $(this).dialog('close'); - } - }); - $('#dialog').dialog('open'); + queuePopup( + message, + { + 'Reset': function() { + dfRemovalNode.checked = false; + $(this).dialog('close'); + }, + 'Ignore': function() { + $(this).dialog('close'); + } + } + ); } } @@ -552,19 +594,20 @@ var courseCodeAvailableAjaxResponder = AjaxClient.extend( var courseNumberNode = this.courseNumberNode; var courseLetterNode = this.courseLetterNode; - $('#dialog').html(message); - $('#dialog').dialog('option', 'buttons', { - 'Reset': function() { - subjectNode.value = subjectNode.defaultValue; - courseNumberNode.value = courseNumberNode.defaultValue; - courseLetterNode.value = courseLetterNode.defaultValue; - $(this).dialog('close'); - }, - 'Ignore': function() { - $(this).dialog('close'); - } - }); - $('#dialog').dialog('open'); + queuePopup( + message, + { + 'Reset': function() { + subjectNode.value = subjectNode.defaultValue; + courseNumberNode.value = courseNumberNode.defaultValue; + courseLetterNode.value = courseLetterNode.defaultValue; + $(this).dialog('close'); + }, + 'Ignore': function() { + $(this).dialog('close'); + } + } + ); }, getUrl: function() {