function preinit() { // Initialize tinyMCE.setWindowArg('mce_windowresize', false); } function init() { if (tinyMCE.isMSIE) { tinyMCEPopup.resizeToInnerSize(); } else { tinyMCEPopup.resizeToContent(); } window.focus(); loadCategories(null); } function insertAction() { var inst = tinyMCE.getInstanceById( tinyMCE.getWindowArg( 'editor_id' ) ); var elm = inst.getFocusElement(); elm = tinyMCE.getParentElement( elm, "a" ); tinyMCEPopup.execCommand( "mceBeginUndoLevel" ); // Create new anchor elements if ( elm == null ) { var form = document.forms['elemlist']; var sel_option = form.nodelist.options[form.nodelist.selectedIndex]; if ( sel_option == null ) return; var insertText = ''; var nid = sel_option.value; if (inst.selection.getSelectedText().length == 0) { insertText = sel_option.text; tinyMCEPopup.execCommand("mceInsertContent", false, '' + insertText + ''); } else { tinyMCEPopup.execCommand("mceInsertContent", false, '' + inst.selection.getSelectedHTML() + ''); } // end (getSelectedText == 0) } else setAllAttribs( elm ); tinyMCE._setEventsEnabled( inst.getBody(), false ); tinyMCEPopup.execCommand( "mceEndUndoLevel" ); tinyMCEPopup.close(); } function setAllAttribs(elm) { var formObj = document.forms[0]; var target = getSelectValue( formObj, 'nodelist' ); // Make uri absolute setAttrib( elm, 'href', convertURL( target, elm ) ); // Refresh in old MSIE if ( tinyMCE.isMSIE5 ) elm.outerHTML = elm.outerHTML; } function convertURL(url, node, on_save) { return eval("tinyMCEPopup.windowOpener." + tinyMCE.settings['urlconverter_callback'] + "(url, node, on_save);"); } function setAttrib(elm, attrib, value) { var formObj = document.forms[0]; var valueElm = formObj.elements[attrib.toLowerCase()]; if (typeof(value) == "undefined" || value == null) { value = ""; if (valueElm) value = valueElm.value; } if (value != "") { elm.setAttribute(attrib.toLowerCase(), value); if (attrib == "style") attrib = "style.cssText"; if (attrib.substring(0, 2) == 'on') value = 'return true;' + value; if (attrib == "class") attrib = "className"; eval('elm.' + attrib + "=value;"); } else elm.removeAttribute(attrib); } /** * status box **/ function statusImg(show) { var status = document.getElementById('statusImg'); if (status == null) return; if (show) status.style.display = 'block'; else status.style.display = 'none'; } /* * functions to provide AJAX-functionality */ var request; function loadCategories(obj) { statusImg(true); var catId = ''; var vId = ''; if (obj != null) { catId = obj.value; var fSel = document.getElementById('browse_sel_0_sel'); if (fSel !== null) vId = fSel.value; } var url = tinyMCE.baseURL.substring(0, tinyMCE.baseURL.indexOf('modules/')); if (url.indexOf('sites/') > -1) url = url.substring(0, url.indexOf('sites/')); url = url + 'ltc/linktonode'; // native XMLHttpRequest object if (window.XMLHttpRequest) { req = new XMLHttpRequest(); req.onreadystatechange = function() { requestDone(obj); }; var reqStr = '/'; if (catId != vId) reqStr += vId + '/'; reqStr += catId; req.open("GET", url + reqStr, true); req.send(null); } else { alert("XMLHttpRequest not supported!"); } statusImg(false); } function requestDone(obj) { switch(req.readyState) { case 1: case 2: case 3: statusImg(true); break; case 4: // only if req is "loaded" // only if "OK" if (req.status == 200) { results = parseJson(req.responseText); if (obj == null) { // create first select createSelect(false, results); } else { // create child select var selected = obj.value var div_sel = obj.parentNode; _removeDescendant(div_sel); if (selected == -1) return; if (div_sel.nodeName != 'DIV') { alert( 'wrong DOM!' ); return; } createSelect(div_sel, results); } listNodes(results); } else { alert(req.statusText); } statusImg( false ); break; default: } // switch } /** * creates a new select element **/ function createSelect(parent, results) { var form = document.getElementById('form_browse'); if (!form) { alert('Error: form_browse not found!'); return; } var elemname; if (parent == false) elemname = 'browse_sel_-1'; else elemname = parent.id; var level = parseInt(elemname.substring(elemname.lastIndexOf("_") + 1, elemname.length)) + 1; var elemBase = elemname.substring(0, elemname.lastIndexOf("_") + 1); if ((results == null) || (results.category == null) || (results.category == false)) return; var sel_div = document.createElement('div'); var attrs = new Array(); attrs['name'] = elemBase + level; attrs['id'] = attrs['name']; attrs['style'] = 'display: block; margin: 1px 0; padding: 0; border: 0;'; for (attrName in attrs) sel_div.setAttribute(attrName, attrs[attrName]); form.insertBefore(sel_div, document.getElementById('dummy')); /* create