// });
// }
-function gallery(element, url) {
- if (!url) {
- return
- }
-
+function gallery(element, url) {
var element = $(element);
var imageDimensions = {};
+ element.data('images', []);
function changePage(pageNumber) {
$('img', element).attr('src', element.data('images')[pageNumber - 1]);
}
}
- $.ajax({
- url: url,
- type: 'GET',
- dataType: 'json',
+ var pn = $('.page-number', element);
+ pn.change(function(event) {
+ console.log('change!', $(this).val());
+ event.preventDefault();
+ var n = normalizeNumber(pn.val());
+ pn.val(n);
+ changePage(n);
+ });
+ $('.previous-page', element).click(function() {
+ pn.val(normalizeNumber(pn.val()) - 1);
+ pn.change();
+ });
+ $('.next-page', element).click(function() {
+ pn.val(normalizeNumber(pn.val()) + 1);
+ pn.change();
+ });
- success: function(data) {
- element.data('images', data);
- var pn = $('.page-number', element);
- pn.change(function(event) {
- console.log('change!', $(this).val());
- event.preventDefault();
- var n = normalizeNumber(pn.val());
- pn.val(n);
- changePage(n);
- });
- $('.previous-page', element).click(function() {
- pn.val(normalizeNumber(pn.val()) - 1);
- pn.change();
- });
- $('.next-page', element).click(function() {
- pn.val(normalizeNumber(pn.val()) + 1);
- pn.change();
- });
-
-
- var image = $('img', element).attr('unselectable', 'on');
- var origin = {};
- var imageOrigin = {};
- var zoomFactor = 1;
-
- $('.zoom-in', element).click(function() {
- zoomFactor = Math.min(2, zoomFactor + 0.2);
- zoom();
- });
- $('.zoom-out', element).click(function() {
- zoomFactor = Math.max(0.2, zoomFactor - 0.2);
- zoom();
- });
-
- $('img', element).load(function() {
- image.css({width: null, height: null});
- imageDimensions = {
- width: $(this).width() * zoomFactor,
- height: $(this).height() * zoomFactor,
- originWidth: $(this).width(),
- originHeight: $(this).height(),
- galleryWidth: $(this).parent().width(),
- galleryHeight: $(this).parent().height()
- };
- console.log('load', imageDimensions)
- var position = normalizePosition(
- image.position().left,
- image.position().top,
- imageDimensions.galleryWidth,
- imageDimensions.galleryHeight,
- imageDimensions.width,
- imageDimensions.height
- );
- image.css({left: position.x, top: position.y, width: $(this).width() * zoomFactor, height: $(this).height() * zoomFactor});
- });
+
+ var image = $('img', element).attr('unselectable', 'on');
+ var origin = {};
+ var imageOrigin = {};
+ var zoomFactor = 1;
+
+ $('.zoom-in', element).click(function() {
+ zoomFactor = Math.min(2, zoomFactor + 0.2);
+ zoom();
+ });
+ $('.zoom-out', element).click(function() {
+ zoomFactor = Math.max(0.2, zoomFactor - 0.2);
+ zoom();
+ });
+ $('.change-gallery', element).click(function() {
+ $('.chosen-gallery').val($('#document-meta .gallery').html() || '/gallery/');
+ $('.gallery-image').animate({top: 53}, 200);
+ $('.chosen-gallery').focus();
+ });
+ $('.change-gallery-ok', element).click(function() {
+ if ($('#document-meta .gallery').length == 0) {
+ $('<div class="gallery"></div>').appendTo('#document-meta');
+ }
+ $('#document-meta .gallery').html($('.chosen-gallery').val());
+ updateGallery($('.chosen-gallery').val());
+ $('.gallery-image').animate({top: 27}, 200);
+ });
+ $('.change-gallery-cancel', element).click(function() {
+ $('.gallery-image').animate({top: 27}, 200);
+ });
+
+ $('img', element).load(function() {
+ image.css({width: null, height: null});
+ imageDimensions = {
+ width: $(this).width() * zoomFactor,
+ height: $(this).height() * zoomFactor,
+ originWidth: $(this).width(),
+ originHeight: $(this).height(),
+ galleryWidth: $(this).parent().width(),
+ galleryHeight: $(this).parent().height()
+ };
+ console.log('load', imageDimensions)
+ var position = normalizePosition(
+ image.position().left,
+ image.position().top,
+ imageDimensions.galleryWidth,
+ imageDimensions.galleryHeight,
+ imageDimensions.width,
+ imageDimensions.height
+ );
+ image.css({left: position.x, top: position.y, width: $(this).width() * zoomFactor, height: $(this).height() * zoomFactor});
+ });
- $(window).resize(function() {
- imageDimensions.galleryWidth = image.parent().width();
- imageDimensions.galleryHeight = image.parent().height();
- });
-
- function bounds(galleryWidth, galleryHeight, imageWidth, imageHeight) {
- return {
- maxX: 0,
- maxY: 0,
- minX: galleryWidth - imageWidth,
- minY: galleryHeight - imageHeight
- }
- }
-
- function normalizePosition(x, y, galleryWidth, galleryHeight, imageWidth, imageHeight) {
- var b = bounds(galleryWidth, galleryHeight, imageWidth, imageHeight);
- return {
- x: Math.min(b.maxX, Math.max(b.minX, x)),
- y: Math.min(b.maxY, Math.max(b.minY, y))
- }
- }
-
- function onMouseMove(event) {
- var position = normalizePosition(
- event.clientX - origin.x + imageOrigin.left,
- event.clientY - origin.y + imageOrigin.top,
- imageDimensions.galleryWidth,
- imageDimensions.galleryHeight,
- imageDimensions.width,
- imageDimensions.height
- );
- image.css({position: 'absolute', top: position.y, left: position.x});
- return false;
- }
+ $(window).resize(function() {
+ imageDimensions.galleryWidth = image.parent().width();
+ imageDimensions.galleryHeight = image.parent().height();
+ });
+
+ function bounds(galleryWidth, galleryHeight, imageWidth, imageHeight) {
+ return {
+ maxX: 0,
+ maxY: 0,
+ minX: galleryWidth - imageWidth,
+ minY: galleryHeight - imageHeight
+ }
+ }
+
+ function normalizePosition(x, y, galleryWidth, galleryHeight, imageWidth, imageHeight) {
+ var b = bounds(galleryWidth, galleryHeight, imageWidth, imageHeight);
+ return {
+ x: Math.min(b.maxX, Math.max(b.minX, x)),
+ y: Math.min(b.maxY, Math.max(b.minY, y))
+ }
+ }
+
+ function onMouseMove(event) {
+ var position = normalizePosition(
+ event.clientX - origin.x + imageOrigin.left,
+ event.clientY - origin.y + imageOrigin.top,
+ imageDimensions.galleryWidth,
+ imageDimensions.galleryHeight,
+ imageDimensions.width,
+ imageDimensions.height
+ );
+ image.css({position: 'absolute', top: position.y, left: position.x});
+ return false;
+ }
+
+ function setZoom(factor) {
+ zoomFactor = factor;
+ }
+
+ function zoom() {
+ imageDimensions.width = imageDimensions.originWidth * zoomFactor;
+ imageDimensions.height = imageDimensions.originHeight * zoomFactor;
+ var position = normalizePosition(
+ image.position().left,
+ image.position().top,
+ imageDimensions.galleryWidth,
+ imageDimensions.galleryHeight,
+ imageDimensions.width,
+ imageDimensions.height
+ );
+ console.log(image.position(), imageDimensions, position);
+ image.css({width: imageDimensions.width, height: imageDimensions.height,
+ left: position.x, top: position.y});
+
+ }
+
+ function onMouseUp(event) {
+ $(document)
+ .unbind('mousemove.gallery')
+ .unbind('mouseup.gallery');
+ return false;
+ }
+
+ image.bind('mousedown', function(event) {
+ origin = {
+ x: event.clientX,
+ y: event.clientY
+ };
+ imageOrigin = image.position();
+ $(document)
+ .bind('mousemove.gallery', onMouseMove)
+ .bind('mouseup.gallery', onMouseUp);
+ return false;
+ });
+
+ function updateGallery(url) {
+ $.ajax({
+ url: url,
+ type: 'GET',
+ dataType: 'json',
+
+ success: function(data) {
+ element.data('images', data);
+ pn.val(1);
+ pn.change();
+ $('img', element).show();
+ },
- function setZoom(factor) {
- zoomFactor = factor;
+ error: function(data) {
+ element.data('images', []);
+ pn.val(1);
+ pn.change();
+ $('img', element).hide();
}
-
- function zoom() {
- imageDimensions.width = imageDimensions.originWidth * zoomFactor;
- imageDimensions.height = imageDimensions.originHeight * zoomFactor;
- var position = normalizePosition(
- image.position().left,
- image.position().top,
- imageDimensions.galleryWidth,
- imageDimensions.galleryHeight,
- imageDimensions.width,
- imageDimensions.height
- );
- console.log(image.position(), imageDimensions, position);
- image.css({width: imageDimensions.width, height: imageDimensions.height,
- left: position.x, top: position.y});
+ });
+ }
+
+ if (url) {
+ updateGallery(url);
+ }
+}
+
+function transform(editor) {
+ $.blockUI({message: 'Ładowanie...'});
+ setTimeout(function() {
+ xml2html({
+ xml: editor.getCode(),
+ success: function(element) {
+ $('#html-view').html(element);
+ $.unblockUI();
+ }, error: function(text) {
+ $('#html-view').html('<p class="error">Wystąpił błąd:</p><pre>' + text + '</pre>');
+ $.unblockUI();
}
-
- window.setZoom = setZoom;
-
- function onMouseUp(event) {
- $(document)
- .unbind('mousemove.gallery')
- .unbind('mouseup.gallery');
- return false;
+ });
+ }, 200);
+};
+
+
+function reverseTransform(editor) {
+ var serializer = new XMLSerializer();
+ if ($('#html-view .error').length > 0) {
+ return;
+ }
+ $.blockUI({message: 'Ładowanie...'});
+ setTimeout(function() {
+ html2xml({
+ xml: serializer.serializeToString($('#html-view div').get(0)),
+ success: function(text) {
+ editor.setCode(text);
+ $.unblockUI();
+ }, error: function(text) {
+ $('#source-editor').html('<p>Wystąpił błąd:</p><pre>' + text + '</pre>');
+ $.unblockUI();
}
-
- image.bind('mousedown', function(event) {
- origin = {
- x: event.clientX,
- y: event.clientY
- };
- imageOrigin = image.position();
- $(document)
- .bind('mousemove.gallery', onMouseMove)
- .bind('mouseup.gallery', onMouseUp);
- return false;
- });
- }
- });
+ });
+ }, 200);
}
reverseTransform(editor);
});
- $('.toolbar button').click(function(event) {
+ $('#source-editor .toolbar button').click(function(event) {
event.preventDefault();
var params = eval("(" + $(this).attr('ui:action-params') + ")");
scriptletCenter.scriptlets[$(this).attr('ui:action')](editor, params);
})
}
-function transform(editor) {
- $.blockUI({message: 'Ładowanie...'});
+
+function xml2html(options) {
withStylesheets(function() {
- setTimeout(function() {
- var doc = null;
- var parser = new DOMParser();
- var serializer = new XMLSerializer();
-
- doc = editor.getCode().replace(/\/\s+/g, '<br />');
- doc = parser.parseFromString(doc, 'text/xml');
- var error = $('parsererror', doc);
- console.log(error);
- if (error.length == 0) {
- doc = xml2htmlStylesheet.transformToFragment(doc, document);
- error = $('parsererror', doc);
- }
- console.log('xml', doc);
- if (error.length > 0) {
- console.log(error);
- $('#html-view').html('<p class="error">Wystąpił błąd:</p><pre>' + error.text() + '</pre>');
- } else {
- console.log('after transform', doc);
- $('#html-view').html(doc.firstChild);
- }
-
- $.unblockUI();
- }, 200);
- }, function() { alert('Nie udało się załadować XSLT!'); });
-};
+ var xml = options.xml.replace(/\/\s+/g, '<br />');
+ var parser = new DOMParser();
+ var serializer = new XMLSerializer();
+ var doc = parser.parseFromString(xml, 'text/xml');
+ var error = $('parsererror', doc);
+
+ if (error.length == 0) {
+ doc = xml2htmlStylesheet.transformToFragment(doc, document);
+ error = $('parsererror', doc);
+ }
+
+ if (error.length > 0 && options.error) {
+ options.error(error.text());
+ } else {
+ options.success(doc.firstChild);
+ }
+ }, function() { options.error && options.success('Nie udało się załadować XSLT'); });
+}
-function reverseTransform(editor) {
- $.blockUI({message: 'Ładowanie...'});
+function html2xml(options) {
withStylesheets(function() {
- setTimeout(function() {
- var doc = null;
- var parser = new DOMParser();
- var serializer = new XMLSerializer();
-
- if ($('#html-view .error').length > 0) {
- $('#source-editor').unblock();
- return;
- }
-
- doc = serializer.serializeToString($('#html-view div').get(0))
- doc = parser.parseFromString(doc, 'text/xml');
- console.log('xml',doc, doc.documentElement);
- // TODO: Sprawdzenie błędów
- var error = $('parsererror', doc.documentElement);
+ var xml = options.xml;
+ var parser = new DOMParser();
+ var serializer = new XMLSerializer();
+ var doc = parser.parseFromString(xml, 'text/xml');
+ var error = $('parsererror', doc.documentElement);
+
+ if (error.length == 0) {
+ doc = html2xmlStylesheet.transformToDocument(doc, document);
+ error = $('parsererror', doc.documentElement);
+ }
+
+ if (error.length > 0 && options.error) {
+ options.error(error.text());
console.log(error);
- if (error.length == 0) {
- doc = html2xmlStylesheet.transformToDocument(doc, document);
- error = $('parsererror', doc.documentElement);
- }
-
- if (error.length > 0) {
- console.log(error);
- $('#source-editor').html('<p>Wystąpił błąd:</p>' + error.text());
- } else {
- doc = serialize(doc.documentElement).join('');
- editor.setCode(doc);
- }
-
- console.log('after transform', doc, doc.documentElement);
- $.unblockUI();
- }, 200)
- }, function() { alert('Nie udało się załadować XSLT!')});
+ $('#source-editor').html('<p>Wystąpił błąd:</p>' + error.text());
+ } else {
+ options.success(serialize(doc.documentElement).join(''));
+ }
+ }, function() { options.error && options.success('Nie udało się załadować XSLT'); });
};