JAVASCRIPT   29

Functions for the advlink plugin popup

Guest on 15th June 2022 04:44:55 AM

  1. /* Functions for the advlink plugin popup */
  2.  
  3. var templates = {
  4.         "window.open" : "window.open('${url}','${target}','${options}')"
  5. };
  6.  
  7. function preinit() {
  8.         // Initialize
  9.         tinyMCE.setWindowArg('mce_windowresize', false);
  10.  
  11.         // Import external list url javascript
  12.         var url = tinyMCE.getParam("external_link_list_url");
  13.         if (url != null) {
  14.                 // Fix relative
  15.                 if (url.charAt(0) != '/' && url.indexOf('://') == -1)
  16.                         url = tinyMCE.documentBasePath + "/" + url;
  17.  
  18.                 document.write('<sc'+'ript language="javascript" type="text/javascript" src="' + url + '"></sc'+'ript>');
  19.         }
  20. }
  21.  
  22. function changeClass() {
  23.         var formObj = document.forms[0];
  24.         formObj.classes.value = getSelectValue(formObj, 'classlist');
  25. }
  26.  
  27. function init() {
  28.         tinyMCEPopup.resizeToInnerSize();
  29.  
  30.         var formObj = document.forms[0];
  31.         var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
  32.         var elm = inst.getFocusElement();
  33.         var action = "insert";
  34.         var html;
  35.  
  36.         document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink');
  37.         document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink');
  38.         document.getElementById('linklisthrefcontainer').innerHTML = getLinkListHTML('linklisthref','href');
  39.         document.getElementById('anchorlistcontainer').innerHTML = getAnchorListHTML('anchorlist','href');
  40.         document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target');
  41.  
  42.         // Link list
  43.         html = getLinkListHTML('linklisthref','href');
  44.         if (html == "")
  45.                 document.getElementById("linklisthrefrow").style.display = 'none';
  46.         else
  47.                 document.getElementById("linklisthrefcontainer").innerHTML = html;
  48.  
  49.         // Resize some elements
  50.         if (isVisible('hrefbrowser'))
  51.                 document.getElementById('href').style.width = '260px';
  52.  
  53.         if (isVisible('popupurlbrowser'))
  54.                 document.getElementById('popupurl').style.width = '180px';
  55.  
  56.         elm = tinyMCE.getParentElement(elm, "a");
  57.         if (elm != null && elm.nodeName == "A")
  58.                 action = "update";
  59.  
  60.         formObj.insert.value = tinyMCE.getLang('lang_' + action, 'Insert', true);
  61.  
  62.         setPopupControlsDisabled(true);
  63.  
  64.         if (action == "update") {
  65.                 var href = tinyMCE.getAttrib(elm, 'href');
  66.  
  67.                 href = convertURL(href, elm, true);
  68.  
  69.                 // Use mce_href if found
  70.                 var mceRealHref = tinyMCE.getAttrib(elm, 'mce_href');
  71.                 if (mceRealHref != "") {
  72.                         href = mceRealHref;
  73.  
  74.                         if (tinyMCE.getParam('convert_urls'))
  75.                                 href = convertURL(href, elm, true);
  76.                 }
  77.  
  78.                 var onclick = tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onclick'));
  79.  
  80.                 // Setup form data
  81.                 setFormValue('href', href);
  82.                 setFormValue('title', tinyMCE.getAttrib(elm, 'title'));
  83.                 setFormValue('id', tinyMCE.getAttrib(elm, 'id'));
  84.                 setFormValue('style', tinyMCE.serializeStyle(tinyMCE.parseStyle(tinyMCE.getAttrib(elm, "style"))));
  85.                 setFormValue('rel', tinyMCE.getAttrib(elm, 'rel'));
  86.                 setFormValue('rev', tinyMCE.getAttrib(elm, 'rev'));
  87.                 setFormValue('charset', tinyMCE.getAttrib(elm, 'charset'));
  88.                 setFormValue('hreflang', tinyMCE.getAttrib(elm, 'hreflang'));
  89.                 setFormValue('dir', tinyMCE.getAttrib(elm, 'dir'));
  90.                 setFormValue('lang', tinyMCE.getAttrib(elm, 'lang'));
  91.                 setFormValue('tabindex', tinyMCE.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : ""));
  92.                 setFormValue('accesskey', tinyMCE.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : ""));
  93.                 setFormValue('type', tinyMCE.getAttrib(elm, 'type'));
  94.                 setFormValue('onfocus', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onfocus')));
  95.                 setFormValue('onblur', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onblur')));
  96.                 setFormValue('onclick', onclick);
  97.                 setFormValue('ondblclick', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'ondblclick')));
  98.                 setFormValue('onmousedown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousedown')));
  99.                 setFormValue('onmouseup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseup')));
  100.                 setFormValue('onmouseover', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseover')));
  101.                 setFormValue('onmousemove', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmousemove')));
  102.                 setFormValue('onmouseout', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onmouseout')));
  103.                 setFormValue('onkeypress', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeypress')));
  104.                 setFormValue('onkeydown', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeydown')));
  105.                 setFormValue('onkeyup', tinyMCE.cleanupEventStr(tinyMCE.getAttrib(elm, 'onkeyup')));
  106.                 setFormValue('target', tinyMCE.getAttrib(elm, 'target'));
  107.                 setFormValue('classes', tinyMCE.getAttrib(elm, 'class'));
  108.  
  109.                 // Parse onclick data
  110.                 if (onclick != null && onclick.indexOf('window.open') != -1)
  111.                         parseWindowOpen(onclick);
  112.                 else
  113.                         parseFunction(onclick);
  114.  
  115.                 // Select by the values
  116.                 selectByValue(formObj, 'dir', tinyMCE.getAttrib(elm, 'dir'));
  117.                 selectByValue(formObj, 'rel', tinyMCE.getAttrib(elm, 'rel'));
  118.                 selectByValue(formObj, 'rev', tinyMCE.getAttrib(elm, 'rev'));
  119.                 selectByValue(formObj, 'linklisthref', href);
  120.  
  121.                 if (href.charAt(0) == '#')
  122.                         selectByValue(formObj, 'anchorlist', href);
  123.  
  124.                 addClassesToList('classlist', 'advlink_styles');
  125.  
  126.                 selectByValue(formObj, 'classlist', tinyMCE.getAttrib(elm, 'class'), true);
  127.                 selectByValue(formObj, 'targetlist', tinyMCE.getAttrib(elm, 'target'), true);
  128.         } else
  129.                 addClassesToList('classlist', 'advlink_styles');
  130.  
  131.         window.focus();
  132. }
  133.  
  134. function checkPrefix(n) {
  135.         if (!Validator.isEmpty(n) && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCE.getLang('lang_is_email')))
  136.                 n.value = 'mailto:' + n.value;
  137.  
  138.         if (/^\s*www./i.test(n.value) && confirm(tinyMCE.getLang('lang_is_external')))
  139.                 n.value = 'http://' + n.value;
  140. }
  141.  
  142. function setFormValue(name, value) {
  143.         document.forms[0].elements[name].value = value;
  144. }
  145.  
  146. function convertURL(url, node, on_save) {
  147.         return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);");
  148. }
  149.  
  150. function parseWindowOpen(onclick) {
  151.         var formObj = document.forms[0];
  152.  
  153.         // Preprocess center code
  154.         if (onclick.indexOf('return false;') != -1) {
  155.                 formObj.popupreturn.checked = true;
  156.                 onclick = onclick.replace('return false;', '');
  157.         } else
  158.                 formObj.popupreturn.checked = false;
  159.  
  160.         var onClickData = parseLink(onclick);
  161.  
  162.         if (onClickData != null) {
  163.                 formObj.ispopup.checked = true;
  164.                 setPopupControlsDisabled(false);
  165.  
  166.                 var onClickWindowOptions = parseOptions(onClickData['options']);
  167.                 var url = onClickData['url'];
  168.  
  169.                 if (tinyMCE.getParam('convert_urls'))
  170.                         url = convertURL(url, null, true);
  171.  
  172.                 formObj.popupname.value = onClickData['target'];
  173.                 formObj.popupurl.value = url;
  174.                 formObj.popupwidth.value = getOption(onClickWindowOptions, 'width');
  175.                 formObj.popupheight.value = getOption(onClickWindowOptions, 'height');
  176.  
  177.                 formObj.popupleft.value = getOption(onClickWindowOptions, 'left');
  178.                 formObj.popuptop.value = getOption(onClickWindowOptions, 'top');
  179.  
  180.                 if (formObj.popupleft.value.indexOf('screen') != -1)
  181.                         formObj.popupleft.value = "c";
  182.  
  183.                 if (formObj.popuptop.value.indexOf('screen') != -1)
  184.                         formObj.popuptop.value = "c";
  185.  
  186.                 formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes";
  187.                 formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes";
  188.                 formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes";
  189.                 formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes";
  190.                 formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes";
  191.                 formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes";
  192.                 formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes";
  193.  
  194.                 buildOnClick();
  195.         }
  196. }
  197.  
  198. function parseFunction(onclick) {
  199.         var formObj = document.forms[0];
  200.         var onClickData = parseLink(onclick);
  201.  
  202.         // TODO: Add stuff here
  203. }
  204.  
  205. function getOption(opts, name) {
  206.         return typeof(opts[name]) == "undefined" ? "" : opts[name];
  207. }
  208.  
  209. function setPopupControlsDisabled(state) {
  210.         var formObj = document.forms[0];
  211.  
  212.         formObj.popupname.disabled = state;
  213.         formObj.popupurl.disabled = state;
  214.         formObj.popupwidth.disabled = state;
  215.         formObj.popupheight.disabled = state;
  216.         formObj.popupleft.disabled = state;
  217.         formObj.popuptop.disabled = state;
  218.         formObj.popuplocation.disabled = state;
  219.         formObj.popupscrollbars.disabled = state;
  220.         formObj.popupmenubar.disabled = state;
  221.         formObj.popupresizable.disabled = state;
  222.         formObj.popuptoolbar.disabled = state;
  223.         formObj.popupstatus.disabled = state;
  224.         formObj.popupreturn.disabled = state;
  225.         formObj.popupdependent.disabled = state;
  226.  
  227.         setBrowserDisabled('popupurlbrowser', state);
  228. }
  229.  
  230. function parseLink(link) {
  231.         link = link.replace(new RegExp('&#39;', 'g'), "'");
  232.  
  233.         var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1");
  234.  
  235.         // Is function name a template function
  236.         var template = templates[fnName];
  237.         if (template) {
  238.                 // Build regexp
  239.                 var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi"));
  240.                 var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\(";
  241.                 var replaceStr = "";
  242.                 for (var i=0; i<variableNames.length; i++) {
  243.                         // Is string value
  244.                         if (variableNames[i].indexOf("'${") != -1)
  245.                                 regExp += "'(.*)'";
  246.                         else // Number value
  247.                                 regExp += "([0-9]*)";
  248.  
  249.                         replaceStr += "$" + (i+1);
  250.  
  251.                         // Cleanup variable name
  252.                         variableNames[i] = variableNames[i].replace(new RegExp("[^A-Za-z0-9]", "gi"), "");
  253.  
  254.                         if (i != variableNames.length-1) {
  255.                                 regExp += "\\s*,\\s*";
  256.                                 replaceStr += "<delim>";
  257.                         } else
  258.                                 regExp += ".*";
  259.                 }
  260.  
  261.                 regExp += "\\);?";
  262.  
  263.                 // Build variable array
  264.                 var variables = new Array();
  265.                 variables["_function"] = fnName;
  266.                 var variableValues = link.replace(new RegExp(regExp, "gi"), replaceStr).split('<delim>');
  267.                 for (var i=0; i<variableNames.length; i++)
  268.                         variables[variableNames[i]] = variableValues[i];
  269.  
  270.                 return variables;
  271.         }
  272.  
  273.         return null;
  274. }
  275.  
  276. function parseOptions(opts) {
  277.         if (opts == null || opts == "")
  278.                 return new Array();
  279.  
  280.         // Cleanup the options
  281.         opts = opts.toLowerCase();
  282.         opts = opts.replace(/;/g, ",");
  283.         opts = opts.replace(/[^0-9a-z=,]/g, "");
  284.  
  285.         var optionChunks = opts.split(',');
  286.         var options = new Array();
  287.  
  288.         for (var i=0; i<optionChunks.length; i++) {
  289.                 var parts = optionChunks[i].split('=');
  290.  
  291.                 if (parts.length == 2)
  292.                         options[parts[0]] = parts[1];
  293.         }
  294.  
  295.         return options;
  296. }
  297.  
  298. function buildOnClick() {
  299.         var formObj = document.forms[0];
  300.  
  301.         if (!formObj.ispopup.checked) {
  302.                 formObj.onclick.value = "";
  303.                 return;
  304.         }
  305.  
  306.         var onclick = "window.open('";
  307.         var url = formObj.popupurl.value;
  308.  
  309.         if (tinyMCE.getParam('convert_urls'))
  310.                 url = convertURL(url, null, true);
  311.  
  312.         onclick += url + "','";
  313.         onclick += formObj.popupname.value + "','";
  314.  
  315.         if (formObj.popuplocation.checked)
  316.                 onclick += "location=yes,";
  317.  
  318.         if (formObj.popupscrollbars.checked)
  319.                 onclick += "scrollbars=yes,";
  320.  
  321.         if (formObj.popupmenubar.checked)
  322.                 onclick += "menubar=yes,";
  323.  
  324.         if (formObj.popupresizable.checked)
  325.                 onclick += "resizable=yes,";
  326.  
  327.         if (formObj.popuptoolbar.checked)
  328.                 onclick += "toolbar=yes,";
  329.  
  330.         if (formObj.popupstatus.checked)
  331.                 onclick += "status=yes,";
  332.  
  333.         if (formObj.popupdependent.checked)
  334.                 onclick += "dependent=yes,";
  335.  
  336.         if (formObj.popupwidth.value != "")
  337.                 onclick += "width=" + formObj.popupwidth.value + ",";
  338.  
  339.         if (formObj.popupheight.value != "")
  340.                 onclick += "height=" + formObj.popupheight.value + ",";
  341.  
  342.         if (formObj.popupleft.value != "") {
  343.                 if (formObj.popupleft.value != "c")
  344.                         onclick += "left=" + formObj.popupleft.value + ",";
  345.                 else
  346.                         onclick += "left='+(screen.availWidth/2-" + (formObj.popupwidth.value/2) + ")+',";
  347.         }
  348.  
  349.         if (formObj.popuptop.value != "") {
  350.                 if (formObj.popuptop.value != "c")
  351.                         onclick += "top=" + formObj.popuptop.value + ",";
  352.                 else
  353.                         onclick += "top='+(screen.availHeight/2-" + (formObj.popupheight.value/2) + ")+',";
  354.         }
  355.  
  356.         if (onclick.charAt(onclick.length-1) == ',')
  357.                 onclick = onclick.substring(0, onclick.length-1);
  358.  
  359.         onclick += "');";
  360.  
  361.         if (formObj.popupreturn.checked)
  362.                 onclick += "return false;";
  363.  
  364.         // tinyMCE.debug(onclick);
  365.  
  366.         formObj.onclick.value = onclick;
  367.  
  368.         if (formObj.href.value == "")
  369.                 formObj.href.value = url;
  370. }
  371.  
  372. function setAttrib(elm, attrib, value) {
  373.         var formObj = document.forms[0];
  374.         var valueElm = formObj.elements[attrib.toLowerCase()];
  375.  
  376.         if (typeof(value) == "undefined" || value == null) {
  377.                 value = "";
  378.  
  379.                 if (valueElm)
  380.                         value = valueElm.value;
  381.         }
  382.  
  383.         if (value != "") {
  384.                 elm.setAttribute(attrib.toLowerCase(), value);
  385.  
  386.                 if (attrib == "style")
  387.                         attrib = "style.cssText";
  388.  
  389.                 if (attrib.substring(0, 2) == 'on')
  390.                         value = 'return true;' + value;
  391.  
  392.                 if (attrib == "class")
  393.                         attrib = "className";
  394.  
  395.                 eval('elm.' + attrib + "=value;");
  396.         } else
  397.                 elm.removeAttribute(attrib);
  398. }
  399.  
  400. function getAnchorListHTML(id, target) {
  401.         var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
  402.         var nodes = inst.getBody().getElementsByTagName("a"), name, i;
  403.         var html = "";
  404.  
  405.         html += '<select id="' + id + '" name="' + id + '" class="mceAnchorList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target + '.value=';
  406.         html += 'this.options[this.selectedIndex].value;">';
  407.         html += '<option value="">---</option>';
  408.  
  409.         for (i=0; i<nodes.length; i++) {
  410.                 if ((name = tinyMCE.getAttrib(nodes[i], "name")) != "")
  411.                         html += '<option value="#' + name + '">' + name + '</option>';
  412.         }
  413.  
  414.         html += '</select>';
  415.  
  416.         return html;
  417. }
  418.  
  419. function insertAction() {
  420.         var inst = tinyMCE.getInstanceById(tinyMCE.getWindowArg('editor_id'));
  421.         var elm = inst.getFocusElement();
  422.  
  423.         checkPrefix(document.forms[0].href);
  424.  
  425.         elm = tinyMCE.getParentElement(elm, "a");
  426.  
  427.         tinyMCEPopup.execCommand("mceBeginUndoLevel");
  428.  
  429.         // Create new anchor elements
  430.         if (elm == null) {
  431.                 if (tinyMCE.isSafari)
  432.                         tinyMCEPopup.execCommand("mceInsertContent", false, '<a href="#mce_temp_url#">' + inst.selection.getSelectedHTML() + '</a>');
  433.                 else
  434.                         tinyMCEPopup.execCommand("createlink", false, "#mce_temp_url#");
  435.  
  436.                 var elementArray = tinyMCE.getElementsByAttributeValue(inst.getBody(), "a", "href", "#mce_temp_url#");
  437.                 for (var i=0; i<elementArray.length; i++) {
  438.                         var elm = elementArray[i];
  439.  
  440.                         // Move cursor to end
  441.                         try {
  442.                                 tinyMCE.selectedInstance.selection.collapse(false);
  443.                         } catch (ex) {
  444.                                 // Ignore
  445.                         }
  446.  
  447.                         // Move cursor behind the new anchor
  448.                         // Don't remember why this was needed so it's now removed
  449.                         /*
  450.                         if (tinyMCE.isGecko) {
  451.                                 var sp = inst.getDoc().createTextNode(" ");
  452.  
  453.                                 if (elm.nextSibling)
  454.                                         elm.parentNode.insertBefore(sp, elm.nextSibling);
  455.                                 else
  456.                                         elm.parentNode.appendChild(sp);
  457.  
  458.                                 // Set range after link
  459.                                 var rng = inst.getDoc().createRange();
  460.                                 rng.setStartAfter(elm);
  461.                                 rng.setEndAfter(elm);
  462.  
  463.                                 // Update selection
  464.                                 var sel = inst.getSel();
  465.                                 sel.removeAllRanges();
  466.                                 sel.addRange(rng);
  467.                         }
  468.                         */
  469.  
  470.                         setAllAttribs(elm);
  471.                 }
  472.         } else
  473.                 setAllAttribs(elm);
  474.  
  475.         tinyMCE._setEventsEnabled(inst.getBody(), false);
  476.         tinyMCEPopup.execCommand("mceEndUndoLevel");
  477.         tinyMCEPopup.close();
  478. }
  479.  
  480. function setAllAttribs(elm) {
  481.         var formObj = document.forms[0];
  482.         var href = formObj.href.value;
  483.         var target = getSelectValue(formObj, 'targetlist');
  484.  
  485.         // Make anchors absolute
  486.         if (href.charAt(0) != '#' && tinyMCE.getParam('convert_urls'))
  487.                 href = convertURL(href, elm);
  488.  
  489.         setAttrib(elm, 'href', href);
  490.         setAttrib(elm, 'mce_href', href);
  491.         setAttrib(elm, 'title');
  492.         setAttrib(elm, 'target', target == '_self' ? '' : target);
  493.         setAttrib(elm, 'id');
  494.         setAttrib(elm, 'style');
  495.         setAttrib(elm, 'class', getSelectValue(formObj, 'classlist'));
  496.         setAttrib(elm, 'rel');
  497.         setAttrib(elm, 'rev');
  498.         setAttrib(elm, 'charset');
  499.         setAttrib(elm, 'hreflang');
  500.         setAttrib(elm, 'dir');
  501.         setAttrib(elm, 'lang');
  502.         setAttrib(elm, 'tabindex');
  503.         setAttrib(elm, 'accesskey');
  504.         setAttrib(elm, 'type');
  505.         setAttrib(elm, 'onfocus');
  506.         setAttrib(elm, 'onblur');
  507.         setAttrib(elm, 'onclick');
  508.         setAttrib(elm, 'ondblclick');
  509.         setAttrib(elm, 'onmousedown');
  510.         setAttrib(elm, 'onmouseup');
  511.         setAttrib(elm, 'onmouseover');
  512.         setAttrib(elm, 'onmousemove');
  513.         setAttrib(elm, 'onmouseout');
  514.         setAttrib(elm, 'onkeypress');
  515.         setAttrib(elm, 'onkeydown');
  516.         setAttrib(elm, 'onkeyup');
  517.  
  518.         // Refresh in old MSIE
  519.         if (tinyMCE.isMSIE5)
  520.                 elm.outerHTML = elm.outerHTML;
  521. }
  522.  
  523. function getSelectValue(form_obj, field_name) {
  524.         var elm = form_obj.elements[field_name];
  525.  
  526.         if (elm == null || elm.options == null)
  527.                 return "";
  528.  
  529.         return elm.options[elm.selectedIndex].value;
  530. }
  531.  
  532. function getLinkListHTML(elm_id, target_form_element, onchange_func) {
  533.         if (typeof(tinyMCELinkList) == "undefined" || tinyMCELinkList.length == 0)
  534.                 return "";
  535.  
  536.         var html = "";
  537.  
  538.         html += '<select id="' + elm_id + '" name="' + elm_id + '"';
  539.         html += ' class="mceLinkList" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
  540.         html += 'this.options[this.selectedIndex].value;';
  541.  
  542.         if (typeof(onchange_func) != "undefined")
  543.                 html += onchange_func + '(\'' + target_form_element + '\',this.options[this.selectedIndex].text,this.options[this.selectedIndex].value);';
  544.  
  545.         html += '"><option value="">---</option>';
  546.  
  547.         for (var i=0; i<tinyMCELinkList.length; i++)
  548.                 html += '<option value="' + tinyMCELinkList[i][1] + '">' + tinyMCELinkList[i][0] + '</option>';
  549.  
  550.         html += '</select>';
  551.  
  552.         return html;
  553.  
  554.         // tinyMCE.debug('-- image list start --', html, '-- image list end --');
  555. }
  556.  
  557. function getTargetListHTML(elm_id, target_form_element) {
  558.         var targets = tinyMCE.getParam('theme_advanced_link_targets', '').split(';');
  559.         var html = '';
  560.  
  561.         html += '<select id="' + elm_id + '" name="' + elm_id + '" onfocus="tinyMCE.addSelectAccessibility(event, this, window);" onchange="this.form.' + target_form_element + '.value=';
  562.         html += 'this.options[this.selectedIndex].value;">';
  563.  
  564.         html += '<option value="_self">' + tinyMCE.getLang('lang_advlink_target_same') + '</option>';
  565.         html += '<option value="_blank">' + tinyMCE.getLang('lang_advlink_target_blank') + ' (_blank)</option>';
  566.         html += '<option value="_parent">' + tinyMCE.getLang('lang_advlink_target_parent') + ' (_parent)</option>';
  567.         html += '<option value="_top">' + tinyMCE.getLang('lang_advlink_target_top') + ' (_top)</option>';
  568.  
  569.         for (var i=0; i<targets.length; i++) {
  570.                 var key, value;
  571.  
  572.                 if (targets[i] == "")
  573.                         continue;
  574.  
  575.                 key = targets[i].split('=')[0];
  576.                 value = targets[i].split('=')[1];
  577.  
  578.                 html += '<option value="' + key + '">' + value + ' (' + key + ')</option>';
  579.         }
  580.  
  581.         html += '</select>';
  582.  
  583.         return html;
  584. }
  585.  
  586. // While loading
  587. preinit();

Raw Paste


Login or Register to edit or fork this paste. It's free.