phpslash-commit Mailing List for phpSlash (Page 39)
Brought to you by:
joestewart,
nhruby
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(11) |
Nov
(59) |
Dec
(60) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(52) |
Feb
(77) |
Mar
(118) |
Apr
(76) |
May
(106) |
Jun
(145) |
Jul
(9) |
Aug
(15) |
Sep
(78) |
Oct
(83) |
Nov
(105) |
Dec
(51) |
2003 |
Jan
(105) |
Feb
(100) |
Mar
(111) |
Apr
(149) |
May
(95) |
Jun
(56) |
Jul
(8) |
Aug
(2) |
Sep
|
Oct
(22) |
Nov
(117) |
Dec
(6) |
2004 |
Jan
(1) |
Feb
|
Mar
(3) |
Apr
(25) |
May
|
Jun
(11) |
Jul
(26) |
Aug
(85) |
Sep
(119) |
Oct
(312) |
Nov
(271) |
Dec
(5) |
2005 |
Jan
(6) |
Feb
|
Mar
|
Apr
(12) |
May
(7) |
Jun
(8) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2009 |
Jan
(5) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Joe S. <joe...@us...> - 2003-11-13 12:14:35
|
Update of /cvsroot/phpslash/phpslash-dev/include/modules/block/plugins In directory sc8-pr-cvs1:/tmp/cvs-serv374/plugins Log Message: Directory /cvsroot/phpslash/phpslash-dev/include/modules/block/plugins added to the repository |
From: Joe S. <joe...@us...> - 2003-11-13 02:35:36
|
Update of /cvsroot/phpslash/phpslash-skins/include/templates/en/ShankZen In directory sc8-pr-cvs1:/tmp/cvs-serv4223/phpslash-skins/include/templates/en/ShankZen Added Files: slashHead-htmlarea3.tpl Log Message: htmlarea tweaking --- NEW FILE: slashHead-htmlarea3.tpl --- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <!-- START slashHead.tpl --> <html> <head> <title>{SITE_NAME} :: {SITETITLE}</title> <!-- {SECTION} :: --> <!-- theme design: Peter Cruickshank < in...@cu... > --> <!-- Enter Your Desired META Tags Below Here --> <!-- This Meta Tag is Defined In Each Page By Setting The Variable $xsiteobject = "HomePage"; to the page type HomePage, Glossary, Info, etc.. --> <meta name="object" content="{XSITEOBJECT}" /> <!-- Enter Your META Tags Above Here --> <!-- BEGIN each_metatag --> <meta name="{METANAME}" content="{METADESCRIPTION}" /> <!-- END each_metatag --> <link rel="alternate" type="application/rss+xml" title="RSS" href="{ROOTDIR}/backend.php3" /> <link rel="stylesheet" type="text/css" href="{ROOTDIR}/styles/{SKIN}.css" /> <style type="text/css" media="screen">@import "{ROOTDIR}/styles/{SKIN}_ext.css";</style> <!-- BEGIN HTMLAREA3 Javascript --> <script TYPE="text/javascript" LANGUAGE="JavaScript"> <!-- Script Begin <!-- Root path for the html WYSIWYG editor --> var _editor_url="{ROOTDIR}/scripts/htmlarea3/"; // --> </script> <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/htmlarea.js"></script> <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/lang/en.js"></script> <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/dialog.js"></script> <!-- <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/popupdiv.js"></script> --> <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/popupwin.js"></script> <!-- load the TableOperations plugin files --> <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/plugins/TableOperations/table-operations.js"></script> <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/plugins/TableOperations/lang/en.js"></script> <style type="text/css"> @import url({ROOTDIR}/scripts/htmlarea3/htmlarea.css); textarea { background-color: #fff; border: 1px solid 00f; } </style> <script TYPE="text/javascript" LANGUAGE="JavaScript"> var editor = null; function initEditor() { // create an editor for the "ta" textbox editor = new HTMLArea("ta"); // register the TableOperations plugin with our editor editor.registerPlugin("TableOperations"); editor.generate(); return false; } function insertHTML() { var html = prompt("Enter some HTML code here"); if (html) { editor.insertHTML(html); } } function highlight() { editor.surroundHTML('<span style="background-color: white">', '</span>'); } function PSL_chooseEditor(editor) { // if IE 5.5 or W3C/Moz 1.3+ - Can't combine the two due to problems with reload() & IE // if((document.all && document.designMode) || (document.designMode)) { // IE 5.5 - Eliminating reload() because it pulled down new form data if(document.all && document.designMode) { // HTML or htmlArea if (editor == 'htmlarea') { // HTMLArea.replace('en'); HTMLArea.replaceAll(); } else { // how to remove in IE? } // W3C/Moz 1.3+ - reload() without adjusting form data } else if(document.designMode) { // HTML or htmlArea if (editor == 'htmlarea') { // HTMLArea.replace('en'); HTMLArea.replaceAll(); } else { window.location.reload(); } } } </script> <!-- END HTMLAREA3 Javascript --> </head> <body> <!-- onLoad="HTMLArea.replace('en'); HTMLArea.replace('fr');" --> <a name="top"> </a> <table id="header" width=80%> <tr><td> <div style="vertical-align:bottom"> <div class="psl-logo"> <a href="{ROOTDIR}"><img src="{IMAGEDIR}/topics/topicphpslash.gif" alt="{SITE_NAME}" width="100" height="40"/></a> </div> <div class="psl-title"> {SITETITLE} </div> </div> <!-- Search box <div class="psl-search"> <form method="get" action="{SEARCH_ACTION_URL}"> <input type="text" name=query value="" size="15" class="psl-text" /> <input type="submit" value="Search" class="psl-button" /> <input type="hidden" name="topic_id" value="" /> <input type="hidden" name="section_id" value="" /> <input type="hidden" name="author_id" value="" /> </form> </div> end: search --> <!-- TOPICBAR --> </td></tr> <tr><td> {NAVBAR} </td></tr> </table> <!-- end: header --> <!-- END slashHead.tpl --> |
From: Joe S. <joe...@us...> - 2003-11-13 02:35:36
|
Update of /cvsroot/phpslash/phpslash-skins In directory sc8-pr-cvs1:/tmp/cvs-serv4223/phpslash-skins Modified Files: CHANGES Log Message: htmlarea tweaking Index: CHANGES =================================================================== RCS file: /cvsroot/phpslash/phpslash-skins/CHANGES,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** CHANGES 11 Nov 2003 20:57:21 -0000 1.9 --- CHANGES 13 Nov 2003 02:35:33 -0000 1.10 *************** *** 13,16 **** --- 13,18 ---- 9 - Removal of something (kill -9 :) + 2003-November 12 8:30PM CST Joe Stewart <joe...@us...> + [FT] - ShankZen/slashHead-htmlarea3.tpl - added htmlarea3 support. 2003-November 11 2:30PM CST Joe Stewart <joe...@us...> |
From: Joe S. <joe...@us...> - 2003-11-13 02:34:26
|
Update of /cvsroot/phpslash/phpslash-dev/include/templates/en/basiccurves In directory sc8-pr-cvs1:/tmp/cvs-serv3952/phpslash-dev/include/templates/en/basiccurves Added Files: slashHead-htmlarea3.tpl Log Message: htmlarea tweaking --- NEW FILE: slashHead-htmlarea3.tpl --- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <!-- START slashHead.tpl --> <html> <head> <title>{SITE_NAME} - {SECTION} {SITETITLE}</title> <!-- Enter Your Desired META Tags Below Here --> <!-- This Meta Tag is Defined In Each Page By Setting The Variable $xsiteobject = "HomePage"; to the page type HomePage, Glossary, Info, etc.. --> <meta name="object" content="{XSITEOBJECT}" /> <!-- Enter Your META Tags Above Here --> <!-- BEGIN each_metatag --> <meta name="{METANAME}" content="{METADESCRIPTION}" /> <!-- END each_metatag --> <link rel="alternate" type="application/rss+xml" title="RSS" href="{ROOTDIR}/backend.php" /> <!-- BEGIN HTMLAREA3 Javascript --> <script TYPE="text/javascript" LANGUAGE="JavaScript"> <!-- Script Begin <!-- Root path for the html WYSIWYG editor --> var _editor_url="{ROOTDIR}/scripts/htmlarea3/"; // --> </script> <link rel="stylesheet" type="text/css" href="{ROOTDIR}/styles/basic.css" /> <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/htmlarea.js"></script> <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/lang/en.js"></script> <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/dialog.js"></script> <!-- <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/popupdiv.js"></script> --> <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/popupwin.js"></script> <!-- load the TableOperations plugin files --> <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/plugins/TableOperations/table-operations.js"></script> <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/plugins/TableOperations/lang/en.js"></script> <style type="text/css"> @import url({ROOTDIR}/scripts/htmlarea3/htmlarea.css); textarea { background-color: #fff; border: 1px solid 00f; } </style> <script TYPE="text/javascript" LANGUAGE="JavaScript"> var editor = null; function initEditor() { // create an editor for the "ta" textbox editor = new HTMLArea("ta"); // register the TableOperations plugin with our editor editor.registerPlugin("TableOperations"); editor.generate(); return false; } function insertHTML() { var html = prompt("Enter some HTML code here"); if (html) { editor.insertHTML(html); } } function highlight() { editor.surroundHTML('<span style="background-color: white">', '</span>'); } function PSL_chooseEditor(editor) { // if IE 5.5 or W3C/Moz 1.3+ - Can't combine the two due to problems with reload() & IE // if((document.all && document.designMode) || (document.designMode)) { // IE 5.5 - Eliminating reload() because it pulled down new form data if(document.all && document.designMode) { // HTML or htmlArea if (editor == 'htmlarea') { // HTMLArea.replace('en'); HTMLArea.replaceAll(); } else { // how to remove in IE? } // W3C/Moz 1.3+ - reload() without adjusting form data } else if(document.designMode) { // HTML or htmlArea if (editor == 'htmlarea') { // HTMLArea.replace('en'); HTMLArea.replaceAll(); } else { window.location.reload(); } } } </script> <!-- END HTMLAREA3 Javascript --> </head> <body> <!-- onLoad="HTMLArea.replace('en'); HTMLArea.replace('fr');" --> <a name="top"></a> <div id="header"> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <!-- START: Title and Search --> <tr> <td><a href="{ROOTDIR}"><img src="{IMAGEDIR}/new-logo.gif" border="0" alt="" /></a></td> <td width="50%" align="center"> <form method="get" action="{SEARCH_ACTION_URL}"> <input type="text" name=query value="" size="15" /> <input type="submit" value="Search" /> <input type="hidden" name="topic_id" value="" /> <input type="hidden" name="section_id" value="" /> <input type="hidden" name="author_id" value="" /> </form> </td> </tr> </table> <!-- END: Title and Search --> {TOPICBAR} {NAVBAR} </div> <!-- id="header" --> <!-- END slashHead.tpl --> |
From: Joe S. <joe...@us...> - 2003-11-13 02:34:25
|
Update of /cvsroot/phpslash/phpslash-dev In directory sc8-pr-cvs1:/tmp/cvs-serv3952/phpslash-dev Modified Files: CHANGES Log Message: htmlarea tweaking Index: CHANGES =================================================================== RCS file: /cvsroot/phpslash/phpslash-dev/CHANGES,v retrieving revision 1.49 retrieving revision 1.50 diff -C2 -d -r1.49 -r1.50 *** CHANGES 12 Nov 2003 21:29:47 -0000 1.49 --- CHANGES 13 Nov 2003 02:34:21 -0000 1.50 *************** *** 13,16 **** --- 13,19 ---- 9 - Removal of something (kill -9 :) + 2003-November 12 8:30PM CST Joe Stewart <joe...@us...> + [FT] - slashHead-html3.tpl tweaking. + 2003-November 12 3:00PM CST Joe Stewart <joe...@us...> [FT] - config.php, storyNew.tpl, slashHead-htmlarea3 - Added preliminary |
From: Joe S. <joe...@us...> - 2003-11-13 02:34:25
|
Update of /cvsroot/phpslash/phpslash-dev/include/templates/en/basic In directory sc8-pr-cvs1:/tmp/cvs-serv3952/phpslash-dev/include/templates/en/basic Modified Files: slashHead-htmlarea3.tpl Log Message: htmlarea tweaking Index: slashHead-htmlarea3.tpl =================================================================== RCS file: /cvsroot/phpslash/phpslash-dev/include/templates/en/basic/slashHead-htmlarea3.tpl,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** slashHead-htmlarea3.tpl 12 Nov 2003 21:29:48 -0000 1.1 --- slashHead-htmlarea3.tpl 13 Nov 2003 02:34:21 -0000 1.2 *************** *** 1,127 **** ! <!-- START slashHead-htmlarea3.tpl --> ! ! ! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> ! <!-- START slashHead.tpl --> ! ! <html> ! <head> ! <title>{SITE_NAME} - {SECTION} {SITETITLE}</title> ! <!-- Enter Your Desired META Tags Below Here --> ! <!-- This Meta Tag is Defined In Each Page By Setting The Variable ! $xsiteobject = "HomePage"; to the page type HomePage, Glossary, ! Info, etc.. --> ! <meta name="object" content="{XSITEOBJECT}" /> ! <!-- Enter Your META Tags Above Here --> ! <!-- BEGIN each_metatag --> ! <meta name="{METANAME}" content="{METADESCRIPTION}" /> ! <!-- END each_metatag --> ! <link rel="alternate" type="application/rss+xml" title="RSS" href="{ROOTDIR}/backend.php" /> ! ! <link rel="stylesheet" type="text/css" href="{ROOTDIR}/styles/{SKIN}.css" /> ! ! <!-- BEGIN HTMLAREA3 Javascript --> ! <script TYPE="text/javascript" LANGUAGE="JavaScript"> ! <!-- Script Begin ! <!-- Root path for the html WYSIWYG editor --> ! var _editor_url="{ROOTDIR}/scripts/htmlarea3/"; ! // --> ! </script> ! <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/htmlarea.js"></script> ! <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/lang/en.js"></script> ! <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/dialog.js"></script> ! <!-- <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/popupdiv.js"></script> --> ! <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/popupwin.js"></script> ! ! <!-- load the TableOperations plugin files --> ! <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/plugins/TableOperations/table-operations.js"></script> ! <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/plugins/TableOperations/lang/en.js"></script> ! ! <style type="text/css"> ! @import url({ROOTDIR}/scripts/htmlarea3/htmlarea.css); ! ! textarea { background-color: #fff; border: 1px solid 00f; } ! </style> ! ! <script TYPE="text/javascript" LANGUAGE="JavaScript"> ! var editor = null; ! function initEditor() { ! // create an editor for the "ta" textbox ! editor = new HTMLArea("ta"); ! ! // register the TableOperations plugin with our editor ! editor.registerPlugin("TableOperations"); ! ! editor.generate(); ! return false; ! } ! ! function insertHTML() { ! var html = prompt("Enter some HTML code here"); ! if (html) { ! editor.insertHTML(html); ! } ! } ! function highlight() { ! editor.surroundHTML('<span style="background-color: white">', '</span>'); ! } ! ! function PSL_chooseEditor(editor) { ! ! // if IE 5.5 or W3C/Moz 1.3+ - Can't combine the two due to problems with reload() & IE ! // if((document.all && document.designMode) || (document.designMode)) { ! ! // IE 5.5 - Eliminating reload() because it pulled down new form data ! if(document.all && document.designMode) { ! // HTML or htmlArea ! if (editor == 'htmlarea') { ! // HTMLArea.replace('en'); ! HTMLArea.replaceAll(); ! } else { ! // how to remove in IE? ! } ! ! // W3C/Moz 1.3+ - reload() without adjusting form data ! } else if(document.designMode) { ! // HTML or htmlArea ! if (editor == 'htmlarea') { ! // HTMLArea.replace('en'); ! HTMLArea.replaceAll(); ! } else { ! window.location.reload(); ! } ! } ! } ! ! </script> ! ! <!-- END HTMLAREA3 Javascript --> ! ! </head> ! <body> <!-- onLoad="HTMLArea.replace('en'); HTMLArea.replace('fr');" --> ! ! <a name="top"></a> ! <div id="header"> ! <table width="100%" border="0" cellpadding="0" cellspacing="0"> ! <!-- START: Title and Search --> ! <tr> ! <td><a href="{ROOTDIR}"><img src="{IMAGEDIR}/topics/topicphpslash.gif" border="0" alt="" /></a></td> ! <td width="50%" align="center"> ! <form method="get" action="{SEARCH_ACTION_URL}"> ! <input type="text" name=query value="" size="15" /> ! <input type="submit" value="Search" /> ! <input type="hidden" name="topic_id" value="" /> ! <input type="hidden" name="section_id" value="" /> ! <input type="hidden" name="author_id" value="" /> ! </form> ! </td> ! </tr> ! </table> ! <!-- END: Title and Search --> ! ! {TOPICBAR} ! {NAVBAR} ! ! </div> <!-- id="header" --> ! ! <!-- END slashHead-htmlarea.tpl --> --- 1,122 ---- ! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> ! <!-- START slashHead.tpl --> ! ! <html> ! <head> ! <title>{SITE_NAME} - {SECTION} {SITETITLE}</title> ! <!-- Enter Your Desired META Tags Below Here --> ! <!-- This Meta Tag is Defined In Each Page By Setting The Variable ! $xsiteobject = "HomePage"; to the page type HomePage, Glossary, ! Info, etc.. --> ! <meta name="object" content="{XSITEOBJECT}" /> ! <!-- Enter Your META Tags Above Here --> ! <!-- BEGIN each_metatag --> ! <meta name="{METANAME}" content="{METADESCRIPTION}" /> ! <!-- END each_metatag --> ! <link rel="alternate" type="application/rss+xml" title="RSS" href="{ROOTDIR}/backend.php" /> ! <!-- BEGIN HTMLAREA3 Javascript --> ! <script TYPE="text/javascript" LANGUAGE="JavaScript"> ! <!-- Script Begin ! <!-- Root path for the html WYSIWYG editor --> ! var _editor_url="{ROOTDIR}/scripts/htmlarea3/"; ! // --> ! </script> ! <link rel="stylesheet" type="text/css" href="{ROOTDIR}/styles/{SKIN}.css" /> ! <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/htmlarea.js"></script> ! <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/lang/en.js"></script> ! <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/dialog.js"></script> ! <!-- <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/popupdiv.js"></script> --> ! <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/popupwin.js"></script> ! ! <!-- load the TableOperations plugin files --> ! <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/plugins/TableOperations/table-operations.js"></script> ! <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/plugins/TableOperations/lang/en.js"></script> ! ! <style type="text/css"> ! @import url({ROOTDIR}/scripts/htmlarea3/htmlarea.css); ! ! textarea { background-color: #fff; border: 1px solid 00f; } ! </style> ! ! <script TYPE="text/javascript" LANGUAGE="JavaScript"> ! var editor = null; ! function initEditor() { ! // create an editor for the "ta" textbox ! editor = new HTMLArea("ta"); ! ! // register the TableOperations plugin with our editor ! editor.registerPlugin("TableOperations"); ! ! editor.generate(); ! return false; ! } ! ! function insertHTML() { ! var html = prompt("Enter some HTML code here"); ! if (html) { ! editor.insertHTML(html); ! } ! } ! function highlight() { ! editor.surroundHTML('<span style="background-color: white">', '</span>'); ! } ! ! function PSL_chooseEditor(editor) { ! ! // if IE 5.5 or W3C/Moz 1.3+ - Can't combine the two due to problems with reload() & IE ! // if((document.all && document.designMode) || (document.designMode)) { ! ! // IE 5.5 - Eliminating reload() because it pulled down new form data ! if(document.all && document.designMode) { ! // HTML or htmlArea ! if (editor == 'htmlarea') { ! // HTMLArea.replace('en'); ! HTMLArea.replaceAll(); ! } else { ! // how to remove in IE? ! } ! ! // W3C/Moz 1.3+ - reload() without adjusting form data ! } else if(document.designMode) { ! // HTML or htmlArea ! if (editor == 'htmlarea') { ! // HTMLArea.replace('en'); ! HTMLArea.replaceAll(); ! } else { ! window.location.reload(); ! } ! } ! } ! ! </script> ! ! <!-- END HTMLAREA3 Javascript --> ! ! </head> ! <body> <!-- onLoad="HTMLArea.replace('en'); HTMLArea.replace('fr');" --> ! ! <a name="top"></a> ! <div id="header"> ! <table width="100%" border="0" cellpadding="0" cellspacing="0"> ! <!-- START: Title and Search --> ! <tr> ! <td><a href="{ROOTDIR}"><img src="{IMAGEDIR}/new-logo.gif" border="0" alt="" /></a></td> ! <td width="50%" align="center"> ! <form method="get" action="{SEARCH_ACTION_URL}"> ! <input type="text" name=query value="" size="15" /> ! <input type="submit" value="Search" /> ! <input type="hidden" name="topic_id" value="" /> ! <input type="hidden" name="section_id" value="" /> ! <input type="hidden" name="author_id" value="" /> ! </form> ! </td> ! </tr> ! </table> ! <!-- END: Title and Search --> ! ! {TOPICBAR} ! {NAVBAR} ! ! </div> <!-- id="header" --> ! ! <!-- END slashHead.tpl --> |
From: Joe S. <joe...@us...> - 2003-11-12 22:22:34
|
Update of /cvsroot/phpslash/phpslash-dev/public_html/scripts/htmlarea3/popups In directory sc8-pr-cvs1:/tmp/cvs-serv23131/phpslash-dev/public_html/scripts/htmlarea3/popups Added Files: about.html blank.html custom2.html editor_help.html fullscreen.html insert_image.html insert_table.html makefile.xml old-fullscreen.html old_insert_image.html popup.js select_color.html Log Message: Added preliminary htmlArea editing support to the Story entry form. --- NEW FILE: about.html --- <!-- (c) dynarch.com, 2003 Author: Mihai Bazon, http://dynarch.com/mishoo Distributed under GNU GPL or as part of HTMLArea 3.0. "You are not expected to understand this... I don't neither." (from The Linux Kernel Source Code, ./arch/x86_64/ia32/ptrace.c:90) ;-) --> <html style="height: 100%"> <head><title>About HTMLArea</title> <script type="text/javascript" src="popup.js"></script> <script type="text/javascript"> window.resizeTo(450, 250); var TABS = []; var CURRENT_TAB = 0; var CONTENT_HEIGHT_DIFF = 0; var CONTENT_WIDTH_DIFF = 0; function selectTab(idx) { var ct = TABS[CURRENT_TAB]; ct.className = ct.className.replace(/\s*tab-current\s*/, ' '); ct = TABS[CURRENT_TAB = idx]; ct.className += ' tab-current'; for (var i = TABS.length; --i >= 0;) { var area = document.getElementById("tab-area-" + i); if (CURRENT_TAB == i) { area.style.display = "block"; } else { area.style.display = "none"; } } document.body.style.visibility = "hidden"; document.body.style.visibility = "visible"; document.cookie = "HTMLAREA-ABOUT-TAB=" + idx; } var editor = null; function initDocument() { editor = window.dialogArguments; var plugins = document.getElementById("plugins"); var j = 0; var html = "<table width='99%' cellpadding='0' style='margin-top: 1em; collapse-borders: collapse; border: 1px solid #8b8;'>" + "<thead><tr>" + "<td>Name</td>" + "<td>Developer</td>" + "<td>Sponsor</td>" + "<td>License<sup>*</sup></td>" + "</tr></thead><tbody>"; for (var i in editor.plugins) { var info = editor.plugins[i]; html += "<tr><td>" + info.name + " v" + info.version + "</td>" + "<td><a href='" + info.developer_url + "' target='_blank' title='Visit developer website'>" + info.developer + "</a></td>" + "<td><a href='" + info.sponsor_url + "' target='_blank' title='Visit sponsor website'>" + info.sponsor + "</a></td>" + "<td>" + info.license + "</td></tr>"; ++j; } if (j) { html += "</tbody></table>" + "<p><sup>*</sup> License \"htmlArea\" means that the plugin is distributed under the same terms " + "as HTMLArea itself. Such plugins are likely to be those included in the official " + "HTMLArea distribution</p>"; plugins.innerHTML = html; } else { plugins.innerHTML = "<p>No plugins have been loaded</p>"; } var content = document.getElementById("content"); if (window.innerHeight) { CONTENT_HEIGHT_DIFF = window.innerHeight - 250; CONTENT_WIDTH_DIFF = window.innerWidth - 400; } else { CONTENT_HEIGHT_DIFF = document.body.offsetHeight - 250; CONTENT_WIDTH_DIFF = document.body.offsetWidth - 400; } window.onresize(); var bar = document.getElementById("tabbar"); j = 0; for (var i = bar.firstChild; i; i = i.nextSibling) { TABS.push(i); i.__msh_tab = j; i.onclick = function() { selectTab(this.__msh_tab); }; var area = document.getElementById("tab-area-" + j); if (/tab-current/.test(i.className)) { CURRENT_TAB = j; area.style.display = "block"; } else { area.style.display = "none"; } ++j; } if (document.cookie.match(/HTMLAREA-ABOUT-TAB=([0-9]+)/)) selectTab(RegExp.$1); } window.onresize = function() { var content = document.getElementById("content"); if (window.innerHeight) { content.style.height = (window.innerHeight - CONTENT_HEIGHT_DIFF) + "px"; //content.style.width = (window.innerWidth - CONTENT_WIDTH_DIFF) + "px"; } else { content.style.height = (document.body.offsetHeight - CONTENT_HEIGHT_DIFF) + "px"; //content.style.width = (document.body.offsetWidth - CONTENT_WIDTH_DIFF) + "px"; } } </script> <style> html,body,textarea,table { font-family: tahoma,verdana,arial; font-size: 11px; padding: 0px; margin: 0px; } tt { font-size: 120%; } body { padding: 0px; background: #cea; color: 000; } a:link, a:visited { color: #00f; } a:hover { color: #f00; } a:active { color: #f80; } button { font: 11px tahoma,verdana,sans-serif; background-color: #cea; border-width: 1px; } p { margin: 0.5em 0px; } h1 { font-family: georgia,"times new roman",serif; font-size: 130%; margin: 0px; border-bottom: 1px solid #6a6; } h2 { font-family: georgia,"times new roman",serif; font-size: 110%; margin: 0.7em 0px; } thead { font-weight: bold; background-color: #dfb; } .logo, .logo-hover { white-space: nowrap; background-color: #8f4; color: #040; padding: 3px; border-bottom: 1px solid #555; height: 5em; } .logo .brand, .logo-hover .brand { margin-left: 0.5em; margin-right: 0.5em; padding-bottom: 0.1em; font-family: impact,'arial black',arial,sans-serif; font-size: 28px; border-bottom: 1px solid #595; text-align: center; cursor: pointer; } .logo-hover { background-color: #fff; } .logo-hover .brand { color: #800; border-color: #04f; } .logo .letter, .logo-hover .letter { position: relative; font-family: monospace; } .logo .letter1 { top: 0.1em; } .logo .letter2 { top: 0.05em; } .logo .letter3 { top: -0.05em; } .logo .letter4 { top: -0.1em; } .logo-hover .letter1 { top: -0.1em; } .logo-hover .letter2 { top: -0.05em; } .logo-hover .letter3 { top: 0.05em; } .logo-hover .letter4 { top: 0.1em; } .logo .version, .logo-hover .version { font-family: georgia,"times new roman",serif; } .logo .release { font-size: 90%; margin-bottom: 1em; text-align: center; color: #484; } .logo .visit { display: none; } .logo-hover .release { display: none; } .logo-hover .visit { font-size: 90%; margin-bottom: 1em; text-align: center; color: #448; } .buttons { text-align: right; padding: 3px; background-color: #8f4; border-top: 1px solid #555; } #tabbar { position: relative; left: 10px; } .tab { color: #454; cursor: pointer; margin-left: -5px; float: left; position: relative; border: 1px solid #555; top: -3px; left: -2px; padding: 2px 10px 3px 10px; border-top: none; background-color: #9b7; -moz-border-radius: 0px 0px 4px 4px; z-index: 0; } .tab-current { color: #000; top: -4px; background-color: #cea; padding: 3px 10px 4px 10px; z-index: 10; } table.sponsors { border-top: 1px solid #aca; } table.sponsors td { border-bottom: 1px solid #aca; vertical-align: top; } table.sponsors tr td { padding: 2px 0px; } table.sponsors tr td.sponsor { text-align: right; padding-right: 0.3em; white-space: nowrap; } li, ol, ul { margin-top: 0px; margin-bottom: 0px; } </style></head> <body onload="__dlg_init(); initDocument();" ><table cellspacing="0" cellpadding="0" style="border-collapse: collapse; width: 100%; height: 100%;"> <tr style="height: 1em"><td id="tdheader"> <div class="logo"> <div class="brand" onmouseover="this.parentNode.className='logo-hover';" onmouseout="this.parentNode.className='logo';" onclick="window.open('http://dynarch.com/htmlarea/');"> <span class="letter letter1"><H</span><span class="letter letter2">T</span><span class="letter letter3">M</span><span class="letter letter4">L</span>Area <span class="letter">/></span> <span class="version"><% $version.$release %></span></div> <div class="release">Compiled on <% $time %></div> <div class="visit">http://dynarch.com/htmlarea/ [latest milestone release]</div> </div> </td></tr> <tr><td id="tdcontent" style="padding: 0.5em;"> <div style="overflow: auto; height: 250px;" id="content"> <div id="tab-areas"> <div id="tab-area-0"> <h1>HTMLArea</h1> <p>A free WYSIWYG editor replacement for <tt><textarea></tt> fields.</p> <p>For full source code and docs, visit:<br /> <a href="http://www.interactivetools.com/products/htmlarea/" target="_blank" >http://www.interactivetools.com/products/htmlarea/</a></p> <p>© 2002, 2003 <a href="http://interactivetools.com" target="_blank">interactivetools.com</a>, inc. All Rights Reserved.</p> <p>Version 3.0 developed and maintained by <a href="http://dynarch.com/mishoo/" title="http://dynarch.com/mishoo/" target="_blank">mishoo</a> / <a href="http://dynarch.com" title="http://dynarch.com/" target="_blank">dynarch.com</a></p> </div> <div id="tab-area-1"> <h1>Credits</h1> <p>HTMLArea version 3.0 is developed and maintained by <a href="http://dynarch.com" target="_blank">dynarch.com</a> (<a href="http://dynarch.com/mishoo/" target="_blank">Mihai Bazon</a>) for <a href="http://interactivetools.com" target="_blank">interactivetools.com</a>. It is a complete rewrite of htmlArea 2 featuring cross-browser compatibility and W3 compliance (where possible). InteractiveTools has financed HTMLArea 3.0 until it's Alpha stage.</p> <h2>Special thanks to</h2> <table class="sponsors" cellspacing="0px" cellpadding="0px" style="border-collapse: collapse; width: 99%;"> <tr> <td class="sponsor"><a href="http://www.os3.it" target="_blank">Fabio Rotondo</a></td> <td>for making considerable donations, bug reporting, Italian translation.</td> </tr> </table> <p>Also many thanks to all people who submitted translations.</p> </div> <div id="tab-area-2"> <h1>htmlArea License (based on BSD license)</h1> <p style="text-align: center">Copyright (c) 2002, 2003, interactivetools.com, inc.<br /> All rights reserved.</p> <p> Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: </p> <ol> <li> Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. </li> <li> Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. </li> <li> Neither the name of interactivetools.com, inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. </li> </ol> <p> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. </p> </div> <div id="tab-area-3"> <h1>Plugins</h1> <div id="plugins"> </div> </div> </div></div> </tr></td> <tr style="height: 1em"><td id="tdfooter"> <div class="buttons"> <div id="tabbar" ><div class="tab tab-current" >About</div><div class="tab" >Credits</div><div class="tab" >License</div><div class="tab" >Plugins</div></div> <button type="button" onclick="__dlg_close(null);">I agree it's cool</button> </div> </td></tr></table> </body></html> <%ARGS> $version => '3.0' $release => 'beta+' $basename => 'HTMLArea-3.0-beta' </%ARGS> <%INIT>; if ($release =~ /\S/) { $release = ' <span style="position: relative; top: -0.6em; font-size: 50%; font-weight: normal">[ rev. '.$release.' ]</span>'; } use POSIX qw(strftime); my $time = strftime '%b %e, %Y [%H:%M] GMT', gmtime; </%INIT> --- NEW FILE: blank.html --- <html> </html> --- NEW FILE: custom2.html --- <html style="width:300px; Height: 60px;"> <head> <title>Select Phrase</title> <script language="javascript"> var myTitle = window.dialogArguments; document.title = myTitle; function returnSelected() { var idx = document.all.textPulldown.selectedIndex; var text = document.all.textPulldown[idx].text; window.returnValue = text; // set return value window.close(); // close dialog } </script> </head> <body bgcolor="#FFFFFF" topmargin=15 leftmargin=0> <form method=get onSubmit="Set(document.all.ColorHex.value); return false;"> <div align=center> <select name="textPulldown"> <option>The quick brown</option> <option>fox jumps over</option> <option>the lazy dog.</option> </select> <input type="button" value=" Go " onClick="returnSelected()"> </div> </form> </body></html> --- NEW FILE: editor_help.html --- <html> <head> <title>Editor Help</title> <style> body, td, p, div { font-family: arial; font-size: x-small; } </style> </head> <body> <h2>Editor Help<hr></h2> Todo... </body> </html> --- NEW FILE: fullscreen.html --- <html> <head><title>Fullscreen Editor</title> <style type="text/css"> @import url(../htmlarea.css); html, body { margin: 0px; border: 0px; background-color: buttonface; } </style> <!-- <script type="text/javascript" src="../htmlarea.js"></script> <script type="text/javascript" src="../htmlarea-lang-en.js"></script> <script type="text/javascript" src="../dialog.js"></script> --> <script type="text/javascript"> // load same scripts that were present in the opener page var scripts = opener.document.getElementsByTagName("script"); var head = document.getElementsByTagName("head")[0]; for (var i = 0; i < scripts.length; ++i) { var script = scripts[i]; if (typeof script.src != "undefined" && /\S/.test(script.src)) { // document.write("<scr" + "ipt type=" + "\"script/javascript\""); // document.write(" src=\"../" + script.src + "\"></scr" + "ipt>"); var new_script = document.createElement("script"); if (/^http:/i.test(script.src)) { new_script.src = script.src; } else if (script.src) { new_script.src = "../" + script.src; } head.appendChild(new_script); } } </script> <script type="text/javascript"> var parent_object = null; var editor = null; // to be initialized later [ function init() ] /* ---------------------------------------------------------------------- *\ Function : Description : \* ---------------------------------------------------------------------- */ function _CloseOnEsc(ev) { if (document.all) { // IE ev = window.event; } if (ev.keyCode == 27) { // update_parent(); window.close(); return; } } /* ---------------------------------------------------------------------- *\ Function : cloneObject Description : copy an object by value instead of by reference Usage : var newObj = cloneObject(oldObj); \* ---------------------------------------------------------------------- */ function cloneObject(obj) { var newObj = new Object; // check for array objects if (obj.constructor.toString().indexOf("function Array(") == 1) { newObj = obj.constructor(); } // check for function objects (as usual, IE is fucked up) if (obj.constructor.toString().indexOf("function Function(") == 1) { newObj = obj; // just copy reference to it } else for (var n in obj) { var node = obj[n]; if (typeof node == 'object') { newObj[n] = cloneObject(node); } else { newObj[n] = node; } } return newObj; } /* ---------------------------------------------------------------------- *\ Function : resize_editor Description : resize the editor when the user resizes the popup \* ---------------------------------------------------------------------- */ function resize_editor() { // resize editor to fix window var newHeight; if (document.all) { // IE newHeight = document.body.offsetHeight - editor._toolbar.offsetHeight; if (newHeight < 0) { newHeight = 0; } } else { // Gecko newHeight = window.innerHeight - editor._toolbar.offsetHeight; } if (editor.config.statusBar) { newHeight -= editor._statusBar.offsetHeight; } editor._textArea.style.height = editor._iframe.style.height = newHeight + "px"; } /* ---------------------------------------------------------------------- *\ Function : init Description : run this code on page load \* ---------------------------------------------------------------------- */ function init() { parent_object = opener.HTMLArea._object; var config = cloneObject( parent_object.config ); /* config.editorURL = "http://www.be.ca/scripts/htmlarea3/"; */ config.editorURL = "../"; config.width = "100%"; config.height = "auto"; // change maximize button to minimize button config.btnList["popupeditor"] = [ 'Minimize Editor', 'images/fullscreen_minimize.gif', true, function() { window.close(); } ]; // generate editor and resize it editor = new HTMLArea("editor", config); editor.generate(); editor._iframe.style.width = "100%"; editor._textArea.style.width = "100%"; resize_editor(); editor.doctype = parent_object.doctype; // set child window contents and event handlers, after a small delay setTimeout(function() { editor.setHTML(parent_object.getInnerHTML()); // switch mode if needed if (parent_object._mode == "textmode") { editor.setMode("textmode"); } // continuously update parent editor window setInterval(update_parent, 500); // setup event handlers document.body.onkeypress = _CloseOnEsc; editor._doc.body.onkeypress = _CloseOnEsc; editor._textArea.onkeypress = _CloseOnEsc; window.onresize = resize_editor; }, 333); // give it some time to meet the new frame } /* ---------------------------------------------------------------------- *\ Function : update_parent Description : update parent window editor field with contents from child window \* ---------------------------------------------------------------------- */ function update_parent() { // use the fast version parent_object.setHTML(editor.getInnerHTML()); } </script> </head> <body scroll="no" onload="init()" onunload="update_parent()"> <form style="margin: 0px; border: 1px solid; border-color: threedshadow threedhighlight threedhighlight threedshadow;"> <textarea name="editor" id="editor" style="width:100%; height:300px"> </textarea> </form> </body></html> --- NEW FILE: insert_image.html --- <html> <head> <title>Insert Image</title> <script type="text/javascript" src="popup.js"></script> <script type="text/javascript"> window.resizeTo(400, 100); function Init() { __dlg_init(); document.getElementById("f_url").focus(); }; function onOK() { var required = { "f_url": "You must enter the URL" }; for (var i in required) { var el = document.getElementById(i); if (!el.value) { alert(required[i]); el.focus(); return false; } } // pass data back to the calling window var fields = ["f_url", "f_alt", "f_align", "f_border", "f_horiz", "f_vert"]; var param = new Object(); for (var i in fields) { var id = fields[i]; var el = document.getElementById(id); param[id] = el.value; } __dlg_close(param); return false; }; function onCancel() { __dlg_close(null); return false; }; function onPreview() { var f_url = document.getElementById("f_url"); var url = f_url.value; if (!url) { alert("You have to enter an URL first"); f_url.focus(); return false; } window.ipreview.location.replace(url); return false; }; </script> <style type="text/css"> html, body { background: ButtonFace; color: ButtonText; font: 11px Tahoma,Verdana,sans-serif; margin: 0px; padding: 0px; } body { padding: 5px; } table { font: 11px Tahoma,Verdana,sans-serif; } form p { margin-top: 5px; margin-bottom: 5px; } .fl { width: 9em; float: left; padding: 2px 5px; text-align: right; } .fr { width: 6em; float: left; padding: 2px 5px; text-align: right; } fieldset { padding: 0px 10px 5px 5px; } select, input, button { font: 11px Tahoma,Verdana,sans-serif; } button { width: 70px; } .space { padding: 2px; } .title { background: #ddf; color: #000; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px; border-bottom: 1px solid black; letter-spacing: 2px; } form { padding: 0px; margin: 0px; } </style> </head> <body onload="Init()"> <div class="title">Insert Image</div> <!--- new stuff ---> <form action="" method="get"> <table border="0" width="100%" style="padding: 0px; margin: 0px"> <tbody> <tr> <td style="width: 7em; text-align: right">Image URL:</td> <td><input type="text" name="url" id="f_url" style="width:75%" title="Enter the image URL here" /> <button name="preview" onclick="return onPreview();" title="Preview the image in a new window">Preview</button> </td> </tr> <tr> <td style="width: 7em; text-align: right">Alternate text:</td> <td><input type="text" name="alt" id="f_alt" style="width:100%" title="For browsers that don't support images" /></td> </tr> </tbody> </table> <p /> <fieldset style="float: left; margin-left: 5px;"> <legend>Layout</legend> <div class="space"></div> <div class="fl">Alignment:</div> <select size="1" name="align" id="f_align" title="Positioning of this image"> <option value="" >Not set</option> <option value="left" >Left</option> <option value="right" >Right</option> <option value="texttop" >Texttop</option> <option value="absmiddle" >Absmiddle</option> <option value="baseline" selected="1" >Baseline</option> <option value="absbottom" >Absbottom</option> <option value="bottom" >Bottom</option> <option value="middle" >Middle</option> <option value="top" >Top</option> </select> <p /> <div class="fl">Border thickness:</div> <input type="text" name="border" id="f_border" size="5" title="Leave empty for no border" /> <div class="space"></div> </fieldset> <fieldset style="float:right; margin-right: 5px;"> <legend>Spacing</legend> <div class="space"></div> <div class="fr">Horizontal:</div> <input type="text" name="horiz" id="f_horiz" size="5" title="Horizontal padding" /> <p /> <div class="fr">Vertical:</div> <input type="text" name="vert" id="f_vert" size="5" title="Vertical padding" /> <div class="space"></div> </fieldset> <br clear="all" /> <table width="100%" style="margin-bottom: 0.2em"> <tr> <td valign="bottom"> Image Preview:<br /> <iframe name="ipreview" id="ipreview" frameborder="0" style="border : 1px solid gray;" height="200" width="300" src=""></iframe> </td> <td valign="bottom" style="text-align: right"> <button type="button" name="ok" onclick="return onOK();">OK</button><br> <button type="button" name="cancel" onclick="return onCancel();">Cancel</button> </td> </tr> </table> </form> </body> </html> --- NEW FILE: insert_table.html --- <html> <head> <title>Insert Table</title> <script type="text/javascript" src="popup.js"></script> <script type="text/javascript"> window.resizeTo(400, 100); function Init() { __dlg_init(); document.getElementById("f_rows").focus(); }; function onOK() { var required = { "f_rows": "You must enter a number of rows", "f_cols": "You must enter a number of columns" }; for (var i in required) { var el = document.getElementById(i); if (!el.value) { alert(required[i]); el.focus(); return false; } } var fields = ["f_rows", "f_cols", "f_width", "f_unit", "f_align", "f_border", "f_spacing", "f_padding"]; var param = new Object(); for (var i in fields) { var id = fields[i]; var el = document.getElementById(id); param[id] = el.value; } __dlg_close(param); return false; }; function onCancel() { __dlg_close(null); return false; }; </script> <style type="text/css"> html, body { background: ButtonFace; color: ButtonText; font: 11px Tahoma,Verdana,sans-serif; margin: 0px; padding: 0px; } body { padding: 5px; } table { font: 11px Tahoma,Verdana,sans-serif; } form p { margin-top: 5px; margin-bottom: 5px; } .fl { width: 9em; float: left; padding: 2px 5px; text-align: right; } .fr { width: 7em; float: left; padding: 2px 5px; text-align: right; } fieldset { padding: 0px 10px 5px 5px; } select, input, button { font: 11px Tahoma,Verdana,sans-serif; } button { width: 70px; } .space { padding: 2px; } .title { background: #ddf; color: #000; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px; border-bottom: 1px solid black; letter-spacing: 2px; } form { padding: 0px; margin: 0px; } </style> </head> <body onload="Init()"> <div class="title">Insert Table</div> <form action="" method="get"> <table border="0" style="padding: 0px; margin: 0px"> <tbody> <tr> <td style="width: 4em; text-align: right">Rows:</td> <td><input type="text" name="rows" id="f_rows" size="5" title="Number of rows" value="2" /></td> <td></td> <td></td> <td></td> </tr> <tr> <td style="width: 4em; text-align: right">Cols:</td> <td><input type="text" name="cols" id="f_cols" size="5" title="Number of columns" value="4" /></td> <td style="width: 4em; text-align: right">Width:</td> <td><input type="text" name="width" id="f_width" size="5" title="Width of the table" value="100" /></td> <td><select size="1" name="unit" id="f_unit" title="Width unit"> <option value="%" selected="1" >Percent</option> <option value="px" >Pixels</option> <option value="em" >Em</option> </select></td> </tr> </tbody> </table> <p /> <fieldset style="float: left; margin-left: 5px;"> <legend>Layout</legend> <div class="space"></div> <div class="fl">Alignment:</div> <select size="1" name="align" id="f_align" title="Positioning of this image"> <option value="" selected="1" >Not set</option> <option value="left" >Left</option> <option value="right" >Right</option> <option value="texttop" >Texttop</option> <option value="absmiddle" >Absmiddle</option> <option value="baseline" >Baseline</option> <option value="absbottom" >Absbottom</option> <option value="bottom" >Bottom</option> <option value="middle" >Middle</option> <option value="top" >Top</option> </select> <p /> <div class="fl">Border thickness:</div> <input type="text" name="border" id="f_border" size="5" value="1" title="Leave empty for no border" /> <!-- <p /> <div class="fl">Collapse borders:</div> <input type="checkbox" name="collapse" id="f_collapse" /> --> <div class="space"></div> </fieldset> <fieldset style="float:right; margin-right: 5px;"> <legend>Spacing</legend> <div class="space"></div> <div class="fr">Cell spacing:</div> <input type="text" name="spacing" id="f_spacing" size="5" value="1" title="Space between adjacent cells" /> <p /> <div class="fr">Cell padding:</div> <input type="text" name="padding" id="f_padding" size="5" value="1" title="Space between content and border in cell" /> <div class="space"></div> </fieldset> <div style="margin-top: 85px; border-top: 1px solid #999; padding: 2px; text-align: right;"> <button type="button" name="ok" onclick="return onOK();">OK</button> <button type="button" name="cancel" onclick="return onCancel();">Cancel</button> </div> </form> </body> </html> --- NEW FILE: makefile.xml --- <files> <file name="*.{js,html}" /> <file name="about.html" masonize="yes" args="version,release,basename" /> </files> --- NEW FILE: old-fullscreen.html --- <html> <head><title>Fullscreen Editor</title> <style type="text/css"> body { margin: 0px; border: 0px; background-color: buttonface; } </style> <script> // if we pass the "window" object as a argument and then set opener to // equal that we can refer to dialogWindows and popupWindows the same way if (window.dialogArguments) { opener = window.dialogArguments; } var _editor_url = "../"; document.write('<scr'+'ipt src="' +_editor_url+ 'editor.js" language="Javascript1.2"></scr'+'ipt>'); var parent_objname = location.search.substring(1,location.search.length); // parent editor objname var parent_config = opener.document.all[parent_objname].config; var config = cloneObject( parent_config ); var objname = 'editor'; // name of this editor // DOMViewerObj = config; // DOMViewerName = 'config'; // window.open('/innerHTML/domviewer.htm'); /* ---------------------------------------------------------------------- *\ Function : Description : \* ---------------------------------------------------------------------- */ function _CloseOnEsc() { if (event.keyCode == 27) { update_parent(); window.close(); return; } } /* ---------------------------------------------------------------------- *\ Function : cloneObject Description : copy an object by value instead of by reference Usage : var newObj = cloneObject(oldObj); \* ---------------------------------------------------------------------- */ function cloneObject(obj) { var newObj = new Object; // check for array objects if (obj.constructor.toString().indexOf('function Array(') == 1) { newObj = obj.constructor(); } for (var n in obj) { var node = obj[n]; if (typeof node == 'object') { newObj[n] = cloneObject(node); } else { newObj[n] = node; } } return newObj; } /* ---------------------------------------------------------------------- *\ Function : resize_editor Description : resize the editor when the user resizes the popup \* ---------------------------------------------------------------------- */ function resize_editor() { // resize editor to fix window var editor = document.all['_editor_editor']; newWidth = document.body.offsetWidth; newHeight = document.body.offsetHeight - editor.offsetTop; if (newWidth < 0) { newWidth = 0; } if (newHeight < 0) { newHeight = 0; } editor.style.width = newWidth; editor.style.height = newHeight; } /* ---------------------------------------------------------------------- *\ Function : init Description : run this code on page load \* ---------------------------------------------------------------------- */ function init() { // change maximize button to minimize button config.btnList["popupeditor"] = ['popupeditor', 'Minimize Editor', 'update_parent(); window.close();', 'fullscreen_minimize.gif']; // set htmlmode button to refer to THIS editor config.btnList["htmlmode"] = ['HtmlMode', 'View HTML Source', 'editor_setmode(\'editor\')', 'ed_html.gif']; // change image url to be relative to current path config.imgURL = "../images/"; // generate editor and resize it editor_generate('editor', config); resize_editor(); // switch mode if needed if (parent_config.mode == 'textedit') { editor_setmode(objname, 'textedit'); } // set child window contents var parentHTML = opener.editor_getHTML(parent_objname); editor_setHTML(objname, parentHTML); // continuously update parent editor window window.setInterval(update_parent, 333); // setup event handlers document.body.onkeypress = _CloseOnEsc; window.onresize = resize_editor; } /* ---------------------------------------------------------------------- *\ Function : update_parent Description : update parent window editor field with contents from child window \* ---------------------------------------------------------------------- */ function update_parent() { var childHTML = editor_getHTML(objname); opener.editor_setHTML(parent_objname, childHTML); } </script> </head> <body scroll="no" onload="init()" onunload="update_parent()"> <div style="margin: 0 0 0 0; border-width: 1; border-style: solid; border-color: threedshadow threedhighlight threedhighlight threedshadow; "></div> <textarea name="editor" style="width:100%; height:300px"></textarea><br> </body></html> --- NEW FILE: old_insert_image.html --- <!-- based on insimage.dlg --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML 3.2//EN"> <HTML id=dlgImage STYLE="width: 432px; height: 194px; "> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="MSThemeCompatible" content="Yes"> <TITLE>Insert Image</TITLE> <style> html, body, button, div, input, select, fieldset { font-family: MS Shell Dlg; font-size: 8pt; position: absolute; }; </style> <SCRIPT defer> function _CloseOnEsc() { if (event.keyCode == 27) { window.close(); return; } } function _getTextRange(elm) { var r = elm.parentTextEdit.createTextRange(); r.moveToElementText(elm); return r; } window.onerror = HandleError function HandleError(message, url, line) { var str = "An error has occurred in this dialog." + "\n\n" + "Error: " + line + "\n" + message; alert(str); window.close(); return true; } function Init() { var elmSelectedImage; var htmlSelectionControl = "Control"; var globalDoc = window.dialogArguments; var grngMaster = globalDoc.selection.createRange(); // event handlers document.body.onkeypress = _CloseOnEsc; btnOK.onclick = new Function("btnOKClick()"); txtFileName.fImageLoaded = false; txtFileName.intImageWidth = 0; txtFileName.intImageHeight = 0; if (globalDoc.selection.type == htmlSelectionControl) { if (grngMaster.length == 1) { elmSelectedImage = grngMaster.item(0); if (elmSelectedImage.tagName == "IMG") { txtFileName.fImageLoaded = true; if (elmSelectedImage.src) { txtFileName.value = elmSelectedImage.src.replace(/^[^*]*(\*\*\*)/, "$1"); // fix placeholder src values that editor converted to abs paths txtFileName.intImageHeight = elmSelectedImage.height; txtFileName.intImageWidth = elmSelectedImage.width; txtVertical.value = elmSelectedImage.vspace; txtHorizontal.value = elmSelectedImage.hspace; txtBorder.value = elmSelectedImage.border; txtAltText.value = elmSelectedImage.alt; selAlignment.value = elmSelectedImage.align; } } } } txtFileName.value = txtFileName.value || "http://"; txtFileName.focus(); } function _isValidNumber(txtBox) { var val = parseInt(txtBox); if (isNaN(val) || val < 0 || val > 999) { return false; } return true; } function btnOKClick() { var elmImage; var intAlignment; var htmlSelectionControl = "Control"; var globalDoc = window.dialogArguments; var grngMaster = globalDoc.selection.createRange(); // error checking if (!txtFileName.value || txtFileName.value == "http://") { alert("Image URL must be specified."); txtFileName.focus(); return; } if (txtHorizontal.value && !_isValidNumber(txtHorizontal.value)) { alert("Horizontal spacing must be a number between 0 and 999."); txtHorizontal.focus(); return; } if (txtBorder.value && !_isValidNumber(txtBorder.value)) { alert("Border thickness must be a number between 0 and 999."); txtBorder.focus(); return; } if (txtVertical.value && !_isValidNumber(txtVertical.value)) { alert("Vertical spacing must be a number between 0 and 999."); txtVertical.focus(); return; } // delete selected content and replace with image if (globalDoc.selection.type == htmlSelectionControl && !txtFileName.fImageLoaded) { grngMaster.execCommand('Delete'); grngMaster = globalDoc.selection.createRange(); } idstr = "\" id=\"556e697175657e537472696e67"; // new image creation ID if (!txtFileName.fImageLoaded) { grngMaster.execCommand("InsertImage", false, idstr); elmImage = globalDoc.all['556e697175657e537472696e67']; elmImage.removeAttribute("id"); elmImage.removeAttribute("src"); grngMaster.moveStart("character", -1); } else { elmImage = grngMaster.item(0); if (elmImage.src != txtFileName.value) { grngMaster.execCommand('Delete'); grngMaster = globalDoc.selection.createRange(); grngMaster.execCommand("InsertImage", false, idstr); elmImage = globalDoc.all['556e697175657e537472696e67']; elmImage.removeAttribute("id"); elmImage.removeAttribute("src"); grngMaster.moveStart("character", -1); txtFileName.fImageLoaded = false; } grngMaster = _getTextRange(elmImage); } if (txtFileName.fImageLoaded) { elmImage.style.width = txtFileName.intImageWidth; elmImage.style.height = txtFileName.intImageHeight; } if (txtFileName.value.length > 2040) { txtFileName.value = txtFileName.value.substring(0,2040); } elmImage.src = txtFileName.value; if (txtHorizontal.value != "") { elmImage.hspace = parseInt(txtHorizontal.value); } else { elmImage.hspace = 0; } if (txtVertical.value != "") { elmImage.vspace = parseInt(txtVertical.value); } else { elmImage.vspace = 0; } elmImage.alt = txtAltText.value; if (txtBorder.value != "") { elmImage.border = parseInt(txtBorder.value); } else { elmImage.border = 0; } elmImage.align = selAlignment.value; grngMaster.collapse(false); grngMaster.select(); window.close(); } </SCRIPT> </HEAD> <BODY id=bdy onload="Init()" style="background: threedface; color: windowtext;" scroll=no> <DIV id=divFileName style="left: 0.98em; top: 1.2168em; width: 7em; height: 1.2168em; ">Image URL:</DIV> <INPUT ID=txtFileName type=text style="left: 8.54em; top: 1.0647em; width: 21.5em;height: 2.1294em; " tabIndex=10 onfocus="select()"> <DIV id=divAltText style="left: 0.98em; top: 4.1067em; width: 6.58em; height: 1.2168em; ">Alternate Text:</DIV> <INPUT type=text ID=txtAltText tabIndex=15 style="left: 8.54em; top: 3.8025em; width: 21.5em; height: 2.1294em; " onfocus="select()"> <FIELDSET id=fldLayout style="left: .9em; top: 7.1em; width: 17.08em; height: 7.6em;"> <LEGEND id=lgdLayout>Layout</LEGEND> </FIELDSET> <FIELDSET id=fldSpacing style="left: 18.9em; top: 7.1em; width: 11em; height: 7.6em;"> <LEGEND id=lgdSpacing>Spacing</LEGEND> </FIELDSET> <DIV id=divAlign style="left: 1.82em; top: 9.126em; width: 4.76em; height: 1.2168em; ">Alignment:</DIV> <SELECT size=1 ID=selAlignment tabIndex=20 style="left: 10.36em; top: 8.8218em; width: 6.72em; height: 1.2168em; "> <OPTION id=optNotSet value=""> Not set </OPTION> <OPTION id=optLeft value=left> Left </OPTION> <OPTION id=optRight value=right> Right </OPTION> <OPTION id=optTexttop value=textTop> Texttop </OPTION> <OPTION id=optAbsMiddle value=absMiddle> Absmiddle </OPTION> <OPTION id=optBaseline value=baseline SELECTED> Baseline </OPTION> <OPTION id=optAbsBottom value=absBottom> Absbottom </OPTION> <OPTION id=optBottom value=bottom> Bottom </OPTION> <OPTION id=optMiddle value=middle> Middle </OPTION> <OPTION id=optTop value=top> Top </OPTION> </SELECT> <DIV id=divHoriz style="left: 19.88em; top: 9.126em; width: 4.76em; height: 1.2168em; ">Horizontal:</DIV> <INPUT ID=txtHorizontal style="left: 24.92em; top: 8.8218em; width: 4.2em; height: 2.1294em; ime-mode: disabled;" type=text size=3 maxlength=3 value="" tabIndex=25 onfocus="select()"> <DIV id=divBorder style="left: 1.82em; top: 12.0159em; width: 8.12em; height: 1.2168em; ">Border Thickness:</DIV> <INPUT ID=txtBorder style="left: 10.36em; top: 11.5596em; width: 6.72em; height: 2.1294em; ime-mode: disabled;" type=text size=3 maxlength=3 value="" tabIndex=21 onfocus="select()"> <DIV id=divVert style="left: 19.88em; top: 12.0159em; width: 3.64em; height: 1.2168em; ">Vertical:</DIV> <INPUT ID=txtVertical style="left: 24.92em; top: 11.5596em; width: 4.2em; height: 2.1294em; ime-mode: disabled;" type=text size=3 maxlength=3 value="" tabIndex=30 onfocus="select()"> <BUTTON ID=btnOK style="left: 31.36em; top: 1.0647em; width: 7em; height: 2.2em; " type=submit tabIndex=40>OK</BUTTON> <BUTTON ID=btnCancel style="left: 31.36em; top: 3.6504em; width: 7em; height: 2.2em; " type=reset tabIndex=45 onClick="window.close();">Cancel</BUTTON> </BODY> </HTML> --- NEW FILE: popup.js --- function getAbsolutePos(el) { var r = { x: el.offsetLeft, y: el.offsetTop }; if (el.offsetParent) { var tmp = getAbsolutePos(el.offsetParent); r.x += tmp.x; r.y += tmp.y; } return r; }; function __dlg_onclose() { opener.Dialog._return(null); }; function __dlg_init(bottom) { var body = document.body; var body_height = 0; if (typeof bottom == "undefined") { var div = document.createElement("div"); body.appendChild(div); var pos = getAbsolutePos(div); body_height = pos.y; } else { var pos = getAbsolutePos(bottom); body_height = pos.y + bottom.offsetHeight; } window.dialogArguments = opener.Dialog._arguments; if (!document.all) { window.sizeToContent(); window.sizeToContent(); // for reasons beyond understanding, // only if we call it twice we get the // correct size. window.addEventListener("unload", __dlg_onclose, true); // center on parent var x = opener.screenX + (opener.outerWidth - window.outerWidth) / 2; var y = opener.screenY + (opener.outerHeight - window.outerHeight) / 2; window.moveTo(x, y); window.innerWidth = body.offsetWidth + 5; window.innerHeight = body_height; } else { // window.dialogHeight = body.offsetHeight + 50 + "px"; // window.dialogWidth = body.offsetWidth + "px"; window.resizeTo(body.offsetWidth, body_height); var ch = body.clientHeight; var cw = body.clientWidth; window.resizeBy(body.offsetWidth - cw, body_height - ch); var W = body.offsetWidth; var H = 2 * body_height - ch; var x = (screen.availWidth - W) / 2; var y = (screen.availHeight - H) / 2; window.moveTo(x, y); } }; function __dlg_translate(namespace) { var spans = document.getElementsByTagName("span"); for (var i = spans.length; --i >= 0;) { var span = spans[i]; if (span.firstChild && span.firstChild.data) { var txt = namespace.I18N[span.firstChild.data]; if (txt) span.firstChild.data = txt; } } var txt = namespace.I18N[document.title]; if (txt) document.title = txt; }; // closes the dialog and passes the return info upper. function __dlg_close(val) { opener.Dialog._return(val); window.close(); }; --- NEW FILE: select_color.html --- <!-- note: this version of the color picker is optimized for IE 5.5+ only --> <html><head><title>Select Color</title> <script type="text/javascript" src="popup.js"></script> <script type="text/javascript"> window.resizeTo(240, 182); function _CloseOnEsc() { if (event.keyCode == 27) { window.close(); return; } } function Init() { // run on page load __dlg_init(); // <!-- this can be found in popup.js --> document.body.onkeypress = _CloseOnEsc; var color = window.dialogArguments; color = ValidateColor(color) || '000000'; View(color); // set default color } function View(color) { // preview color document.getElementById("ColorPreview").style.backgroundColor = '#' + color; document.getElementById("ColorHex").value = '#' + color; } function Set(string) { // select color var color = ValidateColor(string); if (color == null) { alert("Invalid color code: " + string); } // invalid color else { // valid color View(color); // show selected color __dlg_close(color); } } function ValidateColor(string) { // return valid color code string = string || ''; string = string + ""; string = string.toUpperCase(); var chars = '0123456789ABCDEF'; var out = ''; for (var i=0; i<string.length; i++) { // remove invalid color chars var schar = string.charAt(i); if (chars.indexOf(schar) != -1) { out += schar; } } if (out.length != 6) { return null; } // check length return out; } </script> </head> <body style="background:ButtonFace; margin:0px; padding:0px" onload="Init()"> <form method="get" style="margin:0px; padding:0px" onSubmit="Set(document.getElementById('ColorHex').value); return false;"> <table border="0px" cellspacing="0px" cellpadding="4" width="100%"> <tr> <td style="background:buttonface" valign=center><div style="background-color: #000000; padding: 1; height: 21px; width: 50px"><div id="ColorPreview" style="height: 100%; width: 100%"></div></div></td> <td style="background:buttonface" valign=center><input type="text" name="ColorHex" id="ColorHex" value="" size=15 style="font-size: 12px"></td> <td style="background:buttonface" width=100%></td> </tr> </table> </form> <table border="0" cellspacing="1px" cellpadding="0px" width="100%" bgcolor="#000000" style="cursor: hand;"> <tr> <td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td> <td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td> <td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td> <td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td> <td bgcolor=#003300 onMouseOver=View('003300') onClick=Set('003300') height="10px" width="10px"></td> <td bgcolor=#006600 onMouseOver=View('006600') onClick=Set('006600') height="10px" width="10px"></td> <td bgcolor=#009900 onMouseOver=View('009900') onClick=Set('009900') height="10px" width="10px"></td> <td bgcolor=#00CC00 onMouseOver=View('00CC00') onClick=Set('00CC00') height="10px" width="10px"></td> <td bgcolor=#00FF00 onMouseOver=View('00FF00') onClick=Set('00FF00') height="10px" width="10px"></td> <td bgcolor=#330000 onMouseOver=View('330000') onClick=Set('330000') height="10px" width="10px"></td> <td bgcolor=#333300 onMouseOver=View('333300') onClick=Set('333300') height="10px" width="10px"></td> <td bgcolor=#336600 onMouseOver=View('336600') onClick=Set('336600') height="10px" width="10px"></td> <td bgcolor=#339900 onMouseOver=View('339900') onClick=Set('339900') height="10px" width="10px"></td> <td bgcolor=#33CC00 onMouseOver=View('33CC00') onClick=Set('33CC00') height="10px" width="10px"></td> <td bgcolor=#33FF00 onMouseOver=View('33FF00') onClick=Set('33FF00') height="10px" width="10px"></td> <td bgcolor=#660000 onMouseOver=View('660000') onClick=Set('660000') height="10px" width="10px"></td> <td bgcolor=#663300 onMouseOver=View('663300') onClick=Set('663300') height="10px" width="10px"></td> <td bgcolor=#666600 onMouseOver=View('666600') onClick=Set('666600') height="10px" width="10px"></td> <td bgcolor=#669900 onMouseOver=View('669900') onClick=Set('669900') height="10px" width="10px"></td> <td bgcolor=#66CC00 onMouseOver=View('66CC00') onClick=Set('66CC00') height="10px" width="10px"></td> <td bgcolor=#66FF00 onMouseOver=View('66FF00') onClick=Set('66FF00') height="10px" width="10px"></td> </tr> <tr> <td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td> <td bgcolor=#333333 onMouseOver=View('333333') onClick=Set('333333') height="10px" width="10px"></td> <td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td> <td bgcolor=#000033 onMouseOver=View('000033') onClick=Set('000033') height="10px" width="10px"></td> <td bgcolor=#003333 onMouseOver=View('003333') onClick=Set('003333') height="10px" width="10px"></td> <td bgcolor=#006633 onMouseOver=View('006633') onClick=Set('006633') height="10px" width="10px"></td> <td bgcolor=#009933 onMouseOver=View('009933') onClick=Set('009933') height="10px" width="10px"></td> <td bgcolor=#00CC33 onMouseOver=View('00CC33') onClick=Set('00CC33') height="10px" width="10px"></td> <td bgcolor=#00FF33 onMouseOver=View('00FF33') onClick=Set('00FF33') height="10px" width="10px"></td> <td bgcolor=#330033 onMouseOver=View('330033') onClick=Set('330033') height="10px" width="10px"></td> <td bgcolor=#333333 onMouseOver=View('333333') onClick=Set('333333') height="10px" width="10px"></td> <td bgcolor=#336633 onMouseOver=View('336633') onClick=Set('336633') height="10px" width="10px"></td> <td bgcolor=#339933 onMouseOver=View('339933') onClick=Set('339933') height="10px" width="10px"></td> <td bgcolor=#33CC33 onMouseOver=View('33CC33') onClick=Set('33CC33') height="10px" width="10px"></td> <td bgcolor=#33FF33 onMouseOver=View('33FF33') onClick=Set('33FF33') height="10px" width="10px"></td> <td bgcolor=#660033 onMouseOver=View('660033') onClick=Set('660033') height="10px" width="10px"></td> <td bgcolor=#663333 onMouseOver=View('663333') onClick=Set('663333') height="10px" width="10px"></td> <td bgcolor=#666633 onMouseOver=View('666633') onClick=Set('666633') height="10px" width="10px"></td> <td bgcolor=#669933 onMouseOver=View('669933') onClick=Set('669933') height="10px" width="10px"></td> <td bgcolor=#66CC33 onMouseOver=View('66CC33') onClick=Set('66CC33') height="10px" width="10px"></td> <td bgcolor=#66FF33 onMouseOver=View('66FF33') onClick=Set('66FF33') height="10px" width="10px"></td> </tr> <tr> <td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td> <td bgcolor=#666666 onMouseOver=View('666666') onClick=Set('666666') height="10px" width="10px"></td> <td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td> <td bgcolor=#000066 onMouseOver=View('000066') onClick=Set('000066') height="10px" width="10px"></td> <td bgcolor=#003366 onMouseOver=View('003366') onClick=Set('003366') height="10px" width="10px"></td> <td bgcolor=#006666 onMouseOver=View('006666') onClick=Set('006666') height="10px" width="10px"></td> <td bgcolor=#009966 onMouseOver=View('009966') onClick=Set('009966') height="10px" width="10px"></td> <td bgcolor=#00CC66 onMouseOver=View('00CC66') onClick=Set('00CC66') height="10px" width="10px"></td> <td bgcolor=#00FF66 onMouseOver=View('00FF66') onClick=Set('00FF66') height="10px" width="10px"></td> <td bgcolor=#330066 onMouseOver=View('330066') onClick=Set('330066') height="10px" width="10px"></td> <td bgcolor=#333366 onMouseOver=View('333366') onClick=Set('333366') height="10px" width="10px"></td> <td bgcolor=#336666 onMouseOver=View('336666') onClick=Set('336666') height="10px" width="10px"></td> <td bgcolor=#339966 onMouseOver=View('339966') onClick=Set('339966') height="10px" width="10px"></td> <td bgcolor=#33CC66 onMouseOver=View('33CC66') onClick=Set('33CC66') height="10px" width="10px"></td> <td bgcolor=#33FF66 onMouseOver=View('33FF66') onClick=Set('33FF66') height="10px" width="10px"></td> <td bgcolor=#660066 onMouseOver=View('660066') onClick=Set('660066') height="10px" width="10px"></td> <td bgcolor=#663366 onMouseOver=View('663366') onClick=Set('663366') height="10px" width="10px"></td> <td bgcolor=#666666 onMouseOver=View('666666') onClick=Set('666666') height="10px" width="10px"></td> <td bgcolor=#669966 onMouseOver=View('669966') onClick=Set('669966') height="10px" width="10px"></td> <td bgcolor=#66CC66 onMouseOver=View('66CC66') onClick=Set('66CC66') height="10px" width="10px"></td> <td bgcolor=#66FF66 onMouseOver=View('66FF66') onClick=Set('66FF66') height="10px" width="10px"></td> </tr> <tr> <td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td> <td bgcolor=#999999 onMouseOver=View('999999') onClick=Set('999999') height="10px" width="10px"></td> <td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td> <td bgcolor=#000099 onMouseOver=View('000099') onClick=Set('000099') height="10px" width="10px"></td> <td bgcolor=#003399 onMouseOver=View('003399') onClick=Set('003399') height="10px" width="10px"></td> <td bgcolor=#006699 onMouseOver=View('006699') onClick=Set('006699') height="10px" width="10px"></td> <td bgcolor=#009999 onMouseOver=View('009999') onClick=Set('009999') height="10px" width="10px"></td> <td bgcolor=#00CC99 onMouseOver=View('00CC99') onClick=Set('00CC99') height="10px" width="10px"></td> <td bgcolor=#00FF99 onMouseOver=View('00FF99') onClick=Set('00FF99') height="10px" width="10px"></td> <td bgcolor=#330099 onMouseOver=View('330099') onClick=Set('330099') height="10px" width="10px"></td> <td bgcolor=#333399 onMouseOver=View('333399') onClick=Set('333399') height="10px" width="10px"></td> <td bgcolor=#336699 onMouseOver=View('336699') onClick=Set('336699') height="10px" width="10px"></td> <td bgcolor=#339999 onMouseOver=View('339999') onClick=Set('339999') height="10px" width="10px"></td> <td bgcolor=#33CC99 onMouseOver=View('33CC99') onClick=Set('33CC99') height="10px" width="10px"></td> <td bgcolor=#33FF99 onMouseOver=View('33FF99') onClick=Set('33FF99') height="10px" width="10px"></td> <td bgcolor=#660099 onMouseOver=View('660099') onClick=Set('660099') height="10px" width="10px"></td> <td bgcolor=#663399 onMouseOver=View('663399') onClick=Set('663399') height="10px" width="10px"></td> <td bgcolor=#666699 onMouseOver=View('666699') onClick=Set('666699') height="10px" width="10px"></td> <td bgcolor=#669999 onMouseOver=View('669999') onClick=Set('669999') height="10px" width="10px"></td> <td bgcolor=#66CC99 onMouseOver=View('66CC99') onClick=Set('66CC99') height="10px" width="10px"></td> <td bgcolor=#66FF99 onMouseOver=View('66FF99') onClick=Set('66FF99') height="10px" width="10px"></td> </tr> <tr> <td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td> <td bgcolor=#CCCCCC onMouseOver=View('CCCCCC') onClick=Set('CCCCCC') height="10px" width="10px"></td> <td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td> <td bgcolor=#0000CC onMouseOver=View('0000CC') onClick=Set('0000CC') height="10px" width="10px"></td> <td bgcolor=#0033CC onMouseOver=View('0033CC') onClick=Set('0033CC') height="10px" width="10px"></td> <td bgcolor=#0066CC onMouseOver=View('0066CC') onClick=Set('0066CC') height="10px" width="10px"></td> <td bgcolor=#0099CC onMouseOver=View('0099CC') onClick=Set('0099CC') height="10px" width="10px"></td> <td bgcolor=#00CCCC onMouseOver=View('00CCCC') onClick=Set('00CCCC') height="10px" width="10px"></td> <td bgcolor=#00FFCC onMouseOver=View('00FFCC') onClick=Set('00FFCC') height="10px" width="10px"></td> <td bgcolor=#3300CC onMouseOver=View('3300CC') onClick=Set('3300CC') height="10px" width="10px"></td> <td bgcolor=#3333CC onMouseOver=View('3333CC') onClick=Set('3333CC') height="10px" width="10px"></td> <td bgcolor=#3366CC onMouseOver=View('3366CC') onClick=Set('3366CC') height="10px" width="10px"></td> <td bgcolor=#3399CC onMouseOver=View('3399CC') onClick=Set('3399CC') height="10px" width="10px"></td> <td bgcolor=#33CCCC onMouseOver=View('33CCCC') onClick=Set('33CCCC') height="10px" width="10px"></td> <td bgcolor=#33FFCC onMouseOver=View('33FFCC') onClick=Set('33FFCC') height="10px" width="10px"></td> <td bgcolor=#6600CC onMouseOver=View('6600CC') onClick=Set('6600CC') height="10px" width="10px"></td> <td bgcolor=#6633CC onMouseOver=View('6633CC') onClick=Set('6633CC') height="10px" width="10px"></td> <td bgcolor=#6666CC onMouseOver=View('6666CC') onClick=Set('6666CC') height="10px" width="10px"></td> <td bgcolor=#6699CC onMouseOver=View('6699CC') onClick=Set('6699CC') height="10px" width="10px"></td> <td bgcolor=#66CCCC onMouseOver=View('66CCCC') onClick=Set('66CCCC') height="10px" width="10px"></td> <td bgcolor=#66FFCC onMouseOver=View('66FFCC') onClick=Set('66FFCC') height="10px" width="10px"></td> </tr> <tr> <td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td> <td bgcolor=#FFFFFF onMouseOver=View('FFFFFF') onClick=Set('FFFFFF') height="10px" width="10px"></td> <td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td> <td bgcolor=#0000FF onMouseOver=View('0000FF') onClick=Set('0000FF') height="10px" width="10px"></td> <td bgcolor=#0033FF onMouseOver=View('0033FF') onClick=Set('0033FF') height="10px" width="10px"></td> <td bgcolor=#0066FF onMouseOver=View('0066FF') onClick=Set('0066FF') height="10px" width="10px"></td> <td bgcolor=#0099FF onMouseOver=View('0099FF') onClick=Set('0099FF') height="10px" width="10px"></td> <td bgcolor=#00CCFF onMouseOver=View('00CCFF') onClick=Set('00CCFF') height="10px" width="10px"></td> <td bgcolor=#00FFFF onMouseOver=View('00FFFF') onClick=Set('00FFFF') height="10px" width="10px"></td> <td bgcolor=#3300FF onMouseOver=View('3300FF') onClick=Set('3300FF') height="10px" width="10px"></td> <td bgcolor=#3333FF onMouseOver=View('3333FF') onClick=Set('3333FF') height="10px" width="10px"></td> <td bgcolor=#3366FF onMouseOver=View('3366FF') onClick=Set('3366FF') height="10px" width="10px"></td> <td bgcolor=#3399FF onMouseOver=View('3399FF') onClick=Set('3399FF') height="10px" width="10px"></td> <td bgcolor=#33CCFF onMouseOver=View('33CCFF') onClick=Set('33CCFF') height="10px" width="10px"></td> <td bgcolor=#33FFFF onMouseOver=View('33FFFF') onClick=Set('33FFFF') height="10px" width="10px"></td> <td bgcolor=#6600FF onMouseOver=View('6600FF') onClick=Set('6600FF') height="10px" width="10px"></td> <td bgcolor=#6633FF onMouseOver=View('6633FF') onClick=Set('6633FF') height="10px" width="10px"></td> <td bgcolor=#6666FF onMouseOver=View('6666FF') onClick=Set('6666FF') height="10px" width="10px"></td> <td bgcolor=#6699FF onMouseOver=View('6699FF') onClick=Set('6699FF') height="10px" width="10px"></td> <td bgcolor=#66CCFF onMouseOver=View('66CCFF') onClick=Set('66CCFF') height="10px" width="10px"></td> <td bgcolor=#66FFFF onMouseOver=View('66FFFF') onClick=Set('66FFFF') height="10px" width="10px"></td> </tr> <tr> <td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td> <td bgcolor=#FF0000 onMouseOver=View('FF0000') onClick=Set('FF0000') height="10px" width="10px"></td> <td bgcolor=#000000 onMouseOver=View('000000') onClick=Set('000000') height="10px" width="10px"></td> <td bgcolor=#990000 onMouseOver=View('990000') onClick=Set('990000') height="10px" width="10px"></td> <td bgcolor=#993300 onMouseOver=View('993300') onClick=Set('993300') height="10px" width="10px"></td> <td bgcolor=#996600 onMouseOver=View('996600') onClick=Set('996600') height="10px" width="10px"></td> <td bgcolor=#999900 onMouseOver=View('999900') onClick=Set('999900') height="10px" width="10px"></td> <td bgcolor=#99CC00 onMouseOver=View('99CC00') onClick=Set('99CC00') height="10px" width="10px"></td> <td bgcolor=#99FF00 onMouseOver=View('99FF00') onClick=S... [truncated message content] |
From: Joe S. <joe...@us...> - 2003-11-12 21:56:03
|
Update of /cvsroot/phpslash/phpslash-dev/include/modules/block/blocktypes In directory sc8-pr-cvs1:/tmp/cvs-serv17478/phpslash-dev/include/modules/block/blocktypes Modified Files: Block_render_header.class Log Message: Added preliminary htmlArea editing support to the Story entry form. Index: Block_render_header.class =================================================================== RCS file: /cvsroot/phpslash/phpslash-dev/include/modules/block/blocktypes/Block_render_header.class,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Block_render_header.class 17 Apr 2003 23:33:47 -0000 1.1 --- Block_render_header.class 12 Nov 2003 21:55:58 -0000 1.2 *************** *** 17,21 **** function parse($block_info) { ! $this->output = getHeader($GLOBALS['pagetitle'],$this->psl['metatags']); return true; } --- 17,32 ---- function parse($block_info) { ! $tpl = ''; ! ! if (is_array($block_info['block_options'])) { ! ! if(array_key_exists('tpl', $block_info['block_options'])) { ! // the template is set in the block admin ! $tpl = $block_info['block_options']['tpl']; ! } ! ! } ! ! $this->output = getHeader($GLOBALS['pagetitle'],$this->psl['metatags'],'',$tpl); return true; } |
Update of /cvsroot/phpslash/phpslash-dev/public_html/scripts/htmlarea3 In directory sc8-pr-cvs1:/tmp/cvs-serv12035/phpslash-dev/public_html/scripts/htmlarea3 Added Files: dialog.js example-fully-loaded.html example-spell-checker.html example-table-operations.html example.html htmlarea.css htmlarea.js index.html license.txt make-release.pl makefile.xml popupdiv.js popupwin.js project-config.xml reference.html release-notes.html test.cgi Log Message: Added preliminary htmlArea editing support to the Story entry form. --- NEW FILE: dialog.js --- // Though "Dialog" looks like an object, it isn't really an object. Instead // it's just namespace for protecting global symbols. function Dialog(url, action, init) { if (typeof init == "undefined") { init = window; // pass this window object by default } Dialog._geckoOpenModal(url, action, init); }; Dialog._parentEvent = function(ev) { if (Dialog._modal && !Dialog._modal.closed) { Dialog._modal.focus(); HTMLArea._stopEvent(ev); } }; // should be a function, the return handler of the currently opened dialog. Dialog._return = null; // constant, the currently opened dialog Dialog._modal = null; // the dialog will read it's args from this variable Dialog._arguments = null; Dialog._geckoOpenModal = function(url, action, init) { var dlg = window.open(url, "hadialog", "toolbar=no,menubar=no,personalbar=no,width=10,height=10," + "scrollbars=no,resizable=yes"); Dialog._modal = dlg; Dialog._arguments = init; // capture some window's events function capwin(w) { HTMLArea._addEvent(w, "click", Dialog._parentEvent); HTMLArea._addEvent(w, "mousedown", Dialog._parentEvent); HTMLArea._addEvent(w, "focus", Dialog._parentEvent); }; // release the captured events function relwin(w) { HTMLArea._removeEvent(w, "click", Dialog._parentEvent); HTMLArea._removeEvent(w, "mousedown", Dialog._parentEvent); HTMLArea._removeEvent(w, "focus", Dialog._parentEvent); }; capwin(window); // capture other frames for (var i = 0; i < window.frames.length; capwin(window.frames[i++])); // make up a function to be called when the Dialog ends. Dialog._return = function (val) { if (val && action) { action(val); } relwin(window); // capture other frames for (var i = 0; i < window.frames.length; relwin(window.frames[i++])); Dialog._modal = null; }; }; --- NEW FILE: example-fully-loaded.html --- <html> <head> <title>Example of HTMLArea 3.0</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- load the main HTMLArea files --> <script type="text/javascript" src="htmlarea.js"></script> <script type="text/javascript" src="lang/en.js"></script> <script type="text/javascript" src="dialog.js"></script> <!-- <script type="text/javascript" src="popupdiv.js"></script> --> <script type="text/javascript" src="popupwin.js"></script> <!-- load the plugins --> <script type="text/javascript"> // WARNING: using this interface to load plugin // will _NOT_ work if plugins do not have the language // loaded by HTMLArea. // In other words, this function generates SCRIPT tags // that load the plugin and the language file, based on the // global variable HTMLArea.I18N.lang (defined in the lang file, // in our case "lang/en.js" loaded above). // If this lang file is not found the plugin will fail to // load correctly and nothing will work. HTMLArea.loadPlugin("TableOperations"); HTMLArea.loadPlugin("SpellChecker"); </script> <style type="text/css"> @import url(htmlarea.css); html, body { font-family: Verdana,sans-serif; background-color: #fea; color: #000; } a:link, a:visited { color: #00f; } a:hover { color: #048; } a:active { color: #f00; } textarea { background-color: #fff; border: 1px solid 00f; } </style> <script type="text/javascript"> var editor = null; function initEditor() { // create an editor for the "ta" textbox editor = new HTMLArea("ta"); // register the SpellChecker plugin editor.registerPlugin("TableOperations"); // register the SpellChecker plugin editor.registerPlugin("SpellChecker"); editor.generate(); return false; } function insertHTML() { var html = prompt("Enter some HTML code here"); if (html) { editor.insertHTML(html); } } function highlight() { editor.surroundHTML('<span style="background-color: yellow">', '</span>'); } </script> </head> <!-- use <body onload="HTMLArea.replaceAll()" if you don't care about customizing the editor. It's the easiest way! :) --> <body onload="initEditor()"> <h1>HTMLArea 3.0</h1> <p>A replacement for <code>TEXTAREA</code> elements. © <a href="http://interactivetools.com">InteractiveTools.com</a>, 2003.</p> <p>Plugins: <tt>TableOperations<tt> | <tt>SpellChecker</tt> </p> <form action="test.cgi" method="post" id="edit" name="edit"> <textarea id="ta" name="ta" style="width:100%" rows="24" cols="80"> <h1>This is the fully loaded HTMLArea ;-)</h1> <p>It loads all the plugins that have been developed so far.</p> <table style="background-color: #99f; border: 1px dashed #08f; width: 60%; border-collapse: collapse;" align="center"> <tr style="background-color: #fdd"> <td style="font-weight: bold; border: 1px solid #000;">Plugin</td> <td style="font-weight: bold; border: 1px solid #000;">Sponsor</td> </tr> <tr> <td style="font-family: monospace">TableOperations</td> <td><a href="http://bloki.com">Zapatec, Inc.</a></td> </tr> <tr> <td style="font-family: monospace">SpellChecker</td> <td><a href="http://americanbible.org">Amerian Bible Society</a></td> </tr> </table> </textarea> <p /> <input type="submit" name="ok" value=" submit " /> <input type="button" name="ins" value=" insert html " onclick="return insertHTML();" /> <input type="button" name="hil" value=" highlight text " onclick="return highlight();" /> <a href="javascript:mySubmit()">submit</a> <script type="text/javascript"> function mySubmit() { // document.edit.save.value = "yes"; document.edit.onsubmit(); // workaround browser bugs. document.edit.submit(); }; </script> </form> </body> </html> --- NEW FILE: example-spell-checker.html --- <html> <head> <title>Example of HTMLArea 3.0</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- load the main HTMLArea files --> <script type="text/javascript" src="htmlarea.js"></script> <script type="text/javascript" src="lang/en.js"></script> <script type="text/javascript" src="dialog.js"></script> <!-- <script type="text/javascript" src="popupdiv.js"></script> --> <script type="text/javascript" src="popupwin.js"></script> <!-- load the SpellChecker plugin files --> <script type="text/javascript" src="plugins/SpellChecker/spell-checker.js"></script> <script type="text/javascript" src="plugins/SpellChecker/lang/en.js"></script> <style type="text/css"> @import url(htmlarea.css); html, body { font-family: Verdana,sans-serif; background-color: #fea; color: #000; } a:link, a:visited { color: #00f; } a:hover { color: #048; } a:active { color: #f00; } textarea { background-color: #fff; border: 1px solid 00f; } </style> <script type="text/javascript"> var editor = null; function initEditor() { // create an editor for the "ta" textbox editor = new HTMLArea("ta"); // register the SpellChecker plugin editor.registerPlugin("SpellChecker"); editor.generate(); return false; } function insertHTML() { var html = prompt("Enter some HTML code here"); if (html) { editor.insertHTML(html); } } function highlight() { editor.surroundHTML('<span style="background-color: yellow">', '</span>'); } </script> </head> <!-- use <body onload="HTMLArea.replaceAll()" if you don't care about customizing the editor. It's the easiest way! :) --> <body onload="initEditor()"> <h1>HTMLArea 3.0</h1> <p>A replacement for <code>TEXTAREA</code> elements. © <a href="http://interactivetools.com">InteractiveTools.com</a>, 2003.</p> <p>Plugins: <tt>SpellChecker</tt> (sponsored by <a href="http://americanbible.org">American Bible Society</a>). </p> <form action="test.cgi" method="post" id="edit" name="edit"> <textarea id="ta" name="ta" style="width:100%" rows="24" cols="80"> <h1>The <tt>SpellChecker</tt> plugin</h1> <p>This file deminstrates the <tt>SpellChecker</tt> plugin of HTMLArea. To inwoke the spell checkert you need to press the <em>spell-check</em> buton in the toolbar.</p> <p>The spell-checker uses a serverside script written in Perl. The Perl script calls <a href="http://aspell.net">aspell</a> for any word in the text and reports wordz that aren't found in the dyctionari.</p> <p>The document that yu are reading now <b>intentionaly</b> containes some errorz, so that you have something to corect ;-)</p> <p>Credits for the <tt>SpellChecker</tt> plugin go to:</p> <ul> <li><a href="http://aspell.net">Aspell</a> -- spell checker</li> <li>The <a href="http://perl.org">Perl</a> programming language</li> <li><tt><a href="http://cpan.org/modules/by-module/Text/Text-Aspell-0.02.readme">Text::Aspell</a></tt> -- Perl interface to Aspell</li> <li><a href="http://americanbible.org">American Bible Society</a> -- for sponsoring the <tt>SpellChecker</tt> plugin for <tt>HTMLArea</tt></li> <li><a href="http://dynarch.com/mishoo/">Your humble servant</a> for implementing it ;-)</li> </ul> </textarea> <p /> <input type="submit" name="ok" value=" submit " /> <input type="button" name="ins" value=" insert html " onclick="return insertHTML();" /> <input type="button" name="hil" value=" highlight text " onclick="return highlight();" /> <a href="javascript:mySubmit()">submit</a> <script type="text/javascript"> function mySubmit() { // document.edit.save.value = "yes"; document.edit.onsubmit(); // workaround browser bugs. document.edit.submit(); }; </script> </form> </body> </html> --- NEW FILE: example-table-operations.html --- <html> <head> <title>Example of HTMLArea 3.0</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- load the main HTMLArea files --> <script type="text/javascript" src="htmlarea.js"></script> <script type="text/javascript" src="lang/en.js"></script> <script type="text/javascript" src="dialog.js"></script> <!-- <script type="text/javascript" src="popupdiv.js"></script> --> <script type="text/javascript" src="popupwin.js"></script> <!-- load the TableOperations plugin files --> <script type="text/javascript" src="plugins/TableOperations/table-operations.js"></script> <script type="text/javascript" src="plugins/TableOperations/lang/en.js"></script> <style type="text/css"> @import url(htmlarea.css); html, body { font-family: Verdana,sans-serif; background-color: #fea; color: #000; } a:link, a:visited { color: #00f; } a:hover { color: #048; } a:active { color: #f00; } textarea { background-color: #fff; border: 1px solid 00f; } </style> <script type="text/javascript"> var editor = null; function initEditor() { // create an editor for the "ta" textbox editor = new HTMLArea("ta"); // register the TableOperations plugin with our editor editor.registerPlugin("TableOperations"); editor.generate(); return false; } function insertHTML() { var html = prompt("Enter some HTML code here"); if (html) { editor.insertHTML(html); } } function highlight() { editor.surroundHTML('<span style="background-color: yellow">', '</span>'); } </script> </head> <!-- use <body onload="HTMLArea.replaceAll()" if you don't care about customizing the editor. It's the easiest way! :) --> <body onload="initEditor()"> <h1>HTMLArea 3.0</h1> <p>A replacement for <code>TEXTAREA</code> elements. © <a href="http://interactivetools.com">InteractiveTools.com</a>, 2003.</p> <p>Page that demonstrates the additional features of the <tt>TableOperations</tt> plugin (sponsored by <a href="http://www.bloki.com">Zapatec Inc.</a>).</p> <form action="test.cgi" method="post" id="edit" name="edit"> <textarea id="ta" name="ta" style="width:100%" rows="24" cols="80"> <h1>Plugin: <tt>TableOperations</tt></h1> <p>This page exemplifies the table operations toolbar, provided by the TableOperations plugin.</p> <p>Following there is a table.</p> <table border="1" style="border: 2px solid rgb(255, 0, 0); width: 80%; background-image: none; border-collapse: collapse; color: rgb(153, 102, 0); background-color: rgb(255, 255, 51);" align="center" cellspacing="2" cellpadding="1" summary=""> <caption>This <span style="font-weight: bold;">is</span> a table</caption> <tbody> <tr style="border-style: none; background-image: none; background-color: rgb(255, 255, 153);" char="." align="left" valign="middle"> <td>1.1</td> <td>1.2</td> <td>1.3</td> <td>1.4</td> </tr> <tr> <td>2.1</td> <td style="border: 1px solid rgb(51, 51, 255); background-image: none; background-color: rgb(102, 255, 255); color: rgb(0, 0, 51);" char="." align="left" valign="middle">2.2</td> <td>2.3</td> <td>2.4</td> </tr> <tr> <td>3.1</td> <td>3.2</td> <td style="border: 2px dashed rgb(51, 204, 102); background-image: none; background-color: rgb(102, 255, 153); color: rgb(0, 51, 0);" char="." align="left" valign="middle">3.3</td> <td>3.4</td> </tr> <tr> <td style="background-color: rgb(255, 204, 51);">4.1</td> <td style="background-color: rgb(255, 204, 51);">4.2</td> <td style="background-color: rgb(255, 204, 51);">4.3</td> <td style="background-color: rgb(255, 204, 51);">4.4</td> </tr> </tbody> </table> <p>Text after the table</p> </textarea> <p /> <input type="submit" name="ok" value=" submit " /> <input type="button" name="ins" value=" insert html " onclick="return insertHTML();" /> <input type="button" name="hil" value=" highlight text " onclick="return highlight();" /> <a href="javascript:mySubmit()">submit</a> <script type="text/javascript"> function mySubmit() { // document.edit.save.value = "yes"; document.edit.onsubmit(); // workaround browser bugs. document.edit.submit(); }; </script> </form> </body> </html> --- NEW FILE: example.html --- <html> <head> <title>Example of HTMLArea 3.0</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="htmlarea.js"></script> <script type="text/javascript" src="lang/en.js"></script> <script type="text/javascript" src="dialog.js"></script> <style type="text/css"> @import url(htmlarea.css); html, body { font-family: Verdana,sans-serif; background-color: #fea; color: #000; } a:link, a:visited { color: #00f; } a:hover { color: #048; } a:active { color: #f00; } textarea { background-color: #fff; border: 1px solid 00f; } </style> <script type="text/javascript"> var editor = null; function initEditor() { editor = new HTMLArea("ta"); // comment the following two lines to see how customization works editor.generate(); return false; var cfg = editor.config; // this is the default configuration cfg.registerButton({ id : "my-hilite", tooltip : "Highlight text", image : "ed_custom.gif", textMode : false, action : function(editor) { editor.surroundHTML("<span class=\"hilite\">", "</span>"); }, context : 'table' }); cfg.toolbar.push(["linebreak", "my-hilite"]); // add the new button to the toolbar // BEGIN: code that adds a custom button // uncomment it to test var cfg = editor.config; // this is the default configuration /* cfg.registerButton({ id : "my-hilite", tooltip : "Highlight text", image : "ed_custom.gif", textMode : false, action : function(editor) { editor.surroundHTML("<span class=\"hilite\">", "</span>"); } }); */ function clickHandler(editor, buttonId) { switch (buttonId) { case "my-toc": editor.insertHTML("<h1>Table Of Contents</h1>"); break; case "my-date": editor.insertHTML((new Date()).toString()); break; case "my-bold": editor.execCommand("bold"); editor.execCommand("italic"); break; case "my-hilite": editor.surroundHTML("<span class=\"hilite\">", "</span>"); break; } }; cfg.registerButton("my-toc", "Insert TOC", "ed_custom.gif", false, clickHandler); cfg.registerButton("my-date", "Insert date/time", "ed_custom.gif", false, clickHandler); cfg.registerButton("my-bold", "Toggle bold/italic", "ed_custom.gif", false, clickHandler); cfg.registerButton("my-hilite", "Hilite selection", "ed_custom.gif", false, clickHandler); cfg.registerButton("my-sample", "Class: sample", "ed_custom.gif", false, function(editor) { if (HTMLArea.is_ie) { editor.insertHTML("<span class=\"sample\"> </span>"); var r = editor._doc.selection.createRange(); r.move("character", -2); r.moveEnd("character", 2); r.select(); } else { // Gecko/W3C compliant var n = editor._doc.createElement("span"); n.className = "sample"; editor.insertNodeAtSelection(n); var sel = editor._iframe.contentWindow.getSelection(); sel.removeAllRanges(); var r = editor._doc.createRange(); r.setStart(n, 0); r.setEnd(n, 0); sel.addRange(r); } } ); /* cfg.registerButton("my-hilite", "Highlight text", "ed_custom.gif", false, function(editor) { editor.surroundHTML('<span class="hilite">', '</span>'); } ); */ cfg.pageStyle = "body { background-color: #efd; } .hilite { background-color: yellow; } "+ ".sample { color: green; font-family: monospace; }"; cfg.toolbar.push(["linebreak", "my-toc", "my-date", "my-bold", "my-hilite", "my-sample"]); // add the new button to the toolbar // END: code that adds a custom button editor.generate(); } function insertHTML() { var html = prompt("Enter some HTML code here"); if (html) { editor.insertHTML(html); } } function highlight() { editor.surroundHTML('<span style="background-color: yellow">', '</span>'); } </script> </head> <!-- use <body onload="HTMLArea.replaceAll()" if you don't care about customizing the editor. It's the easiest way! :) --> <body onload="initEditor()"> <h1>HTMLArea 3.0</h1> <p>A replacement for <code>TEXTAREA</code> elements. © <a href="http://interactivetools.com">InteractiveTools.com</a>, 2003.</p> <form action="test.cgi" method="post" id="edit" name="edit"> <textarea id="ta" name="ta" style="width:100%" rows="20" cols="80"> <p>Here is some sample text: <b>bold</b>, <i>italic</i>, <u>underline</u>. </p> <p align=center>Different fonts, sizes and colors (all in bold):</p> <p><b> <font face="arial" size="7" color="#000066">arial</font>, <font face="courier new" size="6" color="#006600">courier new</font>, <font face="georgia" size="5" color="#006666">georgia</font>, <font face="tahoma" size="4" color="#660000">tahoma</font>, <font face="times new roman" size="3" color="#660066">times new roman</font>, <font face="verdana" size="2" color="#666600">verdana</font>, <font face="tahoma" size="1" color="#666666">tahoma</font> </b></p> <p>Click on <a href="http://www.interactivetools.com/">this link</a> and then on the link button to the details ... OR ... select some text and click link to create a <b>new</b> link.</p> </textarea> <p /> <input type="submit" name="ok" value=" submit " /> <input type="button" name="ins" value=" insert html " onclick="return insertHTML();" /> <input type="button" name="hil" value=" highlight text " onclick="return highlight();" /> <a href="javascript:mySubmit()">submit</a> <script type="text/javascript"> function mySubmit() { // document.edit.save.value = "yes"; document.edit.onsubmit(); // workaround browser bugs. document.edit.submit(); }; </script> </form> </body> </html> --- NEW FILE: htmlarea.css --- .htmlarea { background: #fff; } .htmlarea .toolbar { cursor: default; background: ButtonFace; padding: 1px 1px 2px 1px; border: 1px solid; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; } .htmlarea .toolbar table { font-family: tahoma,verdana,sans-serif; font-size: 11px; } .htmlarea .toolbar img { border: none; } .htmlarea .toolbar .label { padding: 0px 3px; } .htmlarea .toolbar .button { background: ButtonFace; color: ButtonText; border: 1px solid ButtonFace; padding: 1px; margin: 0px; width: 18px; height: 18px; } .htmlarea .toolbar .buttonHover { border: 1px solid; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; } .htmlarea .toolbar .buttonActive, .htmlarea .toolbar .buttonPressed { padding: 2px 0px 0px 2px; border: 1px solid; border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; } .htmlarea .toolbar .buttonPressed { background: ButtonHighlight; } .htmlarea .toolbar .indicator { padding: 0px 3px; overflow: hidden; width: 20px; text-align: center; cursor: default; border: 1px solid ButtonShadow; } .htmlarea .toolbar .buttonDisabled { background-color: #aaa; } .htmlarea .toolbar .buttonDisabled img { filter: alpha(opacity = 25); -moz-opacity: 25%; } .htmlarea .toolbar .separator { position: relative; margin: 3px; border-left: 1px solid ButtonShadow; border-right: 1px solid ButtonHighlight; width: 0px; height: 16px; padding: 0px; } .htmlarea .toolbar .space { width: 5px; } .htmlarea .toolbar select { font: 11px Tahoma,Verdana,sans-serif; } .htmlarea .toolbar select, .htmlarea .toolbar select:hover, .htmlarea .toolbar select:active { background: FieldFace; color: ButtonText; } .htmlarea .statusBar { border: 1px solid; border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; padding: 2px 4px; background-color: ButtonFace; color: ButtonText; font: 11px Tahoma,Verdana,sans-serif; } .htmlarea .statusBar .statusBarTree a { padding: 2px 5px; color: #00f; } .htmlarea .statusBar .statusBarTree a:visited { color: #00f; } .htmlarea .statusBar .statusBarTree a:hover { background-color: Highlight; color: HighlightText; padding: 1px 4px; border: 1px solid HighlightText; } /* Hidden DIV popup dialogs (PopupDiv) */ .dialog { color: ButtonText; background: ButtonFace; } .dialog .content { padding: 2px; } .dialog, .dialog button, .dialog input, .dialog select, .dialog textarea, .dialog table { font: 11px Tahoma,Verdana,sans-serif; } .dialog table { border-collapse: collapse; } .dialog .title { background: #008; color: #ff8; border-bottom: 1px solid #000; padding: 1px 0px 2px 5px; font-size: 12px; font-weight: bold; cursor: default; } .dialog .title .button { float: right; border: 1px solid #66a; padding: 0px 1px 0px 2px; margin-right: 1px; color: #fff; text-align: center; } .dialog .title .button-hilite { border-color: #88f; background: #44c; } .dialog button { width: 5em; padding: 0px; } .dialog .buttonColor { padding: 1px; cursor: default; border: 1px solid; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; } .dialog .buttonColor-hilite { border-color: #000; } .dialog .buttonColor .chooser, .dialog .buttonColor .nocolor { height: 0.6em; border: 1px solid; padding: 0px 1em; border-color: ButtonShadow ButtonHighlight ButtonHighlight ButtonShadow; } .dialog .buttonColor .nocolor { padding: 0px; } .dialog .buttonColor .nocolor-hilite { background-color: #fff; color: #f00; } .dialog .label { text-align: right; width: 6em; } .dialog .value input { width: 100%; } .dialog .buttons { text-align: right; padding: 2px 4px 0px 4px; } .dialog legend { font-weight: bold; } .dialog fieldset table { margin: 2px 0px; } .popupdiv { border: 2px solid; border-color: ButtonHighlight ButtonShadow ButtonShadow ButtonHighlight; } .popupwin { padding: 0px; margin: 0px; } .popupwin .title { background: #fff; color: #000; font-weight: bold; font-size: 120%; padding: 3px 10px; margin-bottom: 10px; border-bottom: 1px solid black; letter-spacing: 2px; } form { margin: 0px; border: none; } --- NEW FILE: htmlarea.js --- // // htmlArea v3.0 - Copyright (c) 2002 interactivetools.com, inc. // This copyright notice MUST stay intact for use (see license.txt). // // A free WYSIWYG editor replacement for <textarea> fields. // For full source code and docs, visit http://www.interactivetools.com/ // // Version 3.0 developed by Mihai Bazon for InteractiveTools. // http://dynarch.com/mishoo // // $Id: htmlarea.js,v 1.1 2003/11/12 21:29:48 joestewart Exp $ // Creates a new HTMLArea object. Tries to replace the textarea with the given // ID with it. function HTMLArea(textarea, config) { if (HTMLArea.checkSupportedBrowser()) { if (typeof config == "undefined") { this.config = new HTMLArea.Config(); } else { [...1800 lines suppressed...] }; HTMLArea.prototype.popupURL = function(file) { var url = ""; if (file.match(/^plugin:\/\/(.*?)\/(.*)/)) { var plugin = RegExp.$1; var popup = RegExp.$2; if (!/\.html$/.test(popup)) popup += ".html"; url = this.config.editorURL + "plugins/" + plugin + "/popups/" + popup; } else url = this.config.editorURL + this.config.popupURL + file; return url; }; // EOF // Local variables: // // c-basic-offset:8 // // indent-tabs-mode:t // // End: // --- NEW FILE: index.html --- <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN"> <html> <head> <title>HTMLArea -- the free, customizable online editor</title> <style type="text/css"> html, body { font-family: georgia,"times new roman",serif; background-color: #fff; color: #000; } .label { text-align: right; padding-right: 0.3em; } .bline { border-bottom: 1px solid #aaa; } </style> </head> <body> <div style="float: right; border: 1px solid #aaa; background-color: #eee; padding: 3px; margin-left: 10px; margin-bottom: 10px;"> <table cellspacing="0" cellpadding="0" border="0"> <tr> <td class="label">Version:</td><td><% $version %></td> </tr> <tr> <td class="label">Release:</td><td><% $release %> (<a href="release-notes.html">release notes</a>)</td> </tr> <tr> <td class="label bline">Compiled at:</td><td class="bline"><% $time %></td> </tr> <tr> <td class="label">SourceForge page:</td><td><a href="http://sf.net/projects/itools-htmlarea/">http://sf.net/projects/itools-htmlarea/</a></td> </table> </div> <h1>HTMLArea -- the free<br/>customizable online editor</h1> <p> HTMLArea is a free, customizable online editor. It works inside your browser. It uses a non-standard feature implemented in Internet Explorer 5.5 or better for Windows and Mozilla 1.3 or better (any platform), therefore it will only work in one of these browsers. </p> <p> HTMLArea is copyright <a href="http://interactivetools.com">InteractiveTools.com</a> and released under a BSD-style license. HTMLArea is created and developed upto version 2.03 by InteractiveTools.com. Version 3.0 developed by <a href="http://dynarch.com/mishoo/">Mihai Bazon</a> for InteractiveTools. It contains code sponsored by other companies as well. </p> <h2>Online demos</h2> <ul> <li><a href="example.html">HTMLArea standard</a> -- contains the core editor.</li> <li><a href="example-table-operations.html">HTMLArea + tables</a> -- loads the <tt>TableOperations</tt> plugin, sponsored by <a href="http://bloki.com">Zapatec Inc.</a></li> <li><a href="example-spell-checker.html">HTMLArea + spell checher</a> -- loads the <tt>SpellChecker</tt> plugin, sponsored by <a href="http://americanbible.org">American Bible Society</a>.</li> <li><a href="example-fully-loaded.html">HTMLArea fully loaded</a> ;-)</li> </ul> <h2>Installation</h2> <p> Installation is (or should be) easy. You need to unpack the ZIP file in a directory accessible through your webserver. Supposing you unpack in your <tt>DocumentRoot</tt> and your <tt>DocumentRoot</tt> is <tt>/var/www/html</tt> as in a standard RedHat installation, you need to acomplish the following steps: (the example is for a Unix-like operating system) </p> <pre style="margin-left: 2em" > cd /var/www/html unzip /path/to/archive/<% $basename %>.zip mv <% $basename %> htmlarea find htmlarea/ -type f -exec chmod 644 {} \; find htmlarea/ -type d -exec chmod 755 {} \; find htmlarea/ -name "*.cgi" -exec chmod 755 {} \;</pre> <p> <strong>Notes.</strong> You may chose to symlink "htmlarea" to "<% $basename %>", in which case your server needs to be configured to "<tt>FollowSymLinks</tt>". You need to make sure that *.cgi files are interpreted as CGI scripts. If you want to use the SpellChecker plugin you need to have a recent version of Perl installed (I recommend 5.8.0) on the server, and the module Text::Aspell, available from CPAN. More info in "<a href="plugins/SpellChecker/readme-tech.html">plugins/SpellChecker/readme-tech.html</a>". </p> <p>About how to setup your pages to use the editor, please read the [outdated yet generally valid] <a href="reference.html">documentation</a>.</p> <h2>Status and links</h2> <p>HTMLArea has reached version 3.0. As of this version, it supports:</p> <ul> <li>Customizable toolbar</li> <li>Easy internationalization</li> <li>Plugin-based infrastructure</li> <li>Delivers W3-compliant HTML (with few exceptions)</li> <li>Has a subset of Microsoft Word's keyboard shortcuts</li> <li>Full-screen editor</li> <li>Advanced table operations (by external plugin "TableOperations")</li> <li>Spell checker (by external plugin "SpellChecker")</li> <li>probably more... ;-)</li> </ul> <p>We have a <a href="http://sourceforge.net/projects/itools-htmlarea/">project page</a> at <a href="http://sourceforge.net">SourceForge.net</a>. There you can also find out <a href="http://sourceforge.net/cvs/?group_id=69750">how to retrieve the code from CVS</a>, or you can <a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/itools-htmlarea">browse the CVS online</a>. We also have a <a href="http://sourceforge.net/tracker/?atid=525656&group_id=69750&func=browse">bug system</a>, a <a href="http://sourceforge.net/tracker/?atid=525658&group_id=69750&func=browse">patch tracking system</a> and a <a href="http://sourceforge.net/tracker/?atid=525659&group_id=69750&func=browse">feature request page</a>.</p> <p>We invite you to say everything you want about HTMLArea <a href="http://www.interactivetools.com/forum/gforum.cgi?forum=14;">on the forums</a> at InteractiveTools.com. There you should also find the latest news.</p> <p>Sometimes I post news about the latest developments on <a href="http://dynarch.com/mishoo/">my personal homepage</a>.</p> <h2>"It doesn't work, what's wrong?"</h2> <p>If it doesn't work, you have several options:</p> <ul> <li>Post a message to the forum. Describe your problem in as much detail as possible. Include errors you might find in the JavaScript console (if you are a Mozilla user), or errors displayed by IE (though they're most of the times useless).</li> <li>If you're positive that you discovered a bug in HTMLArea then feel free to fill a bug report in our bug system. If you have the time you should check to see if a similar bug was reported or not; it might be fixed already in the CVS ;-) If you're positive that a similar bug was not yet reported, do fill a bug report and please include as much detail as possible, such as your browser, OS, errors from JavaScript console, etc.</li> <li>If you want a new feature to be implemented, post it on the features request and someone will hopefully take care of it.</li> </ul> <p>You can <a href="mailto:mi...@in...">contact me directly</a> <em>only</em> if you want to pay me for implementing custom features to HTMLArea. If you want to sponsor these features (that is, allow them to get back into the public HTMLArea distribution) I'll be cheaper. ;-)</p> <hr /> <address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address> <!-- Created: Sun Aug 3 14:11:26 EEST 2003 --> <!-- hhmts start --> Last modified on Sun Sep 28 14:56:12 2003 <!-- hhmts end --> <!-- doc-lang: English --> </body> </html> <%ARGS> $project => 'HTMLArea' $version => '3.0' $release => 'beta' $basename => 'HTMLArea-3.0-beta' </%ARGS> <%INIT>; use POSIX qw(strftime); my $time = strftime '%b %e, %Y [%H:%M] GMT', gmtime; </%INIT> --- NEW FILE: license.txt --- htmlArea License (based on BSD license) Copyright (c) 2002, interactivetools.com, inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2) Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3) Neither the name of interactivetools.com, inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --- NEW FILE: make-release.pl --- #! /usr/bin/perl -w # $Id: make-release.pl,v 1.1 2003/11/12 21:29:48 joestewart Exp $ # Script for creating a distribution archive. Based on make-release.pl from # jscalendar. # Author: Mihai Bazon, http://dynarch.com/mishoo # NO WARRANTIES WHATSOEVER. READ GNU LGPL. # This file requires HTML::Mason; this module is used for automatic # substitution of the version/release number as well as for selection of the # changelog (at least in the file release-notes.html). It might not work # without HTML::Mason. use strict; # use diagnostics; use HTML::Mason; use File::Find; use XML::Parser; use Data::Dumper; my $verbosity = 1; my $tmpdir = '/tmp'; my $config = parseXML("project-config.xml"); speak(3, Data::Dumper::Dumper($config)); my ($project, $version, $release, $basename); $project = $config->{project}{ATTR}{title}; $version = $config->{project}{version}{DATA}; $release = $config->{project}{release}{DATA}; $basename = "$project-$version"; $basename .= "-$release" if ($release); speak(1, "Project: $basename"); ## create directory tree my ($basedir); { # base directory $basedir = "$tmpdir/$basename"; if (-d $basedir) { speak(-1, "$basedir already exists, removing... >:-]\n"); system "rm -rf $basedir"; } } process_directory(); ## make the ZIP file chdir "$basedir/.."; speak(1, "Making ZIP file /tmp/$basename.zip"); system ("zip -r $basename.zip $basename > /dev/null"); system ("ls -la /tmp/$basename.zip"); ## remove the basedir system("rm -rf $basedir"); ## back #chdir $cwd; ### SUBROUTINES # handle _one_ file sub process_one_file { my ($attr, $target) = @_; $target =~ s/\/$//; $target .= '/'; my $destination = $target.$attr->{REALNAME}; # copy file first speak(1, " copying $attr->{REALNAME}"); system "cp $attr->{REALNAME} $destination"; my $masonize = $attr->{masonize} || ''; if ($masonize =~ /yes|on|1/i) { speak(1, " > masonizing to $destination..."); my $args = $attr->{args} || ''; my @vars = split(/\s*,\s*/, $args); my %args = (); foreach my $i (@vars) { $args{$i} = eval '$'.$i; speak(1, " > argument: $i => $args{$i}"); } my $outbuf; my $interp = HTML::Mason::Interp->new ( comp_root => $target, out_method => \$outbuf ); $interp->exec("/$attr->{REALNAME}", %args); open (FILE, "> $destination"); print FILE $outbuf; close (FILE); } } # handle some files sub process_files { my ($files, $target) = @_; # proceed with the explicitely required files first my %options = (); foreach my $i (@{$files}) { $options{$i->{ATTR}{name}} = $i->{ATTR}; } foreach my $i (@{$files}) { my @expanded = glob "$i->{ATTR}{name}"; foreach my $file (@expanded) { $i->{ATTR}{REALNAME} = $file; if (defined $options{$file}) { unless (defined $options{$file}->{PROCESSED}) { speak(1, "EXPLICIT FILE: $file"); $options{$file}->{REALNAME} = $file; process_one_file($options{$file}, $target); $options{$file}->{PROCESSED} = 1; } } else { speak(2, "GLOB: $file"); process_one_file($i->{ATTR}, $target); $options{$file} = 2; } } } } # handle _one_ directory sub process_directory { my ($dir, $path) = @_; my $cwd = '..'; # ;-) (defined $dir) || ($dir = '.'); (defined $path) || ($path = ''); speak(2, "DIR: $path$dir"); $dir =~ s/\/$//; $dir .= '/'; unless (-d $dir) { speak(-1, "DIRECTORY '$dir' NOT FOUND, SKIPPING"); return 0; } # go where we have stuff to do chdir $dir; my $target = $basedir; ($path =~ /\S/) && ($target .= "/$path"); ($dir ne './') && ($target .= $dir); speak(1, "*** Creating directory: $target"); mkdir $target; unless (-f 'makefile.xml') { speak(-1, "No makefile.xml in this directory"); chdir $cwd; return 0; } my $config = parseXML("makefile.xml"); speak(3, Data::Dumper::Dumper($config)); my $tmp = $config->{files}{file}; if (defined $tmp) { my $files; if (ref($tmp) eq 'ARRAY') { $files = $tmp; } else { $files = [ $tmp ]; } process_files($files, $target); } $tmp = $config->{files}{dir}; if (defined $tmp) { my $subdirs; if (ref($tmp) eq 'ARRAY') { $subdirs = $tmp; } else { $subdirs = [ $tmp ]; } foreach my $i (@{$subdirs}) { process_directory($i->{ATTR}{name}, $path.$dir); } } # get back to our previous location chdir $cwd; } # this does all the XML parsing shit we'll need for our little task sub parseXML { my ($filename) = @_; my $rethash = {}; my @tagstack; my $handler_start = sub { my ($parser, $tag, @attrs) = @_; my $current_tag = {}; $current_tag->{NAME} = $tag; $current_tag->{DATA} = ''; push @tagstack, $current_tag; if (scalar @attrs) { my $attrs = {}; $current_tag->{ATTR} = $attrs; while (scalar @attrs) { my $name = shift @attrs; my $value = shift @attrs; $attrs->{$name} = $value; } } }; my $handler_char = sub { my ($parser, $data) = @_; if ($data =~ /\S/) { $tagstack[$#tagstack]->{DATA} .= $data; } }; my $handler_end = sub { my $current_tag = pop @tagstack; if (scalar @tagstack) { my $tmp = $tagstack[$#tagstack]->{$current_tag->{NAME}}; if (defined $tmp) { ## better build an array, there are more elements with this tagname if (ref($tmp) eq 'ARRAY') { ## oops, the ARRAY is already there, just add the new element push @{$tmp}, $current_tag; } else { ## create the array "in-place" $tagstack[$#tagstack]->{$current_tag->{NAME}} = [ $tmp, $current_tag ]; } } else { $tagstack[$#tagstack]->{$current_tag->{NAME}} = $current_tag; } } else { $rethash->{$current_tag->{NAME}} = $current_tag; } }; my $parser = new XML::Parser ( Handlers => { Start => $handler_start, Char => $handler_char, End => $handler_end } ); $parser->parsefile($filename); return $rethash; } # print somethign according to the level of verbosity # receives: verbosity_level and message # prints message if verbosity_level >= $verbosity (global) sub speak { my ($v, $t) = @_; if ($v < 0) { print STDERR "\033[1;31m!! $t\033[0m\n"; } elsif ($verbosity >= $v) { print $t, "\n"; } } --- NEW FILE: makefile.xml --- <files> <file name="*.{js,html,css,cgi}" /> <file name="license.txt" /> <file name="release-notes.html" masonize="yes" /> <file name="index.html" masonize="yes" /> <dir name="lang" /> <dir name="plugins" /> <dir name="popups" /> <dir name="images" /> </files> --- NEW FILE: popupdiv.js --- /** This file is derived from PopupDiv, developed by Mihai Bazon for * SamWare.net. Modifications were needed to make it usable in HTMLArea. * HTMLArea is a free WYSIWYG online HTML editor from InteractiveTools.com. * * This file does not function standalone. It is dependent of global functions * defined in HTMLArea-3.0 (htmlarea.js). * * Please see file htmlarea.js for further details. **/ var is_ie = ( (navigator.userAgent.toLowerCase().indexOf("msie") != -1) && (navigator.userAgent.toLowerCase().indexOf("opera") == -1) ); var is_compat = (document.compatMode == "BackCompat"); function PopupDiv(editor, titleText, handler, initFunction) { var self = this; this.editor = editor; this.doc = editor._mdoc; this.handler = handler; var el = this.doc.createElement("div"); el.className = "content"; var popup = this.doc.createElement("div"); popup.className = "dialog popupdiv"; this.element = popup; var s = popup.style; s.position = "absolute"; s.left = "0px"; s.top = "0px"; var title = this.doc.createElement("div"); title.className = "title"; this.title = title; popup.appendChild(title); HTMLArea._addEvent(title, "mousedown", function(ev) { self._dragStart(is_ie ? window.event : ev); }); var button = this.doc.createElement("div"); button.className = "button"; title.appendChild(button); button.innerHTML = "×"; title.appendChild(this.doc.createTextNode(titleText)); this.titleText = titleText; button.onmouseover = function() { this.className += " button-hilite"; }; button.onmouseout = function() { this.className = this.className.replace(/\s*button-hilite\s*/g, " "); }; button.onclick = function() { this.className = this.className.replace(/\s*button-hilite\s*/g, " "); self.close(); }; popup.appendChild(el); this.content = el; this.doc.body.appendChild(popup); this.dragging = false; this.onShow = null; this.onClose = null; this.modal = false; initFunction(this); }; PopupDiv.currentPopup = null; PopupDiv.prototype.showAtElement = function(el, mode) { this.defaultSize(); var pos, ew, eh; var popup = this.element; popup.style.display = "block"; var w = popup.offsetWidth; var h = popup.offsetHeight; popup.style.display = "none"; if (el != window) { pos = PopupDiv.getAbsolutePos(el); ew = el.offsetWidth; eh = el.offsetHeight; } else { pos = {x:0, y:0}; var size = PopupDiv.getWindowSize(); ew = size.x; eh = size.y; } var FX = false, FY = false; if (mode.indexOf("l") != -1) { pos.x -= w; FX = true; } if (mode.indexOf("r") != -1) { pos.x += ew; FX = true; } if (mode.indexOf("t") != -1) { pos.y -= h; FY = true; } if (mode.indexOf("b") != -1) { pos.y += eh; FY = true; } if (mode.indexOf("c") != -1) { FX || (pos.x += Math.round((ew - w) / 2)); FY || (pos.y += Math.round((eh - h) / 2)); } this.showAt(pos.x, pos.y); }; PopupDiv.prototype.defaultSize = function() { var s = this.element.style; var cs = this.element.currentStyle; var addX = (is_ie && is_compat) ? (parseInt(cs.borderLeftWidth) + parseInt(cs.borderRightWidth) + parseInt(cs.paddingLeft) + parseInt(cs.paddingRight)) : 0; var addY = (is_ie && is_compat) ? (parseInt(cs.borderTopWidth) + parseInt(cs.borderBottomWidth) + parseInt(cs.paddingTop) + parseInt(cs.paddingBottom)) : 0; s.display = "block"; s.width = (this.content.offsetWidth + addX) + "px"; s.height = (this.content.offsetHeight + this.title.offsetHeight) + "px"; s.display = "none"; }; PopupDiv.prototype.showAt = function(x, y) { this.defaultSize(); var s = this.element.style; s.display = "block"; s.left = x + "px"; s.top = y + "px"; this.hideShowCovered(); PopupDiv.currentPopup = this; HTMLArea._addEvents(this.doc.body, ["mousedown", "click"], PopupDiv.checkPopup); HTMLArea._addEvents(this.editor._doc.body, ["mousedown", "click"], PopupDiv.checkPopup); if (is_ie && this.modal) { this.doc.body.setCapture(false); this.doc.body.onlosecapture = function() { (PopupDiv.currentPopup) && (this.doc.body.setCapture(false)); }; } window.event && HTMLArea._stopEvent(window.event); if (typeof this.onShow == "function") { this.onShow(); } else if (typeof this.onShow == "string") { eval(this.onShow); } var field = this.element.getElementsByTagName("input")[0]; if (!field) { field = this.element.getElementsByTagName("select")[0]; } if (!field) { field = this.element.getElementsByTagName("textarea")[0]; } if (field) { field.focus(); } }; PopupDiv.prototype.close = function() { this.element.style.display = "none"; PopupDiv.currentPopup = null; this.hideShowCovered(); HTMLArea._removeEvents(this.doc.body, ["mousedown", "click"], PopupDiv.checkPopup); HTMLArea._removeEvents(this.editor._doc.body, ["mousedown", "click"], PopupDiv.checkPopup); is_ie && this.modal && this.doc.body.releaseCapture(); if (typeof this.onClose == "function") { this.onClose(); } else if (typeof this.onClose == "string") { eval(this.onClose); } this.element.parentNode.removeChild(this.element); }; PopupDiv.prototype.getForm = function() { var forms = this.content.getElementsByTagName("form"); return (forms.length > 0) ? forms[0] : null; }; PopupDiv.prototype.callHandler = function() { var tags = ["input", "textarea", "select"]; var params = new Object(); for (var ti in tags) { var tag = tags[ti]; var els = this.content.getElementsByTagName(tag); for (var j = 0; j < els.length; ++j) { var el = els[j]; params[el.name] = el.value; } } this.handler(this, params); return false; }; PopupDiv.getAbsolutePos = function(el) { var r = { x: el.offsetLeft, y: el.offsetTop }; if (el.offsetParent) { var tmp = PopupDiv.getAbsolutePos(el.offsetParent); r.x += tmp.x; r.y += tmp.y; } return r; }; PopupDiv.getWindowSize = function() { if (window.innerHeight) { return { y: window.innerHeight, x: window.innerWidth }; } if (this.doc.body.clientHeight) { return { y: this.doc.body.clientHeight, x: this.doc.body.clientWidth }; } return { y: this.doc.documentElement.clientHeight, x: this.doc.documentElement.clientWidth }; }; PopupDiv.prototype.hideShowCovered = function () { var self = this; function isContained(el) { while (el) { if (el == self.element) { return true; } el = el.parentNode; } return false; }; var tags = new Array("applet", "select"); var el = this.element; var p = PopupDiv.getAbsolutePos(el); var EX1 = p.x; var EX2 = el.offsetWidth + EX1; var EY1 = p.y; var EY2 = el.offsetHeight + EY1; if (el.style.display == "none") { EX1 = EX2 = EY1 = EY2 = 0; } for (var k = tags.length; k > 0; ) { var ar = this.doc.getElementsByTagName(tags[--k]); var cc = null; for (var i = ar.length; i > 0;) { cc = ar[--i]; if (isContained(cc)) { cc.style.visibility = "visible"; continue; } p = PopupDiv.getAbsolutePos(cc); var CX1 = p.x; var CX2 = cc.offsetWidth + CX1; var CY1 = p.y; var CY2 = cc.offsetHeight + CY1; if ((CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) { cc.style.visibility = "visible"; } else { cc.style.visibility = "hidden"; } } } }; PopupDiv.prototype._dragStart = function (ev) { if (this.dragging) { return false; } this.dragging = true; PopupDiv.currentPopup = this; var posX = ev.clientX; var posY = ev.clientY; if (is_ie) { posY += this.doc.body.scrollTop; posX += this.doc.body.scrollLeft; } else { posY += window.scrollY; posX += window.scrollX; } var st = this.element.style; this.xOffs = posX - parseInt(st.left); this.yOffs = posY - parseInt(st.top); HTMLArea._addEvent(this.doc, "mousemove", PopupDiv.dragIt); HTMLArea._addEvent(this.doc, "mouseover", HTMLArea._stopEvent); HTMLArea._addEvent(this.doc, "mouseup", PopupDiv.dragEnd); HTMLArea._stopEvent(ev); }; PopupDiv.dragIt = function (ev) { var popup = PopupDiv.currentPopup; if (!(popup && popup.dragging)) { return false; } is_ie && (ev = window.event); var posX = ev.clientX; var posY = ev.clientY; if (is_ie) { posY += this.doc.body.scrollTop; posX += this.doc.body.scrollLeft; } else { posY += window.scrollY; posX += window.scrollX; } popup.hideShowCovered(); var st = popup.element.style; st.left = (posX - popup.xOffs) + "px"; st.top = (posY - popup.yOffs) + "px"; HTMLArea._stopEvent(ev); }; PopupDiv.dragEnd = function () { var popup = PopupDiv.currentPopup; if (!popup) { return false; } popup.dragging = false; HTMLArea._removeEvent(popup.doc, "mouseup", PopupDiv.dragEnd); HTMLArea._removeEvent(popup.doc, "mouseover", HTMLArea._stopEvent); HTMLArea._removeEvent(popup.doc, "mousemove", PopupDiv.dragIt); popup.hideShowCovered(); }; PopupDiv.checkPopup = function (ev) { is_ie && (ev = window.event); var el = is_ie ? ev.srcElement : ev.target; var cp = PopupDiv.currentPopup; for (; (el != null) && (el != cp.element); el = el.parentNode); if (el == null) { cp.modal || ev.type == "mouseover" || cp.close(); HTMLArea._stopEvent(ev); } }; PopupDiv.prototype.addButtons = function() { var self = this; var div = this.doc.createElement("div"); this.content.appendChild(div); div.className = "buttons"; for (var i = 0; i < arguments.length; ++i) { var btn = arguments[i]; var button = this.doc.createElement("button"); div.appendChild(button); button.innerHTML = HTMLArea.I18N.buttons[btn]; switch (btn) { case "ok": button.onclick = function() { self.callHandler(); self.close(); }; break; case "cancel": button.onclick = function() { self.close(); }; break; } } }; --- NEW FILE: popupwin.js --- function PopupWin(editor, title, handler, initFunction) { this.editor = editor; this.handler = handler; var dlg = window.open("", "__ha_dialog", "toolbar=no,menubar=no,personalbar=no,width=600,height=600," + "scrollbars=no,resizable=no"); this.window = dlg; var doc = dlg.document; this.doc = doc; var self = this; var base = document.baseURI || document.URL; if (base && base.match(/(.*)\/([^\/]+)/)) { base = RegExp.$1 + "/"; } if (typeof _editor_url != "undefined" && !/^\//.test(_editor_url)) { // _editor_url doesn't start with '/' which means it's relative // FIXME: there's a problem here, it could be http:// which // doesn't start with slash but it's not relative either. base += _editor_url; } else base = _editor_url; if (!/\/$/.test(base)) { // base does not end in slash, add it now base += '/'; } this.baseURL = base; doc.open(); var html = "<html><head><title>" + title + "</title>\n"; // html += "<base href='" + base + "htmlarea.js' />\n"; html += "<style type='text/css'>@import url(" + base + "htmlarea.css);</style></head>\n"; html += "<body class='dialog popupwin' id='--HA-body'></body></html>"; doc.write(html); doc.close(); // sometimes I Hate Mozilla... ;-( function init2() { var body = doc.body; if (!body) { setTimeout(init2, 25); return false; } dlg.title = title; doc.documentElement.style.padding = "0px"; doc.documentElement.style.margin = "0px"; var content = doc.createElement("div"); content.className = "content"; self.content = content; body.appendChild(content); self.element = body; initFunction(self); dlg.focus(); }; init2(); }; PopupWin.prototype.callHandler = function() { var tags = ["input", "textarea", "select"]; var params = new Object(); for (var ti in tags) { var tag = tags[ti]; var els = this.content.getElementsByTagName(tag); for (var j = 0; j < els.length; ++j) { var el = els[j]; var val = el.value; if (el.tagName.toLowerCase() == "input") { if (el.type == "checkbox") { val = el.checked; } } params[el.name] = val; } } this.handler(this, params); return false; }; PopupWin.prototype.close = function() { this.window.close(); }; PopupWin.prototype.addButtons = function() { var self = this; var div = this.doc.createElement("div"); this.content.appendChild(div); div.className = "buttons"; for (var i = 0; i < arguments.length; ++i) { var btn = arguments[i]; var button = this.doc.createElement("button"); div.appendChild(button); button.innerHTML = HTMLArea.I18N.buttons[btn]; switch (btn) { case "ok": button.onclick = function() { self.callHandler(); self.close(); return false; }; break; case "cancel": button.onclick = function() { self.close(); return false; }; break; } } }; PopupWin.prototype.showAtElement = function() { var self = this; // Mozilla needs some time to realize what's goin' on.. setTimeout(function() { var w = self.content.offsetWidth + 4; var h = self.content.offsetHeight + 4; // size to content -- that's fuckin' buggy in all fuckin' browsers!!! // so that we set a larger size for the dialog window and then center // the element inside... phuck! // center... var el = self.content; var s = el.style; // s.width = el.offsetWidth + "px"; // s.height = el.offsetHeight + "px"; s.position = "absolute"; s.left = (w - el.offsetWidth) / 2 + "px"; s.top = (h - el.offsetHeight) / 2 + "px"; if (HTMLArea.is_gecko) { self.window.innerWidth = w; self.window.innerHeight = h; } else { self.window.resizeTo(w + 8, h + 35); } }, 25); }; --- NEW FILE: project-config.xml --- <project title="HTMLArea"> <version>3.0</version> <release>beta+CVS</release> </project> --- NEW FILE: reference.html --- <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN"> <html> <head> <title>HTMLArea-3.0 Reference</title> <style type="text/css"> @import url(htmlarea.css); body { font: 14px verdana,sans-serif; background: #fff; color: #000; } h1, h2 { font-family:tahoma,sans-serif; } h1 { border-bottom: 2px solid #000; } h2 { border-bottom: 1px solid #aaa; } h3, h4 { margin-bottom: 0px; font-family: Georgia,serif; font-style: italic; } h4 { font-size: 90%; margin-left: 1em; } acronym { border-bottom: 1px dotted #063; color: #063; } p { margin-left: 2em; margin-top: 0.3em; } li p { margin-left: 0px; } .abstract { padding: 5px; margin: 0px 10em; font-size: 90%; border: 1px dashed #aaa; background: #eee;} li { margin-left: 2em; } em { color: #042; } a { color: #00f; } a:hover { color: #f00; } a:active { color: #f80; } span.browser { font-weight: bold; color: #864; } .fixme { font-size: 20px; font-weight: bold; color: red; background: #fab; padding: 5px; text-align: center; } .code { background: #e4efff; padding: 5px; border: 1px dashed #abc; margin-left: 2em; margin-right: 2em; font-family: fixed,"lucidux mono","andale mono","courier new",monospace; } .note, .warning { font-weight: bold; color: #0a0; font-variant: small-caps; } .warning { color: #a00; } .string { color: #06c; } /* font-lock-string-face */ .comment { color: #840; } /* font-lock-comment-face */ .variable-name { color: #000; } /* font-lock-variable-name-face */ .type { color: #008; font-weight: bold; } /* font-lock-type-face */ .reference { color: #048; } /* font-lock-reference-face */ .preprocessor { color: #808; } /* font-lock-preprocessor-face */ .keyword { color: #00f; font-weight: bold; } /* font-lock-keyword-face */ .function-name { color: #044; } /* font-lock-function-name-face */ .html-tag { font-weight: bold; } /* html-tag-face */ .html-helper-italic { font-style: italic; } /* html-helper-italic-face */ .html-helper-bold { font-weight: bold; } /* html-helper-bold-face */ </style> <script type="text/javascript" src="htmlarea.js"></script> <script type="text/javascript" src="dialog.js"></script> <script tyle="text/javascript" src="lang/en.js"></script> </head> <body onload="HTMLArea.replace('TA')"> <h1>HTMLArea-3.0 Documentation</h1> <div class="abstract" style="color: red; font-weight: bold"> This documentation contains valid information, but is outdated in the terms that it does not covers all the features of HTMLArea. A new documentation project will be started, based on LaTeX. </div> <h2>Introduction</h2> <h3>What is HTMLArea?</h3> <p>HTMLArea is a free <acronym title="What You See Is What You Get" >WYSIWYG</acronym> editor replacement for <code><textarea></code> fields. By adding a few simple lines of JavaScript code to your web page you can replace a regular textarea with a rich text editor that lets your users do the following:</p> <ul> <li>Format text to be bold, italicized, or underlined.</li> <li>Change the face, size, style and color.</li> <li>Left, center, or right-justify paragraphs.</li> <li>Make bulleted or numbered lists.</li> <li>Indent or un-indent paragraphs.</li> <li>Insert a horizontal line.</li> <li>Insert hyperlinks and images.</li> <li>View the raw HTML source of what they're editing.</li> <li>and much more...</li> </ul> <p>Some of the interesting features of HTMLArea that set's it apart from other web based WYSIWYG editors are as follows:</p> <ul> <li>It's lightweight, fast loading and can transform a regular textarea into a rich-text editor with a single line of JavaScript.</li> <li>Generates clean, valid HTML.</li> <li>It's 100% backwards compatible with older or non-supported browsers (they get the original textarea field).</li> <li>It's free and can be incorporated into any free or commercial program.</li> <li>It works with any server-side languages (ASP, PHP, Perl, Java, etc).</li> <li>It's written in JavaScript and can be easily viewed, modified or extended.</li> <li>It remembers entered content when a user navigates away and then hits "back" in their browser.</li> <li>Since it replaces existing textareas it doesn't require a lot of code to add it to your pages (just one line).</li> <li>Did we mention it was free? ;-)</li> </ul> <h3>Is it really free? What's the catch?</h3> <p>Yes! It's really free. You can use it, modify it, distribute it with your software, or do just about anything you like wit... [truncated message content] |
Update of /cvsroot/phpslash/phpslash-dev/public_html/scripts/htmlarea3/plugins/TableOperations/lang In directory sc8-pr-cvs1:/tmp/cvs-serv12035/phpslash-dev/public_html/scripts/htmlarea3/plugins/TableOperations/lang Added Files: cz.js da.js de.js en.js fi.js hu.js it.js makefile.xml ro.js Log Message: Added preliminary htmlArea editing support to the Story entry form. --- NEW FILE: cz.js --- // I18N constants // LANG: "cz", ENCODING: UTF-8 | ISO-8859-2 // Author: Jiri Löw, <ji...@ji...> // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) TableOperations.I18N = { "Align": "ZarovnánÃ", "All four sides": "VÅ¡echny ÄtyÅi strany", "Background": "PozadÃ", "Baseline": "Základnà linka", "Border": "Obrys", "Borders": "Obrysy", "Bottom": "Dolů", "CSS Style": "Kaskádové styly (CSS)", "Caption": "Titulek", "Cell Properties": "Vlastnosti buÅky", "Center": "Na stÅed", "Char": "Znak", "Collapsed borders": "StlaÄené okraje", "Color": "Barva", "Description": "Popis", "FG Color": "Barva popÅedÃ", "Float": "ObtékánÃ", "Frames": "RámeÄky", "Height": "Výška", "How many columns would you like to merge?": "Kolik sloupců si pÅejete spojit?", "How many rows would you like to merge?": "Kolik Åádků si pÅejete spojit?", "Image URL": "Adresa obrázku", "Justify": "Do stran", "Layout": "RozloženÃ", "Left": "Vlevo", "Margin": "Okraj", "Middle": "Na stÅed", "No rules": "Žádné Äáry", "No sides": "Žádné strany", "None": "Žádné", "Padding": "OdsazovánÃ", "Please click into some cell": "ProsÃm kliknÄte do nÄkteré buÅky", "Right": "Vpravo", "Row Properties": "Vlastnosti Åádku", "Rules will appear between all rows and columns": "Äáry mezi vÅ¡emi Åádky i sloupci", "Rules will appear between columns only": "Äáry pouze mezi sloupci", "Rules will appear between rows only": "Äáry pouze mezi Åádky", "Rules": "Äáry", "Spacing and padding": "Mezery a odsazovánÃ", "Spacing": "Mezery", "Summary": "ShrnutÃ", "TO-cell-delete": "Smazat buÅku", "TO-cell-insert-after": "Vložit buÅku za", "TO-cell-insert-before": "Vložit buÅku pÅed", "TO-cell-merge": "Spojit buÅky", "TO-cell-prop": "Vlastnosti buÅky", "TO-cell-split": "RozdÄlit buÅku", "TO-col-delete": "Smazat sloupec", "TO-col-insert-after": "Vložit sloupec za", "TO-col-insert-before": "Vložit sloupec pÅed", "TO-col-split": "RozdÄlit sloupec", "TO-row-delete": "Smazat Åádek", "TO-row-insert-above": "Smazat Åádek nad", "TO-row-insert-under": "Smazat Åádek pod", "TO-row-prop": "Vlastnosti Åádku", "TO-row-split": "RozdÄlit Åádek", "TO-table-prop": "Vlastnosti tabulky", "Table Properties": "Vlastnosti tabulky", "Text align": "Zarovnánà textu", "The bottom side only": "Pouze spodnà strana", "The left-hand side only": "Pouze levá strana", "The right and left sides only": "Pouze levá a pravá strana", "The right-hand side only": "Pouze pravá strana", "The top and bottom sides only": "Pouze hornà a dolnà strana", "The top side only": "Pouze hornà strana", "Top": "Nahoru", "Unset color": "ZruÅ¡it barvu", "Vertical align": "Svislé zarovnánÃ", "Width": "Å ÃÅka", "not-del-last-cell": "HTMLArea zbabÄle odmÃtá smazat poslednà buÅku v Åádku.", "not-del-last-col": "HTMLArea zbabÄle odmÃtá smazat poslednà sloupec v tabulce.", "not-del-last-row": "HTMLArea zbabÄle odmÃtá smazat poslednà Åádek v tabulce.", "percent": "procent", "pixels": "pixelů" }; --- NEW FILE: da.js --- // I18N constants // LANG: "da", ENCODING: UTF-8 | ISO-8859-1 // Author: Steen Sønderup, <st...@so...> // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) TableOperations.I18N = { "Align": "Placer", "All four sides": "Alle fire sider", "Background": "Baggrund", "Baseline": "Bundlinie", "Border": "Kant", "Borders": "Kanter", "Bottom": "Bund", "CSS Style": "Stil [CSS]", "Caption": "Titel", "Cell Properties": "Celle egenskaber", "Center": "Centrer", "Char": "Plads", "Collapsed borders": "Sammensmelt rammer", "Color": "Farve", "Description": "Beskrivelse", "FG Color": "Font farve", "Float": "Justering", "Frames": "Udvendig", "Height": "Højde", "How many columns would you like to merge?": "Hvor mange kollonner vil du samle?", "How many rows would you like to merge?": "Hvor mange rækker vil du samle?", "Image URL": "Billede URL", "Justify": "Lige margener", "Layout": "Opsætning", "Left": "Venstre", "Margin": "Margen", "Middle": "Centrer", "No rules": "Ingen rammer", "No sides": "Ingen sider", "None": "Ingen", "Padding": "Margen", "Please click into some cell": "Klik pÃ¥ en celle", "Right": "Højre", "Row Properties": "Række egenskaber", "Rules will appear between all rows and columns": "Rammer mellem rækker og kolonner", "Rules will appear between columns only": "Kun rammer mellem kolonner", "Rules will appear between rows only": "Kun rammer mellem rækker", "Rules": "Invendig", "Spacing and padding": "Afstand og margen", "Spacing": "Afstand", "Summary": "Beskrivelse", "TO-cell-delete": "Slet celle", "TO-cell-insert-after": "Indsæt celle efter", "TO-cell-insert-before": "Indsæt celle før", "TO-cell-merge": "Sammensæt celler", "TO-cell-prop": "Celle egenskaber", "TO-cell-split": "Opdel celle", "TO-col-delete": "Slet kollonne", "TO-col-insert-after": "Indsæt kolonne efter", "TO-col-insert-before": "Indsæt kolonne før", "TO-col-split": "Opdel kolonne", "TO-row-delete": "Slet række", "TO-row-insert-above": "Indsæt række før", "TO-row-insert-under": "Indsæt række efter", "TO-row-prop": "Række egenskaber", "TO-row-split": "Opdel række", "TO-table-prop": "Tabel egenskaber", "Table Properties": "Tabel egenskaber", "Text align": "Tekst", "The bottom side only": "Kun i bunden", "The left-hand side only": "Kun i højre side", "The right and left sides only": "Kun i siderne", "The right-hand side only": "Kun i venstre side", "The top and bottom sides only": "Kun i top og bund", "The top side only": "Kun i toppen", "Top": "Top", "Unset color": "Farve ikke valgt", "Vertical align": "Vertikal placering", "Width": "Bredde", "not-del-last-cell": "Du kan ikke slette den sidste celle i en række.", "not-del-last-col": "Du kan ikke slette den sidste kolonne i en tabel.", "not-del-last-row": "Du kan ikke slette den sidste række i en tabel.", "percent": "procent", "pixels": "pixel" }; --- NEW FILE: de.js --- // I18N constants // LANG: "de", ENCODING: UTF-8 | ISO-8859-1 // Author: broxx, <br...@br...> TableOperations.I18N = { "Align": "Ausrichten", "All four sides": "Alle 4 Seiten", "Background": "Hintergrund", "Baseline": "Basislinie", "Border": "Rand", "Borders": "Raender", "Bottom": "Unten", "CSS Style": "Style [CSS]", "Caption": "Ueberschrift", "Cell Properties": "Zellen", "Center": "Zentrieren", "Char": "Zeichen", "Collapsed borders": "Collapsed borders", "Color": "Farbe", "Description": "Beschreibung", "FG Color": "FG Farbe", "Float": "Ausrichtung", "Frames": "Rahmen", "Height": "Hoehe", "How many columns would you like to merge?": "Wieviele Spalten willst du verbinden?", "How many rows would you like to merge?": "Wieviele Zeilen willst du verbinden?", "Image URL": "Bild URL", "Justify": "Justieren", "Layout": "Layout", "Left": "Links", "Margin": "Rand", "Middle": "Mitte", "No rules": "Keine Balken", "No sides": "Keine Seiten", "None": "Keine", "Padding": "Auffuellung", "Please click into some cell": "Waehle eine Zelle", "Right": "Rechts", "Row Properties": "Reihen", "Rules will appear between all rows and columns": "Balken zwischen Reihen und Spalten", "Rules will appear between columns only": "Balken zwischen Spalten", "Rules will appear between rows only": "Balken zwischen Reihen", "Rules": "Balken", "Spacing and padding": "Abstaende", "Spacing": "Abstand", "Summary": "Zusammenfassung", "TO-cell-delete": "Zelle loeschen", "TO-cell-insert-after": "Zelle einfuegen nach", "TO-cell-insert-before": "Zelle einfuegen bevor", "TO-cell-merge": "Zellen zusammenfuegen", "TO-cell-prop": "Zelleinstellungen", "TO-cell-split": "Zellen aufteilen", "TO-col-delete": "Spalte loeschen", "TO-col-insert-after": "Spalte einfuegen nach", "TO-col-insert-before": "Spalte einfuegen bevor", "TO-col-split": "Spalte aufteilen", "TO-row-delete": "Reihe loeschen", "TO-row-insert-above": "Reihe einfuegen vor", "TO-row-insert-under": "Reihe einfuegen nach", "TO-row-prop": "Reiheneinstellungen", "TO-row-split": "Reihen aufteilen", "TO-table-prop": "Tabelle", "Table Properties": "Tabelle", "Text align": "Ausrichtung", "The bottom side only": "Nur untere Seite", "The left-hand side only": "Nur linke Seite", "The right and left sides only": "Nur linke und rechte Seite", "The right-hand side only": "Nur rechte Seite", "The top and bottom sides only": "Nur obere und untere Seite", "The top side only": "Nur obere Seite", "Top": "Oben", "Unset color": "Farbe", "Vertical align": "Ausrichtung", "Width": "Breite", "not-del-last-cell": "Letzte Zelle in dieser Reihe!", "not-del-last-col": "Letzte Spalte in dieser Tabelle!", "not-del-last-row": "Letzte Reihe in dieser Tabelle", "percent": "%", "pixels": "pixels" }; --- NEW FILE: en.js --- // I18N constants // LANG: "en", ENCODING: UTF-8 | ISO-8859-1 // Author: Mihai Bazon, <mi...@in...> // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) TableOperations.I18N = { "Align": "Align", "All four sides": "All four sides", "Background": "Background", "Baseline": "Baseline", "Border": "Border", "Borders": "Borders", "Bottom": "Bottom", "CSS Style": "Style [CSS]", "Caption": "Caption", "Cell Properties": "Cell Properties", "Center": "Center", "Char": "Char", "Collapsed borders": "Collapsed borders", "Color": "Color", "Description": "Description", "FG Color": "FG Color", "Float": "Float", "Frames": "Frames", "Height": "Height", "How many columns would you like to merge?": "How many columns would you like to merge?", "How many rows would you like to merge?": "How many rows would you like to merge?", "Image URL": "Image URL", "Justify": "Justify", "Layout": "Layout", "Left": "Left", "Margin": "Margin", "Middle": "Middle", "No rules": "No rules", "No sides": "No sides", "None": "None", "Padding": "Padding", "Please click into some cell": "Please click into some cell", "Right": "Right", "Row Properties": "Row Properties", "Rules will appear between all rows and columns": "Rules will appear between all rows and columns", "Rules will appear between columns only": "Rules will appear between columns only", "Rules will appear between rows only": "Rules will appear between rows only", "Rules": "Rules", "Spacing and padding": "Spacing and padding", "Spacing": "Spacing", "Summary": "Summary", "TO-cell-delete": "Delete cell", "TO-cell-insert-after": "Insert cell after", "TO-cell-insert-before": "Insert cell before", "TO-cell-merge": "Merge cells", "TO-cell-prop": "Cell properties", "TO-cell-split": "Split cell", "TO-col-delete": "Delete column", "TO-col-insert-after": "Insert column after", "TO-col-insert-before": "Insert column before", "TO-col-split": "Split column", "TO-row-delete": "Delete row", "TO-row-insert-above": "Insert row before", "TO-row-insert-under": "Insert row after", "TO-row-prop": "Row properties", "TO-row-split": "Split row", "TO-table-prop": "Table properties", "Table Properties": "Table Properties", "Text align": "Text align", "The bottom side only": "The bottom side only", "The left-hand side only": "The left-hand side only", "The right and left sides only": "The right and left sides only", "The right-hand side only": "The right-hand side only", "The top and bottom sides only": "The top and bottom sides only", "The top side only": "The top side only", "Top": "Top", "Unset color": "Unset color", "Vertical align": "Vertical align", "Width": "Width", "not-del-last-cell": "HTMLArea cowardly refuses to delete the last cell in row.", "not-del-last-col": "HTMLArea cowardly refuses to delete the last column in table.", "not-del-last-row": "HTMLArea cowardly refuses to delete the last row in table.", "percent": "percent", "pixels": "pixels" }; --- NEW FILE: fi.js --- TableOperations.I18N = { "Align": "Kohdistus", "All four sides": "Kaikki neljä sivua", "Background": "Tausta", "Baseline": "Takaraja", "Border": "Reuna", "Borders": "Reunat", "Bottom": "Alle", "CSS Style": "Tyyli [CSS]", "Caption": "Otsikko", "Cell Properties": "Solun asetukset", "Center": "Keskelle", "Char": "Merkki", "Collapsed borders": "Luhistetut reunat", "Color": "Väri", "Description": "Kuvaus", "FG Color": "FG Väri", "Frames": "Kehykset", "Image URL": "Kuvan osoite", "Layout": "Sommittelu", "Left": "Vasen", "Margin": "Marginaali", "Middle": "Keskelle", "No rules": "Ei viivoja", "No sides": "Ei sivuja", "Padding": "Palstantäyte", "Right": "Oikea", "Row Properties": "Rivin asetukset", "Rules will appear between all rows and columns": "Viivat jokaisen rivin ja sarakkeen välillä", "Rules will appear between columns only": "Viivat ainoastaan sarakkeiden välillä", "Rules will appear between rows only": "Viivat ainoastaan rivien välillä", "Rules": "Viivat", "Spacing": "Palstatila", "Summary": "Yhteenveto", "TO-cell-delete": "Poista solu", "TO-cell-insert-after": "Lisää solu perään", "TO-cell-insert-before": "Lisää solu ennen", "TO-cell-merge": "Yhdistä solut", "TO-cell-prop": "Solun asetukset", "TO-cell-split": "Jaa solu", "TO-col-delete": "Poista sarake", "TO-col-insert-after": "Lisää sarake perään", "TO-col-insert-before": "Lisää sarake ennen", "TO-col-split": "Jaa sarake", "TO-row-delete": "Poista rivi", "TO-row-insert-above": "Lisää rivi yläpuolelle", "TO-row-insert-under": "Lisää rivi alapuolelle", "TO-row-prop": "Rivin asetukset", "TO-row-split": "Jaa rivi", "TO-table-prop": "Taulukon asetukset", "Top": "Ylös", "Table Properties": "Taulukon asetukset", "The bottom side only": "Ainoastaan alapuolelle", "The left-hand side only": "Ainoastaan vasenreuna", "The right and left sides only": "Oikea- ja vasenreuna", "The right-hand side only": "Ainoastaan oikeareuna", "The top and bottom sides only": "Ylä- ja alapuoli.", "The top side only": "Ainoastaan yläpuoli", "Vertical align": "Vertikaali kohdistus", "Width": "Leveys", "not-del-last-cell": "Ei voida poistaa viimeistä solua rivistä.", "not-del-last-col": "Ei voida poistaa viimeistä saraketta taulusta.", "not-del-last-row": "Ei voida poistaa viimeistä riviä taulusta.", "percent": "prosenttia", "pixels": "pikseliä" }; --- NEW FILE: hu.js --- // I18N constants // LANG: "hu", ENCODING: UTF-8 // Author: Miklós Somogyi, <som...@vn...> // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) HTMLArea.I18N = { // the following should be the filename without .js extension // it will be used for automatically load plugin language. lang: "hu", tooltips: { bold: "Félkövér", italic: "DÅlt", underline: "Aláhúzott", strikethrough: "Ãthúzott", subscript: "Alsó index", superscript: "FelsÅ index", justifyleft: "Balra zárt", justifycenter: "Középre zárt", justifyright: "Jobbra zárt", justifyfull: "Sorkizárt", orderedlist: "Számozott lista", unorderedlist: "Számozatlan lista", outdent: "Behúzás csökkentése", indent: "Behúzás növelése", forecolor: "KarakterszÃn", hilitecolor: "HáttérszÃn", horizontalrule: "Elválasztó vonal", createlink: "Hiperhivatkozás beszúrása", insertimage: "Kép beszúrása", inserttable: "Táblázat beszúrása", htmlmode: "HTML forrás be/ki", popupeditor: "SzerkesztÅ külön ablakban", about: "Névjegy", showhelp: "Súgó", textindicator: "Aktuális stÃlus", undo: "Visszavonás", redo: "Ãjra végrehajtás", cut: "Kivágás", copy: "Másolás", paste: "Beillesztés" }, buttons: { "ok": "Rendben", "cancel": "Mégsem" }, msg: { "Path": "Hierarchia", "TEXT_MODE": "Forrás mód. Visszaváltás [<>] gomb" } }; --- NEW FILE: it.js --- // I18N constants // LANG: "it", ENCODING: UTF-8 | ISO-8859-1 // Author: Fabio Rotondo <fa...@ro...> TableOperations.I18N = { "Align": "Allinea", "All four sides": "Tutti e quattro i lati", "Background": "Sfondo", "Baseline": "Allineamento", "Border": "Bordo", "Borders": "Bordi", "Bottom": "Basso", "CSS Style": "Stile [CSS]", "Caption": "Titolo", "Cell Properties": "Proprietà della Cella", "Center": "Centra", "Char": "Carattere", "Collapsed borders": "Bordi chiusi", "Color": "Colore", "Description": "Descrizione", "FG Color": "Colore Principale", "Float": "Fluttuante", "Frames": "Frames", "Height": "Altezza", "How many columns would you like to merge?": "Quante colonne vuoi unire?", "How many rows would you like to merge?": "Quante righe vuoi unire?", "Image URL": "URL dell'Immagine", "Justify": "Justifica", "Layout": "Layout", "Left": "Sinistra", "Margin": "Margine", "Middle": "Centrale", "No rules": "Nessun righello", "No sides": "Nessun lato", "None": "Nulla", "Padding": "Padding", "Please click into some cell": "Per favore, clicca in una cella", "Right": "Destra", "Row Properties": "Proprietà della Riga", "Rules will appear between all rows and columns": "Le linee appariranno tra tutte le righe e colonne", "Rules will appear between columns only": "Le linee appariranno solo tra le colonne", "Rules will appear between rows only": "Le linee appariranno solo tra le righe", "Rules": "Linee", "Spacing and padding": "Spaziatura e Padding", "Spacing": "Spaziatura", "Summary": "Sommario", "TO-cell-delete": "Cancella cella", "TO-cell-insert-after": "Inserisci cella dopo", "TO-cell-insert-before": "Inserisci cella prima", "TO-cell-merge": "Unisci celle", "TO-cell-prop": "Proprietà della cella", "TO-cell-split": "Dividi cella", "TO-col-delete": "Cancella colonna", "TO-col-insert-after": "Inserisci colonna dopo", "TO-col-insert-before": "Inserisci colonna prima", "TO-col-split": "Dividi colonna", "TO-row-delete": "Cancella riga", "TO-row-insert-above": "Inserisci riga prima", "TO-row-insert-under": "Inserisci riga dopo", "TO-row-prop": "Proprietà della riga", "TO-row-split": "Dividi riga", "TO-table-prop": "Proprietà della Tabella", "Table Properties": "Proprietà della Tabella", "Text align": "Allineamento del Testo", "The bottom side only": "Solo la parte inferiore", "The left-hand side only": "Solo la parte sinistra", "The right and left sides only": "Solo destra e sinistra", "The right-hand side only": "Solo la parte destra", "The top and bottom sides only": "Solo sopra e sotto", "The top side only": "Solo la parte sopra", "Top": "Alto", "Unset color": "Rimuovi colore", "Vertical align": "Allineamento verticale", "Width": "Larghezza", "not-del-last-cell": "HTMLArea si rifiuta codardamente di cancellare l'ultima cella nella riga.", "not-del-last-col": "HTMLArea si rifiuta codardamente di cancellare l'ultima colonna nella tabella.", "not-del-last-row": "HTMLArea si rifiuta codardamente di cancellare l'ultima riga nella tabella.", "percent": "percento", "pixels": "pixels" }; --- NEW FILE: makefile.xml --- <files> <file name="*.js" /> </files> --- NEW FILE: ro.js --- // I18N constants // LANG: "ro", ENCODING: UTF-8 // Author: Mihai Bazon, <mi...@in...> // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) TableOperations.I18N = { "Align": "Aliniere", "All four sides": "Toate pÄrÅ£ile", "Background": "Fundal", "Baseline": "Baseline", "Border": "Chenar", "Borders": "Chenare", "Bottom": "Jos", "CSS Style": "Stil [CSS]", "Caption": "Titlu de tabel", "Cell Properties": "ProprietÄÅ£ile celulei", "Center": "Centru", "Char": "Caracter", "Collapsed borders": "Chenare asimilate", "Color": "Culoare", "Description": "Descriere", "FG Color": "Culoare text", "Float": "PoziÅ£ie", "Frames": "Chenare", "Height": "ÃnÄlÅ£imea", "How many columns would you like to merge?": "Câte coloane vrei sÄ uneÅti?", "How many rows would you like to merge?": "Câte linii vrei sÄ uneÅti?", "Image URL": "URL-ul imaginii", "Justify": "Justify", "Layout": "Aranjament", "Left": "Stânga", "Margin": "Margine", "Middle": "Mijloc", "No rules": "FÄrÄ linii", "No sides": "FÄrÄ pÄrÅ£i", "None": "Nimic", "Padding": "SpaÅ£iere", "Please click into some cell": "VÄ rog sÄ daÅ£i click într-o celulÄ", "Right": "Dreapta", "Row Properties": "ProprietÄÅ£ile liniei", "Rules will appear between all rows and columns": "Vor apÄrea linii între toate rândurile Åi coloanele", "Rules will appear between columns only": "Vor apÄrea doar linii verticale", "Rules will appear between rows only": "Vor apÄrea doar linii orizontale", "Rules": "Linii", "Spacing and padding": "SpaÅ£ierea", "Spacing": "Ãntre celule", "Summary": "Sumar", "TO-cell-delete": "Återge celula", "TO-cell-insert-after": "InsereazÄ o celulÄ la dreapta", "TO-cell-insert-before": "InsereazÄ o celulÄ la stânga", "TO-cell-merge": "UneÅte celulele", "TO-cell-prop": "ProprietÄÅ£ile celulei", "TO-cell-split": "Ãmparte celula", "TO-col-delete": "Återge coloana", "TO-col-insert-after": "InsereazÄ o coloanÄ la dreapta", "TO-col-insert-before": "InsereazÄ o coloanÄ la stânga", "TO-col-split": "Ãmparte coloana", "TO-row-delete": "Återge rândul", "TO-row-insert-above": "InsereazÄ un rând înainte", "TO-row-insert-under": "InsereazÄ un rând dupÄ", "TO-row-prop": "ProprietÄÅ£ile rândului", "TO-row-split": "Ãmparte rândul", "TO-table-prop": "ProprietÄÅ£ile tabelei", "Table Properties": "ProprietÄÅ£ile tabelei", "Text align": "Aliniere", "The bottom side only": "Doar partea de jos", "The left-hand side only": "Doar partea din stânga", "The right and left sides only": "Partea din stânga Åi cea din dreapta", "The right-hand side only": "Doar partea din dreapta", "The top and bottom sides only": "Partea de sus si cea de jos", "The top side only": "Doar partea de sus", "Top": "Sus", "Unset color": "DezactiveazÄ culoarea", "Vertical align": "Aliniere pe verticalÄ", "Width": "LÄÅ£ime", "not-del-last-cell": "HTMLArea refuzÄ cu laÅitate sÄ ÅteargÄ ultima celulÄ din rând.", "not-del-last-col": "HTMLArea refuzÄ cu laÅitate sÄ ÅteargÄ ultima coloamÄ din tabela.", "not-del-last-row": "HTMLArea refuzÄ cu laÅitate sÄ ÅteargÄ ultimul rând din tabela.", "percent": "procente", "pixels": "pixeli" }; |
From: Joe S. <joe...@us...> - 2003-11-12 21:29:52
|
Update of /cvsroot/phpslash/phpslash-dev/public_html/scripts/htmlarea3/plugins/SpellChecker/img In directory sc8-pr-cvs1:/tmp/cvs-serv12035/phpslash-dev/public_html/scripts/htmlarea3/plugins/SpellChecker/img Added Files: makefile.xml spell-check.gif Log Message: Added preliminary htmlArea editing support to the Story entry form. --- NEW FILE: makefile.xml --- <files> <file name="*.{gif,jpg,jpeg}" /> </files> --- NEW FILE: spell-check.gif --- GIF89a |
Update of /cvsroot/phpslash/phpslash-dev/public_html/scripts/htmlarea3/plugins/TableOperations/img In directory sc8-pr-cvs1:/tmp/cvs-serv12035/phpslash-dev/public_html/scripts/htmlarea3/plugins/TableOperations/img Added Files: cell-delete.gif cell-insert-after.gif cell-insert-before.gif cell-merge.gif cell-prop.gif cell-split.gif col-delete.gif col-insert-after.gif col-insert-before.gif col-split.gif makefile.xml row-delete.gif row-insert-above.gif row-insert-under.gif row-prop.gif row-split.gif table-prop.gif Log Message: Added preliminary htmlArea editing support to the Story entry form. --- NEW FILE: cell-delete.gif --- GIF89a --- NEW FILE: cell-insert-after.gif --- GIF89a --- NEW FILE: cell-insert-before.gif --- GIF89a --- NEW FILE: cell-merge.gif --- GIF89a --- NEW FILE: cell-prop.gif --- GIF89a --- NEW FILE: cell-split.gif --- GIF89a --- NEW FILE: col-delete.gif --- GIF89a --- NEW FILE: col-insert-after.gif --- GIF89a --- NEW FILE: col-insert-before.gif --- GIF89a --- NEW FILE: col-split.gif --- GIF89a --- NEW FILE: makefile.xml --- <files> <file name="*.{gif,jpg,jpeg}" /> </files> --- NEW FILE: row-delete.gif --- GIF89a --- NEW FILE: row-insert-above.gif --- GIF89a --- NEW FILE: row-insert-under.gif --- GIF89a --- NEW FILE: row-prop.gif --- GIF89a --- NEW FILE: row-split.gif --- GIF89a --- NEW FILE: table-prop.gif --- GIF89a |
From: Joe S. <joe...@us...> - 2003-11-12 21:29:52
|
Update of /cvsroot/phpslash/phpslash-dev/tables/0.8 In directory sc8-pr-cvs1:/tmp/cvs-serv12035/phpslash-dev/tables/0.8 Modified Files: slash-all.sql Log Message: Added preliminary htmlArea editing support to the Story entry form. Index: slash-all.sql =================================================================== RCS file: /cvsroot/phpslash/phpslash-dev/tables/0.8/slash-all.sql,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** slash-all.sql 11 Nov 2003 21:20:01 -0000 1.1 --- slash-all.sql 12 Nov 2003 21:29:49 -0000 1.2 *************** *** 214,218 **** INSERT INTO psl_block (id, type, title, expire_length, location, source_url, cache_data, block_options, ordernum, date_issued) VALUES (148,1,'Administration',0,'','','<p>A bunch of cool things like latest site activity and stats should go here. </p>\n <p>But until they do, just pick something from the NavBar and go about your duties...</p>\n','a:3:{s:6:\"column\";s:6:\"center\";s:5:\"perms\";s:4:\"user\";s:0:\"\";s:0:\"\";}',90,1025284604); INSERT INTO psl_block (id, type, title, expire_length, location, source_url, cache_data, block_options, ordernum, date_issued) VALUES (149,12,'Tasks',0,'','menu_ary=menuadmin&tpl=navbarBlockh','','a:4:{s:6:\"column\";s:6:\"center\";s:5:\"width\";s:4:\"100%\";s:5:\"perms\";s:4:\"user\";s:8:\"box_type\";s:6:\"framed\";}',95,1025284618); ! INSERT INTO psl_block (id, type, title, expire_length, location, source_url, cache_data, block_options, ordernum, date_issued) VALUES (150,15,'Page - public - header',0,'','','','a:3:{s:6:\"column\";s:3:\"top\";s:5:\"width\";s:0:\"\";s:8:\"box_type\";s:11:\"contentonly\";}',95,NULL); INSERT INTO psl_block (id, type, title, expire_length, location, source_url, cache_data, block_options, ordernum, date_issued) VALUES (151,16,'Page - public - footer',0,'','','','a:3:{s:6:\"column\";s:6:\"bottom\";s:5:\"width\";s:0:\"\";s:8:\"box_type\";s:11:\"contentonly\";}',5,NULL); INSERT INTO psl_block (id, type, title, expire_length, location, source_url, cache_data, block_options, ordernum, date_issued) VALUES (152,17,'Page - public - topicbar',1200,'','','','a:3:{s:6:\"column\";s:3:\"top\";s:5:\"width\";s:0:\"\";s:8:\"box_type\";s:11:\"contentonly\";}',80,1051719382); --- 214,218 ---- INSERT INTO psl_block (id, type, title, expire_length, location, source_url, cache_data, block_options, ordernum, date_issued) VALUES (148,1,'Administration',0,'','','<p>A bunch of cool things like latest site activity and stats should go here. </p>\n <p>But until they do, just pick something from the NavBar and go about your duties...</p>\n','a:3:{s:6:\"column\";s:6:\"center\";s:5:\"perms\";s:4:\"user\";s:0:\"\";s:0:\"\";}',90,1025284604); INSERT INTO psl_block (id, type, title, expire_length, location, source_url, cache_data, block_options, ordernum, date_issued) VALUES (149,12,'Tasks',0,'','menu_ary=menuadmin&tpl=navbarBlockh','','a:4:{s:6:\"column\";s:6:\"center\";s:5:\"width\";s:4:\"100%\";s:5:\"perms\";s:4:\"user\";s:8:\"box_type\";s:6:\"framed\";}',95,1025284618); ! INSERT INTO psl_block (id, type, title, expire_length, location, source_url, cache_data, block_options, ordernum, date_issued) VALUES (150,15,'Page - public - header',0,'','','','a:4:{s:6:"column";s:3:"top";s:5:"width";s:0:"";s:8:"box_type";s:11:"contentonly";s:3:"tpl";s:19:"slashHead-htmlarea3";}',95,NULL); INSERT INTO psl_block (id, type, title, expire_length, location, source_url, cache_data, block_options, ordernum, date_issued) VALUES (151,16,'Page - public - footer',0,'','','','a:3:{s:6:\"column\";s:6:\"bottom\";s:5:\"width\";s:0:\"\";s:8:\"box_type\";s:11:\"contentonly\";}',5,NULL); INSERT INTO psl_block (id, type, title, expire_length, location, source_url, cache_data, block_options, ordernum, date_issued) VALUES (152,17,'Page - public - topicbar',1200,'','','','a:3:{s:6:\"column\";s:3:\"top\";s:5:\"width\";s:0:\"\";s:8:\"box_type\";s:11:\"contentonly\";}',80,1051719382); |
From: Joe S. <joe...@us...> - 2003-11-12 21:29:52
|
Update of /cvsroot/phpslash/phpslash-dev/public_html/scripts/htmlarea3/plugins/TableOperations In directory sc8-pr-cvs1:/tmp/cvs-serv12035/phpslash-dev/public_html/scripts/htmlarea3/plugins/TableOperations Added Files: makefile.xml table-operations.js Log Message: Added preliminary htmlArea editing support to the Story entry form. --- NEW FILE: makefile.xml --- <files> <file name="*.{js,html,cgi,css}" /> <dir name="lang" /> <dir name="img" /> </files> --- NEW FILE: table-operations.js --- // Table Operations Plugin for HTMLArea-3.0 // Implementation by Mihai Bazon. Sponsored by http://www.bloki.com // // htmlArea v3.0 - Copyright (c) 2002 interactivetools.com, inc. // This notice MUST stay intact for use (see license.txt). // // A free WYSIWYG editor replacement for <textarea> fields. // For full source code and docs, visit http://www.interactivetools.com/ // // Version 3.0 developed by Mihai Bazon for InteractiveTools. // http://dynarch.com/mishoo // // $Id: table-operations.js,v 1.1 2003/11/12 21:29:48 joestewart Exp $ // Object that will encapsulate all the table operations provided by // HTMLArea-3.0 (except "insert table" which is included in the main file) function TableOperations(editor) { this.editor = editor; [...1121 lines suppressed...] // input.type = "text"; // input.size = "5"; // input.name = "f_st_margin"; // td.appendChild(input); // input.style.marginRight = "0.5em"; // td.appendChild(doc.createTextNode(i18n["Padding"] + ":")); // input = doc.createElement("input"); // input.type = "text"; // input.size = "5"; // input.name = "f_st_padding"; // td.appendChild(input); // input.style.marginLeft = "0.5em"; // input.style.marginRight = "0.5em"; // td.appendChild(doc.createTextNode(i18n["pixels"])); return fieldset; }; //// END GENERIC CODE ------------------------------------------------------- |
Update of /cvsroot/phpslash/phpslash-dev/public_html/scripts/htmlarea3/plugins/SpellChecker/lang In directory sc8-pr-cvs1:/tmp/cvs-serv12035/phpslash-dev/public_html/scripts/htmlarea3/plugins/SpellChecker/lang Added Files: cz.js da.js de.js en.js hu.js it.js makefile.xml ro.js Log Message: Added preliminary htmlArea editing support to the Story entry form. --- NEW FILE: cz.js --- // I18N constants // LANG: "cz", ENCODING: UTF-8 | ISO-8859-2 // Author: Jiri Löw, <ji...@ji...> // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) SpellChecker.I18N = { "CONFIRM_LINK_CLICK" : "ProsÃm potvrÄte otevÅenà tohoto odkazu", "Cancel" : "ZruÅ¡it", "Dictionary" : "SlovnÃk", "Finished list of mispelled words" : "DokonÄen seznam chybných slov", "I will open it in a new page." : "Bude otevÅen jej v nové stránce.", "Ignore all" : "Ignorovat vÅ¡e", "Ignore" : "Ignorovat", "NO_ERRORS" : "Podle zvoleného slovnÃku nebyla nalezena žádná chybná slova.", "NO_ERRORS_CLOSING" : "Kontrola správnosti slov dokonÄena, nebyla nalezena žádná chybná slova. UkonÄovánà ...", "OK" : "OK", "Original word" : "Původnà slovo", "Please wait. Calling spell checker." : "ProsÃm Äekejte. Komunikuace s kontrolou správnosti slov.", "Please wait: changing dictionary to" : "ProsÃm Äekejte: zmÄna adresáÅe na", "QUIT_CONFIRMATION" : "ZmÄny budou zruÅ¡eny a kontrola správnosti slov ukonÄena. ProsÃm potvrÄte.", "Re-check" : "PÅekontrolovat", "Replace all" : "ZamÄnit vÅ¡echno", "Replace with" : "ZamÄnit za", "Replace" : "ZamÄnit", "SC-spell-check" : "Kontrola správnosti slov", "Suggestions" : "DoporuÄenÃ", "pliz weit ;-)" : "strpenà prosÃm ;-)" }; --- NEW FILE: da.js --- // I18N constants // LANG: "en", ENCODING: UTF-8 | ISO-8859-1 // Author: Steen Sønderup, <st...@so...> // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) SpellChecker.I18N = { "CONFIRM_LINK_CLICK" : "Vil du følge dette link?", "Cancel" : "Anuler", "Dictionary" : "Ordbog", "Finished list of mispelled words" : "Listen med stavefejl er gennemgÃ¥et", "I will open it in a new page." : "Jeg vil Ã¥bne det i en ny side.", "Ignore all" : "Ignorer alle", "Ignore" : "Ignorer", "NO_ERRORS" : "Der blev ikke fundet nogle stavefejl med den valgte ordbog.", "NO_ERRORS_CLOSING" : "Stavekontrollen er gennemført, der blev ikke fundet nogle stavefejl. Lukker...", "OK" : "OK", "Original word" : "Oprindeligt ord", "Please wait. Calling spell checker." : "Vent venligst. Henter stavekontrol.", "Please wait: changing dictionary to" : "Vent venligst: skifter ordbog til", "QUIT_CONFIRMATION" : "Alle dine ændringer vil gÃ¥ tabt, vil du fortsætte?", "Re-check" : "Tjek igen", "Replace all" : "Erstat alle", "Replace with" : "Erstat med", "Replace" : "Erstat", "SC-spell-check" : "Stavekontrol", "Suggestions" : "Forslag", "pliz weit ;-)" : "Vent venligst" }; --- NEW FILE: de.js --- // I18N constants // LANG: "en", ENCODING: UTF-8 | ISO-8859-1 // Author: Broxx, <br...@br...> SpellChecker.I18N = { "CONFIRM_LINK_CLICK" : "Wollen Sie diesen Link oeffnen", "Cancel" : "Abbrechen", "Dictionary" : "Woerterbuch", "Finished list of mispelled words" : "Liste der nicht bekannten Woerter", "I will open it in a new page." : "Wird auf neuer Seite geoeffnet", "Ignore all" : "Alle ignorieren", "Ignore" : "Ignorieren", "NO_ERRORS" : "Keine falschen Woerter mit gewaehlten Woerterbuch gefunden", "NO_ERRORS_CLOSING" : "Rechtsschreibpruefung wurde ohne Fehler fertiggestellt. Wird nun geschlossen...", "OK" : "OK", "Original word" : "Original Wort", "Please wait. Calling spell checker." : "Bitte warten. Woerterbuch wird durchsucht.", "Please wait: changing dictionary to" : "Bitte warten: Woerterbuch wechseln zu", "QUIT_CONFIRMATION" : "Aenderungen werden nicht uebernommen. Bitte bestaettigen.", "Re-check" : "Neuueberpruefung", "Replace all" : "Alle ersetzen", "Replace with" : "Ersetzen mit", "Replace" : "Ersetzen", "SC-spell-check" : "Ueberpruefung", "Suggestions" : "Vorschlag", "pliz weit ;-)" : "bittsche wartn ;-)" }; --- NEW FILE: en.js --- // I18N constants // LANG: "en", ENCODING: UTF-8 | ISO-8859-1 // Author: Mihai Bazon, http://dynarch.com/mishoo // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) SpellChecker.I18N = { "CONFIRM_LINK_CLICK" : "Please confirm that you want to open this link", "Cancel" : "Cancel", "Dictionary" : "Dictionary", "Finished list of mispelled words" : "Finished list of mispelled words", "I will open it in a new page." : "I will open it in a new page.", "Ignore all" : "Ignore all", "Ignore" : "Ignore", "NO_ERRORS" : "No mispelled words found with the selected dictionary.", "NO_ERRORS_CLOSING" : "Spell check complete, didn't find any mispelled words. Closing now...", "OK" : "OK", "Original word" : "Original word", "Please wait. Calling spell checker." : "Please wait. Calling spell checker.", "Please wait: changing dictionary to" : "Please wait: changing dictionary to", "QUIT_CONFIRMATION" : "This will drop changes and quit spell checker. Please confirm.", "Re-check" : "Re-check", "Replace all" : "Replace all", "Replace with" : "Replace with", "Replace" : "Replace", "SC-spell-check" : "Spell-check", "Suggestions" : "Suggestions", "pliz weit ;-)" : "pliz weit ;-)" }; --- NEW FILE: hu.js --- // I18N constants // LANG: "hu", ENCODING: UTF-8 // Author: Miklós Somogyi, <som...@vn...> // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) SpellChecker.I18N = { "CONFIRM_LINK_CLICK" : "MegerÅsÃtés", "Cancel" : "Mégsem", "Dictionary" : "Szótár", "Finished list of mispelled words" : "A tévesztett szavak listájának vége", "I will open it in a new page." : "Megnyitás új lapon", "Ignore all" : "Minden elvetése", "Ignore" : "Elvetés", "NO_ERRORS" : "A választott szótár szerint nincs tévesztett szó.", "NO_ERRORS_CLOSING" : "A helyesÃrásellenÅrzés kész, tévesztett szó nem fordult elÅ. Bezárás...", "OK" : "Rendben", "Original word" : "Eredeti szó", "Please wait. Calling spell checker." : "Kis türelmet, a helyesÃrásellenÅrzÅ hÃvása folyamatban.", "Please wait: changing dictionary to" : "Kis türelmet, szótár cseréje", "QUIT_CONFIRMATION" : "Kilépés a változások eldobásával. Jóváhagyja?", "Re-check" : "ÃjraellenÅrzés", "Replace all" : "Mind cseréje", "Replace with" : "Csere a következÅre:", "Replace" : "Csere", "SC-spell-check" : "HelyesÃrásellenÅrzés", "Suggestions" : "Tippek", "pliz weit ;-)" : "Kis türelmet ;-)" }; --- NEW FILE: it.js --- // I18N constants // LANG: "it", ENCODING: UTF-8 | ISO-8859-1 // Author: Fabio Rotondo, <fa...@ro...> SpellChecker.I18N = { "CONFIRM_LINK_CLICK" : "Devi confermare l'apertura di questo link", "Cancel" : "Annulla", "Dictionary" : "Dizionario", "Finished list of mispelled words" : "La lista delle parole scritte male è terminata", "I will open it in a new page." : "Lo aprirò in una nuova pagina.", "Ignore all" : "Ignora sempre", "Ignore" : "Ignora", "NO_ERRORS" : "Non sono state trovate parole scritte male con il dizionario selezionato.", "NO_ERRORS_CLOSING" : "Controllo completato, non sono state trovate parole scritte male. Sto chiudendo...", "OK" : "OK", "Original word" : "Parola originale", "Please wait. Calling spell checker." : "Attendere. Sto invocando lo Spell Checker.", "Please wait: changing dictionary to" : "Attendere. Cambio il dizionario in", "QUIT_CONFIRMATION" : "Questo annullerà le modifiche e chiuderà lo Spell Checker. Conferma.", "Re-check" : "Ricontrolla", "Replace all" : "Sostituisci sempre", "Replace with" : "Stostituisci con", "Replace" : "Sostituisci", "SC-spell-check" : "Spell-check", "Suggestions" : "Suggerimenti", "pliz weit ;-)" : "Attendere Prego ;-)" }; --- NEW FILE: makefile.xml --- <files> <file name="*.js" /> </files> --- NEW FILE: ro.js --- // I18N constants // LANG: "ro", ENCODING: UTF-8 // Author: Mihai Bazon, http://dynarch.com/mishoo // FOR TRANSLATORS: // // 1. PLEASE PUT YOUR CONTACT INFO IN THE ABOVE LINE // (at least a valid email address) // // 2. PLEASE TRY TO USE UTF-8 FOR ENCODING; // (if this is not possible, please include a comment // that states what encoding is necessary.) SpellChecker.I18N = { "CONFIRM_LINK_CLICK" : "VÄ rog confirmaÅ£i cÄ vreÅ£i sÄ deschideÅ£i acest link", "Cancel" : "AnuleazÄ", "Dictionary" : "DicÅ£ionar", "Finished list of mispelled words" : "Am terminat lista de cuvinte greÅite", "I will open it in a new page." : "O voi deschide într-o altÄ fereastrÄ.", "Ignore all" : "IgnorÄ toate", "Ignore" : "IgnorÄ", "NO_ERRORS" : "Nu am gÄsit nici un cuvânt greÅit cu acest dicÅ£ionar.", "NO_ERRORS_CLOSING" : "Am terminat, nu am detectat nici o greÅealÄ. Acum închid fereastra...", "OK" : "OK", "Original word" : "Cuvântul original", "Please wait. Calling spell checker." : "VÄ rog aÅteptaÅ£i. Apelez spell-checker-ul.", "Please wait: changing dictionary to" : "VÄ rog aÅteptaÅ£i. Schimb dicÅ£ionarul cu", "QUIT_CONFIRMATION" : "DoriÅ£i sÄ renunÅ£aÅ£i la modificÄri Åi sÄ Ã®nchid spell-checker-ul?", "Re-check" : "ScaneazÄ", "Replace all" : "ÃnlocuieÅte toate", "Replace with" : "ÃnlocuieÅte cu", "Replace" : "ÃnlocuieÅte", "SC-spell-check" : "DetecteazÄ greÅeli", "Suggestions" : "Sugestii", "pliz weit ;-)" : "va rog ashteptatzi ;-)" }; |
From: Joe S. <joe...@us...> - 2003-11-12 21:29:52
|
Update of /cvsroot/phpslash/phpslash-dev/public_html/scripts/htmlarea3/plugins/SpellChecker In directory sc8-pr-cvs1:/tmp/cvs-serv12035/phpslash-dev/public_html/scripts/htmlarea3/plugins/SpellChecker Added Files: makefile.xml readme-tech.html spell-check-logic.cgi spell-check-style.css spell-check-ui.html spell-check-ui.js spell-checker.js Log Message: Added preliminary htmlArea editing support to the Story entry form. --- NEW FILE: makefile.xml --- <files> <file name="*.{js,html,cgi,css}" /> <dir name="lang" /> <dir name="img" /> </files> --- NEW FILE: readme-tech.html --- <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN"> <html> <head> <title>HTMLArea Spell Checker</title> </head> <body> <h1>HTMLArea Spell Checker</h1> <p>The HTMLArea Spell Checker subsystem consists of the following files:</p> <ul> <li>spell-checker.js — the spell checker plugin interface for HTMLArea</li> <li>spell-checker-ui.html — the HTML code for the user interface</li> <li>spell-checker-ui.js — functionality of the user interface</li> <li>spell-checker-logic.cgi — Perl CGI script that checks a text given through POST for spelling errors</li> <li>spell-checker-style.css — style for mispelled words</li> <li>lang/en.js — main language file (English).</li> </ul> <h2>Process overview</h2> <p> When an end-user clicks the "spell-check" button in the HTMLArea editor, a new window is opened with the URL of "spell-check-ui.html". This window initializes itself with the text found in the editor (uses <tt>window.opener.SpellChecker.editor</tt> global variable) and it submits the text to the server-side script "spell-check-logic.cgi". The target of the FORM is an inline frame which is used both to display the text and correcting. </p> <p> Further, spell-check-logic.cgi calls Aspell for each portion of plain text found in the given HTML. It rebuilds an HTML file that contains clear marks of which words are incorrect, along with suggestions for each of them. This file is then loaded in the inline frame. Upon loading, a JavaScript function from "spell-check-ui.js" is called. This function will retrieve all mispelled words from the HTML of the iframe and will setup the user interface so that it allows correction. </p> <h2>The server-side script (spell-check-logic.cgi)</h2> <p> <strong>Unicode safety</strong> — the program <em>is</em> Unicode safe. HTML entities are expanded into their corresponding Unicode characters. These characters will be matched as part of the word passed to Aspell. All texts passed to Aspell are in Unicode (when appropriate). However, Aspell seems to not support Unicode yet (<a href="http://mail.gnu.org/archive/html/aspell-user/2000-11/msg00007.html">thread concerning Aspell and Unicode</a>). This mean that words containing Unicode characters that are not in 0..255 are likely to be reported as "mispelled" by Aspell. </p> <p> I digged the Net for a couple of hours today and I can't seem to find any open-source spell checker that has Unicode support. For this reason we keep using Aspell, because it also seems to have the best suggestions engine. Unicode support will eventually be implemented in Aspell. <a href="mailto:ke...@at...">Email Kevin Atkinson</a> (Aspell author and maintainer) about this ;-) </p> <p> The Perl Unicode manual (man perluniintro) states: </p> <blockquote> <em> Starting from Perl 5.6.0, Perl has had the capacity to handle Unicode natively. Perl 5.8.0, however, is the first recommended release for serious Unicode work. The maintenance release 5.6.1 fixed many of the problems of the initial Unicode implementation, but for example regular expressions still do not work with Unicode in 5.6.1. </em> </blockquote> <p>In other words, do <em>not</em> assume that this script is Unicode-safe on Perl interpreters older than 5.8.0.</p> <p>The following Perl modules are required:</p> <ul> <li><a href="http://search.cpan.org/search?query=Text%3A%3AAspell&mode=all" target="_blank">Text::Aspell</a></li> <li><a href="http://search.cpan.org/search?query=HTML%3A%3AParser&mode=all" target="_blank">HTML::Parser</a></li> <li><a href="http://search.cpan.org/search?query=HTML%3A%3AEntities&mode=all" target="_blank">HTML::Entities</a></li> <li><a href="http://search.cpan.org/search?query=CGI&mode=all" target="_blank">CGI</a></li> </ul> <p>Of these, only Text::Aspell might need to be installed manually. The others are likely to be available by default in most Perl distributions.</p> <hr /> <address><a href="http://dynarch.com/mishoo/">Mihai Bazon</a></address> <!-- Created: Thu Jul 17 13:22:27 EEST 2003 --> <!-- hhmts start --> Last modified on Sun Sep 28 14:57:30 2003 <!-- hhmts end --> <!-- doc-lang: English --> </body> </html> --- NEW FILE: spell-check-logic.cgi --- #! /usr/bin/perl -w # Spell Checker Plugin for HTMLArea-3.0 # Implementation by Mihai Bazon. Sponsored by www.americanbible.org # # htmlArea v3.0 - Copyright (c) 2002 interactivetools.com, inc. # This notice MUST stay intact for use (see license.txt). # # A free WYSIWYG editor replacement for <textarea> fields. # For full source code and docs, visit http://www.interactivetools.com/ # # Version 3.0 developed by Mihai Bazon for InteractiveTools. # http://dynarch.com/mishoo # # $Id: spell-check-logic.cgi,v 1.1 2003/11/12 21:29:48 joestewart Exp $ use strict; use utf8; use Encode; use Text::Aspell; use HTML::Parser; use HTML::Entities; use CGI; my $debug = 0; open (DEBUG, '>:encoding(UTF-8)', '> /tmp/spell-check-debug.log') if $debug; # use Data::Dumper; # for debug only my $speller = new Text::Aspell; my $cgi = new CGI; # FIXME: report a nice error... die "Can't create speller!" unless $speller; # add configurable option for this my $dict = $cgi->param('dictionary') || 'en_US'; $speller->set_option('lang', $dict); # ultra, fast, normal, bad-spellers # bad-spellers seems to cause segmentation fault $speller->set_option('sug-mode', 'ultra'); my @replacements = (); sub text_handler { my ($offset, $length, $text, $is_cdata) = @_; if ($is_cdata or $text =~ /^\s*$/) { return 0; } # print STDERR "*** OFFSET: $offset, LENGTH: $length, $text\n"; $text = decode_entities($text); $text =~ s/&#([0-9]+);/chr($1)/eg; $text =~ s/&#x([0-9a-fA-F]+);/chr(hex $1)/eg; my $repl = spellcheck($text); if ($repl) { push(@replacements, [ $offset, $length, $repl ]); } } my $p = HTML::Parser->new (api_version => 3, handlers => { start => [ sub { my ($self, $tagname, $attrs) = @_; # print STDERR "\033[1;31m parsing tag: $tagname\033[0m\n"; # following we skip words that have already been marked as "fixed". if ($tagname eq "span" and $attrs->{class} =~ /HA-spellcheck-fixed/) { $self->handler(text => undef); } }, "self, tagname, attr" ], end => [ sub { my ($self, $tagname) = @_; # print STDERR "\033[1;32m END tag: $tagname\033[0m\n"; $self->handler(text => \&text_handler, 'offset, length, dtext, is_cdata'); }, "self, tagname" ] } ); $p->handler(text => \&text_handler, 'offset, length, dtext, is_cdata'); $p->case_sensitive(1); my $file_content = $cgi->param('content'); if ($debug) { open (FOO, '>:encoding(UTF-8)', '/tmp/spell-check-before'); print FOO $file_content, "\n"; close(FOO); } $p->parse($file_content); $p->eof(); foreach (reverse @replacements) { substr($file_content, $_->[0], $_->[1], $_->[2]); } # we output UTF-8 binmode(STDOUT, ':encoding(UTF-8)'); # apparently, this sucks. print "Content-type: text/html; charset: utf-8\n\n"; print qq^ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="stylesheet" type="text/css" media="all" href="spell-check-style.css" /> </head> <body onload="window.parent.finishedSpellChecking();">^; print $file_content; if ($cgi->param('init') eq '1') { my @dicts = $speller->dictionary_info(); my $dictionaries = ''; foreach my $i (@dicts) { $dictionaries .= ',' . $i->{name} unless $i->{jargon}; } $dictionaries =~ s/^,//; print qq^ <div id="HA-spellcheck-dictionaries" >$dictionaries</div> ^; } if ($debug) { open (FOO, '>:encoding(UTF-8)', '/tmp/spell-check-after'); print FOO $file_content, "\n"; close(FOO); } print '</body></html>'; # Perl is beautiful. sub spellcheck { my $text = shift; sub check { # called for each word in the text # input is in UTF-8 my $U_word = shift; my $word = encode($speller->get_option('encoding'), $U_word); print DEBUG "*$U_word* ----> |$word|\n" if $debug; if ($speller->check($word)) { return $U_word; # we return the word in UTF-8 } else { # we should have suggestions; give them back to browser in UTF-8 my $suggestions = decode($speller->get_option('encoding'), join(',', $speller->suggest($word))); my $ret = '<span class="HA-spellcheck-error">'.$U_word.'</span><span class="HA-spellcheck-suggestions">'.$suggestions.'</span>'; return $ret; } } $text =~ s/([[:word:]']+)/check($1)/egs; # $text =~ s/(\w+)/check($1)/egs; # the following is definitely what we want to use; too bad it sucks most. # $text =~ s/(\p{IsWord}+)/check($1)/egs; return $text; } --- NEW FILE: spell-check-style.css --- .HA-spellcheck-error { border-bottom: 2px dotted #f00; cursor: default; } .HA-spellcheck-same { background-color: #ff8; color: #000; } .HA-spellcheck-hover { background-color: #433; color: white; } .HA-spellcheck-fixed { border-bottom: 1px dotted #0b8; } .HA-spellcheck-current { background-color: #7be; color: #000; } .HA-spellcheck-suggestions { display: none; } #HA-spellcheck-dictionaries { display: none; } a:link, a:visited { color: #55e; } --- NEW FILE: spell-check-ui.html --- <!-- Strangely, IE sucks with or without the DOCTYPE switch. I thought it would only suck without it. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> Spell Checker Plugin for HTMLArea-3.0 Implementation by Mihai Bazon. Sponsored by www.americanbible.org htmlArea v3.0 - Copyright (c) 2003 interactivetools.com, inc. This notice MUST stay intact for use (see license.txt). A free WYSIWYG editor replacement for <textarea> fields. For full source code and docs, visit http://www.interactivetools.com/ Version 3.0 developed by Mihai Bazon for InteractiveTools. http://dynarch.com/mishoo $Id: spell-check-ui.html,v 1.1 2003/11/12 21:29:48 joestewart Exp $ --> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Spell Checker</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="spell-check-ui.js"></script> <style type="text/css"> html, body { height: 100%; margin: 0px; padding: 0px; background-color: #fff; color: #000; } a:link, a:visited { color: #00f; text-decoration: none; } a:hover { color: #f00; text-decoration: underline; } table { background-color: ButtonFace; color: ButtonText; font-family: tahoma,verdana,sans-serif; font-size: 11px; } iframe { background-color: #fff; color: #000; } .controls { width: 13em; } .controls .sectitle { /* background-color: #736c6c; color: #fff; border-top: 1px solid #000; border-bottom: 1px solid #fff; */ text-align: center; font-weight: bold; padding: 2px 4px; } .controls .secbody { margin-bottom: 10px; } button, select { font-family: tahoma,verdana,sans-serif; font-size: 11px; } button { width: 6em; padding: 0px; } input, select { font-family: fixed,"andale mono",monospace; } #v_currentWord { color: #f00; font-weight: bold; font-size: 120%; } #statusbar { padding: 7px 0px 0px 5px; } #status { font-weight: bold; } </style> </head> <body onload="initDocument()"> <form style="display: none;" action="spell-check-logic.cgi" method="post" target="framecontent" accept-charset="utf-8" ><input type="hidden" name="content" id="f_content" /><input type="hidden" name="dictionary" id="f_dictionary" /><input type="hidden" name="init" id="f_init" value="1" /></form> <table style="height: 100%; width: 100%; border-collapse: collapse;" cellspacing="0" cellpadding="0"> <tr> <td colspan="2" style="height: 1em; padding: 2px;"> <div style="float: right; padding: 2px;"><span>Dictionary</span> <select id="v_dictionaries" style="width: 10em"></select> <button id="b_recheck">Re-check</button> </div> <span id="status">Please wait. Calling spell checker.</span> </td> </tr> <tr> <td valign="top" class="controls"> <div class="sectitle">Original word</div> <div class="secbody" id="v_currentWord" style="text-align: center">pliz weit ;-)</div> <div class="sectitle">Replace with</div> <div class="secbody"> <input type="text" id="v_replacement" style="width: 94%; margin-left: 3%;" /><br /> <div style="text-align: center; margin-top: 2px;"> <button id="b_replace">Replace</button><button id="b_replall">Replace all</button><br /><button id="b_ignore">Ignore</button><button id="b_ignall">Ignore all</button> </div> </div> <div class="sectitle">Suggestions</div> <div class="secbody"> <select size="11" style="width: 94%; margin-left: 3%;" id="v_suggestions"></select> </div> </td> <td> <iframe src="about:blank" width="100%" height="100%" id="i_framecontent" name="framecontent"></iframe> </td> </tr> <tr> <td style="height: 1em;" colspan="2"> <div style="padding: 4px 2px 2px 2px; float: right;"> <button id="b_ok">OK</button> <button id="b_cancel">Cancel</button> </div> <div id="statusbar"></div> </td> </tr> </table> </body> </html> --- NEW FILE: spell-check-ui.js --- // Spell Checker Plugin for HTMLArea-3.0 // Implementation by Mihai Bazon. Sponsored by www.americanbible.org // // htmlArea v3.0 - Copyright (c) 2002 interactivetools.com, inc. // This notice MUST stay intact for use (see license.txt). // // A free WYSIWYG editor replacement for <textarea> fields. // For full source code and docs, visit http://www.interactivetools.com/ // // Version 3.0 developed by Mihai Bazon for InteractiveTools. // http://dynarch.com/mishoo // // $Id: spell-check-ui.js,v 1.1 2003/11/12 21:29:48 joestewart Exp $ // internationalization file was already loaded in parent ;-) var SpellChecker = window.opener.SpellChecker; var i18n = SpellChecker.I18N; var is_ie = window.opener.HTMLArea.is_ie; var editor = SpellChecker.editor; var frame = null; var currentElement = null; var wrongWords = null; var modified = false; var allWords = {}; function makeCleanDoc(leaveFixed) { // document.getElementById("status").innerHTML = 'Please wait: rendering valid HTML'; for (var i in wrongWords) { var el = wrongWords[i]; if (!(leaveFixed && /HA-spellcheck-fixed/.test(el.className))) { el.parentNode.insertBefore(el.firstChild, el); el.parentNode.removeChild(el.nextSibling); el.parentNode.removeChild(el); } else { el.className = "HA-spellcheck-fixed"; el.parentNode.removeChild(el.nextSibling); } } // we should use innerHTML here, but IE6's implementation fucks up the // HTML to such extent that our poor Perl parser doesn't understand it // anymore. return window.opener.HTMLArea.getHTML(frame.contentWindow.document.body, leaveFixed); }; function recheckClicked() { document.getElementById("status").innerHTML = i18n["Please wait: changing dictionary to"] + ': "' + document.getElementById("f_dictionary").value + '".'; var field = document.getElementById("f_content"); field.value = makeCleanDoc(true); field.form.submit(); }; function saveClicked() { if (modified) { editor.setHTML(makeCleanDoc(false)); } window.close(); return false; }; function cancelClicked() { var ok = true; if (modified) { ok = confirm(i18n["QUIT_CONFIRMATION"]); } if (ok) { window.close(); } return false; }; function replaceWord(el) { var replacement = document.getElementById("v_replacement").value; modified = (el.innerHTML != replacement); if (el) { el.className = el.className.replace(/\s*HA-spellcheck-(hover|fixed)\s*/g, " "); } el.className += " HA-spellcheck-fixed"; el.__msh_fixed = true; if (!modified) { return false; } el.innerHTML = replacement; }; function replaceClicked() { replaceWord(currentElement); var start = currentElement.__msh_id; var index = start; do { ++index; if (index == wrongWords.length) { index = 0; } } while ((index != start) && wrongWords[index].__msh_fixed); if (index == start) { index = 0; alert(i18n["Finished list of mispelled words"]); } wrongWords[index].onclick(); return false; }; function replaceAllClicked() { var replacement = document.getElementById("v_replacement").value; var ok = true; var spans = allWords[currentElement.__msh_origWord]; if (spans.length == 0) { alert("An impossible condition just happened. Call FBI. ;-)"); } else if (spans.length == 1) { replaceClicked(); return false; } /* var message = "The word \"" + currentElement.__msh_origWord + "\" occurs " + spans.length + " times.\n"; if (replacement == currentElement.__msh_origWord) { ok = confirm(message + "Ignore all occurrences?"); } else { ok = confirm(message + "Replace all occurrences with \"" + replacement + "\"?"); } */ if (ok) { for (var i in spans) { if (spans[i] != currentElement) { replaceWord(spans[i]); } } // replace current element the last, so that we jump to the next word ;-) replaceClicked(); } return false; }; function ignoreClicked() { document.getElementById("v_replacement").value = currentElement.__msh_origWord; replaceClicked(); return false; }; function ignoreAllClicked() { document.getElementById("v_replacement").value = currentElement.__msh_origWord; replaceAllClicked(); return false; }; function learnClicked() { alert("Not [yet] implemented"); return false; }; function internationalizeWindow() { var types = ["div", "span", "button"]; for (var i in types) { var tag = types[i]; var els = document.getElementsByTagName(tag); for (var j = els.length; --j >= 0;) { var el = els[j]; if (el.childNodes.length == 1 && /\S/.test(el.innerHTML)) { var txt = el.innerHTML; if (typeof i18n[txt] != "undefined") { el.innerHTML = i18n[txt]; } } } } }; function initDocument() { internationalizeWindow(); modified = false; frame = document.getElementById("i_framecontent"); var field = document.getElementById("f_content"); field.value = editor.getHTML(); field.form.submit(); document.getElementById("f_init").value = "0"; // assign some global event handlers var select = document.getElementById("v_suggestions"); select.onchange = function() { document.getElementById("v_replacement").value = this.value; }; if (is_ie) { select.attachEvent("ondblclick", replaceClicked); } else { select.addEventListener("dblclick", replaceClicked, true); } document.getElementById("b_replace").onclick = replaceClicked; // document.getElementById("b_learn").onclick = learnClicked; document.getElementById("b_replall").onclick = replaceAllClicked; document.getElementById("b_ignore").onclick = ignoreClicked; document.getElementById("b_ignall").onclick = ignoreAllClicked; document.getElementById("b_recheck").onclick = recheckClicked; document.getElementById("b_ok").onclick = saveClicked; document.getElementById("b_cancel").onclick = cancelClicked; select = document.getElementById("v_dictionaries"); select.onchange = function() { document.getElementById("f_dictionary").value = this.value; }; }; function wordClicked() { if (currentElement) { var a = allWords[currentElement.__msh_origWord]; currentElement.className = currentElement.className.replace(/\s*HA-spellcheck-current\s*/g, " "); for (var i in a) { var el = a[i]; if (el != currentElement) { el.className = el.className.replace(/\s*HA-spellcheck-same\s*/g, " "); } } } currentElement = this; this.className += " HA-spellcheck-current"; var a = allWords[currentElement.__msh_origWord]; for (var i in a) { var el = a[i]; if (el != currentElement) { el.className += " HA-spellcheck-same"; } } document.getElementById("b_replall").disabled = (a.length <= 1); document.getElementById("b_ignall").disabled = (a.length <= 1); var txt; if (a.length == 1) { txt = "one occurrence"; } else if (a.length == 2) { txt = "two occurrences"; } else { txt = a.length + " occurrences"; } document.getElementById("statusbar").innerHTML = "Found " + txt + ' for word "<b>' + currentElement.__msh_origWord + '</b>"'; var select = document.getElementById("v_suggestions"); for (var i = select.length; --i >= 0;) { select.remove(i); } var suggestions; suggestions = this.nextSibling.firstChild.data.split(/,/); for (var i = 0; i < suggestions.length; ++i) { var txt = suggestions[i]; var option = document.createElement("option"); option.value = txt; option.appendChild(document.createTextNode(txt)); select.appendChild(option); } document.getElementById("v_currentWord").innerHTML = this.__msh_origWord; if (suggestions.length > 0) { select.selectedIndex = 0; select.onchange(); } else { document.getElementById("v_replacement").value = this.innerHTML; } return false; }; function wordMouseOver() { this.className += " HA-spellcheck-hover"; }; function wordMouseOut() { this.className = this.className.replace(/\s*HA-spellcheck-hover\s*/g, " "); }; function finishedSpellChecking() { // initialization of global variables currentElement = null; wrongWords = null; allWords = {}; document.getElementById("status").innerHTML = "HTMLArea Spell Checker (<a href='readme-tech.html' target='_blank' title='Technical information'>info</a>)"; var doc = frame.contentWindow.document; var spans = doc.getElementsByTagName("span"); var sps = []; var id = 0; for (var i = 0; i < spans.length; ++i) { var el = spans[i]; if (/HA-spellcheck-error/.test(el.className)) { sps.push(el); el.onclick = wordClicked; el.onmouseover = wordMouseOver; el.onmouseout = wordMouseOut; el.__msh_id = id++; var txt = (el.__msh_origWord = el.firstChild.data); el.__msh_fixed = false; if (typeof allWords[txt] == "undefined") { allWords[txt] = [el]; } else { allWords[txt].push(el); } } } wrongWords = sps; if (sps.length == 0) { if (!modified) { alert(i18n["NO_ERRORS_CLOSING"]); window.close(); } else { alert(i18n["NO_ERRORS"]); } return false; } (currentElement = sps[0]).onclick(); var as = doc.getElementsByTagName("a"); for (var i = as.length; --i >= 0;) { var a = as[i]; a.onclick = function() { if (confirm(i18n["CONFIRM_LINK_CLICK"] + ":\n" + this.href + "\n" + i18n["I will open it in a new page."])) { window.open(this.href); } return false; }; } var dicts = doc.getElementById("HA-spellcheck-dictionaries"); if (dicts) { dicts.parentNode.removeChild(dicts); dicts = dicts.innerHTML.split(/,/); var select = document.getElementById("v_dictionaries"); for (var i = select.length; --i >= 0;) { select.remove(i); } for (var i = 0; i < dicts.length; ++i) { var txt = dicts[i]; var option = document.createElement("option"); option.value = txt; option.appendChild(document.createTextNode(txt)); select.appendChild(option); } } }; --- NEW FILE: spell-checker.js --- // Spell Checker Plugin for HTMLArea-3.0 // Implementation by Mihai Bazon. Sponsored by www.americanbible.org // // htmlArea v3.0 - Copyright (c) 2002 interactivetools.com, inc. // This notice MUST stay intact for use (see license.txt). // // A free WYSIWYG editor replacement for <textarea> fields. // For full source code and docs, visit http://www.interactivetools.com/ // // Version 3.0 developed by Mihai Bazon for InteractiveTools. // http://dynarch.com/mishoo // // $Id: spell-checker.js,v 1.1 2003/11/12 21:29:48 joestewart Exp $ function SpellChecker(editor) { this.editor = editor; var cfg = editor.config; var tt = SpellChecker.I18N; var bl = SpellChecker.btnList; var self = this; // register the toolbar buttons provided by this plugin var toolbar = []; for (var i in bl) { var btn = bl[i]; if (!btn) { toolbar.push("separator"); } else { var id = "SC-" + btn[0]; cfg.registerButton(id, tt[id], editor.imgURL(btn[0] + ".gif", "SpellChecker"), false, function(editor, id) { // dispatch button press event self.buttonPress(editor, id); }, btn[1]); toolbar.push(id); } } for (var i in toolbar) { cfg.toolbar[0].push(toolbar[i]); } }; SpellChecker._pluginInfo = { name : "SpellChecker", version : "1.0", developer : "Mihai Bazon", developer_url : "http://dynarch.com/mishoo/", c_owner : "Mihai Bazon", sponsor : "American Bible Society", sponsor_url : "http://www.americanbible.org", license : "htmlArea" }; SpellChecker.btnList = [ null, // separator ["spell-check"] ]; SpellChecker.prototype.buttonPress = function(editor, id) { switch (id) { case "SC-spell-check": SpellChecker.editor = editor; SpellChecker.init = true; var uiurl = editor.config.editorURL + "plugins/SpellChecker/spell-check-ui.html"; var win; if (HTMLArea.is_ie) { win = window.open(uiurl, "SC_spell_checker", "toolbar=no,location=no,directories=no,status=no,menubar=no," + "scrollbars=no,resizable=yes,width=600,height=400"); } else { win = window.open(uiurl, "SC_spell_checker", "toolbar=no,menubar=no,personalbar=no,width=600,height=400," + "scrollbars=no,resizable=yes"); } win.focus(); break; } }; // this needs to be global, it's accessed from spell-check-ui.html SpellChecker.editor = null; |
Update of /cvsroot/phpslash/phpslash-dev/public_html/scripts/htmlarea3/images In directory sc8-pr-cvs1:/tmp/cvs-serv12035/phpslash-dev/public_html/scripts/htmlarea3/images Added Files: ed_about.gif ed_align_center.gif ed_align_justify.gif ed_align_left.gif ed_align_right.gif ed_blank.gif ed_charmap.gif ed_color_bg.gif ed_color_fg.gif ed_copy.gif ed_custom.gif ed_cut.gif ed_delete.gif ed_format_bold.gif ed_format_italic.gif ed_format_strike.gif ed_format_sub.gif ed_format_sup.gif ed_format_underline.gif ed_help.gif ed_hr.gif ed_html.gif ed_image.gif ed_indent_less.gif ed_indent_more.gif ed_link.gif ed_list_bullet.gif ed_list_num.gif ed_paste.gif ed_redo.gif ed_save.gif ed_save.png ed_show_border.gif ed_splitcel.gif ed_undo.gif fullscreen_maximize.gif fullscreen_minimize.gif insert_table.gif makefile.xml Log Message: Added preliminary htmlArea editing support to the Story entry form. --- NEW FILE: ed_about.gif --- GIF89a --- NEW FILE: ed_align_center.gif --- GIF89a --- NEW FILE: ed_align_justify.gif --- GIF89a --- NEW FILE: ed_align_left.gif --- GIF89a --- NEW FILE: ed_align_right.gif --- GIF89a --- NEW FILE: ed_blank.gif --- GIF89a --- NEW FILE: ed_charmap.gif --- GIF89a --- NEW FILE: ed_color_bg.gif --- GIF89a --- NEW FILE: ed_color_fg.gif --- GIF89a --- NEW FILE: ed_copy.gif --- GIF89a --- NEW FILE: ed_custom.gif --- GIF89a --- NEW FILE: ed_cut.gif --- GIF89a ´UË®M*Äõ,Óô¢¯;ãR --- NEW FILE: ed_delete.gif --- GIF89a --- NEW FILE: ed_format_bold.gif --- GIF89a --- NEW FILE: ed_format_italic.gif --- GIF89a --- NEW FILE: ed_format_strike.gif --- GIF89a "ÓÅsm5IüPY#fø=[J"£·vËTöçL --- NEW FILE: ed_format_sub.gif --- GIF89a YíóU --- NEW FILE: ed_format_sup.gif --- GIF89a --- NEW FILE: ed_format_underline.gif --- GIF89a --- NEW FILE: ed_help.gif --- GIF89a --- NEW FILE: ed_hr.gif --- GIF89a --- NEW FILE: ed_html.gif --- GIF89a --- NEW FILE: ed_image.gif --- GIF89a --- NEW FILE: ed_indent_less.gif --- GIF89a --- NEW FILE: ed_indent_more.gif --- GIF89a --- NEW FILE: ed_link.gif --- GIF89a ¨ægPåL§Ù:©d~+e~¢ñL2 --- NEW FILE: ed_list_bullet.gif --- GIF89a --- NEW FILE: ed_list_num.gif --- GIF89a --- NEW FILE: ed_paste.gif --- GIF89a --- NEW FILE: ed_redo.gif --- GIF89a --- NEW FILE: ed_save.gif --- GIF89a --- NEW FILE: ed_save.png --- PNG --- NEW FILE: ed_show_border.gif --- GIF89a --- NEW FILE: ed_splitcel.gif --- GIF89a %ÐsàDHy®Ô¦K§þ ü9t¨TR"juyÕfË8ovMò¡Ù³hÓ6 --- NEW FILE: ed_undo.gif --- GIF89a --- NEW FILE: fullscreen_maximize.gif --- GIF89a --- NEW FILE: fullscreen_minimize.gif --- GIF89a --- NEW FILE: insert_table.gif --- GIF89a «e`ß8þÊ|¼Ç@Z&G¼ýXHWfÆäÕÄÒe:X¯Øl --- NEW FILE: makefile.xml --- <files> <file name="*.{gif,jpg,jpeg}" /> </files> |
From: Joe S. <joe...@us...> - 2003-11-12 21:29:51
|
Update of /cvsroot/phpslash/phpslash-dev/include/class In directory sc8-pr-cvs1:/tmp/cvs-serv12035/phpslash-dev/include/class Added Files: WikiEngine.class Log Message: Added preliminary htmlArea editing support to the Story entry form. --- NEW FILE: WikiEngine.class --- <?php /** * This class is to be applied as static class (:: syntax). * It translates incomming wiki code into HTML. It does not * add HEAD and BODY tags. Static pages or done by the StaticEngine. * * @author Lars Ackermann - http://www.net-assistant.de/wiki/ * @status Part of PWP Wiki Processor, licensed under GPL. * $Id: WikiEngine.class,v 1.1 2003/11/12 21:29:48 joestewart Exp $ */ #require_once( BASE_PATH.'core/Data.inc' ); class WikiEngine { /** Translates Wiki code into HTML, utilizing various private helper functions. */ function transformHtml( &$text ) { $text = stripslashes( $text ); //undo magic quotes $text = htmlentities($text, ENT_NOQUOTES); // BACK-END Added - translate special chars, but leave quotes becuase they have wiki meaning WikiEngine::_markTextElements( $text ); //P HR BR; WikiEngine::_emphasize( '/', 1, '<em>', '</em>', $text ); WikiEngine::_emphasize( '\+', 1, '<strong>', '</strong>', $text ); WikiEngine::_emphasize( '_', 1, '<u>', '</u>', $text ); WikiEngine::_emphasize( "'", 5, "<strong><em>", "</em></strong>", $text ); WikiEngine::_emphasize( "'", 3, '<strong>', '</strong>', $text ); WikiEngine::_emphasize( "'", 2, '<em>', '</em>', $text ); WikiEngine::_subSupDl( "\^", 2, '<sub>', '</sub>', $text ); //differs from _emphasize WikiEngine::_subSupDl( "\^", 1, '<sup>', '</sup>', $text ); WikiEngine::_replaceHeadings( $text ); $text = str_replace( "\n ", "\n,", $text); //saves a call to preg_replace() for ' ' = PRE WikiEngine::_replaceBlock( ',', 1, '<pre>', '</pre>', $text ); WikiEngine::_replaceBlock( ':', 2, '<blockquote><blockquote>', '</blockquote></blockquote>', $text ); WikiEngine::_replaceBlock( ':', 1, '<blockquote>', '</blockquote>', $text ); WikiEngine::_replaceBlock( '~', 2, '<div align="right">', '</div>', $text ); WikiEngine::_replaceBlock( '~', 1, '<div align="center">', '</div>', $text ); WikiEngine::_replaceBlock( '!', 1, '<div><small class="gray">/** ', ' */</small></div>', $text ); WikiEngine::_replaceList( '\*', 2, '<ul><ul>', '</ul></ul>', $text ); WikiEngine::_replaceList( '\*', 1, '<ul>', '</ul>', $text ); WikiEngine::_replaceList( '#', 2, '<ol><ol>', '</ol></ol>', $text ); WikiEngine::_replaceList( '#', 1, '<ol>', '</ol>', $text ); //definition list: ;;Term;;definition1;; such a list is rare, try to skip 2 reg exp if ( strpos($text, ';;') !== false ) { WikiEngine::_replaceBlock( ';', 2, '<dl><dt>', '</dd></dl>', $text ); WikiEngine::_subSupDl( ";", 2, '</dt><dd>', '</dd><dt>', $text ); } # WikiEngine::_addToc( $text ); //table of contents /** * Note: we are not supporting internal wiki linking, but we * don't want to the single [ ] brackets to indicate external * links; we are appropriating the use of the double square * brackets strictly for external URLs (PSB 2003-04-23) */ # WikiEngine::_linkWiki( $text ); // [[ ]] # WikiEngine::_linkInterWiki( $text ); // [Wiki:name page] [w:name page] WikiEngine::_linkExternal( $text ); // [[ ]] - turn [[ ]]s into http:// links WikiEngine::_linkImage( 'gif|jpg|jpeg|png', $text ); WikiEngine::_linkInline( 'http://|https://|ftp://|mailto:', $text ); // Mark up explicit links WikiEngine::_createTables ( $text ); # WikiEngine::_addInfoLine( $text ); } /** * Simple text processing - just add links * * Added for Back-End 28Feb03 * @author Peter Cruickhank */ function transformText(&$text) { WikiEngine::_linkExternal($text); WikiEngine::_linkInline( 'http://|https://|ftp://|mailto:', $text ); } /** Recognizes the headings. The A NAME prepares the table of contents. */ function _replaceHeadings( &$text ) { for ($i=6; $i>0; $i--) { $text = preg_replace( "|^(~{0,2})=\{$i,$i}\s*([^=]*)=\{$i,$i}\s*$|m", "\n\\1<a name=\"\\2\"></a><h$i>\\2</h$i>", $text ); } //Note: there are still trailing spaces possible! } /** * Will create the table of contents (toc) if defined in config. * Uses headings H1 and H2. Is rather expensive an can be turned of * in config. */ function _addToc( &$text ) { global $gConfig, $gToc; if (!$gConfig->mProp['CreateTOC']) { return true; } $gToc = ''; preg_replace_callback( "|<a name=\"([^\"]+)\"></a><h([12]){1,1}|mi", array('WikiEngine', '_storeToc'), $text ); $gToc = str_replace( ' "', '%20"', $gToc ); // spaces at the end do not work as names, anchors $text = ($gToc=='')?($text):($gToc.'<hr size="1" noshade>'.$text); unset($gToc); } /** Callback function for TOC. */ function _storeToc( &$args ) { global $gToc; if ($args[2] == 1) { $gToc .= "<a href=\"#{$args[1]}\">{$args[1]}</a><br>"; } else { $gToc .= " -<a href=\"#{$args[1]}\">{$args[1]}</a><br>"; } return ''; } /** Recognizes an empty line as a paragraph and \\ as BR an ---- as HR. */ function _markTextElements( &$text ) { //done by save: $text = str_replace( "\r", '', $text ); $text = preg_replace( '/^$/m', "\n<p>\n", $text ); // This is the orginal but doesnt alwars seem to work $text = preg_replace( '/\n\n/', "\n<p>\n", $text ); //PAC $text = preg_replace( '/\r\n\r\n/', "\n<p>\n", $text ); //PAC # $text = preg_replace( '/\r\r/', "\n<p>\n", $text ); //PAC $text = str_replace( "<p>\n<p>", "\n<p>\n", $text ); $text = str_replace( "<p><p>", "\n<p>\n", $text ); //PAC $text = preg_replace( '/^-{4,}\s*$/m', '<hr size="1" noshade>', $text ); $text = str_replace( '-_', "\n<br>\n", $text ); } /** * Transforms a block of lines into a list * Examples: ul, ol. */ function _replaceList( $startChar, $charCount, $openTag, $closeTag, &$text ) { $text = preg_replace( "/^$startChar\{$charCount,$charCount}(.*)$/m", "$openTag<li>\\1</li>$closeTag", $text ); $text = str_replace( "</li>$closeTag\n$openTag<li>", "</li>\n<li>", $text ); } /** * Replaces a bolck of lines starting with the same sign. * Forms one HTML block. Examples: blockquote, pre. */ function _replaceBlock( $startChar, $charCount, $openTag, $closeTag, &$text ) { $text = preg_replace( "/^$startChar\{$charCount,$charCount}(.*)$/m", "$openTag\\1$closeTag", $text ); $text = str_replace( "$closeTag\n$openTag", "\n", $text ); } /** Executes regular expressions for strong, underline, emphasize. */ function _emphasize( $markChar, $charCount, $openTag, $closeTag, &$text ) { /* Pattern: -one non-alnum char: avoid SQL+!, etc. being recognized; but there may be other marker chars, like +_/ the NOT < prevents </closeingTag> from being recognized as "begin italic" -the marker char itself -one non-space: avoid replacing 1 + 1 = 2; not the markChar again, like http:// -all except the marker char -the next marker char is considered the closing tag, may be followed by other marker chars, like +_/ -one non-alnum char and not the $markChar itself; problem sample: "http:// followed by http://" */ $text = preg_replace( "|([^\\[\\w<]{1,1})$markChar{"."$charCount,$charCount}([^\\s$markChar]{1,1}[^$markChar]*)$markChar{"."$charCount,$charCount}([^\\]\\w$markChar~]{1,1})|", "\\1$openTag\\2$closeTag\\3", $text ); } /** Executes regular expressions for sub, sup. */ function _subSupDl( $markChar, $charCount, $openTag, $closeTag, &$text ) { /* Pattern: -one alnum char -the marker char itself -all except the marker char -the next marker char is considered th closing tag, may be followed by other marker chars, like +_/ */ $text = preg_replace( "/([\\w\\)>]{1,1})$markChar\{$charCount,$charCount}([^$markChar]+)$markChar\{$charCount,$charCount}/", "\\1$openTag\\2$closeTag", $text ); } /** * Link to Wiki pages using syntax [[url{|or text}]]. * For this weird use of callback see commented manual @php.net */ function _linkWiki( &$text ) { //links without link text [[file]] $text = preg_replace_callback( '/\[{2,2}([^\]\s|]+)\]{2,2}/', array('WikiEngine', '_getWikiLink'), $text ); //links with link text [[file|text]] $text = preg_replace_callback( '/\[{2,2}([^\s|]+)[\s|]{1,1}([^\]]*)\]{2,2}/', array('WikiEngine', '_getWikiLink'), $text ); } /** Helper _linkWiki. Callback function for PREG. */ function _getWikiLink( $args ) { //remove bad file chars (Better than error message? User may edit again...) $args[1] = preg_replace( '([\]\[\*\s\./|?!])', '_', $args[1] ); //if no special link text is given if (!isset($args[2])) { $args[2] = $args[1]; } # if (Data::fileExists( $args[1] )) { if (file_exists( $args[1] )) { //PAC wont work til path + extension stuff is sorted return "<a href='{$_SERVER['PHP_SELF']}?iRequest=wiki/ViewPage&iPage={$args[1]}'>$args[2]</a>"; //PAC Sort out link } else { return "$args[2](<a href='{$_SERVER['PHP_SELF']}?iRequest=wiki/CreatePage&iPage={$args[1]}'>?</a>)"; } } /** Link to InterWiki pages using syntax [Wiki:name|or {text}]. */ function _linkInterWiki( &$text ) { global $gConfig; //replace [w: and [wiki: $text = preg_replace_callback( '/\[{1,1}w[ik]{0,3}:([^\s|]+)[\s|]{1,1}([^\]]+)\]{1,1}/i', array('WikiEngine', '_getInterLink'), $text ); } /** Helper _linkInterWiki. Callback function for PREG. */ function _getInterLink( $args ) { global $gConfig; if (isset( $gConfig->mIWiki[ $args[1] ])) { if (strpos( $args[2], '.jpg' ) or strpos( $args[2], '.gif' ) or strpos( $args[2], '.jpeg' ) or strpos( $args[2], '.png' )) { //return image tag; useful for local images in upload! return "<img src=\"{$gConfig->mIWiki[ $args[1] ]}{$args[2]}\" alt=\"{$args[2]}\" border=\"0\" class=\"be-wikiimage\">"; } else { return "<a href=\"{$gConfig->mIWiki[ $args[1] ]}{$args[2]}\">$args[1]:$args[2]</a>"; //» } } else { return "$args[1]:$args[2](?)"; } } /** * Link to web pages using syntax [url{|text}]. * There must be a leading non-word char, supressing 'int[]' translation. * PAC: Added patterns that recognise that links starting / are internal to the site and dont need http:// prefix * - there may be a way to elegantly combine the patterns... */ function _linkExternal( &$text ) { //local link with no text - ie starts with a / $text= preg_replace( '/([\W]{1,1})\[{2,2}(\\/[^\s]+)\]{2,2}/', "\\1<a href='\\2'>\\2</a>", $text ); //BE Version no » //local link with text - ie starts with a / $text= preg_replace( '/([\W]{1,1})\[{2,2}(\\/[^\s|]+)[\s|]{1,1}([^\]]*)\]{2,2}/', "\\1<a href='\\2'>\\3</a>", $text ); //BE Version no » //no link text $text= preg_replace( '/([\W]{1,1})\[{2,2}([^\]\s|]+)\]{2,2}/', "\\1<a href='http://\\2' target='_blank'>\\2</a>", $text ); //BE Version no » //link text $text= preg_replace( '/([\W]{1,1})\[{2,2}([^\s|]+)[\s|]{1,1}([^\]]*)\]{2,2}/', "\\1<a href='http://\\2' target='_blank'>\\3</a>", $text ); //BE Version no » } /** * Links images with an IMG tag * * First, filenames enclosed in *single* []s are matched, then http: links to images. * Either space or end of tag > must be in front of this. */ function _linkImage( $extension, &$text ) { //PAC 20031031 Added [] conversion to local image links global $_PSL; $imageUrl = $_PSL['imageurl']; //With alt text $text = preg_replace("/\\[([^\\s|]+\\.(?:$extension))[\\s|]([^\\]]*)\\]/", "<img src='$imageUrl/\\1' class='be-wikiimage' alt='\\2' title='\\2' /> ", $text ); //No alt text $text = preg_replace("/\\[([^\\]\\s|]+\\.(?:$extension))\\]/", "<img src='$imageUrl/\\1' class='be-wikiimage' alt='*' /> ", $text ); // Basic recognition of http://* format image links $text = preg_replace( "-(http://[^\\s<]+\.(?:$extension))([\\s\\n<]{1,1})-i", " <img src=\"\\1\" border=\"0\" class=\"be-wikiimage\">\\2", $text ); } /** Marks the inline links, like mailto:, http://. Either space or end of tag > must be in front of this.*/ function _linkInline( $prefix, &$text ) { $text = preg_replace( "-([\s>]){1,1}((?:$prefix)"."[^\s<]+)-i", "\\1<a href='\\2'>\\2</a>", $text ); // » } /** * Builds a table out of: ||-- = table start; --|| = table end; ||cell1||cell2|| * One row MUST be on one line. */ function _createTables( &$text ) { //tables are rare, check first and save reg exp's on failure if (preg_match( "/^\|{2,2}--\s*$/m", $text )) { //table ||-- and --|| $text = preg_replace( "/^\|{2,2}--\s*$/m", "<table border='0' cellspacing='2' cellpadding='2'>\n", $text ); //PAC $text = preg_replace( "/^--\|{2,2}\s*$/m", "</table>\n", $text ); //TH ||-h1-||- h2 -|| $text = preg_replace( "/^\|{2,2}-/m", "<tr><th bgcolor=\"#eeeeee\">\n", $text ); //PAC $text = preg_replace( "/-\|{2,2}[\s]*$/m", "</th></tr>\n", $text ); $text = str_replace( "-||-", "</th><th bgcolor=\"#eeeeee\">", $text ); //TD ||cell1|| cell2 || $text = preg_replace( "/^\|{2,2}/m", "<tr><td bgcolor=\"#eeeeee\">\n", $text ); $text = preg_replace( "/\|{2,2}[\s]*$/m", "</td></tr>\n", $text ); $text = str_replace( "||", "</td><td bgcolor=\"#eeeeee\">", $text ); } } /** Adds a line with created date, file size at the end of $text. */ function _addInfoLine( &$text ) { global $gConfig; if ($gConfig->mProp['ShowInfoLine']) { //prepare the info line, cannot be stored in data file (user edit) $text .= '<hr size="1" noshade><small>'.Data::getFileInfo($_REQUEST['iPage']).'</small>'; } } } ?> |
From: Joe S. <joe...@us...> - 2003-11-12 21:29:51
|
Update of /cvsroot/phpslash/phpslash-dev/public_html/scripts/htmlarea3/plugins In directory sc8-pr-cvs1:/tmp/cvs-serv12035/phpslash-dev/public_html/scripts/htmlarea3/plugins Added Files: makefile.xml Log Message: Added preliminary htmlArea editing support to the Story entry form. --- NEW FILE: makefile.xml --- <files> <dir name="SpellChecker" /> <dir name="TableOperations" /> <dir name="FullPage" /> </files> |
From: Joe S. <joe...@us...> - 2003-11-12 21:29:51
|
Update of /cvsroot/phpslash/phpslash-dev/public_html In directory sc8-pr-cvs1:/tmp/cvs-serv12035/phpslash-dev/public_html Modified Files: config-dist.php Log Message: Added preliminary htmlArea editing support to the Story entry form. Index: config-dist.php =================================================================== RCS file: /cvsroot/phpslash/phpslash-dev/public_html/config-dist.php,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** config-dist.php 11 Nov 2003 20:50:07 -0000 1.10 --- config-dist.php 12 Nov 2003 21:29:48 -0000 1.11 *************** *** 759,762 **** --- 759,772 ---- $default_story_options[] = array( + 'name' => "htmleditor", + 'description' => " - use wysiwyg textarea editor", + 'value' => 'no" onClick="PSL_chooseEditor();', + 'type' => "radio", + 'selected' => 'value', + 'choices' => array('no" onClick="PSL_chooseEditor();' => 'No', + 'yes" onClick="PSL_chooseEditor(\'htmlarea\');' => 'Yes')); + + + $default_story_options[] = array( 'name' => "input", 'description' => 'apply this filter at story save', *************** *** 764,771 **** 'type' => 'select', 'selected' => 'value', ! 'choices' => array('' => 'none', 'html' => 'html(no text changes)', 'plaintext'=> 'Plain Text(Returns added)', ! 'exttrans' => 'Extended Translation(show html code)') ); --- 774,783 ---- 'type' => 'select', 'selected' => 'value', ! 'choices' => array('' => 'none', 'html' => 'html(no text changes)', 'plaintext'=> 'Plain Text(Returns added)', ! 'exttrans' => 'Extended Translation(show html code)', ! 'wiki' => 'Wiki', ! 'bbcode' => 'BBCode') ); *************** *** 779,783 **** 'html' => 'html(no text changes)', 'plaintext'=> 'Plain Text(Returns added)', ! 'exttrans' => 'Extended Translation(show html code)') ); --- 791,797 ---- 'html' => 'html(no text changes)', 'plaintext'=> 'Plain Text(Returns added)', ! 'exttrans' => 'Extended Translation(show html code)', ! 'wiki' => 'Wiki', ! 'bbcode' => 'BBCode') ); |
From: Joe S. <joe...@us...> - 2003-11-12 21:29:51
|
Update of /cvsroot/phpslash/phpslash-dev/include/templates/en/basic In directory sc8-pr-cvs1:/tmp/cvs-serv12035/phpslash-dev/include/templates/en/basic Modified Files: storyNew.tpl Added Files: slashHead-htmlarea3.tpl Log Message: Added preliminary htmlArea editing support to the Story entry form. --- NEW FILE: slashHead-htmlarea3.tpl --- <!-- START slashHead-htmlarea3.tpl --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <!-- START slashHead.tpl --> <html> <head> <title>{SITE_NAME} - {SECTION} {SITETITLE}</title> <!-- Enter Your Desired META Tags Below Here --> <!-- This Meta Tag is Defined In Each Page By Setting The Variable $xsiteobject = "HomePage"; to the page type HomePage, Glossary, Info, etc.. --> <meta name="object" content="{XSITEOBJECT}" /> <!-- Enter Your META Tags Above Here --> <!-- BEGIN each_metatag --> <meta name="{METANAME}" content="{METADESCRIPTION}" /> <!-- END each_metatag --> <link rel="alternate" type="application/rss+xml" title="RSS" href="{ROOTDIR}/backend.php" /> <link rel="stylesheet" type="text/css" href="{ROOTDIR}/styles/{SKIN}.css" /> <!-- BEGIN HTMLAREA3 Javascript --> <script TYPE="text/javascript" LANGUAGE="JavaScript"> <!-- Script Begin <!-- Root path for the html WYSIWYG editor --> var _editor_url="{ROOTDIR}/scripts/htmlarea3/"; // --> </script> <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/htmlarea.js"></script> <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/lang/en.js"></script> <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/dialog.js"></script> <!-- <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/popupdiv.js"></script> --> <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/popupwin.js"></script> <!-- load the TableOperations plugin files --> <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/plugins/TableOperations/table-operations.js"></script> <script TYPE="text/javascript" LANGUAGE="JavaScript" src="{ROOTDIR}/scripts/htmlarea3/plugins/TableOperations/lang/en.js"></script> <style type="text/css"> @import url({ROOTDIR}/scripts/htmlarea3/htmlarea.css); textarea { background-color: #fff; border: 1px solid 00f; } </style> <script TYPE="text/javascript" LANGUAGE="JavaScript"> var editor = null; function initEditor() { // create an editor for the "ta" textbox editor = new HTMLArea("ta"); // register the TableOperations plugin with our editor editor.registerPlugin("TableOperations"); editor.generate(); return false; } function insertHTML() { var html = prompt("Enter some HTML code here"); if (html) { editor.insertHTML(html); } } function highlight() { editor.surroundHTML('<span style="background-color: white">', '</span>'); } function PSL_chooseEditor(editor) { // if IE 5.5 or W3C/Moz 1.3+ - Can't combine the two due to problems with reload() & IE // if((document.all && document.designMode) || (document.designMode)) { // IE 5.5 - Eliminating reload() because it pulled down new form data if(document.all && document.designMode) { // HTML or htmlArea if (editor == 'htmlarea') { // HTMLArea.replace('en'); HTMLArea.replaceAll(); } else { // how to remove in IE? } // W3C/Moz 1.3+ - reload() without adjusting form data } else if(document.designMode) { // HTML or htmlArea if (editor == 'htmlarea') { // HTMLArea.replace('en'); HTMLArea.replaceAll(); } else { window.location.reload(); } } } </script> <!-- END HTMLAREA3 Javascript --> </head> <body> <!-- onLoad="HTMLArea.replace('en'); HTMLArea.replace('fr');" --> <a name="top"></a> <div id="header"> <table width="100%" border="0" cellpadding="0" cellspacing="0"> <!-- START: Title and Search --> <tr> <td><a href="{ROOTDIR}"><img src="{IMAGEDIR}/topics/topicphpslash.gif" border="0" alt="" /></a></td> <td width="50%" align="center"> <form method="get" action="{SEARCH_ACTION_URL}"> <input type="text" name=query value="" size="15" /> <input type="submit" value="Search" /> <input type="hidden" name="topic_id" value="" /> <input type="hidden" name="section_id" value="" /> <input type="hidden" name="author_id" value="" /> </form> </td> </tr> </table> <!-- END: Title and Search --> {TOPICBAR} {NAVBAR} </div> <!-- id="header" --> <!-- END slashHead-htmlarea.tpl --> Index: storyNew.tpl =================================================================== RCS file: /cvsroot/phpslash/phpslash-dev/include/templates/en/basic/storyNew.tpl,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** storyNew.tpl 11 Nov 2003 21:20:00 -0000 1.5 --- storyNew.tpl 12 Nov 2003 21:29:48 -0000 1.6 *************** *** 98,107 **** <tr> <td class="descr">Intro Text</td> ! <td colspan="3"><textarea name="intro_text" wrap="physical" cols="75" rows="10">{INTROTEXT}</textarea></td> </tr> <tr> <td class="descr">Body Text</td> <td colspan="3"><!-- body text --> ! <textarea name="body_text" wrap="physical" cols="75" rows="10">{BODYTEXT} </textarea> <br /> --- 98,107 ---- <tr> <td class="descr">Intro Text</td> ! <td colspan="3"><textarea name="intro_text" wrap="physical" cols="80" rows="20">{INTROTEXT}</textarea></td> </tr> <tr> <td class="descr">Body Text</td> <td colspan="3"><!-- body text --> ! <textarea name="body_text" wrap="physical" cols="80" rows="20">{BODYTEXT} </textarea> <br /> |
From: Joe S. <joe...@us...> - 2003-11-12 21:29:50
|
Update of /cvsroot/phpslash/phpslash-dev In directory sc8-pr-cvs1:/tmp/cvs-serv12035/phpslash-dev Modified Files: CHANGES Log Message: Added preliminary htmlArea editing support to the Story entry form. Index: CHANGES =================================================================== RCS file: /cvsroot/phpslash/phpslash-dev/CHANGES,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -d -r1.48 -r1.49 *** CHANGES 12 Nov 2003 16:02:09 -0000 1.48 --- CHANGES 12 Nov 2003 21:29:47 -0000 1.49 *************** *** 13,16 **** --- 13,21 ---- 9 - Removal of something (kill -9 :) + 2003-November 12 3:00PM CST Joe Stewart <joe...@us...> + [FT] - config.php, storyNew.tpl, slashHead-htmlarea3 - Added preliminary + htmlArea editing support to the Story entry form. + Added htmlArea3 code in public_html/scripts directory. + 2003-November 12 10:00AM CST Joe Stewart <joe...@us...> [DFT] - Added Wiki Story plugin using the Back-End WikiEngine.class. |
From: Joe S. <joe...@us...> - 2003-11-12 21:22:40
|
Update of /cvsroot/phpslash/phpslash-dev/public_html/scripts/htmlarea3/plugins/TableOperations/lang In directory sc8-pr-cvs1:/tmp/cvs-serv10514/lang Log Message: Directory /cvsroot/phpslash/phpslash-dev/public_html/scripts/htmlarea3/plugins/TableOperations/lang added to the repository |
From: Joe S. <joe...@us...> - 2003-11-12 21:22:40
|
Update of /cvsroot/phpslash/phpslash-dev/public_html/scripts/htmlarea3/plugins/TableOperations/img In directory sc8-pr-cvs1:/tmp/cvs-serv10514/img Log Message: Directory /cvsroot/phpslash/phpslash-dev/public_html/scripts/htmlarea3/plugins/TableOperations/img added to the repository |
From: Joe S. <joe...@us...> - 2003-11-12 21:20:08
|
Update of /cvsroot/phpslash/phpslash-dev/public_html/scripts/htmlarea3/plugins/SpellChecker/lang In directory sc8-pr-cvs1:/tmp/cvs-serv9918/lang Log Message: Directory /cvsroot/phpslash/phpslash-dev/public_html/scripts/htmlarea3/plugins/SpellChecker/lang added to the repository |