1
0
This repository has been archived on 2021-04-26. You can view files and clone it, but cannot push or open issues or pull requests.
gallery3-contrib/js/gallery.dialog.js
Fredrik Erlandsson f17acfd6c8 Squashed '3.0/themes/pear4gallery3/' changes from b24d37b..11c3c2a
11c3c2a version 3.0
063ad6f move of context menu to top of thumb
0188d22 closes #4, now the form-dialog is just loaded once
508366d annoying "
4047609 fixes #8, support for slideshow duration
5ed2ff0 updated options page
b65bc7b fixes #7, image animation
d6d5319 Removed temporary sidebarToggle
9499b7b Attempt to fix #3, support for a sidebar
13b0419 fixes #5, issues with hovering thumbnails
e0fcc41 Fix for broken slideshow, fixes #6
0bdd3c6 Fix for slideShowImages when album is empty.
ca62330 Fix for broken dialogs
f0d9e34 Copy of gallery.dialog.js from G3.0.0
e4a18f3 Updated jqury version.
7be51a8 Added support for breadcrumbs and sidebar (enable via theme options)
fad0fe4 Hash update
9d3b519 Fix for detail hash Imgage preload
a2cfa32 Fix for IE Support for using 'esc' to hide detailView
41a9863 fix so only Grid mode is supported if album does not contain any images
92c70a1 themeing the exif data
22386c3 Combined viewMode.png and removed some depricated files.
dc10f0a New icons.
cad0376 Fix for height of thumbs.
5c21b24 updated paginator with support for hash
6a13dab Updated theme
b305613 fix for pageheight, with paginator
ae87410 lNavBar fix
751bd86 New ui-theme
9a937a1 first attempt for item-option-overlay
d024eba Fix for setTimeout.
e167b2d JSLint take 2, reoder function reorder
82e0f38 Reindent and JSLint take 1.

git-subtree-dir: 3.0/themes/pear4gallery3
git-subtree-split: 11c3c2ac87
2012-01-10 15:07:23 +01:00

191 lines
6.2 KiB
JavaScript

(function($) {
$.widget("ui.gallery_dialog", {
_init: function() {
var self = this;
if (!self.options.immediate) {
this.element.click(function(event) {
event.preventDefault();
self._show($(event.currentTarget).attr("href"));
return false;
});
} else {
self._show(this.element.attr("href"));
}
},
_show: function(sHref) {
var self = this;
var eDialog = '<div id="g-dialog"></div>';
if ($("#g-dialog").length) {
$("#g-dialog").dialog("close");
}
$("body").append(eDialog);
if (!self.options.close) {
self.options.close = self.close_dialog;
}
$("#g-dialog").dialog(self.options);
$("#g-dialog").gallery_show_loading();
$.ajax({
url: sHref,
type: "GET",
beforeSend: function(xhr) {
// Until we convert to jquery 1.4, we need to save the XMLHttpRequest object so that we
// can detect the mime type of the reply
this.xhrData = xhr;
},
success: function(data, textStatus, xhr) {
// Pre jquery 1.4, get the saved XMLHttpRequest object
if (xhr == undefined) {
xhr = this.xhrData;
}
var mimeType = /^(\w+\/\w+)\;?/.exec(xhr.getResponseHeader("Content-Type"));
var content = "";
if (mimeType[1] == "application/json") {
data = JSON.parse(data);
content = unescape(data.html);
} else {
content = data;
}
$("#g-dialog").html(content).gallery_show_loading();
if ($("#g-dialog form").length) {
self.form_loaded(null, $("#g-dialog form"));
}
self._layout();
$("#g-dialog").dialog("open");
self._set_title();
if ($("#g-dialog form").length) {
self._ajaxify_dialog();
//Possible not necessary but kept just in case.
$("#g-dialog").removeClass("g-loading-small g-loading-large");
}
}
});
$("#g-dialog").dialog("option", "self", self);
},
_layout: function() {
var dialogWidth;
var dialogHeight = $("#g-dialog").height();
var cssWidth = new String($("#g-dialog form").css("width"));
var childWidth = cssWidth.replace(/[^0-9]/g,"");
var size = $.gallery_get_viewport_size();
if ($("#g-dialog iframe").length) {
dialogWidth = size.width() - 100;
// Set the iframe width and height
$("#g-dialog iframe").width("100%").height(size.height() - 100);
} else if ($("#g-dialog .g-dialog-panel").length) {
dialogWidth = size.width() - 100;
$("#g-dialog").dialog("option", "height", size.height() - 100);
} else if (childWidth == "" || childWidth > 300) {
dialogWidth = 500;
}
$("#g-dialog").dialog('option', 'width', dialogWidth);
},
form_loaded: function(event, ui) {
// Should be defined (and localized) in the theme
MSG_CANCEL = MSG_CANCEL || 'Cancel';
var eCancel = '<a href="#" class="g-cancel g-left">' + MSG_CANCEL + '</a>';
if ($("#g-dialog .submit").length) {
$("#g-dialog .submit").addClass("ui-state-default ui-corner-all");
$.fn.gallery_hover_init();
$("#g-dialog .submit").parent().append(eCancel);
$("#g-dialog .g-cancel").click(function(event) {
$("#g-dialog").dialog("close");
event.preventDefault();
});
}
$("#g-dialog .ui-state-default").hover(
function() {
$(this).addClass("ui-state-hover");
},
function() {
$(this).removeClass("ui-state-hover");
}
);
},
close_dialog: function(event, ui) {
var self = $("#g-dialog").dialog("option", "self");
if ($("#g-dialog form").length) {
self._trigger("form_closing", null, $("#g-dialog form"));
}
self._trigger("dialog_closing", null, $("#g-dialog"));
$("#g-dialog").dialog("destroy").remove();
},
_ajaxify_dialog: function() {
var self = this;
$("#g-dialog form").ajaxForm({
beforeSubmit: function(formData, form, options) {
form.find(":submit")
.addClass("ui-state-disabled")
.attr("disabled", "disabled");
return true;
},
beforeSend: function(xhr) {
// Until we convert to jquery 1.4, we need to save the XMLHttpRequest object so that we
// can detect the mime type of the reply
this.xhrData = xhr;
},
success: function(data) {
if (data.html) {
$("#g-dialog").html(unescape(data.html));
$("#g-dialog").dialog("option", "position", "center");
$("#g-dialog form :submit").removeClass("ui-state-disabled")
.attr("disabled", null);
self._set_title();
self._ajaxify_dialog();
self.form_loaded(null, $("#g-dialog form"));
if (typeof data.reset == 'function') {
eval(data.reset + '()');
}
}
if (data.result == "success") {
if (data.location) {
window.location = data.location;
} else {
window.location.reload();
}
}
}
});
},
_set_title: function() {
// Remove titlebar for progress dialogs or set title
if ($("#g-dialog #g-progress").length) {
$(".ui-dialog-titlebar").remove();
} else if ($("#g-dialog h1").length) {
$("#g-dialog").dialog('option', 'title', $("#g-dialog h1:eq(0)").html());
$("#g-dialog h1:eq(0)").hide();
} else if ($("#g-dialog fieldset legend").length) {
$("#g-dialog").dialog('option', 'title', $("#g-dialog fieldset legend:eq(0)").html());
}
},
form_closing: function(event, ui) {},
dialog_closing: function(event, ui) {}
});
$.extend($.ui.gallery_dialog, {
defaults: {
autoOpen: false,
autoResize: true,
modal: true,
resizable: false,
position: "center"
}
});
})(jQuery);