// // htmlArea v2.03 - Copyright (c) 2002 interactivetools.com, inc. // This copyright notice MUST stay intact for use (see license.txt). // // A free WYSIWYG editor replacement for '; // add context menu editor += ''; // hide original textarea and insert htmlarea after it if (!config.debug) { document.all[objname].style.display = "none"; } if (config.plaintextInput) { // replace nextlines with breaks var contents = document.all[objname].value; contents = contents.replace(/\r\n/g, '
'); contents = contents.replace(/\n/g, '
'); contents = contents.replace(/\r/g, '
'); document.all[objname].value = contents; } // insert wysiwyg document.all[objname].insertAdjacentHTML('afterEnd', editor) // convert htmlarea from textarea to wysiwyg editor editor_setmode(objname, 'init'); // call filterOutput when user submits form for (var idx=0; idx < document.forms.length; idx++) { var r = document.forms[idx].attachEvent('onsubmit', function() { editor_filterOutput(objname); }); if (!r) { alert("Error attaching event to form!"); } } return true; } /* ---------------------------------------------------------------------- *\ Function : editor_action Description : perform an editor command on selected editor content Usage : Arguments : button_id - button id string with editor and action name \* ---------------------------------------------------------------------- */ function editor_action(button_id) { // split up button name into "editorID" and "cmdID" var BtnParts = Array(); BtnParts = button_id.split("_"); var objname = button_id.replace(/^_(.*)_[^_]*$/, '$1'); var cmdID = BtnParts[ BtnParts.length-1 ]; var button_obj = document.all[button_id]; var editor_obj = document.all["_" +objname + "_editor"]; var config = document.all[objname].config; // help popup if (cmdID == 'showhelp') { window.open(_editor_url + "popups/editor_help.html", 'EditorHelp'); return; } // popup editor if (cmdID == 'popupeditor') { window.open(_editor_url + "popups/fullscreen.html?"+objname, 'FullScreen', 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=750,height=480'); return; } // check editor mode (don't perform actions in textedit mode) if (editor_obj.tagName.toLowerCase() == 'textarea') { return; } var editdoc = editor_obj.contentWindow.document; editor_focus(editor_obj); // get index and value for pulldowns var idx = button_obj.selectedIndex; var val = (idx != null) ? button_obj[ idx ].value : null; if (0) {} // use else if for easy cutting and pasting // // CUSTOM BUTTONS START HERE // // Custom1 else if (cmdID == 'custom1') { alert("Hello, I am custom button 1!"); } // Custom2 else if (cmdID == 'custom2') { // insert some text from a popup window var myTitle = "This is a custom title"; var myText = showModalDialog(_editor_url + "popups/custom2.html", myTitle, // str or obj specified here can be read from dialog as "window.dialogArguments" "resizable: yes; help: no; status: no; scroll: no; "); if (myText) { editor_insertHTML(objname, myText); } } // Custom3 else if (cmdID == 'custom3') { // insert some text editor_insertHTML(objname, "It's easy to add buttons that insert text!"); } // // END OF CUSTOM BUTTONS // // FontName else if (cmdID == 'FontName' && val) { editdoc.execCommand(cmdID,0,val); } // FontSize else if (cmdID == 'FontSize' && val) { editdoc.execCommand(cmdID,0,val); } // FontStyle (change CSS className) else if (cmdID == 'FontStyle' && val) { editdoc.execCommand('RemoveFormat'); editdoc.execCommand('FontName',0,'636c6173734e616d6520706c616365686f6c646572'); var fontArray = editdoc.all.tags("FONT"); for (i=0; i instead // if (ord == 13 && editEvent.type == 'keypress') { // editEvent.returnValue = false; // editor_insertHTML(objname, "
"); // return; // } if (ctrlKey && (ord == 122 || ord == 90)) { // catch ctrl-z (UNDO) // TODO: Add our own undo/redo functionality // editEvent.cancelBubble = true; return; } if ((ctrlKey && (ord == 121 || ord == 89)) || ctrlKey && shiftKey && (ord == 122 || ord == 90)) { // catch ctrl-y, ctrl-shift-z (REDO) // TODO: Add our own undo/redo functionality return; } } // setup timer for delayed updates (some events take time to complete) if (runDelay > 0) { return setTimeout(function(){ editor_event(objname); }, runDelay); } // don't execute more than 3 times a second (eg: too soon after last execution) if (this.tooSoon == 1 && runDelay >= 0) { this.queue = 1; return; } // queue all but urgent events this.tooSoon = 1; setTimeout(function(){ this.tooSoon = 0; if (this.queue) { editor_event(objname,-1); }; this.queue = 0; }, 333); // 1/3 second editor_updateOutput(objname); editor_updateToolbar(objname); } /* ---------------------------------------------------------------------- *\ Function : editor_updateToolbar Description : update toolbar state Usage : Arguments : objname - ID of textarea to replace action - enable, disable, or update (default action) \* ---------------------------------------------------------------------- */ function editor_updateToolbar(objname,action) { var config = document.all[objname].config; var editor_obj = document.all["_" +objname+ "_editor"]; // disable or enable toolbar if (action == "enable" || action == "disable") { var tbItems = new Array('FontName','FontSize','FontStyle'); // add pulldowns for (var btnName in config.btnList) { tbItems.push(config.btnList[btnName][0]); } // add buttons for (var idxN in tbItems) { var cmdID = tbItems[idxN].toLowerCase(); var tbObj = document.all["_" +objname+ "_" +tbItems[idxN]]; if (cmdID == "htmlmode" || cmdID == "about" || cmdID == "showhelp" || cmdID == "popupeditor") { continue; } // don't change these buttons if (tbObj == null) { continue; } var isBtn = (tbObj.tagName.toLowerCase() == "button") ? true : false; if (action == "enable") { tbObj.disabled = false; if (isBtn) { tbObj.className = 'btn' }} if (action == "disable") { tbObj.disabled = true; if (isBtn) { tbObj.className = 'btnNA' }} } return; } // update toolbar state if (editor_obj.tagName.toLowerCase() == 'textarea') { return; } // don't update state in textedit mode var editdoc = editor_obj.contentWindow.document; // Set FontName pulldown var fontname_obj = document.all["_" +objname+ "_FontName"]; if (fontname_obj) { var fontname = editdoc.queryCommandValue('FontName'); if (fontname == null) { fontname_obj.value = null; } else { var found = 0; for (i=0; i