mirror of
https://github.com/Pathduck/gallery3.git
synced 2026-05-21 03:49:21 -04:00
javascript lib (gallery.reload.js) which defines the functions gallery_reload() and gallery_location(new_location). They just do a window.location.reload() and window.location = new_location. This change breaks the assumption that all themes will handle page reloads the same and allows the theme to customize the page refresh.
141 lines
3.6 KiB
JavaScript
141 lines
3.6 KiB
JavaScript
/**
|
|
* Fire openDialog() and prevent links from opening
|
|
* @see openDialog()
|
|
*/
|
|
function handleDialogEvent(event) {
|
|
var target = event.currentTarget;
|
|
if (!target) {
|
|
target = event.srcElement;
|
|
}
|
|
openDialog(target);
|
|
event.preventDefault();
|
|
}
|
|
|
|
function ajaxify_dialog() {
|
|
$("#gDialog form").ajaxForm({
|
|
dataType: "json",
|
|
success: function(data) {
|
|
if (data.form) {
|
|
$("#gDialog form").replaceWith(data.form);
|
|
ajaxify_dialog();
|
|
on_form_loaded();
|
|
if (typeof data.reset == 'function') {
|
|
eval(data.reset + '()');
|
|
}
|
|
}
|
|
if (data.result == "success") {
|
|
if (data.location) {
|
|
$.gallery_location(data.location);
|
|
} else {
|
|
$.gallery_reload();
|
|
}
|
|
}
|
|
}
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Display modal dialogs, populate dialog with trigger link's href
|
|
* @requires ui.core
|
|
* @requires ui.draggable
|
|
* @requires ui.resizable
|
|
* @requires ui.dialog
|
|
* @see handleDialogEvent()
|
|
* @see showLoading()
|
|
*/
|
|
function openDialog(element) {
|
|
var sHref = $(element).attr("href");
|
|
var sTitle = $(element).attr("title");
|
|
var eDialog = '<div id="gDialog"></div>';
|
|
var dialogWidth;
|
|
|
|
$("body").append(eDialog);
|
|
|
|
$("#gDialog").dialog({
|
|
autoOpen: false,
|
|
autoResize: true,
|
|
modal: true,
|
|
resizable: false,
|
|
close: closeDialog
|
|
});
|
|
|
|
showLoading("#gDialog");
|
|
|
|
$.get(sHref, function(data) {
|
|
showLoading("#gDialog");
|
|
$("#gDialog").html(data);
|
|
var dialogHeight = $("#gDialog").height();
|
|
var cssWidth = new String($("#gDialog form").css("width"));
|
|
var childWidth = cssWidth.replace(/[^0-9]/g,"");
|
|
if ($("#gDialog iframe").length) {
|
|
dialogWidth = $(window).width() - 100;
|
|
// Set the iframe width and height
|
|
$("#gDialog iframe").width("100%");
|
|
$("#gDialog iframe").height($(window).height() - 100);
|
|
} else if (childWidth == "" || childWidth > 300) {
|
|
dialogWidth = 500;
|
|
}
|
|
$("#gDialog").dialog('option', 'width', dialogWidth);
|
|
|
|
on_form_loaded();
|
|
|
|
$("#gDialog").dialog("open");
|
|
// Remove titlebar for progress dialogs or set title
|
|
if ($("#gDialog #gProgress").length) {
|
|
$(".ui-dialog-titlebar").remove();
|
|
} else if ($("#gDialog h1").length) {
|
|
$("#gDialog").dialog('option', 'title', $("#gDialog h1:eq(0)").html());
|
|
} else if ($("#gDialog fieldset legend").length) {
|
|
$("#gDialog").dialog('option', 'title', $("#gDialog fieldset legend:eq(0)").html());
|
|
}
|
|
|
|
ajaxify_dialog();
|
|
});
|
|
return false;
|
|
}
|
|
|
|
function on_form_loaded() {
|
|
// Should be defined (and localized) in the theme
|
|
MSG_CANCEL = MSG_CANCEL || 'Cancel';
|
|
var eCancel = '<a href="javascript: closeDialog()" class="gCancel">' + MSG_CANCEL + '</a>';
|
|
if ($("#gDialog .submit").length) {
|
|
$("#gDialog .submit").addClass("ui-state-default ui-corner-all");
|
|
$("#gDialog .submit").parent().append(eCancel);
|
|
}
|
|
$("#gDialog").dialog("option", "form", $("#gDialog form"));
|
|
$("#gDialog .ui-state-default").hover(
|
|
function() {
|
|
$(this).addClass("ui-state-hover");
|
|
},
|
|
function() {
|
|
$(this).removeClass("ui-state-hover");
|
|
}
|
|
);
|
|
}
|
|
|
|
function closeDialog() {
|
|
var form = $("#gDialog").dialog("option", "form");
|
|
if (form != null) {
|
|
$("#gDialog").dialog("option", "form").trigger("form_closing");
|
|
}
|
|
$("#gDialog").dialog("destroy").remove();
|
|
}
|
|
|
|
/**
|
|
* Toggle the processing indicator, both large and small
|
|
* @param elementID Target ID, including #, to apply .gLoadingSize
|
|
*/
|
|
function showLoading(elementID) {
|
|
var size;
|
|
switch (elementID) {
|
|
case "#gDialog":
|
|
case "#gPanel":
|
|
size = "Large";
|
|
break;
|
|
default:
|
|
size = "Small";
|
|
break;
|
|
}
|
|
$(elementID).toggleClass("gLoading" + size);
|
|
}
|