[Zope] an idea for TextAreaEditor

Dirk Datzert Dirk.Datzert@rasselstein-hoesch.de
Thu, 11 Oct 2001 21:10:02 +0200


Dies ist eine mehrteilige Nachricht im MIME-Format.
--------------B12FE89B32872990DB006F60
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hello Kedai,

(since I can't reach you thru your email adress I write to the
zope-mailing list and hope that you will listen to them)

I've downloaded the TextAreaEditor last week. I found today that it
would be nice if a manager could select if an user sees a special button
or not. Is that an idea you would agree ?

I've modify the DHTML todo so. There is an new Array onoff which could
be filled by new dtml boolean properties; switch a button will be seen
or not.

Also I had put a new justify-full button.

Tell me if you want this in your project. You can safe the attachments
on disk an take a look with IE without ZOPE.

Another idea would be an international version. The toolbar attached is
a german version.

Regards,
Dirk
--------------B12FE89B32872990DB006F60
Content-Type: image/gif;
 name="toolbar.gif"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="toolbar.gif"

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


--------------B12FE89B32872990DB006F60
Content-Type: text/html; charset=us-ascii;
 name="editor.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="editor.html"

<html>
<body>
<STYLE>
SELECT.htmlEditSelect {font:8pt verdana,arial,sans-serif;background:#EEEEFF}
.htmlEditToolbar {margin-bottom:3pt;height:28;overflow:hidden;background:lightgrey;border:1px black solid}

.htmlEditHeading {color:navy;background:lightgrey}
</STYLE>
<SCRIPT>
// Copyright 1999 InsideDHTML.com, LLC.
// This code cannot be reproduced or reused without permission from InsideDHTML
var bLoad=false
oEdit = public_description=new Editor

function Editor() {
this.put_html=put_html;
this.get_html=get_html;
this.testHTML=testHTML;
this.TextMode = true
this.put_TextMode = put_TextMode;
this.get_TextMode = get_TextMode;

}

function put_TextMode(v) {
 this.TextMode = (v==true)
 document.all.tb3.style.display = this.TextMode ? "" : "none"
}

function get_TextMode() {
 return this.TextMode
}

function testHTML(bAllowHead,extras) {
  mW.click()
  var badStuff = new Array("IFRAME","SCRIPT","LAYER","ILAYER","OBJECT","APPLET","EMBED","FORM","INPUT","BUTTON","TEXTAREA");
  var headStuff = new Array("HTML","BODY","TITLE","BASE","LINK","META","STYLE");
  var hasStuff = new Array();
  var bodyTags = idEdit.document.body.all;
  var i=0;
  for (i=0;i<badStuff.length;i++)
    if (bodyTags.tags(badStuff[i]).length>0)
      hasStuff[hasStuff.length]=badStuff[i]
  if (!bAllowHead)
    for (i=0;i<headStuff.length;i++)
      if (bodyTags.tags(headStuff[i]).length>0)
        hasStuff[hasStuff.length]=headStuff[i]
  if (extras!=null)
    for (i=0;i<extras.length;i++)
      if (bodyTags.tags(extras[i]).length>0)
        hasStuff[hasStuff.length]=extras[i]
  for (i=0;i<bodyTags.tags("FONT").length;i++)
 if (bodyTags.tags("FONT")[i].style.backgroundColor="#ffffff") {
  bodyTags.tags("FONT")[i].style.backgroundColor=""
  if (bodyTags.tags("FONT")[i].outerHTML.substring(0,6)=="<FONT>")
   bodyTags.tags("FONT")[i].outerHTML=bodyTags.tags("FONT")[i].innerHTML
 }
  var str=""
  if (hasStuff.length>0) {
    str="Please remove the following HTML Tags from your message and resubmit:"
    for (i=0;i<hasStuff.length;i++)
       str+="\n "+hasStuff[i]
    str+= "\nRemember, when using HTML Mode you may need to escape \nthe brackets surrounding tags (< and >) with &lt; and &gt;"
    setTimeout("mH.click()",0)
  }
  return str
}
function get_html() {
if (bMode)
return idEdit.document.body.innerHTML
else
return idEdit.document.body.innerText;
}
function put_html(sVal) {
if (bMode)
idEdit.document.body.innerHTML=sVal
else
idEdit.document.body.innerText=sVal
}

var sHeader="<BODY STYLE=\"font:10pt geneva,arial,sans-serif\">";
var bMode=true;
var sel=null;
var strErr="Formatting toolbar is not accessible in Edit Source mode";

function format(what,opt,ui) {
 if (!bMode) {
   alert(strErr);idEdit.focus();return
 }
 if (opt=="removeFormat") {
   what=opt;opt=null
 }
 ui = (ui==true)
 if (bMode) {
   if (opt==null)
     idEdit.document.execCommand(what,ui)
   else
     idEdit.document.execCommand(what,ui,opt)
   var s=idEdit.document.selection.createRange(),p=s.parentElement()
   if ((p.tagName=="FONT") && (p.style.backgroundColor!=""))
     p.outerHTML=p.innerHTML
   idEdit.focus()
 }
 sel=null
}

function getEl(sTag,start) {
  while ((start!=null) && (start.tagName!=sTag))
    start = start.parentElement
  return start
}

function createLink() {
 if (!bMode) {
  alert(strErr);idEdit.focus();return
 }
 var isA = getEl("A",idEdit.document.selection.createRange().parentElement())
 var str=prompt("Where do you want to link to?",isA ? isA.href : "http:\/\/")
 if ((str!=null) && (str!="http://")) {
   if (idEdit.document.selection.type=="None") {
     var sel=idEdit.document.selection.createRange()
     sel.pasteHTML("<A HREF=\""+str+"\">"+str+"</A> ")
     sel.select()
   }
   else
     format("CreateLink",str)
 }
 else
   idEdit.focus()
}

function setMode(bNewMode) {
 if (bNewMode!=bMode) {
  if (bNewMode) {
   var sContents=idEdit.document.body.innerText
   idEdit.document.open()
   idEdit.document.write(sHeader)
   idEdit.document.close()
   idEdit.document.body.innerHTML=sContents
  }
  else {
   var fonts=idEdit.document.body.all.tags("FONT")
   for (var i=0;i<fonts.length;i++)
    if (fonts[i].style.backgroundColor!="")
     fonts[i].outerHTML=fonts[i].innerHTML;
   var sContents=idEdit.document.body.innerHTML
   idEdit.document.open()
   idEdit.document.write("<BODY style=\"font:10pt courier, monospace\">")
   idEdit.document.close()
   idEdit.document.body.innerText=sContents
  }
  bMode=bNewMode
  for (var i=0;i<htmlOnly.children.length;i++)
   htmlOnly.children[i].disabled=(!bMode)
 }
 idEdit.focus()
}
</SCRIPT>

<DIV ID=idBox STYLE="width: 100%; text-align: center;visibility: hidden">
<TABLE ID=tb1 class="htmlEditToolbar" CELLSPACING=2 CELLPADDING=0 STYLE="padding-top: 1pt;margin-bottom: 2pt"><TR><TD VALIGN=MIDDLE NOWRAP ID=htmlOnly>
<SELECT class="htmlEditSelect" ONCHANGE="format('formatBlock',this[this.selectedIndex].value);this.selectedIndex=0">
 <OPTION CLASS="htmlEditHeading" SELECTED>Paragraph
  <OPTION VALUE="<P>">Normal &lt;P&gt;
  <OPTION VALUE="<H1>">Heading 1 &lt;H1&gt;
  <OPTION VALUE="<H2>">Heading 2 &lt;H2&gt;
  <OPTION VALUE="<H3>">Heading 3 &lt;H3&gt;
  <OPTION VALUE="<H4>">Heading 4 &lt;H4&gt;
  <OPTION VALUE="<H5>">Heading 5 &lt;H5&gt;
  <OPTION VALUE="<H6>">Heading 6 &lt;H6&gt;
  <OPTION VALUE="<PRE>">Pre &lt;PRE&gt;
  <OPTION VALUE="removeFormat" STYLE="color: darkred">Clear Formatting
</SELECT><SELECT class="htmlEditSelect" ONCHANGE="format('fontname',this[this.selectedIndex].value);this.selectedIndex=0">
 <OPTION CLASS="htmlEditHeading" SELECTED>Font
  <OPTION VALUE="arial,geneva,sans-serif">Arial
  <OPTION VALUE="verdana,arial,geneva,sans-serif">Verdana
  <OPTION VALUE="times,serif">Times
  <OPTION VALUE="courier,monospace">Courier
</SELECT><SELECT class="htmlEditSelect"  ONCHANGE="format('fontSize',this[this.selectedIndex].value);this.selectedIndex=0">
 <OPTION CLASS="htmlEditHeading">Size
  <OPTION VALUE="1">1
  <OPTION VALUE="2">2
  <OPTION VALUE="3">3
  <OPTION VALUE="4">4
  <OPTION VALUE="5">5
  <OPTION VALUE="6">6
  <OPTION VALUE="7">7
</SELECT><SELECT class="htmlEditSelect"  ONCHANGE="format('forecolor',this[this.selectedIndex].style.color);this.selectedIndex=0">
<OPTION CLASS="htmlEditHeading" SELECTED>Color
  <OPTION style="color:black">Schwarz
  <OPTION style="color:Gray">Grau
  <OPTION style="color:DarkRed">Dunkel Rot
  <OPTION style="color:navy">Navy
  <OPTION style="color:darkgreen">Dunkel Gr&uuml;n
</SELECT>

</TD></TR></TABLE>
<SCRIPT>
function getToolbar() {
  var buttons=new Array(23,23,23,4,23,23,23,23,4,23,23,23,23,4,23,23,4,23);
//  var onoff=new Array(&dtml-bold;,&drml-italic;,&dtml-underline;,1,&dtml-justifyleft;,&dtml-justifycenter;,&dtml-justifyright;,&dtml-justifyfull,1,&dtml-insertorderedlist;,&dtml-insertunorderedlist;,&dtml-outdent;,&dtml-indent;,1,&dtml-createlink;,&dtml-insertimage;,1,&dtml-editsource;);
//  var onoff=new Array(1,0,1, 1, 1,0,0,1, 1, 1,1,0,0, 1, 1,1,1,1); // some buttons off
  var onoff=new Array(1,1,1, 1, 1,1,1,1, 1, 1,1,1,1, 1, 1,1,1,1); // all buttons on
  var action=new Array("bold","italic","underline","","justifynone","justifycenter","justifyright","justifyfull","","insertorderedlist","insertunorderedlist","outdent","indent","","createLink","insertImage","","setMode"),tooltip=new Array("Bold Text","Italic Text","Underline Text","","Left Justify","Center Justify","Right Justify","Justify","","Ordered List","Unordered List","Remove Indent","Indent","","Create Hyperlink","Insert Image","","Edit Source");
  var left=1;
  var width=1;
  var s=""
for (var i=0;i<buttons.length;i++) {
 if (onoff [i] == 1) {
   width+=buttons[i]
   s+="<SPAN STYLE='position:relative;height:26;width: " + buttons[i] + "'><SPAN STYLE='position:absolute;margin:0px;padding:0;height:26;top:0;left:0;width:" + (buttons[i]) + ";clip:rect(0 "+buttons[i]+" 25 "+0+");overflow:hidden'><IMG BORDER=0 SRC='toolbar.gif' STYLE='position:absolute;top:0;left:-" + left + "' WIDTH=400 HEIGHT=200"
   if (buttons[i] != 4) {
     switch (action[i]) {
       case "createLink":
         s+=" onmouseover='this.style.top=-25' onmouseout='this.style.top=0' ONCLICK=\""
         s+="createLink();this.style.top=0\" "
         s+="TITLE=\"" + tooltip[i] + "\""
       case "insertImage":
         s+=" onmouseover='this.style.top=-25' onmouseout='this.style.top=0' ONCLICK=\""
         s+="format('insertImage',null,true);this.style.top=0\" "
         s+="TITLE=\"" + tooltip[i] + "\""
       case "setMode":
         s+=" onmouseover='if (bMode) this.style.top=-25; else this.style.top=-49;' onmouseout='if (bMode) this.style.top=0; else this.style.top=-73;' ONCLICK=\""
         s+="if (bMode) this.style.top=-49; else this.style.top=0; setMode(!bMode)\" "
         s+="TITLE=\"" + tooltip[i] + "\""
       default:
        s+=" onmouseover='this.style.top=-25' onmouseout='this.style.top=0' ONCLICK=\""
        s+="format('" + action[i] + "');this.style.top=50\" "
        s+="TITLE=\"" + tooltip[i] + "\""
     }
   }
   s+="></SPAN></SPAN>"
 }
 left+=buttons[i]
}
return "<DIV ID=tb2 class=htmlEditToolbar STYLE=\"width: " + (width+3) + "\" ONSELECTSTART=\"return false\" ONDRAGSTART=\"return false\">" + s + "</DIV>"
}

document.write(getToolbar())
</SCRIPT>

<!--<IFRAME name="idEdit" width="&dtml-ifrwidth;" height="&dtml-ifrheight;"></IFRAME>-->
<IFRAME name="idEdit" width="500" height="300"></IFRAME>


<!--<dtml-call "REQUEST.set('formval',getId() + 'Form')">-->
<!--<TEXTAREA NAME="&dtml-formval;" STYLE="display:none">-->
<TEXTAREA NAME="formval;" STYLE="display:none">
</TEXTAREA>
<SCRIPT>
  function copyValue(f) {
//    f.elements.&dtml-formval;.value = "" + idEdit.document.body.innerHTML + ""; }
    f.elements.formval.value = "" + idEdit.document.body.innerHTML + ""; }
</SCRIPT>
<SCRIPT>
idEdit.document.open()
idEdit.document.write(sHeader)
idEdit.document.close()
idEdit.document.designMode="On"

var myval=''
// <dtml-if "REQUEST.has_key(formval)"><dtml-in "_.string.split(_.getitem(formval),'\n')">
// myval+= '<dtml-var sequence-item sql_quote newline_to_br>'
// </dtml-in></dtml-if>


function initEditor() {
 bLoad=true;
 put_html(myval);
 idBox.style.visibility='';
}
document.body.onload = initEditor;


</SCRIPT>
</body>
</html>

--------------B12FE89B32872990DB006F60--