Blame | Letzte Änderung | Log anzeigen | RSS feed
/* Functions for the advlink plugin popup */tinyMCEPopup.requireLangPack();var templates = {"window.open" : "window.open('${url}','${target}','${options}')"};function preinit() {var url;if (url = tinyMCEPopup.getParam("external_link_list_url"))document.write('<script language="javascript" type="text/javascript" src="' + tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');}function changeClass() {var f = document.forms[0];f.classes.value = getSelectValue(f, 'classlist');}function init() {tinyMCEPopup.resizeToInnerSize();var formObj = document.forms[0];var inst = tinyMCEPopup.editor;var elm = inst.selection.getNode();var action = "insert";var html;document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink');document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink');document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target');// Link listhtml = getLinkListHTML('linklisthref','href');if (html == "")document.getElementById("linklisthrefrow").style.display = 'none';elsedocument.getElementById("linklisthrefcontainer").innerHTML = html;// Anchor listhtml = getAnchorListHTML('anchorlist','href');if (html == "")document.getElementById("anchorlistrow").style.display = 'none';elsedocument.getElementById("anchorlistcontainer").innerHTML = html;// Resize some elementsif (isVisible('hrefbrowser'))document.getElementById('href').style.width = '260px';if (isVisible('popupurlbrowser'))document.getElementById('popupurl').style.width = '180px';elm = inst.dom.getParent(elm, "A");if (elm != null && elm.nodeName == "A")action = "update";formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true);setPopupControlsDisabled(true);if (action == "update") {var href = inst.dom.getAttrib(elm, 'href');var onclick = inst.dom.getAttrib(elm, 'onclick');// Setup form datasetFormValue('href', href);setFormValue('title', inst.dom.getAttrib(elm, 'title'));setFormValue('id', inst.dom.getAttrib(elm, 'id'));setFormValue('style', inst.dom.getAttrib(elm, "style"));setFormValue('rel', inst.dom.getAttrib(elm, 'rel'));setFormValue('rev', inst.dom.getAttrib(elm, 'rev'));setFormValue('charset', inst.dom.getAttrib(elm, 'charset'));setFormValue('hreflang', inst.dom.getAttrib(elm, 'hreflang'));setFormValue('dir', inst.dom.getAttrib(elm, 'dir'));setFormValue('lang', inst.dom.getAttrib(elm, 'lang'));setFormValue('tabindex', inst.dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));setFormValue('accesskey', inst.dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));setFormValue('type', inst.dom.getAttrib(elm, 'type'));setFormValue('onfocus', inst.dom.getAttrib(elm, 'onfocus'));setFormValue('onblur', inst.dom.getAttrib(elm, 'onblur'));setFormValue('onclick', onclick);setFormValue('ondblclick', inst.dom.getAttrib(elm, 'ondblclick'));setFormValue('onmousedown', inst.dom.getAttrib(elm, 'onmousedown'));setFormValue('onmouseup', inst.dom.getAttrib(elm, 'onmouseup'));setFormValue('onmouseover', inst.dom.getAttrib(elm, 'onmouseover'));setFormValue('onmousemove', inst.dom.getAttrib(elm, 'onmousemove'));setFormValue('onmouseout', inst.dom.getAttrib(elm, 'onmouseout'));setFormValue('onkeypress', inst.dom.getAttrib(elm, 'onkeypress'));setFormValue('onkeydown', inst.dom.getAttrib(elm, 'onkeydown'));setFormValue('onkeyup', inst.dom.getAttrib(elm, 'onkeyup'));setFormValue('target', inst.dom.getAttrib(elm, 'target'));setFormValue('classes', inst.dom.getAttrib(elm, 'class'));// Parse onclick dataif (onclick != null && onclick.indexOf('window.open') != -1)parseWindowOpen(onclick);elseparseFunction(onclick);// Select by the valuesselectByValue(formObj, 'dir', inst.dom.getAttrib(elm, 'dir'));selectByValue(formObj, 'rel', inst.dom.getAttrib(elm, 'rel'));selectByValue(formObj, 'rev', inst.dom.getAttrib(elm, 'rev'));selectByValue(formObj, 'linklisthref', href);if (href.charAt(0) == '#')selectByValue(formObj, 'anchorlist', href);addClassesToList('classlist', 'advlink_styles');selectByValue(formObj, 'classlist', inst.dom.getAttrib(elm, 'class'), true);selectByValue(formObj, 'targetlist', inst.dom.getAttrib(elm, 'target'), true);} elseaddClassesToList('classlist', 'advlink_styles');}function checkPrefix(n) {if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_email')))n.value = 'mailto:' + n.value;if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external')))n.value = 'http://' + n.value;}function setFormValue(name, value) {document.forms[0].elements[name].value = value;}function parseWindowOpen(onclick) {var formObj = document.forms[0];// Preprocess center codeif (onclick.indexOf('return false;') != -1) {formObj.popupreturn.checked = true;onclick = onclick.replace('return false;', '');} elseformObj.popupreturn.checked = false;var onClickData = parseLink(onclick);if (onClickData != null) {formObj.ispopup.checked = true;setPopupControlsDisabled(false);var onClickWindowOptions = parseOptions(onClickData['options']);var url = onClickData['url'];formObj.popupname.value = onClickData['target'];formObj.popupurl.value = url;formObj.popupwidth.value = getOption(onClickWindowOptions, 'width');formObj.popupheight.value = getOption(onClickWindowOptions, 'height');formObj.popupleft.value = getOption(onClickWindowOptions, 'left');formObj.popuptop.value = getOption(onClickWindowOptions, 'top');if (formObj.popupleft.value.indexOf('screen') != -1)formObj.popupleft.value = "c";if (formObj.popuptop.value.indexOf('screen') != -1)formObj.popuptop.value = "c";formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes";formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes";formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes";formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes";formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes";formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes";formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes";buildOnClick();}}function parseFunction(onclick) {var formObj = document.forms[0];var onClickData = parseLink(onclick);// TODO: Add stuff here}function getOption(opts, name) {return typeof(opts[name]) == "undefined" ? "" : opts[name];}function setPopupControlsDisabled(state) {var formObj = document.forms[0];formObj.popupname.disabled = state;formObj.popupurl.disabled = state;formObj.popupwidth.disabled = state;formObj.popupheight.disabled = state;formObj.popupleft.disabled = state;formObj.popuptop.disabled = state;formObj.popuplocation.disabled = state;formObj.popupscrollbars.disabled = state;formObj.popupmenubar.disabled = state;formObj.popupresizable.disabled = state;formObj.popuptoolbar.disabled = state;formObj.popupstatus.disabled = state;formObj.popupreturn.disabled = state;formObj.popupdependent.disabled = state;setBrowserDisabled('popupurlbrowser', state);}function parseLink(link) {link = link.replace(new RegExp(''', 'g'), "'");var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1");// Is function name a template functionvar template = templates[fnName];if (template) {// Build regexpvar variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi"));var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\(";var replaceStr = "";for (var i=0; i<variableNames.length; i++) {// Is string valueif (variableNames[i].indexOf("'${") != -1)regExp += "'(.*)'";else // Number valueregExp += "([0-9]*)";replaceStr += "$" + (i+1);// Cleanup variable namevariableNames[i] = variableNames[i].replace(new RegExp("[^A-Za-z0-9]", "gi"), "");if (i != variableNames.length-1) {regExp += "\\s*,\\s*";replaceStr += "<delim>";} elseregExp += ".*";}regExp += "\\);?";// Build variable arrayvar variables = [];variables["_function"] = fnName;var variableValues = link.replace(new RegExp(regExp, "gi"), replaceStr).split('<delim>');for (var i=0; i<variableNames.length; i++)variables[variableNames[i]] = variableValues[i];return variables;}return null;}function parseOptions(opts) {if (opts == null || opts == "")return [];// Cleanup the optionsopts = opts.toLowerCase();opts = opts.replace(/;/g, ",");opts = opts.replace(/[^0-9a-z=,]/g, "");var optionChunks = opts.split(',');var options = [];for (var i=0; i<optionChunks.length; i++) {var parts = optionChunks[i].split('=');if (parts.length == 2)options[parts[0]] = parts[1];}return options;}function buildOnClick() {var formObj = document.forms[0];if (!formObj.ispopup.checked) {formObj.onclick.value = "";return;}var onclick = "window.open('";var url = formObj.popupurl.value;onclick += url + "','";onclick += formObj.popupname.value + "','";if (formObj.popuplocation.checked)onclick += "location=yes,";if (formObj.popupscrollbars.checked)onclick += "scrollbars=yes,";if (formObj.popupmenubar.checked)onclick += "menubar=yes,";if (formObj.popupresizable.checked)onclick += "resizable=yes,";if (formObj.popuptoolbar.checked)onclick += "toolbar=yes,";if (formObj.popupstatus.checked)onclick += "status=yes,";if (formObj.popupdependent.checked)onclick += "dependent=yes,";if (formObj.popupwidth.value != "")onclick += "width=" + formObj.popupwidth.value + ",";if (formObj.popupheight.value != "")onclick += "height=" + formObj.popupheight.value + ",";if (formObj.popupleft.value != "") {if (formObj.popupleft.value != "c")onclick += "left=" + formObj.popupleft.value + ",";elseonclick += "left='+(screen.availWidth/2-" + (formObj.popupwidth.value/2) + ")+',";}if (formObj.popuptop.value != "") {if (formObj.popuptop.value != "c")onclick += "top=" + formObj.popuptop.value + ",";elseonclick += "top='+(screen.availHeight/2-" + (formObj.popupheight.value/2) + ")+',";}if (onclick.charAt(onclick.length-1) == ',')onclick = onclick.substring(0, onclick.length-1);onclick += "');";if (formObj.popupreturn.checked)onclick += "return false;";// tinyMCE.debug(onclick);formObj.onclick.value = onclick;if (formObj.href.value == "")formObj.href.value = url;}function setAttrib(elm, attrib, value) {var formObj = document.forms[0];var valueElm = formObj.elements[attrib.toLowerCase()];var dom = tinyMCEPopup.editor.dom;if (typeof(value) == "undefined" || value == null) {value = "";if (valueElm)value = valueElm.value;}// Clean up the styleif (attrib == 'style')value = dom.serializeStyle(dom.parseStyle(value), 'a');dom.setAttrib(elm, attrib, value);}function getAnchorListHTML(id, target) {var ed = tinyMCEPopup.editor, nodes = ed.dom.select('a'), name, i, len, html = "";for (i=0, len=nodes.length; i<len; i++) {if ((name = ed.dom.getAttrib(nodes[i], "name")) != "")html += '<option value="#' + name + '">' + name + '</option>';}if (html == "")return "";html = '<select id="' + id + '" name="' + id + '" class="mceAnchorList"'+ ' onchange="this.form.' + target + '.value=this.options[this.selectedIndex].value"'+ '>'+ '<option value="">---</option>'+ html+ '</select>';return html;}function insertAction() {var inst = tinyMCEPopup.editor;var elm, elementArray, i;elm = inst.selection.getNode();checkPrefix(document.forms[0].href);elm = inst.dom.getParent(elm, "A");// Remove element if there is no hrefif (!document.forms[0].href.value) {i = inst.selection.getBookmark();inst.dom.remove(elm, 1);inst.selection.moveToBookmark(i);tinyMCEPopup.execCommand("mceEndUndoLevel");tinyMCEPopup.close();return;}// Create new anchor elementsif (elm == null) {inst.getDoc().execCommand("unlink", false, null);tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1});elementArray = tinymce.grep(inst.dom.select("a"), function(n) {return inst.dom.getAttrib(n, 'href') == '#mce_temp_url#';});for (i=0; i<elementArray.length; i++)setAllAttribs(elm = elementArray[i]);} elsesetAllAttribs(elm);// Don't move caret if selection was imageif (elm.childNodes.length != 1 || elm.firstChild.nodeName != 'IMG') {inst.focus();inst.selection.select(elm);inst.selection.collapse(0);tinyMCEPopup.storeSelection();}tinyMCEPopup.execCommand("mceEndUndoLevel");tinyMCEPopup.close();}function setAllAttribs(elm) {var formObj = document.forms[0];var href = formObj.href.value.replace(/ /g, '%20');var target = getSelectValue(formObj, 'targetlist');setAttrib(elm, 'href', href);setAttrib(elm, 'title');setAttrib(elm, 'target', target == '_self' ? '' : target);setAttrib(elm, 'id');setAttrib(elm, 'style');setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));setAttrib(elm, 'rel');setAttrib(elm, 'rev');setAttrib(elm, 'charset');setAttrib(elm, 'hreflang');setAttrib(elm, 'dir');setAttrib(elm, 'lang');setAttrib(elm, 'tabindex');setAttrib(elm, 'accesskey');setAttrib(elm, 'type');setAttrib(elm, 'onfocus');setAttrib(elm, 'onblur');setAttrib(elm, 'onclick');setAttrib(elm, 'ondblclick');setAttrib(elm, 'onmousedown');setAttrib(elm, 'onmouseup');setAttrib(elm, 'onmouseover');setAttrib(elm, 'onmousemove');setAttrib(elm, 'onmouseout');setAttrib(elm, 'onkeypress');setAttrib(elm, 'onkeydown');setAttrib(elm, 'onkeyup');// Refresh in old MSIEif (tinyMCE.isMSIE5)elm.outerHTML = elm.outerHTML;}function getSelectValue(form_obj, field_name) {var elm = form_obj.elements[field_name];if (!elm || elm.options == null || elm.selectedIndex == -1)return "";return elm.options[elm.selectedIndex].value;}function getLinkListHTML(elm_id, target_form_element, onchange_func) {if (typeof(tinyMCELinkList) == "undefined" || tinyMCELinkList.length == 0)return "";var html = "";html += '<select id="' + elm_id + '" name="' + elm_id + '"';html += ' class="mceLinkList" onfoc2us="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';html += 'this.options[this.selectedIndex].value;';if (typeof(onchange_func) != "undefined")html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';html += '"><option value="">---</option>';for (var i=0; i<tinyMCELinkList.length; i++)html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';html += '</select>';return html;// tinyMCE.debug('-- image list start --', html, '-- image list end --');}function getTargetListHTML(elm_id, target_form_element) {var targets = tinyMCEPopup.getParam('theme_advanced_link_targets', '').split(';');var html = '';html += '<select id="' + elm_id + '" name="' + elm_id + '" onf2ocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';html += 'this.options[this.selectedIndex].value;">';html += '<option value="_self">' + tinyMCEPopup.getLang('advlink_dlg.target_same') + '</option>';html += '<option value="_blank">' + tinyMCEPopup.getLang('advlink_dlg.target_blank') + ' (_blank)</option>';html += '<option value="_parent">' + tinyMCEPopup.getLang('advlink_dlg.target_parent') + ' (_parent)</option>';html += '<option value="_top">' + tinyMCEPopup.getLang('advlink_dlg.target_top') + ' (_top)</option>';for (var i=0; i<targets.length; i++) {var key, value;if (targets[i] == "")continue;key = targets[i].split('=')[0];value = targets[i].split('=')[1];html += '<option value="' + key + '">' + value + ' (' + key + ')</option>';}html += '</select>';return html;}// While loadingpreinit();tinyMCEPopup.onInit.add(init);