Zeile 3 | Zeile 3 |
---|
* a list */
|
* a list */
|
var ThemeSelector = (function() { /** * @var shortcut */ var fn = encodeURIComponent;
| var ThemeSelector = {
|
/** * Constructor *
| /** * Constructor *
|
Zeile 21 | Zeile 17 |
---|
* @param number the theme id * @return void */
|
* @param number the theme id * @return void */
|
function ThemeSelector(url, saveUrl, selector, styleSheet, file, selectorForm, tid) {
| init: function(url, saveUrl, selector, styleSheet, file, selectorForm, tid) {
|
// verify input if (!url || !saveUrl || !selector || !styleSheet || !file || !selectorForm || !tid) { return; }
|
// verify input if (!url || !saveUrl || !selector || !styleSheet || !file || !selectorForm || !tid) { return; }
|
this.url = url; this.saveUrl = saveUrl; this.selector = selector; this.selectorPrevOpt = this.selector.val(); this.styleSheet = styleSheet; this.file = file; this.selectorForm = selectorForm; this.tid = tid;
| ThemeSelector.url = url; ThemeSelector.saveUrl = saveUrl; ThemeSelector.selector = selector; ThemeSelector.selectorPrevOpt = ThemeSelector.selector.val(); ThemeSelector.styleSheet = styleSheet; ThemeSelector.file = file; ThemeSelector.selectorForm = selectorForm; ThemeSelector.tid = tid;
|
|
|
this.background = $("#css_bits\\[background\\]").val(); this.width = $("#css_bits\\[width\\]").val(); this.color = $("#css_bits\\[color\\]").val(); this.extra = $("#css_bits\\[extra\\]").val(); this.text_decoration = $("#css_bits\\[text_decoration\\]").val(); this.font_family = $("#css_bits\\[font_family\\]").val(); this.font_size = $("#css_bits\\[font_size\\]").val(); this.font_style = $("#css_bits\\[font_style\\]").val(); this.font_weight = $("#css_bits\\[font_weight\\]").val();
| ThemeSelector.background = $("#css_bits\\[background\\]").val(); ThemeSelector.width = $("#css_bits\\[width\\]").val(); ThemeSelector.color = $("#css_bits\\[color\\]").val(); ThemeSelector.extra = $("#css_bits\\[extra\\]").val(); ThemeSelector.text_decoration = $("#css_bits\\[text_decoration\\]").val(); ThemeSelector.font_family = $("#css_bits\\[font_family\\]").val(); ThemeSelector.font_size = $("#css_bits\\[font_size\\]").val(); ThemeSelector.font_style = $("#css_bits\\[font_style\\]").val(); ThemeSelector.font_weight = $("#css_bits\\[font_weight\\]").val();
$("#save").on('click', function(event) { ThemeSelector.save(event, true); } ); $("#save_close").on('click', function(event) { ThemeSelector.saveClose(event); } );
$(window).on('beforeunload', function(event){ if(ThemeSelector.isChanged()) { return ' '; } });
|
|
|
$("#save").on('click', function(event) { $.proxy(this, 'save', event, true); } ); $("#save_close").on('click', function(event) { $.proxy(this, 'saveClose', event); } ); ThemeSelector.that = this; // I know this is cheating :D
| |
|
|
window.onbeforeunload = function(event) { saveCheck(event, false, ThemeSelector.that); } window.onunload = function(event) { save(false, false); }
| |
|
|
this.selector.on("change", $.proxy(this, 'updateSelector')); this.selectorForm.on("submit", $.proxy(this, 'updateSelector')); }
| ThemeSelector.selector.on("change", ThemeSelector.updateSelector); ThemeSelector.selectorForm.on("submit", ThemeSelector.updateSelector); },
|
/** * prevents no-save warning messaging when saving
|
/** * prevents no-save warning messaging when saving
|
* * @return void */ function saveClose(e) { this.isClosing = true; }
| * * @return void */ saveClose: function(e) { ThemeSelector.isClosing = true; },
|
/** * updates the stylesheet info to match the current selection, checking * first that work isn't lost
| /** * updates the stylesheet info to match the current selection, checking * first that work isn't lost
|
Zeile 75 | Zeile 75 |
---|
* @param object the event * @return void */
|
* @param object the event * @return void */
|
function updateSelector(e) {
| updateSelector: function(e) {
|
var postData;
e.preventDefault()
|
var postData;
e.preventDefault()
|
this.saveCheck(e, true, null);
postData = "file=" + fn(this.file) + "&tid=" + fn(this.tid) + "&selector=" + fn(this.selector.val()) + "&my_post_key=" + fn(my_post_key);
this.selectorGoText = $("#mini_spinner").html(); $("#mini_spinner").html(" <img src=\"" + this.miniSpinnerImage + "\" style=\"vertical-align: middle;\" alt=\"\" /> ");
$.ajax({ type: 'post', url: this.url, data: postData, complete: $.proxy(this, 'onComplete'),
| ThemeSelector.saveCheck(e, true);
postData = "file=" + encodeURIComponent(ThemeSelector.file) + "&tid=" + encodeURIComponent(ThemeSelector.tid) + "&selector=" + encodeURIComponent(ThemeSelector.selector.val()) + "&my_post_key=" + encodeURIComponent(my_post_key);
ThemeSelector.selectorGoText = $("#mini_spinner").html(); $("#mini_spinner").html(" <img src=\"" + ThemeSelector.miniSpinnerImage + "\" style=\"vertical-align: middle;\" alt=\"\" /> ");
$.ajax({ type: 'post', url: ThemeSelector.url, data: postData, complete: ThemeSelector.onComplete,
|
});
|
});
|
}
| },
|
/** * handles the AJAX return data
| /** * handles the AJAX return data
|
Zeile 101 | Zeile 101 |
---|
* @param object the request * @return true */
|
* @param object the request * @return true */
|
function onComplete(request) {
| onComplete: function(request) {
|
var message, saved;
if (request.responseText.match(/<error>(.*)<\/error>/)) {
| var message, saved;
if (request.responseText.match(/<error>(.*)<\/error>/)) {
|
Zeile 110 | Zeile 110 |
---|
if (!message[1]) { message[1] = lang.unknown_error; }
|
if (!message[1]) { message[1] = lang.unknown_error; }
|
$.jGrowl(lang.theme_info_fetch_error + '\n\n' + message[1]);
| $.jGrowl(lang.theme_info_fetch_error + '\n\n' + message[1], {theme:'jgrowl_error'});
|
} else if(request.responseText) { if ($("#saved").html()) { saved = $("#saved").html(); }
|
} else if(request.responseText) { if ($("#saved").html()) { saved = $("#saved").html(); }
|
this.styleSheet.html(request.responseText);
| ThemeSelector.styleSheet.html(request.responseText);
|
}
|
}
|
this.background = $("#css_bits\\[background\\]").val(); this.width = $("#css_bits\\[width\\]").val(); this.color = $("#css_bits\\[color\\]").val(); this.extra = $("#css_bits\\[extra\\]").val(); this.text_decoration = $("#css_bits\\[text_decoration\\]").val(); this.font_family = $("#css_bits\\[font_family\\]").val(); this.font_size = $("#css_bits\\[font_size\\]").val(); this.font_style = $("#css_bits\\[font_style\\]").val(); this.font_weight = $("#css_bits\\[font_weight\\]").val();
| ThemeSelector.background = $("#css_bits\\[background\\]").val(); ThemeSelector.width = $("#css_bits\\[width\\]").val(); ThemeSelector.color = $("#css_bits\\[color\\]").val(); ThemeSelector.extra = $("#css_bits\\[extra\\]").val(); ThemeSelector.text_decoration = $("#css_bits\\[text_decoration\\]").val(); ThemeSelector.font_family = $("#css_bits\\[font_family\\]").val(); ThemeSelector.font_size = $("#css_bits\\[font_size\\]").val(); ThemeSelector.font_style = $("#css_bits\\[font_style\\]").val(); ThemeSelector.font_weight = $("#css_bits\\[font_weight\\]").val();
|
if (saved) { $("#saved").html(saved);
| if (saved) { $("#saved").html(saved);
|
Zeile 135 | Zeile 135 |
---|
}, 30000); }
|
}, 30000); }
|
$("#mini_spinner").html(this.selectorGoText); this.selectorGoText = '';
| $("#mini_spinner").html(ThemeSelector.selectorGoText); ThemeSelector.selectorGoText = '';
|
return true;
|
return true;
|
}
| },
isChanged: function() { return (ThemeSelector.background != $("#css_bits\\[background\\]").val() || ThemeSelector.width != $("#css_bits\\[width\\]").val() || ThemeSelector.color != $("#css_bits\\[color\\]").val() || ThemeSelector.extra != $("#css_bits\\[extra\\]").val() || ThemeSelector.text_decoration != $("#css_bits\\[text_decoration\\]").val() || ThemeSelector.font_family != $("#css_bits\\[font_family\\]").val() || ThemeSelector.font_size != $("#css_bits\\[font_size\\]").val() || ThemeSelector.font_style != $("#css_bits\\[font_style\\]").val() || ThemeSelector.font_weight != $("#css_bits\\[font_weight\\]").val()); },
|
/** * check if anything has changed
| /** * check if anything has changed
|
Zeile 148 | Zeile 161 |
---|
* @param bool true if AJAX, false if not * @return true */
|
* @param bool true if AJAX, false if not * @return true */
|
function saveCheck(e, isAjax, that) {
if(that == null) that = this;
| saveCheck: function(e, isAjax) {
|
|
|
if (that.isClosing == true) {
| if (ThemeSelector.isClosing == true) {
|
return true; }
|
return true; }
|
|
|
if(e != null && isAjax == true)
|
if(e != null && isAjax == true)
|
e.preventDefault();
if (that.background != $("#css_bits\\[background\\]").val() || that.width != $("#css_bits\\[width\\]").val() || that.color != $("#css_bits\\[color\\]").val() || that.extra != $("#css_bits\\[extra\\]").val() || that.text_decoration != $("#css_bits\\[text_decoration\\]").val() || that.font_family != $("#css_bits\\[font_family\\]").val() || that.font_size != $("#css_bits\\[font_size\\]").val() || that.font_style != $("#css_bits\\[font_style\\]").val() || that.font_weight != $("#css_bits\\[font_weight\\]").val()) { e.preventDefault();
| e.preventDefault();
if (ThemeSelector.isChanged()) { e.preventDefault();
|
if(isAjax == false) return save_changes_lang_string;
| if(isAjax == false) return save_changes_lang_string;
|
Zeile 178 | Zeile 181 |
---|
{ confirmReturn = confirm(save_changes_lang_string); if (confirmReturn == true) {
|
{ confirmReturn = confirm(save_changes_lang_string); if (confirmReturn == true) {
|
that.save(false, isAjax); $.jGrowl('Saved');
| ThemeSelector.save(false, isAjax); $.jGrowl(lang.saved, {theme:'jgrowl_success'});
|
} } } else if(isAjax == true) {
|
} } } else if(isAjax == true) {
|
that.selectorPrevOpt = that.selector.val();
| ThemeSelector.selectorPrevOpt = ThemeSelector.selector.val();
|
return true; }
|
return true; }
|
}
| },
|
/** * saves the selector info
| /** * saves the selector info
|
Zeile 197 | Zeile 200 |
---|
* @param bool true if AJAX, false if not * @return true */
|
* @param bool true if AJAX, false if not * @return true */
|
function save(e, isAjax) {
| save: function(e, isAjax) {
|
var cssBits, postData, completeMethod = 'onUnloadSaveComplete';
if (e) {
| var cssBits, postData, completeMethod = 'onUnloadSaveComplete';
if (e) {
|
Zeile 216 | Zeile 219 |
---|
'font_weight': $('#css_bits\\[font_weight\\]').val() };
|
'font_weight': $('#css_bits\\[font_weight\\]').val() };
|
postData = "css_bits=" + fn(jsArrayToPhpArray(cssBits)) + "&selector=" + fn(this.selectorPrevOpt) + "&file=" + fn(this.file) + "&tid=" + fn(this.tid) + "&my_post_key=" + fn(my_post_key) + "&serialized=1";
| postData = "css_bits=" + encodeURIComponent(jsArrayToPhpArray(cssBits)) + "&selector=" + encodeURIComponent(ThemeSelector.selectorPrevOpt) + "&file=" + encodeURIComponent(ThemeSelector.file) + "&tid=" + encodeURIComponent(ThemeSelector.tid) + "&my_post_key=" + encodeURIComponent(my_post_key) + "&serialized=1";
|
if (isAjax == true) { postData += "&ajax=1"; }
|
if (isAjax == true) { postData += "&ajax=1"; }
|
this.isAjax = isAjax;
| ThemeSelector.isAjax = isAjax;
|
if (isAjax == true) { completeMethod = 'onSaveComplete';
|
if (isAjax == true) { completeMethod = 'onSaveComplete';
|
$.jGrowl(lang.saving); }
| $.jGrowl(lang.saving, {theme:'jgrowl_process'}); }
|
$.ajax({ type: 'post',
|
$.ajax({ type: 'post',
|
url: this.saveUrl,
| url: ThemeSelector.saveUrl,
|
data: postData,
|
data: postData,
|
complete: $.proxy(this, completeMethod),
| complete: ThemeSelector[completeMethod],
|
}); return !isAjax;
|
}); return !isAjax;
|
}
| },
|
/** * handle errors, reset values and clean up
| /** * handle errors, reset values and clean up
|
Zeile 244 | Zeile 247 |
---|
* @param object the request * @return true */
|
* @param object the request * @return true */
|
function onSaveComplete(request) {
| onSaveComplete: function(request) {
|
var message;
if (request.responseText.match(/<error>(.*)<\/error>/)) {
| var message;
if (request.responseText.match(/<error>(.*)<\/error>/)) {
|
Zeile 253 | Zeile 256 |
---|
if (!message[1]) { message[1] = lang.unkown_error; }
|
if (!message[1]) { message[1] = lang.unkown_error; }
|
$.jGrowl(lang.theme_info_save_error + '\n\n' + message[1]);
| $.jGrowl(lang.theme_info_save_error + '\n\n' + message[1], {theme:'jgrowl_error'});
|
return false; } else if(request.responseText) { $("#saved").html(" (" + lang.saved + " @ "+ Date() + ")"); if ($("#ajax_alert")) {
|
return false; } else if(request.responseText) { $("#saved").html(" (" + lang.saved + " @ "+ Date() + ")"); if ($("#ajax_alert")) {
|
$("#ajax_alert").html('').hide(); } }
this.background = $("#css_bits\\[background\\]").val(); this.width = $("#css_bits\\[width\\]").val(); this.color = $("#css_bits\\[color\\]").val(); this.extra = $("#css_bits\\[extra\\]").val(); this.text_decoration = $("#css_bits\\[text_decoration\\]").val(); this.font_family = $("#css_bits\\[font_family\\]").val(); this.font_size = $("#css_bits\\[font_size\\]").val(); this.font_style = $("#css_bits\\[font_style\\]").val(); this.font_weight = $("#css_bits\\[font_weight\\]").val();
return true; }
| $("#ajax_alert").html('').hide(); } }
ThemeSelector.background = $("#css_bits\\[background\\]").val(); ThemeSelector.width = $("#css_bits\\[width\\]").val(); ThemeSelector.color = $("#css_bits\\[color\\]").val(); ThemeSelector.extra = $("#css_bits\\[extra\\]").val(); ThemeSelector.text_decoration = $("#css_bits\\[text_decoration\\]").val(); ThemeSelector.font_family = $("#css_bits\\[font_family\\]").val(); ThemeSelector.font_size = $("#css_bits\\[font_size\\]").val(); ThemeSelector.font_style = $("#css_bits\\[font_style\\]").val(); ThemeSelector.font_weight = $("#css_bits\\[font_weight\\]").val();
return true; },
|
/** * handle leaving page save * * @param object the request * @return true */
|
/** * handle leaving page save * * @param object the request * @return true */
|
function onUnloadSaveComplete(request) {
| onUnloadSaveComplete: function(request) {
|
var message;
if (request.responseText.match(/<error>(.*)<\/error>/)) {
| var message;
if (request.responseText.match(/<error>(.*)<\/error>/)) {
|
Zeile 290 | Zeile 293 |
---|
if (!message[1]) { message[1] = lang.unkown_error; }
|
if (!message[1]) { message[1] = lang.unkown_error; }
|
$.jGrowl(lang.theme_info_save_error + '\n\n' + message[1]);
| $.jGrowl(lang.theme_info_save_error + '\n\n' + message[1], {theme:'jgrowl_error'});
|
return false; } return true;
|
return false; } return true;
|
}
ThemeSelector.prototype = { url: null, saveUrl: null, selector: null, styleSheet: null, file: null, selectorForm: null, tid: null, miniSpinnerImage: "../images/spinner.gif", isAjax: false, specific_count: 0, selectorGoText: null, selectorPrevOpt: null, isClosing: false, background: null, width: null, color: null, extra: null, text_decoration: null, font_family: null, font_size: null, font_style: null, font_weight: null, saveClose: saveClose, updateSelector: updateSelector, onComplete: onComplete, saveCheck: saveCheck, save: save, onSaveComplete: onSaveComplete, onUnloadSaveComplete: onUnloadSaveComplete, }
| },
|
|
|
return ThemeSelector; })();
| url: null, saveUrl: null, selector: null, styleSheet: null, file: null, selectorForm: null, tid: null, miniSpinnerImage: "../images/spinner.gif", isAjax: false, specific_count: 0, selectorGoText: null, selectorPrevOpt: null, isClosing: false, background: null, width: null, color: null, extra: null, text_decoration: null, font_family: null, font_size: null, font_style: null, font_weight: null };
|
/** * converts a JS object to a JSON of a PHP associative array
| /** * converts a JS object to a JSON of a PHP associative array
|