summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/plugins/styling/script.js95
1 files changed, 59 insertions, 36 deletions
diff --git a/lib/plugins/styling/script.js b/lib/plugins/styling/script.js
index 84b251eab..f2d550b21 100644
--- a/lib/plugins/styling/script.js
+++ b/lib/plugins/styling/script.js
@@ -2,10 +2,58 @@
jQuery(function () {
- var doreload = 1;
+ /**
+ * Function to reload the preview styles in the main window
+ *
+ * @param {window} target the main window
+ */
+ function applyPreview(target) {
+ // remove style
+ var $style = target.jQuery('link[rel=stylesheet][href*="lib/exe/css.php"]');
+ $style.attr('href', '');
+
+ // append the loader screen
+ $loader = target.jQuery('#plugin__styling_loader');
+ if (!$loader.length) {
+ $loader = jQuery('<div id="plugin__styling_loader">' + LANG.plugins.styling.loader + '</div>');
+ $loader.css({
+ 'position': 'absolute',
+ 'width': '100%',
+ 'height': '100%',
+ 'top': 0,
+ 'left': 0,
+ 'z-index': 5000,
+ 'background-color': '#fff',
+ 'opacity': '0.7',
+ 'color': '#000',
+ 'font-size': '2.5em',
+ 'text-align': 'center',
+ 'line-height': 1.5,
+ 'padding-top': '2em'
+ });
+ target.jQuery('body').append($loader);
+ }
+
+ // load preview in main window (timeout works around chrome updating CSS weirdness)
+ target.setTimeout(function () {
+ var now = new Date().getTime();
+ $style.attr('href', DOKU_BASE + 'lib/exe/css.php?preview=1&tseed=' + now);
+ }, 500);
+ }
+ var doreload = 1;
var $styling_plugin = jQuery('#plugin__styling');
- if (!$styling_plugin.length) return;
+
+ // if we are not on the plugin page (either main or popup)
+ if (!$styling_plugin.length) {
+ // handle the preview cookie
+ if(DokuCookie.getValue('styling_plugin') == 1) {
+ applyPreview(window);
+ }
+ return; // nothing more to do here
+ }
+
+ /* ---- from here on we're in the popup or admin page ---- */
// add the color picker
$styling_plugin.find('.color').iris({});
@@ -18,15 +66,18 @@ jQuery(function () {
$btn.click(function (e) {
var windowFeatures = "menubar=no,location=no,resizable=yes,scrollbars=yes,status=false,width=500,height=500";
- window.open(DOKU_BASE + 'lib/plugins/styling/popup.php', 'styling', windowFeatures)
+ window.open(DOKU_BASE + 'lib/plugins/styling/popup.php', 'styling_popup', windowFeatures);
e.preventDefault();
}).wrap('<p></p>');
- return;
+ return; // we exit here if this is not the popup
}
+ /* ---- from here on we're in the popup only ---- */
+
// reload the main page on close
window.onunload = function(e) {
if(doreload) {
+ window.opener.DokuCookie.setValue('styling_plugin', 0);
window.opener.document.location.reload();
}
return null;
@@ -37,37 +88,9 @@ jQuery(function () {
doreload = false;
});
- // remove style
- var $style = window.opener.jQuery('link[rel=stylesheet][href*="lib/exe/css.php"]');
- $style.attr('href', '');
-
- // append the loader screen
- $loader = window.opener.jQuery('#plugin__styling_loader');
- if (!$loader.length) {
- $loader = jQuery('<div id="plugin__styling_loader">' + LANG.plugins.styling.loader + '</div>');
- $loader.css({
- 'position': 'absolute',
- 'width': '100%',
- 'height': '100%',
- 'top': 0,
- 'left': 0,
- 'z-index': 5000,
- 'background-color': '#fff',
- 'opacity': '0.7',
- 'color': '#000',
- 'font-size': '2.5em',
- 'text-align': 'center',
- 'line-height': 1.5,
- 'padding-top': '2em'
- });
- window.opener.jQuery('body').append($loader);
- }
-
- // load preview in main window (timeout works around chrome updating CSS weirdness)
- window.setTimeout(function() {
- var now = new Date().getTime();
- $style.attr('href', DOKU_BASE + 'lib/exe/css.php?preview=1&tseed=' + now);
- }, 500);
-
+ // on first load apply preview
+ applyPreview(window.opener);
+ // enable the preview cookie
+ window.opener.DokuCookie.setValue('styling_plugin', 1);
});