1 5 6 package com.raptus.owxv3.libtags; 7 8 import java.io.IOException ; 9 10 import javax.servlet.jsp.*; 11 import javax.servlet.jsp.tagext.TagSupport ; 12 13 import org.apache.struts.Globals; 14 import org.apache.struts.action.Action; 15 import org.apache.struts.util.RequestUtils; 16 17 import com.raptus.owxv3.LoggingManager; 18 19 51 public class EditorTag extends TagSupport { 52 53 54 56 59 private String fieldname = null; 60 61 public String getFieldname() { return (this.fieldname); } 62 public void setFieldname(String f) { this.fieldname = f; } 63 64 65 68 private int width; 69 70 public int getWidth() { return (this.width); } 71 public void setWidth(int w) { this.width = w; } 72 73 74 77 private int height; 78 79 public int getHeight() { return (this.height); } 80 public void setHeight(int h) { this.height = h; } 81 82 83 84 87 private String formname = null; 88 89 public String getFormname() { return (this.formname); } 90 public void setFormname(String fname) { this.formname = fname; } 91 92 93 96 private String type = null; 97 98 public String getType() { return (this.type); } 99 public void setType(String t) { this.type = t; } 100 101 102 105 private String style = null; 106 107 public String getStyle() { return (this.style); } 108 public void setStyle(String st) { this.style = st; } 109 110 111 114 private String noneditorstyle = null; 115 116 public String getNoneditorstyle() { return (this.noneditorstyle); } 117 public void setNoneditorstyle(String st){ this.noneditorstyle = st; } 118 119 120 121 125 126 private String definitions=null; 127 128 129 public String getDefinitions() { return (this.definitions); } 130 public void setDefinitions(String def) { this.definitions = def; } 131 132 135 136 137 protected String resources = Action.MESSAGES_KEY; 138 139 public String getResources() { return (this.resources); } 140 public void setResources(String res) { this.resources = res; } 141 142 143 146 private String imagelocation = null; 147 148 public String getImagelocation() { return (this.imagelocation); } 149 public void setImagelocation(String im) { this.imagelocation = im; } 150 151 154 private String scriptlocation = null; 155 156 public String getScriptlocation() { return (this.scriptlocation); } 157 public void setScriptlocation(String sl) { this.scriptlocation = sl; } 158 159 163 164 private String colorpicker=null; 165 166 public String getColorpicker() { return (this.colorpicker); } 167 public void setColorpicker(String cp) { this.colorpicker = cp; } 168 169 170 171 175 176 private String onchange=null; 177 178 public String getOnchange() { return (this.onchange); } 179 public void setOnchange(String c) { this.onchange = c; } 180 181 182 185 private String value = null; 186 187 public String getValue() { return (this.value); } 188 public void setValue(String v) { this.value = v; } 189 190 191 193 194 199 public int doStartTag() throws JspException 200 { 201 if(formname==null) formname="forms[0]"; 202 205 206 if(resources!=null) 207 { 208 if(definitions!=null) definitions=RequestUtils.message(pageContext, resources, Globals.LOCALE_KEY, definitions); 209 if(imagelocation!=null) imagelocation=RequestUtils.message(pageContext, resources, Globals.LOCALE_KEY, imagelocation); 210 if(scriptlocation!=null) scriptlocation=RequestUtils.message(pageContext, resources, Globals.LOCALE_KEY, scriptlocation); 211 if(colorpicker!=null) colorpicker=RequestUtils.message(pageContext, resources, Globals.LOCALE_KEY, colorpicker); 212 } 213 if(type==null) type="standard"; 214 if(width==0) width=500; 215 if(height==0) height=250; 216 if(value==null) value=""; 217 218 String jsvalue=replace(value,"\"","\\\""); 219 jsvalue=replace(jsvalue,"'","\\'"); 220 jsvalue=replace(jsvalue,"\r",""); 221 jsvalue=replace(jsvalue,"\n","\\n"); 222 if(type.equals("oneline")) height=50; 223 224 java.text.SimpleDateFormat formatter=new java.text.SimpleDateFormat ("mmssSSS"); 225 226 String editor="editor"+formatter.format(new java.util.Date ()); 227 228 try 229 { 230 JspWriter out = pageContext.getOut(); 231 232 233 out.print("<script language='JavaScript' SRC='"); 234 out.print(definitions); 235 out.println("'></script>"); 236 237 out.println("<script language=\"JavaScript\">"); 238 out.println("// <!--"); 239 out.print("function save"); 240 out.print(editor); 241 out.println("(){"); 242 out.println("if(document.all && navigator.userAgent.toLowerCase().indexOf('win')!=-1){"); 243 244 245 255 out.print("document."); 256 out.print(formname); 257 out.print("."); 258 out.print(fieldname); 259 out.print(".value="); 260 out.print(editor);out.println(".document.body.innerHTML;"); 261 out.println("}"); 262 out.println("}"); 263 264 265 out.println("if(document.all && navigator.userAgent.toLowerCase().indexOf('win')!=-1){"); 266 out.print("document."); 268 out.print(formname); 269 out.print(".onsubmit=save"); 270 out.print(editor); 271 out.println(";"); 272 273 274 out.print("document.writeln(\"<input type='hidden' name='"); 275 out.print(fieldname); 276 out.print("'>\");"); 277 out.print("document."); 278 out.print(formname); 279 out.print("."); 280 out.print(fieldname); 281 out.print(".value='"); 282 out.print(jsvalue); 283 out.println("';"); 284 285 out.print("document.writeln(\"<table width="); 286 out.print(width); 287 out.println(" border=0 cellspacing=0 cellpadding=0>\");"); 290 out.println("document.writeln(\"<tr>\");"); 291 out.print("document.writeln(\"<td width='1' height='1' bgcolor=#808080><img SRC='");out.print(imagelocation);out.println("1pxtransp.gif' width='1' height='1'></td>\");"); 292 out.print("document.writeln(\"<td width='");out.print(width-3);out.print("' height='1' bgcolor=#808080><img SRC='");out.print(imagelocation);out.println("1pxtransp.gif' width='1' height='1'></td>\");"); 293 out.print("document.writeln(\"<td width='1' height='1' bgcolor=#808080><img SRC='");out.print(imagelocation);out.println("1pxtransp.gif' width='1' height='1'></td>\");"); 294 out.print("document.writeln(\"<td width='1' height='1' bgcolor=#D4D0C8><img SRC='");out.print(imagelocation);out.println("1pxtransp.gif' width='1' height='1'></td>\");"); 295 out.println("document.writeln(\"</tr>\");"); 296 out.println("document.writeln(\"<tr>\");"); 297 out.print("document.writeln(\"<td width='1' height='25' bgcolor=#808080><img SRC='");out.print(imagelocation);out.println("1pxtransp.gif' width='1' height='1'></td>\");"); 298 out.print("document.writeln(\"<td width='");out.print(width-3);out.print("' height='25' bgcolor=#8BBFF9>\");"); 299 310 out.print("document.writeln(\" <select name='wys_editor_font'"); 311 312 if(style!=null) 313 { 314 out.print(" class='");out.print(style);out.print("' "); 315 } 316 out.print("onChange='makeFontStyle(");out.print(editor);out.print(",this);");out.print("'>\");"); 317 318 out.println("document.writeln(\"<option value='\"+editorfontvalue[0]+\"' selected>\"+editorfonttext[0]+\"</option>\");"); 319 320 out.println("for(i=1;i<editorfonttext.length;i++){"); 321 out.println("document.writeln(\"<option value='\"+editorfontvalue[i]+\"'>\"+editorfonttext[i]+\"</option>\");"); 322 out.println("}"); 323 out.println("document.writeln(\"</select>\");"); 324 out.print("document.writeln(\"<select name='wys_editor_size'"); 325 if(style!=null) 326 { 327 out.print(" class='");out.print(style);out.print("' "); 328 } 329 out.print("onChange='makeFontSize(");out.print(editor);out.print(",this);");out.print("'>\");"); 330 out.println("document.writeln(\"<option value='\"+editorsizevalue[0]+\"' selected>\"+editorsizetext[0]+\"</option>\");"); 331 out.println("for(i=1;i<editorsizetext.length;i++){"); 332 out.println("document.writeln(\"<option value='\"+editorsizevalue[i]+\"'>\"+editorsizetext[i]+\"</option>\");"); 333 out.println("}"); 334 335 out.println("document.writeln(\"</select>\");"); 336 337 349 350 out.print("document.writeln(\"<a HREF='javascript:make(");out.print(editor);out.print(",\\\"bold\\\");");out.print("' onMouseOut='MM_swapImgRestore()' onMouseOver=\\\"MM_swapImage('bold','','");out.print(imagelocation);out.print("b_on.gif',1);status='\"+editorboldtext+\"';return true;\\\"><img SRC='");out.print(imagelocation);out.println("b.gif' width='18' height='18' border='0' alt='\"+editorboldtext+\"' name='bold' align='absmiddle'></a>\");"); 351 out.print("document.writeln(\"<a HREF='javascript:make(");out.print(editor);out.print(",\\\"italic\\\");");out.print("' onMouseOut='MM_swapImgRestore()' onMouseOver=\\\"status='\"+editoritalictext+\"';MM_swapImage('italic','','");out.print(imagelocation);out.print("i_on.gif',1);return true;\\\"><img SRC='");out.print(imagelocation);out.println("i.gif' width='18' height='18' border='0' alt='\"+editoritalictext+\"' name='italic' align='absmiddle'></a>\");"); 352 out.print("document.writeln(\"<a HREF='javascript:make(");out.print(editor);out.print(",\\\"underline\\\");");out.print("' onMouseOut='MM_swapImgRestore()' onMouseOver=\\\"status='\"+editorunderlinetext+\"';MM_swapImage('underline','','");out.print(imagelocation);out.print("u_on.gif',1);return true;\\\"><img SRC='");out.print(imagelocation);out.println("u.gif' width='18' height='18' border='0' alt='\"+editorunderlinetext+\"' align='absmiddle' name='underline'></a>\");"); 353 354 out.print("document.writeln(\"<a HREF='javascript:make(");out.print(editor);out.print(",\\\"justifyleft\\\");");out.print("' onMouseOut='MM_swapImgRestore()' onMouseOver=\\\"status='\"+editorlefttext+\"';MM_swapImage('left','','");out.print(imagelocation);out.print("left_on.gif',1);return true;\\\"><img SRC='");out.print(imagelocation);out.println("left.gif' width='18' height='18' border='0' alt='\"+editorlefttext+\"' align='absmiddle' name='left'></a>\");"); 355 out.print("document.writeln(\"<a HREF='javascript:make(");out.print(editor);out.print(",\\\"justifycenter\\\");");out.print("' onMouseOut='MM_swapImgRestore()' onMouseOver=\\\"status='\"+editorcentertext+\"';MM_swapImage('center','','");out.print(imagelocation);out.print("center_on.gif',1);return true;\\\"><img SRC='");out.print(imagelocation);out.println("center.gif' width='18' height='18' border='0' alt='\"+editorcentertext+\"' align='absmiddle' name='center'></a>\");"); 356 out.print("document.writeln(\"<a HREF='javascript:make(");out.print(editor);out.print(",\\\"justifyright\\\");");out.print("' onMouseOut='MM_swapImgRestore()' onMouseOver=\\\"status='\"+editorrighttext+\"';MM_swapImage('right','','");out.print(imagelocation);out.print("right_on.gif',1);return true;\\\"><img SRC='");out.print(imagelocation);out.println("right.gif' width='18' height='18' border='0' alt='\"+editorrighttext+\"' align='absmiddle' name='right'></a>\");"); 357 358 out.print("document.writeln(\"<a HREF='javascript:make(");out.print(editor);out.print(",\\\"indent\\\");");out.print("' onMouseOut='MM_swapImgRestore()' onMouseOver=\\\"status='\"+editorindenttext+\"';MM_swapImage('indent','','");out.print(imagelocation);out.print("indent_on.gif',1);return true;\\\"><img SRC='");out.print(imagelocation);out.println("indent.gif' width='18' height='18' border='0' alt='\"+editorindenttext+\"' align='absmiddle' name='indent'></a>\");"); 359 out.print("document.writeln(\"<a HREF='javascript:make(");out.print(editor);out.print(",\\\"outdent\\\");");out.print("' onMouseOut='MM_swapImgRestore()' onMouseOver=\\\"status='\"+editoroutdenttext+\"';MM_swapImage('outdent','','");out.print(imagelocation);out.print("outdent_on.gif',1);return true;\\\"><img SRC='");out.print(imagelocation);out.println("outdent.gif' width='18' height='18' border='0' alt='\"+editoroutdenttext+\"' align='absmiddle' name='outdent'></a>\");"); 360 361 if(type.equals("standard")) 362 { 363 out.print("document.writeln(\"<a HREF='javascript:make(");out.print(editor);out.print(",\\\"insertUnorderedList\\\");");out.print("' onMouseOut='MM_swapImgRestore()' onMouseOver=\\\"status='\"+editorultext+\"';MM_swapImage('ul','','");out.print(imagelocation);out.print("ul_on.gif',1);return true;\\\"><img SRC='");out.print(imagelocation);out.println("ul.gif' width='18' height='18' border='0' align='absmiddle' alt='\"+editorultext+\"' name='ul'></a>\");"); 365 out.print("document.writeln(\"<a HREF='javascript:make(");out.print(editor);out.print(",\\\"insertOrderedList\\\");");out.print("' onMouseOut='MM_swapImgRestore()' onMouseOver=\\\"status='\"+editoroltext+\"';MM_swapImage('ol','','");out.print(imagelocation);out.print("ol_on.gif',1);return true;\\\"><img SRC='");out.print(imagelocation);out.println("ol.gif' width='18' height='18' border='0' align='absmiddle' alt='\"+editoroltext+\"' name='ol'></a>\");"); 366 } 368 369 out.print("document.writeln(\"<a HREF='javascript:makeFontColor(");out.print(editor);out.print(",\\\"");out.print(colorpicker);out.print("\\\");");out.print("' onMouseOut='MM_swapImgRestore()' onMouseOver=\\\"status='\"+editorcptext+\"';MM_swapImage('color','','");out.print(imagelocation);out.print("color_on.gif',1);return true;\\\"><img SRC='");out.print(imagelocation);out.println("color.gif' width='18' height='18' border='0' alt='\"+editorcptext+\"' align='absmiddle' name='color'></a>\");"); 370 out.print("document.writeln(\"<a HREF='javascript:make(");out.print(editor);out.print(",\\\"cut\\\");");out.print("' onMouseOut='MM_swapImgRestore()' onMouseOver=\\\"status='\"+editorcuttext+\"';MM_swapImage('cut','','");out.print(imagelocation);out.print("cut_on.gif',1);return true;\\\"><img SRC='");out.print(imagelocation);out.println("cut.gif' width='18' height='18' border='0' alt='\"+editorcuttext+\"' align='absmiddle' name='cut'></a>\");"); 371 out.print("document.writeln(\"<a HREF='javascript:make(");out.print(editor);out.print(",\\\"copy\\\");");out.print("' onMouseOut='MM_swapImgRestore()' onMouseOver=\\\"status='\"+editorcopytext+\"';MM_swapImage('copy','','");out.print(imagelocation);out.print("copy_on.gif',1);return true;\\\"><img SRC='");out.print(imagelocation);out.println("copy.gif' width='18' height='18' border='0' alt='\"+editorcopytext+\"' align='absmiddle' name='copy'></a>\");"); 372 out.print("document.writeln(\"<a HREF='javascript:make(");out.print(editor);out.print(",\\\"paste\\\");");out.print("' onMouseOut='MM_swapImgRestore()' onMouseOver=\\\"status='\"+editorcopytext+\"';MM_swapImage('paste','','");out.print(imagelocation);out.print("paste_on.gif',1);return true;\\\"><img SRC='");out.print(imagelocation);out.println("paste.gif' width='18' height='18' border='0' alt='\"+editorpastetext+\"' align='absmiddle' name='paste'></a>\");"); 373 374 out.print("document.writeln(\"<a HREF='javascript:removeFormat(");out.print(editor);out.print(");");out.print("' onMouseOut='MM_swapImgRestore()' onMouseOver=\\\"status='\"+editorcanceltext+\"';MM_swapImage('remove','','");out.print(imagelocation);out.print("cancel_on.gif',1);return true;\\\"><img SRC='");out.print(imagelocation);out.println("cancel.gif' width='18' height='18' border='0' align='absmiddle' alt='\"+editorcanceltext+\"' name='remove'></a>\");"); 375 out.print("document.writeln(\"<a HREF='javascript:makeLink(");out.print(editor);out.print(");");out.print("' onMouseOut='MM_swapImgRestore()' onMouseOver=\\\"status='\"+editorurltext+\"';MM_swapImage('link','','");out.print(imagelocation);out.print("url_on.gif',1);return true;\\\"><img SRC='");out.print(imagelocation);out.println("url.gif' width='18' height='18' border='0' align='absmiddle' alt='\"+editorurltext+\"' name='link'></a>\");"); 376 377 out.println("document.writeln(\"</td>\");"); 378 out.print("document.writeln(\"<td width='1' height='25' bgcolor=#E9E7E3><img SRC='");out.print(imagelocation);out.println("1pxtransp.gif' width='1' height='1'></td>\");"); 379 out.print("document.writeln(\"<td width='1' height='25' bgcolor=#D4D0C8><img SRC='");out.print(imagelocation);out.println("1pxtransp.gif' width='1' height='1'></td>\");"); 380 out.println("document.writeln(\"</tr>\");"); 381 out.println("document.writeln(\"<tr>\");"); 382 out.print("document.writeln(\"<td width='1' height='1' bgcolor=#E9E7E3><img SRC='");out.print(imagelocation);out.println("1pxtransp.gif' width='1' height='1'></td>\");"); 383 out.print("document.writeln(\"<td width='");out.print(width-3);out.print("' height='1' bgcolor=#E9E7E3><img SRC='");out.print(imagelocation);out.println("1pxtransp.gif' width='1' height='1'></td>\");"); 384 out.print("document.writeln(\"<td width='1' height='1' bgcolor=#E9E7E3><img SRC='");out.print(imagelocation);out.println("1pxtransp.gif' width='1' height='1'></td>\");"); 385 out.print("document.writeln(\"<td width='1' height='1' bgcolor=#D4D0C8><img SRC='");out.print(imagelocation);out.println("1pxtransp.gif' width='1' height='1'></td>\");"); 386 out.println("document.writeln(\"</tr></table>\");"); 387 388 out.print("document.writeln(\"<table width="); 389 out.print(width); 390 out.print(" height="); 391 out.print(height); 392 out.println(" border=0 cellspacing=0 cellpadding=0>\");"); 393 out.println("document.writeln(\"<tr>\");"); 394 out.print("document.writeln(\"<td><iframe id='");out.print(editor);out.print("' width='100%' height='100%'"); 395 if(type.equals("oneline")) 396 { 397 out.print(" scrolling='no'"); 398 } 399 out.println(">\");"); 400 401 out.println("document.writeln(\"</iframe></td>\");"); 402 out.println("document.writeln(\"</tr></table>\");"); 403 404 405 out.print(editor);out.println(".document.open();"); 406 out.print(editor);out.print(".document.write('<html>"); 407 out.print(jsvalue);out.println("</html>');"); 408 409 out.print(editor);out.println(".document.close();"); 410 out.print(editor);out.println(".document.designMode='on';"); 411 412 413 out.print(editor);out.println(".focus();"); 414 415 416 out.print("document.writeln(\"<sc\"+\"ript language='JavaScript' SRC='"); 417 out.print(scriptlocation); 418 out.println("'></sc\"+\"ript>\");"); 419 420 421 422 out.println("} else {"); 423 if(type.equals("standard")) 425 { 426 427 out.print("document.write('<textarea name=\""); 428 out.print(fieldname); 429 430 431 out.print("\" cols=\""+width/10+"\" rows=\""+height/15+"\" wrap=\"VIRTUAL\""); 432 if(noneditorstyle!=null) 433 { 434 out.print(" class=\"");out.print(noneditorstyle);out.print("\""); 435 } 436 437 441 out.print(">"); 442 out.print(jsvalue); 443 out.println("</textarea>');"); 444 445 } 446 else 447 { 448 out.print("document.write('<input type=\"text\" name=\""); 449 out.print(fieldname); 450 out.print("\""); 451 if(noneditorstyle!=null) 452 { 453 out.print(" class=\"");out.print(noneditorstyle);out.print("\" "); 454 } 455 456 460 out.println(">');"); 461 out.print("document."); 462 out.print(formname); 463 out.print("."); 464 out.print(fieldname); 465 out.print(".value='"); 466 out.print(jsvalue); 467 out.println("';"); 468 469 } 470 out.println("}"); 471 out.println("// -->"); 472 473 out.println("</script>"); 474 out.println("<noscript>"); 475 if(type.equals("standard")) 476 { 477 out.print("<textarea name=\""); 478 out.print(fieldname); 479 480 481 out.print("\" cols=\"60\" rows=\"10\" wrap=\"VIRTUAL\""); 482 if(noneditorstyle!=null) 483 { 484 out.print(" class=\"");out.print(noneditorstyle);out.print("\" "); 485 } 486 out.print(">"); 487 out.print(value); 488 out.println("</textarea>"); 489 490 491 } 492 else 493 { 494 out.print("<input type=\"text\" name=\""); 495 out.print(fieldname); 496 out.print("\" value=\""); 497 out.print(value); 498 out.print("\""); 499 if(noneditorstyle!=null) 500 { 501 out.print(" class=\"");out.print(noneditorstyle);out.print("\" "); 502 } 503 out.println(">"); 504 505 } 506 507 out.println("</noscript>"); 508 509 510 } 511 catch(IOException e) { 512 LoggingManager.log("Somenthing really screwed up", this); 513 } 514 515 return (SKIP_BODY); 517 518 } 519 520 521 524 public void release() 525 { 526 fieldname = null; 527 width = 0; 528 height = 0; 529 formname = null; 530 style=null; 531 type=null; 532 imagelocation=null; 533 resources=null; 534 definitions=null; 535 value=null; 536 } 537 538 547 private String replace(String line, String oldString,String newString) 548 { 549 int i = 0; 550 if ((i = line.indexOf(oldString, i)) >= 0) 551 { 552 char [] line2 = line.toCharArray(); 553 char [] newString2 = newString.toCharArray(); 554 int oLength = oldString.length(); 555 StringBuffer buf = new StringBuffer (line2.length); 556 buf.append(line2, 0, i).append(newString2); 557 i += oLength; 558 int j = i; 559 while ((i = line.indexOf(oldString, i)) > 0) 560 { 561 buf.append(line2, j, i - j).append(newString2); 562 i += oLength; 563 j = i; 564 } 565 buf.append(line2, j, line2.length - j); 566 return buf.toString(); 567 } 568 return line; 569 } 570 571 572 573 } 574 575 | Popular Tags |