fix calendar event xhr being canceled by window.location

also did a code cleanup while I was at it
fixes #3697

Change-Id: I5bd161bda243a33aa1666fce48d6f58dfca061e4
Reviewed-on: https://gerrit.instructure.com/2150
Tested-by: Hudson <hudson@instructure.com>
Reviewed-by: Zach Wily <zach@instructure.com>
This commit is contained in:
Ryan Shaw 2011-02-03 14:24:06 -07:00 committed by Ryan Shaw
parent 584300e2ec
commit f20e8cb2d9
1 changed files with 129 additions and 118 deletions

View File

@ -17,152 +17,163 @@
*/
var wikiSidebar;
(function() {
var hideEditCalendarEventForm = function(redirect) {
$("#full_calendar_event").show();
$("#edit_calendar_event_form").hide();
$("#edit_calendar_event_form textarea").editorBox('destroy');
if(wikiSidebar) {
jQuery(function($) {
var $full_calendar_event = $("#full_calendar_event"),
$edit_calendar_event_form = $("#edit_calendar_event_form"),
$full_calendar_event_holder = $("#full_calendar_event_holder");
function hideEditCalendarEventForm(redirect) {
$full_calendar_event.show();
$edit_calendar_event_form.hide()
.find("textarea").editorBox('destroy');
if (wikiSidebar) {
wikiSidebar.hide();
$("#sidebar_content").show();
}
if($("#edit_calendar_event_form").hasClass('new_event')) {
location.href = $(".calendar_url").attr('href');
if (redirect && $edit_calendar_event_form.hasClass('new_event')) {
window.location.href = $(".calendar_url").attr('href');
}
};
var editCalendarEventForm = function() {
$("#full_calendar_event").hide();
var data = $("#full_calendar_event").getTemplateData({
function editCalendarEventForm() {
$full_calendar_event.hide();
var data = $full_calendar_event.getTemplateData({
textValues: ['start_at_date_string', 'start_at_time_string', 'end_at_time_string', 'title', 'all_day', 'all_day_date']
});
if(data.description == "No Content") {
if (data.description == "No Content") {
data.description = "";
}
data.start_date = data.start_at_date_string;
data.start_date = $("#full_calendar_event .start_at_date_string").attr('title');
data.start_time = data.start_at_time_string;
data.end_time = data.end_at_time_string;
if(data.all_day == 'true') {
if(data.all_day_date) {
if (data.all_day == 'true') {
if (data.all_day_date) {
data.start_date = data.all_day_date;
}
data.start_time = '';
data.end_time = '';
}
$("#edit_calendar_event_form").fillFormData(data, {object_name: 'calendar_event'});
$("#edit_calendar_event_form").show();
$("#edit_calendar_event_form textarea").editorBox();
if(wikiSidebar) {
wikiSidebar.attachToEditor($("#edit_calendar_event_form").find("textarea:first"));
$edit_calendar_event_form
.fillFormData(data, {object_name: 'calendar_event'})
.show()
.find("textarea").editorBox();
if (wikiSidebar) {
wikiSidebar.attachToEditor($edit_calendar_event_form.find("textarea:first"));
wikiSidebar.show();
$("#sidebar_content").hide();
}
};
$(document).ready(function() {
if(wikiSidebar) {
wikiSidebar.init();
}
$(".date_field").date_field();
$(".time_field").time_field();
$(".delete_event_link").click(function(event) {
event.preventDefault();
$("#full_calendar_event_holder").confirmDelete({
message: "Are you sure you want to delete this event?",
url: $(this).attr('href'),
success: function() {
$(this).fadeOut('slow');
location.href = $(".calendar_url").attr('href');
}
if (wikiSidebar) {
wikiSidebar.init();
}
$(".date_field").date_field();
$(".time_field").time_field();
$(".delete_event_link").click(function(event) {
event.preventDefault();
$("#full_calendar_event_holder").confirmDelete({
message: "Are you sure you want to delete this event?",
url: $(this).attr('href'),
success: function() {
$(this).fadeOut('slow');
window.location.href = $(".calendar_url").attr('href');
}
});
});
$(".switch_full_calendar_event_view").click(function() {
$("#calendar_event_description").editorBox('toggle');
return false;
});
$(".edit_calendar_event_link").click(function() {
editCalendarEventForm();
return false;
});
$edit_calendar_event_form.find(".cancel_button").click(function() {
hideEditCalendarEventForm(true);
return false;
});
$edit_calendar_event_form.formSubmit({
object_name: 'calendar_event',
processData: function(data) {
data['calendar_event[start_at]'] = $.datetime.process(data.start_date + " " + data.start_time);
data['calendar_event[end_at]'] = $.datetime.process(data.start_date + " " + data.end_time);
data['calendar_event[description]'] = $(this).find("textarea").editorBox('get_code');
$full_calendar_event_holder.fillTemplateData({
data: data,
htmlValues: ['description']
});
});
$(".switch_full_calendar_event_view").click(function(event) {
event.preventDefault();
$("#calendar_event_description").editorBox('toggle');
});
$(".edit_calendar_event_link").click(function(event) {
event.preventDefault();
editCalendarEventForm();
});
$("#edit_calendar_event_form .cancel_button").click(function(event) {
hideEditCalendarEventForm(true);
});
$("#edit_calendar_event_form").formSubmit({
object_name: 'calendar_event',
processData: function(data) {
data['calendar_event[start_at]'] = $.datetime.process(data.start_date + " " + data.start_time);
data['calendar_event[end_at]'] = $.datetime.process(data.start_date + " " + data.end_time);
data['calendar_event[description]'] = $(this).find("textarea").editorBox('get_code');
$("#full_calendar_event_holder").fillTemplateData({
data: data,
htmlValues: ['description']
});
return data;
},
beforeSubmit: function(data) {
hideEditCalendarEventForm();
$("#full_calendar_event_holder").loadingImage();
},
success: function(data) {
var calendar_event = data.calendar_event;
var start_at = $.parseFromISO(calendar_event.start_at);
var end_at = $.parseFromISO(calendar_event.end_at);
calendar_event.start_at_date_string = start_at.date_formatted;
calendar_event.start_at_time_string = start_at.time_formatted;
calendar_event.end_at_time_string = end_at.time_formatted;
if(Date.parse(calendar_event.all_day_date)) {
calendar_event.all_day_date = Date.parse(calendar_event.all_day_date).toString("MMM d, yyyy");
} else {
calendar_event.all_day_date = '';
}
$("#full_calendar_event_holder").find(".from_string,.to_string,.end_at_time_string").showIf(calendar_event.end_at && calendar_event.end_at != calendar_event.start_at);
$("#full_calendar_event_holder").find(".at_string").showIf(!calendar_event.end_at || calendar_event.end_at == calendar_event.start_at);
$("#full_calendar_event_holder").find(".not_all_day").showIf(!calendar_event.all_day);
$("#full_calendar_event_holder").loadingImage('remove');
$("#full_calendar_event_holder").fillTemplateData({
return data;
},
beforeSubmit: function(data) {
hideEditCalendarEventForm();
$full_calendar_event_holder.loadingImage();
},
success: function(data) {
var calendar_event = data.calendar_event,
start_at = $.parseFromISO(calendar_event.start_at),
end_at = $.parseFromISO(calendar_event.end_at),
parsedDate = Date.parse(calendar_event.all_day_date);
calendar_event.start_at_date_string = start_at.date_formatted;
calendar_event.start_at_time_string = start_at.time_formatted;
calendar_event.end_at_time_string = end_at.time_formatted;
calendar_event.all_day_date = parsedDate || '';
$full_calendar_event_holder.find(".from_string,.to_string,.end_at_time_string").showIf(calendar_event.end_at && calendar_event.end_at != calendar_event.start_at);
$full_calendar_event_holder.find(".at_string").showIf(!calendar_event.end_at || calendar_event.end_at == calendar_event.start_at);
$full_calendar_event_holder.find(".not_all_day").showIf(!calendar_event.all_day);
$full_calendar_event_holder
.loadingImage('remove')
.fillTemplateData({
data: calendar_event,
htmlValues: ['description']
});
$("#full_calendar_event_holder .start_at_date_string").attr('title', calendar_event.start_at_date_string);
$(this).find("textarea").editorBox('set_code', calendar_event.description);
var month = null, year = null;
if(calendar_event.start_at) {
year = calendar_event.start_at.substring(0, 4);
month = calendar_event.start_at.substring(5, 7);
}
var calendar_url = $(".base_calendar_url").attr('href');
var split = calendar_url.split(/#/);
var anchor = split[1], base_url = split[0];
var json = {}
try{
json = JSON.parse(anchor);
} catch(e) {
$full_calendar_event_holder.find(".start_at_date_string").attr('title', calendar_event.start_at_date_string);
$(this).find("textarea").editorBox('set_code', calendar_event.description);
var month = null, year = null;
if (calendar_event.start_at) {
year = calendar_event.start_at.substring(0, 4);
month = calendar_event.start_at.substring(5, 7);
}
var calendar_url = $(".base_calendar_url").attr('href'),
split = calendar_url.split(/#/),
anchor = split[1],
base_url = split[0],
json = {};
}
if(month && year) {
json.month = month;
json.year = year;
}
$(".calendar_url").attr('href', base_url + "#" + encodeURIComponent(JSON.stringify(json)));
if($("#full_calendar_event_holder").hasClass('editing')) {
location.href = $(".calendar_url").attr('href');
}
},
error: function(data) {
$("#full_calendar_event_holder").loadingImage('remove');
$(".edit_calendar_event_link:first").click();
$("#edit_calendar_event_form").formErrors(data);
try{
json = JSON.parse(anchor);
} catch(e) {
json = {};
}
});
setTimeout(function() {
if($("#full_calendar_event_holder").hasClass('editing')) {
$(".edit_calendar_event_link:first").click();
if (month && year) {
json.month = month;
json.year = year;
}
}, 500);
$(document).fragmentChange(function(event, hash) {
if(hash == "#edit") {
$(".edit_calendar_event_link:first").click();
$(".calendar_url").attr('href', base_url + "#" + $.encodeToHex(JSON.stringify(json)));
if ($full_calendar_event_holder.hasClass('editing')) {
window.location.href = $(".calendar_url").attr('href');
}
});
$.scrollSidebar();
},
error: function(data) {
$full_calendar_event_holder.loadingImage('remove');
$(".edit_calendar_event_link:first").click();
$edit_calendar_event_form.formErrors(data);
}
});
})();
setTimeout(function() {
if ($full_calendar_event_holder.hasClass('editing')) {
$(".edit_calendar_event_link:first").click();
}
}, 500);
$(document).fragmentChange(function(event, hash) {
if (hash == "#edit") {
$(".edit_calendar_event_link:first").click();
}
});
$.scrollSidebar();
});