Files
gallery3/lib/gallery.dialog.js
Chad Kieffer 7569b39802 Updated to jquery ui 1.6rc4. Lots of changes, improved widget theme css and icons. No need to fix position dialogs anymore. Included the following in the combined file + i18n files. Requires push back up to vendor branch.
UI Core
Effects Core
Draggable - Req'd by Sortable
Resizeable - Image/watermark/avatar scaling
Sortable - Rearrange
Dialog - All over :)
Datepicker - Edit albums/items
Progressbar
Highlight - Message display, comment addition
Transfer - Adding tags from available list to field


Not fully integrated into the default theme yet.
2009-01-10 06:25:44 +00:00

100 lines
2.3 KiB
JavaScript

/**
* Fire openDialog() and prevent links from opening
*
* @see openDialog()
*/
function handleDialogEvent(event) {
openDialog(event.data.element);
event.preventDefault();
}
/**
* Display modal dialogs, populate dialog with trigger link's title and href
*
* @requires ui.core
* @requires ui.draggable
* @requires ui.resizable
* @requires ui.dialog
* @see handleDialogEvent()
*
* @todo Display loading animation on form submit
*/
function openDialog(element, on_success) {
var sHref = $(element).attr("href");
var sTitle = $(element).attr("title");
var eDialog = '<div id="gDialog"></div>';
$("body").append(eDialog);
$("#gDialog").dialog({
autoOpen: false,
autoResize: true,
draggable: true,
height: "auto",
width: "auto",
modal: true,
overlay: {
opacity: 0.7,
background: "black"
},
resizable: true,
close: function (event, ui) {
$("#gDialog").dialog("destroy").remove();
}
});
showLoading("#gDialog");
$("#gDialog").html(sHref);
$.get(sHref, function(data) {
showLoading("#gDialog");
$("#gDialog").html(data);
var parent = $("#gDialog").parent().parent();
parent.css("opacity", "0.0");
$("#gDialog").dialog("open");
$("#ui-dialog-title-gDialog").html($("#gDialog fieldset legend:eq(0)").html());
if (parent.width() < 400) {
parent.css("width", 400);
}
parent.css({"opacity": "1.0"});
ajaxify_dialog = function() {
$("#gDialog form").ajaxForm({
dataType: "json",
success: function(data) {
if (data.form) {
$("#gDialog form").replaceWith(data.form);
ajaxify_dialog();
}
if (data.result == "success") {
$("#gDialog").dialog("close");
if (on_success) {
on_success();
} else if (data.location) {
window.location = data.location;
} else {
window.location.reload();
}
}
}
});
};
ajaxify_dialog();
});
return false;
}
/**
* Toggle the processing indicator, both large and small
*
* @param element ID to which to apply the loading class, including #
*/
function showLoading(element) {
var size;
switch (element) {
case "#gDialog":
size = "Large";
break;
default:
size = "Small";
break;
}
$(element).toggleClass("gLoading" + size);
}