X-Git-Url: https://scm.cri.ensmp.fr/git/Epoz.git/blobdiff_plain/e12f4a95372036c721467827829f60a68ef92048..36a8f50734b56b213436c3f09afc80509c20cc16:/Products/Epoz/epoz/epoz_core/epoz_redirect.js.dtml diff --git a/Products/Epoz/epoz/epoz_core/epoz_redirect.js.dtml b/Products/Epoz/epoz/epoz_core/epoz_redirect.js.dtml new file mode 100644 index 0000000..b76cb71 --- /dev/null +++ b/Products/Epoz/epoz/epoz_core/epoz_redirect.js.dtml @@ -0,0 +1,260 @@ +// This script allow to use several Epoz WYSIWYG fields. +// Copyright (C) 2005 Benoît PIN + +var IFramePrefix = "Iframe_"; +var IFramePrefixLength = IFramePrefix.length; +var DocPrefix = "doc_"; +var DocPrefixLength = DocPrefix.length; +var CheckBoxPrefix = "CB_"; +var CheckBoxPrefixLength = CheckBoxPrefix.length; +var ToolBarPrefix = "ToolBar_"; +var ToolBarPrefixLength = ToolBarPrefix.length; + + +function redirectEpoz(iframe) { + if(EpozElement) { + if (EpozElement == iframe) + return; + changeBorderStyle(EpozElement, "dashed"); + unwrapEpozVariables(); + } + + // update Epoz variables + wrapEpozVariables(iframe); + + //cosmetic + changeBorderStyle(EpozElement, "solid"); + EpozElement.contentWindow.focus(); +} + + +function wrapEpozVariables(iframe) { + try { + fieldId = iframe.contentWindow.document.id.slice(DocPrefixLength); + } + catch (e) { + // maybe not an epoz iframe + return false; + } + + iframe.id = Epoz ; + EpozElement=iframe; + EpozTextArea = document.getElementById(fieldId); + toolBar = document.getElementById(ToolBarPrefix + fieldId); + toolBar.id = "EpozToolbar"; + checkBox = document.getElementById(CheckBoxPrefix + fieldId); + checkBox.id = "EpozViewMode"; + return true; +} + + +function unwrapEpozVariables() { + if (!EpozElement) // no redirection happens yet. + return; + fieldId = EpozElement.contentWindow.document.id.slice(DocPrefixLength); + + EpozElement.id = IFramePrefix + fieldId; + toolBar = document.getElementById("EpozToolbar"); + toolBar.id = ToolBarPrefix + fieldId; + checkBox = document.getElementById("EpozViewMode"); + checkBox.id = CheckBoxPrefix + fieldId; +} + + + +// Initialization functions + +if (!formDatas) { + var formDatas = new Array(); +} + +function InitIframe(name, data, path, toolbox, style, button, css, customcss, charset, pageurl) { + form_name = name; + form_data = data; + form_path = path; + form_toolbox = toolbox; + form_area_style = style; + form_button_style = button; + form_css = css; + form_customcss = customcss; + form_charset = charset; + form_pageurl = pageurl; + + var richText; + + if (browser.isIE55 || browser.isIE6up) { + // Mac-IE doesn't support RichText-Edit at the moment + if (browser.isMac) { + CreateTextarea(); + richText = false; + } else { + CreateEpoz(); + richText = true; + } + } + else if (browser.isGecko) { + //check to see if midas is enabled + try { + // Just a few cleanups for Mozilla + + form_data = form_data.replace(//ig,''); + form_data = form_data.replace(/]*)>/ig,''); + form_data = form_data.replace(/<\/strong>/ig,''); + + form_data = form_data.replace(//ig,''); + form_data = form_data.replace(/]*)>/ig,''); + form_data = form_data.replace(/<\/em>/ig,''); + + CreateEpoz(); + richText = true; + } catch (e) { + CreateTextarea(); + richText = false; + } + } + else { + CreateTextarea(); + richText = false; + } + + if (richText) { + // change iframe id + formDatas[name] = form_data; + var iframe = document.getElementById(Epoz); + iframe.id = IFramePrefix + name; + + // change EpozToolbar id + var toolBar = document.getElementById("EpozToolbar"); + toolBar.id = ToolBarPrefix + name; + + // Retrieve the switch HTML mode checkbox and change id and onclick function. + nodes = iframe.parentNode.nextSibling.nextSibling.childNodes; + var i; + for (i=0 ; i" || html=="
" || html=="

") { + html = ""; + } + form_name = EpozElement.contentWindow.document.id.slice(DocPrefixLength); + document.getElementById(form_name).value = html; + } + +} + +function EnableDesignMode(iframeId) { + iframe = document.getElementById(iframeId); + try { + iframe.contentDocument.designMode = "on"; + iframe.contentWindow.document.addEventListener("keypress", HandleKeyboardEvent, true); + } catch (e) { + scriptExpr = 'EnableDesignMode("' + iframeId + '");'; + setTimeout(scriptExpr, 10); + } +} + + + +//utils + +function retrieveForm(baseOb){ + var pn = baseOb.parentNode; + + while (pn != document) { + if (pn.nodeName == 'FORM') + break; + else { + pn = pn.parentNode; + } + } + return pn; +} + + +function addListener(ob, eventName, functionReference){ + if (browser.isIE55 || browser.isIE6up) { + eventName = "on" + eventName; + ob.attachEvent(eventName, functionReference); + } + else if (browser.isGecko) { + ob.addEventListener(eventName, functionReference, false); + } + +} \ No newline at end of file