416 lines
No EOL
10 KiB
JavaScript
416 lines
No EOL
10 KiB
JavaScript
String.prototype.removeWhiteSpaces = function() {return(this.replace(/\s+/g,""));};
|
|
String.prototype.leftTrim = function() {return(this.replace(/^\s+/,""));};
|
|
String.prototype.rightTrim = function() {return(this.replace(/\s+$/,""));};
|
|
String.prototype.basicTrim = function() {return(this.replace(/\s+$/,"").replace(/^\s+/,""));};
|
|
String.prototype.superTrim = function() {return(this.replace(/\s+/g," ").replace(/\s+$/,"").replace(/^\s+/,""));};
|
|
String.prototype.startsWith = function(str) {return (this.match("^"+str)==str)};
|
|
String.prototype.endsWith = function(str) {return (this.match(str+"$")==str)};
|
|
Array.prototype.indexOf = function(obj) {var i,idx=-1;for(i=0;i<this.length;i++){if(this[i]==obj){idx=i;break;}}return idx;};
|
|
Array.prototype.lastIndexOf = function(obj) {this.reverse();var i,idx=-1;for(i=0;i<this.length;i++){if(this[i]==obj){idx=(this.length-1-i);break;}}this.reverse();return idx;};
|
|
Array.prototype.contains = function(obj) {var i,listed=false;for(i=0;i<this.length;i++){if(this[i]==obj){listed=true;break;}}return listed;};
|
|
|
|
/**
|
|
* Parse url-params.
|
|
*/
|
|
ZMI.prototype.parseURLParams = function(url) {
|
|
var qd = {};
|
|
var search = url.indexOf("?")>0?url.substr(url.indexOf("?")):"?";
|
|
search.substr(1).split("&").forEach(function(item) {
|
|
var s = item.split("="),
|
|
k = s[0],
|
|
v = s[1] && decodeURIComponent(s[1]);
|
|
(qd[k] = qd[k] || []).push(v);
|
|
}
|
|
);
|
|
return qd;
|
|
}
|
|
|
|
var zmiParams = {};
|
|
$(function(){
|
|
// Parse params (?) and pseudo-params (#).
|
|
var href = self.location.href;
|
|
var base_url = href;
|
|
var delimiter_list = ['?','#'];
|
|
for (var h = 0; h < delimiter_list.length; h++) {
|
|
var delimiter = delimiter_list[h];
|
|
var i = base_url.indexOf(delimiter);
|
|
if (i > 0) {
|
|
base_url = base_url.substr(0,i);
|
|
}
|
|
var i = href.indexOf(delimiter);
|
|
if (i > 0) {
|
|
var query_string = href.substr(i+1);
|
|
if (h < delimiter_list.length-1) {
|
|
i = query_string.indexOf(delimiter_list[h+1]);
|
|
if (i > 0) {
|
|
query_string = query_string.substr(0,i);
|
|
}
|
|
}
|
|
var l = query_string.split('&');
|
|
for ( var j = 0; j < l.length; j++) {
|
|
i = l[j].indexOf('=');
|
|
if (i < 0) {
|
|
break;
|
|
}
|
|
if (typeof zmiParams[l[j].substr(0,i)] == "undefined") {
|
|
zmiParams[l[j].substr(0,i)] = unescape(l[j].substr(i+1));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
zmiParams['base_url'] = base_url;
|
|
if (typeof zmiParams['zmi-debug'] != "undefined") {
|
|
$ZMI.toggleDebug(true);
|
|
}
|
|
|
|
$ZMI.setCursorWait("BO zmi.extensions");
|
|
|
|
// Execute registered onReady-callbacks.
|
|
$ZMI.writeDebug("zmi.extensions: Execute registered onReady-callbacks.");
|
|
$ZMI.runReady();
|
|
|
|
// Content-Editable ////////////////////////////////////////////////////////
|
|
if (self.location.href.indexOf('/manage')>0 || self.location.href.indexOf('preview=preview')>0) {
|
|
$("<style type='text/css'>.contentEditable.zmi-highlight{background-color:#f7f7f9;}</style>").appendTo("head");
|
|
$('.contentEditable')
|
|
.mouseover( function(evt) {
|
|
$(this).addClass('zmi-highlight');
|
|
})
|
|
.mouseout( function(evt) {
|
|
$(this).removeClass('zmi-highlight');
|
|
})
|
|
.click( function(evt) {
|
|
evt.stopPropagation();
|
|
if (evt.target != "undefined" && $.inArray(evt.target.nodeName.toLowerCase(),['a','button','input','select','textarea']) > -1) {
|
|
return;
|
|
}
|
|
var href = $(this).attr("data-absolute-url");
|
|
var lang = getZMILang();
|
|
if (self.location.href.indexOf(href+'/manage_main')>=0) {
|
|
href += '/manage_properties';
|
|
}
|
|
else {
|
|
href += '/manage_main';
|
|
}
|
|
if (self.location.href.indexOf('/manage_translate')>0) {
|
|
href += '_iframe';
|
|
href += '?lang='+lang;
|
|
href += '&ZMS_NO_BODY=1';
|
|
$ZMI.iframe(href,{},{});
|
|
}
|
|
else if (self.location.href.indexOf('/manage')>0) {
|
|
href += '?lang='+lang;
|
|
self.location.href = href;
|
|
}
|
|
else {
|
|
href += '_iframe';
|
|
href += '?lang='+lang;
|
|
showFancybox({
|
|
'autoDimensions':false,
|
|
'hideOnOverlayClick':false,
|
|
'href':href,
|
|
'transitionIn':'fade',
|
|
'transitionOut':'fade',
|
|
'type':'iframe',
|
|
'width':819
|
|
});
|
|
}
|
|
})
|
|
.attr( "title", "Click to edit!");
|
|
}
|
|
// ZMS plugins
|
|
if (typeof zmiParams['ZMS_HIGHLIGHT'] != 'undefined' && typeof zmiParams[zmiParams['ZMS_HIGHLIGHT']] != 'undefined') {
|
|
$.plugin('zmi_highlight',{
|
|
files: ['/++resource++zms_/jquery/plugin/jquery.plugin.zmi_highlight.js']
|
|
});
|
|
$.plugin('zmi_highlight').get('body',function(){});
|
|
}
|
|
$ZMI.setCursorAuto("EO zmi.extensions");
|
|
});
|
|
|
|
/**
|
|
* Physical Path
|
|
*/
|
|
ZMI.prototype.getPhysicalPath = function() {
|
|
var physical_path = $('meta[name="physical_path"]').attr('content');
|
|
if (typeof physical_path == 'undefined') {
|
|
physical_path = window.location.href;
|
|
}
|
|
return physical_path;
|
|
}
|
|
|
|
/**
|
|
* Icon
|
|
*/
|
|
ZMI.prototype.icon = function(name,extra) {
|
|
var tag = 'i';
|
|
var icon = '<' + tag + ' class="' + this.icon_clazz(name) + '"';
|
|
if (typeof extra != "undefined") {
|
|
icon += ' ' + extra;
|
|
}
|
|
icon += '></' + tag + '>';
|
|
return icon;
|
|
}
|
|
ZMI.prototype.icon_clazz = function(name) {
|
|
return name;
|
|
}
|
|
ZMI.prototype.icon_selector = function(name) {
|
|
var tag = 'i';
|
|
if (typeof name == "undefined") {
|
|
return tag
|
|
}
|
|
return tag+'.'+this.icon_clazz(name);
|
|
}
|
|
|
|
/**
|
|
* Debug
|
|
*/
|
|
ZMI.prototype.toggleDebug = function(b) {
|
|
var $div = $("div#zmi-debug");
|
|
if ($div.length==0) {
|
|
$("body").append('<div id="zmi-debug"></div>');
|
|
$div = $("div#zmi-debug");
|
|
}
|
|
if (b) {
|
|
$div.css("display","block");
|
|
}
|
|
else {
|
|
$div.css("display","none");
|
|
}
|
|
};
|
|
ZMI.prototype.writeDebug = function(s) {
|
|
var $div = $("div#zmi-debug");
|
|
if ($div.css("display")!="none") {
|
|
var d = new Date();
|
|
$div.html("<code>["+(d)+'...'+(d.getMilliseconds())+"] "+s.replace(/</gi,'<')+'</code><br/>'+$div.html());
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Wait cursor.
|
|
*/
|
|
var zmiCursor = [];
|
|
ZMI.prototype.setCursorWait = function(s) {
|
|
if (zmiCursor.length == 0) {
|
|
$("body").css("cursor","wait");
|
|
}
|
|
zmiCursor.push(s);
|
|
this.writeDebug(">>>> " + zmiCursor.join(" > "));
|
|
}
|
|
|
|
ZMI.prototype.setCursorAuto = function() {
|
|
this.writeDebug("<<<< " + zmiCursor.join(" > "));
|
|
zmiCursor.pop();
|
|
if (zmiCursor.length == 0) {
|
|
$("body").css("cursor","auto");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Returns language.
|
|
*/
|
|
function getZMILang() {
|
|
if (typeof zmiParams['lang'] == 'undefined') {
|
|
if (typeof zmiLangStr != "undefined") {
|
|
zmiParams['lang'] = zmiLangStr['lang'];
|
|
}
|
|
if (typeof zmiParams['lang'] == 'undefined') {
|
|
zmiParams['lang'] = 'eng';
|
|
}
|
|
}
|
|
return zmiParams['lang'];
|
|
}
|
|
|
|
/**
|
|
* Returns language-string for current manage-language.
|
|
*/
|
|
function getZMILangStr(key, data) {
|
|
var langStr = $ZMI.getLangStr(key);
|
|
if (typeof langStr=="undefined") {
|
|
if (typeof zmiLangStr!="undefined") {
|
|
langStr = zmiLangStr[key];
|
|
}
|
|
if (typeof langStr=='undefined') {
|
|
langStr = key
|
|
}
|
|
}
|
|
return langStr;
|
|
}
|
|
|
|
/**
|
|
* Returns language-string for current content-language.
|
|
*/
|
|
ZMI.prototype.getLangStr = function(key, lang) {
|
|
var k = "get_lang_dict";
|
|
var v = this.getCachedValue(k);
|
|
if (typeof v=="undefined") {
|
|
var url = this.getBaseUrl();
|
|
v = $.ajax({
|
|
url: url+'/get_lang_dict',
|
|
datatype: 'json',
|
|
contentType:'text/plain; charset=UTF-8',
|
|
async: false
|
|
}).responseText;
|
|
this.setCachedValue(k,v);
|
|
};
|
|
if (typeof lang=="undefined") {
|
|
lang = getZMILang();
|
|
};
|
|
var langStr;
|
|
if (typeof v[key]!="undefined") {
|
|
langStr = v[key][lang];
|
|
};
|
|
return langStr;
|
|
}
|
|
|
|
/**
|
|
* Cache Ajax requests.
|
|
*/
|
|
var zmiCache = {};
|
|
ZMI.prototype.getCachedValue = function(k) {return zmiCache[k];}
|
|
ZMI.prototype.setCachedValue = function(k,v) {zmiCache[k]=v;return v;}
|
|
|
|
/**
|
|
* Returns request-property.
|
|
*/
|
|
ZMI.prototype.getReqProperty = function(key, defaultValue) {
|
|
var data = {};
|
|
data['key'] = key;
|
|
if (typeof defaultValue != "undefined") {
|
|
data['default'] = defaultValue;
|
|
};
|
|
var url = this.getPhysicalPath();
|
|
if (url.indexOf('/content/')>0 || url.slice(-8)=='/content' ) {
|
|
url = url.substr(0,url.indexOf('/content')+'/content'.length);
|
|
} else {
|
|
url='';
|
|
};
|
|
var r = $.ajax({
|
|
url: url+'/getReqProperty',
|
|
data: data,
|
|
datatype: 'text',
|
|
async: false
|
|
}).responseText;
|
|
this.writeDebug(url+'/getReqProperty('+key+','+defaultValue+'): '+r);
|
|
return r;
|
|
}
|
|
|
|
/**
|
|
* Returns base-url.
|
|
*/
|
|
ZMI.prototype.getBaseUrl = function(key, defaultValue) {
|
|
var url = this.getPhysicalPath();
|
|
if (url.indexOf('/content/')>0 || url.slice(-8)=='/content' ) {
|
|
url = url.substr(0,url.indexOf('/content')+'/content'.length);
|
|
} else {
|
|
url='';
|
|
};
|
|
return url;
|
|
}
|
|
|
|
/**
|
|
* Returns conf-property.
|
|
*/
|
|
ZMI.prototype.getConfProperty = function(key, defaultValue) {
|
|
var r = this.getCachedValue(key);
|
|
if (typeof r=="undefined") {
|
|
var data = {};
|
|
data['key'] = btoa(key);
|
|
if (typeof defaultValue != "undefined") {
|
|
data['default'] = defaultValue;
|
|
};
|
|
var url = this.getBaseUrl();
|
|
var r = $.ajax({
|
|
url: url+'/getConfProperty',
|
|
data: data,
|
|
datatype: 'text',
|
|
async: false
|
|
}).responseText;
|
|
this.writeDebug(url+'/getConfProperty('+key+','+defaultValue+'): '+r);
|
|
this.setCachedValue(key,r);
|
|
}
|
|
return r;
|
|
}
|
|
|
|
/**
|
|
* Returns conf-properties.
|
|
*/
|
|
|
|
ZMI.prototype.getConfProperties = function(prefix) {
|
|
var r = this.getCachedValue(prefix);
|
|
if (typeof r=="undefined") {
|
|
var data = {};
|
|
data['prefix'] = btoa(prefix);
|
|
var url = this.getBaseUrl();
|
|
var r = $.ajax({
|
|
url: url+'/getConfProperties',
|
|
data: data,
|
|
datatype: 'text',
|
|
async: false
|
|
}).responseText;
|
|
this.writeDebug(url+'/getConfProperties('+prefix+'): '+r);
|
|
this.setCachedValue(prefix,r);
|
|
}
|
|
return eval("("+r+")");
|
|
}
|
|
|
|
/**
|
|
* Returns display-icon.
|
|
*/
|
|
ZMI.prototype.display_icon = function(meta_type) {
|
|
var k = "display_icon."+meta_type;
|
|
var v = this.getCachedValue(k);
|
|
if (typeof v=="undefined") {
|
|
var data = {}
|
|
data['meta_type'] = meta_type;
|
|
var url = this.getPhysicalPath();
|
|
if (url.indexOf('/content/')>0 || url.slice(-8)=='/content' ) {
|
|
url = url.substr(0,url.indexOf('/content')+'/content'.length);
|
|
} else {
|
|
url='';
|
|
}
|
|
this.writeDebug(url+'/display_icon');
|
|
v = $.ajax({
|
|
url: url+'/display_icon',
|
|
data: data,
|
|
datatype: 'text',
|
|
async: false
|
|
}).responseText;
|
|
}
|
|
return this.setCachedValue(k,v);
|
|
}
|
|
|
|
/**
|
|
*Decode HTML-Entities.
|
|
*/
|
|
ZMI.prototype.HTMLDecode = function(str) {
|
|
var char_names = {
|
|
'Auml':'\u00C4',
|
|
'Ouml':'\u00D6',
|
|
'Uuml':'\u00DC',
|
|
'auml':'\u00E4',
|
|
'ouml':'\u00F6',
|
|
'uuml':'\u00FC',
|
|
'szlig':'\u00DF'
|
|
};
|
|
for (var char_name in char_names) {
|
|
var char_code = char_names[char_name].toString(16);
|
|
var re = new RegExp("&"+char_name+";","g");
|
|
str = str.replace(re,char_code);
|
|
}
|
|
return str;
|
|
}
|
|
|
|
/**
|
|
* Copy to clipboard.
|
|
*/
|
|
ZMI.prototype.CopyToClipboard = function(str) {
|
|
var $temp = $("<textarea></textarea>");
|
|
$("body").append($temp);
|
|
try {
|
|
$temp.val(str).select();
|
|
document.execCommand("copy");
|
|
} catch (e) {
|
|
}
|
|
$temp.remove();
|
|
} |