}\r
\r
function copyrichtext(textname) { \r
- textname.value = document.richedit.docHtml;\r
+/// Legacy stub for old editor - to be removed soon\r
return true;\r
}\r
\r
}
function can_use_richtext_editor() {
+/// Compatibility stub to provide backward compatibility
+ return can_use_html_editor();
+}
+
+function can_use_html_editor() {
/// Is the HTML editor enabled? This depends on site and user
/// settings, as well as the current browser being used.
+/// Returns false is editor is not being used, otherwise
+/// returns "MSIE" or "Gecko"
global $USER, $CFG;
if (!empty($USER->htmleditor) and !empty($CFG->htmleditor)) {
if (check_browser_version("MSIE", 5.5)) {
- return true;
- } else if (check_browser_version("Gecko", 20030516) and !empty($CFG->useneweditor) ) {
- return true;
+ return "MSIE";
+ } else if (check_browser_version("Gecko", 20030516)) {
+ return "Gecko";
}
}
return false;
}
+
function check_gd_version() {
/// Hack to find out the GD version by parsing phpinfo output
$gdversion = 0;
+++ /dev/null
-10/10/2002:
-
-This version of the Richtext editor started out as 0.3 beta 1,
-and I've hacked richedit.html to make the toolbars more compact.
-
-I've also changed the smilies to refer to Moodle smilies, and
-added/removed some.
-
-
-
-12/10/2003:
-
-I've just added and further hacked some changes from Janne
-Mikkonen (http://moodle.org/mod/forum/discuss.php?d=2126)
-to allow a popup so that images can be selected from the
-course files area.
-
-This includes these PHP files in this folder:
-
- -- courseimages.php
- -- dlg_ins_image.php
- -- richedit.php
- -- rte.php
-
-
-Martin Dougiamas
+++ /dev/null
-/*******************************************************************************\r
-**\r
-** $Header$\r
-**\r
-** HTML Text Editing Component for hosting in Web Pages\r
-** Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-** \r
-** This library is free software; you can redistribute it and/or\r
-** modify it under the terms of the GNU Lesser General Public\r
-** License as published by the Free Software Foundation; either\r
-** version 2.1 of the License, or (at your option) any later version.\r
-**\r
-** This library is distributed in the hope that it will be useful,\r
-** but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-** Lesser General Public License for more details.\r
-**\r
-** You should have received a copy of the GNU LesserGeneral Public License\r
-** along with this program; if not a copy can be obtained from \r
-**\r
-** http://www.gnu.org/copyleft/lesser.html\r
-**\r
-** or by writing to:\r
-**\r
-** Free Software Foundation, Inc.\r
-** 59 Temple Place - Suite 330,\r
-** Boston,\r
-** MA 02111-1307,\r
-** USA.\r
-** \r
-** Original Developer:\r
-**\r
-** Austin David France\r
-** Ramesys (Contracting Services) Limited\r
-** Mentor House\r
-** Ainsworth Street\r
-** Blackburn\r
-** Lancashire\r
-** BB1 6AY\r
-** United Kingdom\r
-** email: Austin.France@Ramesys.com\r
-**\r
-** Home Page: http://richtext.sourceforge.net/\r
-** Support: http://richtext.sourceforge.net/\r
-** \r
-*******************************************************************************/\r
+++ /dev/null
-<!--\r
-################################################################################\r
-##\r
-## $Header%\r
-##\r
-## HTML Text Editing Component for hosting in Web Pages\r
-## Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-## \r
-## This library is free software; you can redistribute it and/or\r
-## modify it under the terms of the GNU Lesser General Public\r
-## License as published by the Free Software Foundation; either\r
-## version 2.1 of the License, or (at your option) any later version.\r
-##\r
-## This library is distributed in the hope that it will be useful,\r
-## but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-## Lesser General Public License for more details.\r
-##\r
-## You should have received a copy of the GNU LesserGeneral Public License\r
-## along with this program; if not a copy can be obtained from \r
-##\r
-## http://www.gnu.org/copyleft/lesser.html\r
-##\r
-## or by writing to:\r
-##\r
-## Free Software Foundation, Inc.\r
-## 59 Temple Place - Suite 330,\r
-## Boston,\r
-## MA 02111-1307,\r
-## USA.\r
-## \r
-## Original Developer:\r
-##\r
-## Austin David France\r
-## Ramesys (Contracting Services) Limited\r
-## Mentor House\r
-## Ainsworth Street\r
-## Blackburn\r
-## Lancashire\r
-## BB1 6AY\r
-## United Kingdom\r
-## email: Austin.France@Ramesys.com\r
-##\r
-## Home Page: http://richtext.sourceforge.net/\r
-## Support: http://richtext.sourceforge.net/\r
-## \r
-################################################################################\r
--->\r
+++ /dev/null
-////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// $Header$\r
-//\r
-// HTML Text Editing Component for hosting in Web Pages\r
-// Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-// \r
-// This library is free software; you can redistribute it and/or\r
-// modify it under the terms of the GNU Lesser General Public\r
-// License as published by the Free Software Foundation; either\r
-// version 2.1 of the License, or (at your option) any later version.\r
-//\r
-// This library is distributed in the hope that it will be useful,\r
-// but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-// Lesser General Public License for more details.\r
-//\r
-// You should have received a copy of the GNU LesserGeneral Public License\r
-// along with this program; if not a copy can be obtained from \r
-//\r
-// http://www.gnu.org/copyleft/lesser.html\r
-//\r
-// or by writing to:\r
-//\r
-// Free Software Foundation, Inc.\r
-// 59 Temple Place - Suite 330,\r
-// Boston,\r
-// MA 02111-1307,\r
-// USA.\r
-// \r
-// Original Developer:\r
-//\r
-// Austin David France\r
-// Ramesys (Contracting Services) Limited\r
-// Mentor House\r
-// Ainsworth Street\r
-// Blackburn\r
-// Lancashire\r
-// BB1 6AY\r
-// United Kingdom\r
-// email: Austin.France@Ramesys.com\r
-//\r
-// Home Page: http://richtext.sourceforge.net/\r
-// Support: http://richtext.sourceforge.net/\r
-// \r
-////////////////////////////////////////////////////////////////////////////////\r
+++ /dev/null
-Version DEV\r
-\r
-- Added multi-lingual support. The editor detects the userLanguage\r
- of the browser and uses this select the relevent language from the\r
- new rte_lang.js module which is then applied to the main editor\r
- window. This is a work in progress, dialog need translation also.\r
-\r
-- Re-implemented Undo/Redo (history) option this time using the\r
- document.execCommand('Undo'/'Redo') options which although \r
- documented as not implemented do work in IE 6.0.\r
-\r
-Version 0.2.3\r
-\r
-- Improved option handling to maintain an array of options that are\r
- not "features" and added a getOption() private method to obtain\r
- the current option value.\r
-\r
-- The saveHistory() function is now a no-op if the history option is\r
- not enabled. Previously it was still doing all the buffer saving\r
- behind the scenes. This should improve the performance of the\r
- editor.\r
-\r
-- Corrected version and company information in the about dialog.\r
-\r
-- Remove showHistory() status (debug) messages\r
-\r
-- After set editor options, apply them. In most circumstances the\r
- options property is set after the editor has initialised and so\r
- the options need to be processed as the options are set not\r
- when the editor is initialised.\r
-\r
-- Added numerous options:\r
- styleBar=yes|no default yes\r
- style=yes|no default yes\r
- font=yes|no default yes\r
- fontSize=yes|no default yes\r
- colour=yes|no default yes\r
- dragdrop=yes|no default no\r
-\r
-- Added code to disable drag and drop in the editor. Previously\r
- it was possible to drag a toolbar button and drop a copy of it\r
- into the editor window. Now, nothing can be dragged from the\r
- toolbar and nothing can be dropped into the editor window.\r
- This does not disable any functionality because the editor\r
- window did not act as a drop target for objects from outside\r
- of the IE control. It was however possible to drag elements\r
- from one page and drop them into the editor, this is now not\r
- possible unless dragdrop=yes is specified. However, the \r
- dragdrop handling is weak (non-existent) and so is disabled\r
- by default.\r
-\r
-- Some minor cosmetic changes to the toolbar.\r
-\r
-- Added debug window functionality to aid development and support\r
- of the editor. Over time, diagnostic debugs will be added to\r
- the editor code.\r
-\r
-- Default edit area to not editable (effectivly disabled) until\r
- inisialisation of the editor is complete.\r
-\r
-- Added Full Justify Option\r
-\r
-- Re-worked font color/back color resetting (color none) so that\r
- a) it worked and b) it only removes the fore/background color\r
- and preserves the other formatting that bit of text may have.\r
-\r
-- Disable post button when in view source mode. The post button\r
- is greyed out whilst disabled.\r
-\r
-Version 0.2.2\r
-=============\r
-- Disabled buggy history and view source options by default in preparation \r
- for official 0.2 release (to be officially released in a later release).\r
-\r
-- Added editor.options property to allow optional functionality to be \r
- enabled/disabled. \r
- \r
-Version 0.2.1\r
-=============\r
-- Corrected a bug in test_embedded.asp (JavaScript error).\r
- \r
-Version 0.2.0\r
-=============\r
-- Added support for Custom Fields\r
-- Beta versions of undo-history and view source options added\r
- \r
-Version 0.1\r
-===========\r
-- Original release of The Richtext Editor \r
-\r
+++ /dev/null
-<!--\r
-#################################################################################\r
-##\r
-## HTML Text Editing Component for hosting in Web Pages\r
-## Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-## \r
-## This library is free software; you can redistribute it and/or\r
-## modify it under the terms of the GNU Lesser General Public\r
-## License as published by the Free Software Foundation; either\r
-## version 2.1 of the License, or (at your option) any later version.\r
-##\r
-## This library is distributed in the hope that it will be useful,\r
-## but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-## Lesser General Public License for more details.\r
-##\r
-## You should have received a copy of the GNU LesserGeneral Public License\r
-## along with this program; if not a copy can be obtained from \r
-##\r
-## http://www.gnu.org/copyleft/lesser.html\r
-##\r
-## or by writing to:\r
-##\r
-## Free Software Foundation, Inc.\r
-## 59 Temple Place - Suite 330,\r
-## Boston,\r
-## MA 02111-1307,\r
-## USA.\r
-## \r
-## Original Developer:\r
-##\r
-## Austin David France\r
-## Ramesys (Contracting Services) Limited\r
-## Mentor House\r
-## Ainsworth Street\r
-## Blackburn\r
-## Lancashire\r
-## BB1 6AY\r
-## United Kingdom\r
-## email: Austin.France@Ramesys.com\r
-##\r
-## Home Page: http://richtext.sourceforge.net/\r
-## Support: http://richtext.sourceforge.net/\r
-## \r
-## BC Bill Chalmers bill_paula@btinternet.com\r
-##\r
-## History:\r
-##\r
-## BC 15-07-2002 \r
-## Changed the font selection to web-safe palette \r
-## and removed the style on hover\r
-##\r
-## BC 24-07-2002\r
-## Small Enhancement to the look and feel\r
-#################################################################################\r
--->\r
-<html>\r
-<head>\r
-<meta name=vs_targetSchema content="HTML 4.0">\r
-<meta name="GENERATOR" content="Microsoft Visual Studio 7.0">\r
-<style type="text/css">\r
-TABLE.colorChooser { background-color: buttonface; border:0}\r
-.colorChooser TD { border: 1px inset buttonface; cursor: hand; }\r
-.colorChooserLabel TD { width: 100%; border: 0;\r
- font-family: "MS Sans Serif"; font-size: xx-small; vertical-align: middle;\r
-}\r
-TD.colorNone { font-family: "MS Sans Serif"; font-size: xx-small; vertical-align: middle; \r
- text-align: center; border: 1px outset buttonface!important; }\r
-</style>\r
-</head>\r
-\r
-<body topmargin="0" leftmargin="0" style="border: 0; margin: 0;" onload="initialise()">\r
-<script language="JavaScript">\r
-var public_description = new ColorMenu();\r
-\r
-function ColorMenu() {\r
-}\r
-\r
-function initialise(){\r
-c=main.insertCell(); //insert cell & set porperties\r
-c.id ="display"; \r
-c.rowSpan="3"; \r
-c.colSpan="6";\r
-}\r
-\r
-function hover(on) {\r
- var el = window.event.srcElement;\r
- var disp = document.getElementById("display"); //get display cell\r
- if (el && el.nodeName == "IMG") {\r
- if (on) {\r
- disp.bgColor=el.parentElement.title; //set display cell bgcolor to hovered\r
- // removed the style on hover as too slow\r
- } \r
- }\r
-}\r
-function choose(on) {\r
- var el = window.event.srcElement;\r
- if (el && el.nodeName == "IMG") {\r
- window.external.raiseEvent("onselect", el.parentElement.title);\r
- }\r
- if (el && el.nodeName == "TD") {\r
- window.external.raiseEvent("onselect", null);\r
- }\r
-}\r
-\r
-</script>\r
-<table class="colorChooser" cellpadding="0" cellspacing="0" onmouseover="hover(true)" onmouseout="hover(false)" onclick="choose()">\r
-<tr id="main" class="colorChooserLabel"> \r
- <td colspan="12">Standard Colors</td>\r
- </tr>\r
-<tr>\r
- <td bgcolor="#000000" title="#000000"><img src="images/spacer.gif" width="12" height="12"></td>\r
- <td bgcolor="#333333" title="#333333"><img src="images/spacer.gif" width="12" height="12"></td>\r
- <td bgcolor="#666666" title="#666666"><img src="images/spacer.gif" width="12" height="12"></td>\r
- <td bgcolor="#999999" title="#999999"><img src="images/spacer.gif" width="12" height="12"></td>\r
- <td bgcolor="#CCCCCC" title="#CCCCCC"><img src="images/spacer.gif" width="12" height="12"></td>\r
- <td bgcolor="#FFFFFF" title="#FFFFFF"><img src="images/spacer.gif" width="12" height="12"></td>\r
- <td bgcolor="#FF0000" title="#FF0000"><img src="images/spacer.gif" width="12" height="12"></td>\r
- <td bgcolor="#00FF00" title="#00FF00"><img src="images/spacer.gif" width="12" height="12"></td>\r
- <td bgcolor="#0000FF" title="#0000FF"><img src="images/spacer.gif" width="12" height="12"></td>\r
- <td bgcolor="#FFFF00" title="#FFFF00"><img src="images/spacer.gif" width="12" height="12"></td>\r
- <td bgcolor="#00FFFF" title="#00FFFF"><img src="images/spacer.gif" width="12" height="12"></td>\r
- <td bgcolor="#FF00FF" title="#FF00FF"><img src="images/spacer.gif" width="12" height="12"></td>\r
-</tr>\r
-<tr class="colorChooserLabel"><td colspan="12">Web Safe</td></tr>\r
-<tr>\r
-<script language=JavaScript>\r
-\r
- d = new Array();\r
- d[1] = "00";\r
- d[2] = "33";\r
- d[3] = "66";\r
- d[4] = "99";\r
- d[5] = "CC";\r
- d[6] = "FF"; \r
- \r
- \r
- for (c=1;c<=6;c++){\r
- \r
- for (a=1;a<=3;a++){ \r
- \r
- for (b=1;b<=6;b++){ \r
- \r
- colour = d[a] + d[b] + d[c];\r
- \r
- document.write("<td bgcolor=\"#"+colour+"\" title=\"#"+colour+"\"><img src=\"images\\spacer.gif\" width=12 height=12></td>\n");\r
- if (a==3 && b==6){\r
- document.write("</tr>\n<tr>\n");\r
- }\r
- \r
- }\r
- }\r
- } \r
- for (c=1;c<=6;c++){\r
- \r
- for (a=4;a<=6;a++){ \r
- \r
- for (b=1;b<=6;b++){ \r
- \r
- colour = d[a] + d[b] + d[c];\r
- \r
- document.write("<td bgcolor=\"#"+colour+"\" title=\"#"+colour+"\"><img src=\"images\\spacer.gif\" width=12 height=12></td>\n");\r
- if (a==6 && b==6){\r
- document.write("</tr>\n<tr>\n");\r
- }\r
- \r
- }\r
- }\r
- }\r
- \r
- </script>\r
- \r
- \r
-</tr>\r
-<tr><td colspan="18" class="colorNone" title="None" align="right">None</td></tr>\r
-</table>\r
-</body>\r
-</html>\r
+++ /dev/null
-<?PHP // $Id$
-
-// Manage all uploaded files in a course file area
-
-// This file is a hack to files/index.php that removes
-// the headers and adds some controls so that images
-// can be selected within the Richtext editor.
-
-// All the Moodle-specific stuff is in this top section
-// Configuration and access control occurs here.
-// Must define: USER, basedir, baseweb, html_header and html_footer
-// USER is a persistent variable using sessions
-
- require("../../config.php");
- require("../../files/mimetypes.php");
-
- require_variable($id);
- optional_variable($file, "");
- optional_variable($wdir, "");
- optional_variable($action, "");
-
- if (! $course = get_record("course", "id", $id) ) {
- error("That's an invalid course id");
- }
-
- require_login($course->id);
-
- if (! isteacher($course->id) ) {
- error("Only teachers can edit files");
- }
-
- function html_footer() {
- echo "</td></tr></table></body></html>";
- }
-
- function html_header($course, $wdir, $formfield=""){
-
- global $CFG;
-
- if (! $site = get_site()) {
- error("Invalid site!");
- }
-
- if ($course->id == $site->id) {
- $strfiles = get_string("sitefiles");
- } else {
- $strfiles = get_string("files");
- }
-
- if ($wdir == "/") {
- $fullnav = "$strfiles";
- } else {
- $dirs = explode("/", $wdir);
- $numdirs = count($dirs);
- $link = "";
- $navigation = "";
- for ($i=1; $i<$numdirs; $i++) {
- $navigation .= " -> ";
- $link .= "/".urlencode($dirs[$i]);
- $navigation .= "<a href=\"".$_SERVER['PHP_SELF']."?id=$course->id&wdir=$link\">".$dirs[$i]."</a>";
- }
- $fullnav = "<a href=\"".$_SERVER['PHP_SELF']."?id=$course->id&wdir=/\">$strfiles</a> $navigation";
- }
-
- print_header();
- ?>
- <script language="javscript" type="text/javascript">
- <!--
- function set_value(url) {
- txt = url;
- opener.url.value = txt;
- window.close();
- }
- -->
- </script>
- <?php
-
- echo '<table border="0" cellpadding="3" cellspacing="0" width="100%">';
- echo '<tr>';
- echo '<td bgcolor="'.$THEME->cellheading.'" class="navbar">';
- echo '<font size="2"><b>'."$course->shortname -> $fullnav".'</b></font>';
- echo '</td>';
- echo '</tr>';
- echo '</table>';
-
- if ($course->id == $site->id) {
- print_heading(get_string("publicsitefileswarning"), "center", 2);
- }
-
- echo "<table border=0 align=center cellspacing=3 cellpadding=3 width=640>";
- echo "<tr>";
- echo "<td colspan=\"2\">";
- }
-
- if (! $basedir = make_upload_directory("$course->id")) {
- error("The site administrator needs to fix the file permissions");
- }
-
- $baseweb = $CFG->wwwroot;
-
-// End of configuration and access control
-
-
- $regexp="\\.\\.";
- if (ereg( $regexp, $file, $regs )| ereg( $regexp, $wdir,$regs )) {
- $message = "Error: Directories can not contain \"..\"";
- $wdir = "/";
- $action = "";
- }
-
- if (!$wdir) {
- $wdir="/";
- }
-
-
- switch ($action) {
-
- case "upload":
- html_header($course, $wdir);
-
- if (!empty($_FILES['userfile'])) {
- $userfile = $_FILES['userfile'];
- } else {
- $save = false;
- }
- if (!empty($save)) {
- if (!is_uploaded_file($userfile['tmp_name']) or $userfile['size'] == 0) {
- notify(get_string("uploadnofilefound"));
- } else {
- $userfile_name = clean_filename($userfile['name']);
- if ($userfile_name) {
- $newfile = "$basedir$wdir/$userfile_name";
- if (move_uploaded_file($userfile['tmp_name'], $newfile)) {
- chmod($newfile, 0666);
- $a = NULL;
- $a->file = "$userfile_name (".$userfile['type'].")";
- $a->directory = $wdir;
- print_string("uploadedfileto", "", $a);
- } else {
- notify(get_string("uploadproblem", "", $userfile_name));
- }
- }
- }
- displaydir($wdir);
-
- } else {
- $upload_max_filesize = get_max_upload_file_size();
- $filesize = display_size($upload_max_filesize);
-
- $struploadafile = get_string("uploadafile");
- $struploadthisfile = get_string("uploadthisfile");
- $strmaxsize = get_string("maxsize", "", $filesize);
- $strcancel = get_string("cancel");
-
- echo "<P>$struploadafile ($strmaxsize) --> <B>$wdir</B>";
- echo "<TABLE><TR><TD COLSPAN=2>";
- echo "<FORM ENCTYPE=\"multipart/form-data\" METHOD=\"post\" ACTION=\"".$_SERVER['PHP_SELF']."\">";
- echo " <INPUT TYPE=hidden NAME=MAX_FILE_SIZE value=\"$upload_max_filesize\">";
- echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
- echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
- echo " <INPUT TYPE=hidden NAME=action VALUE=upload>";
- echo " <INPUT NAME=\"userfile\" TYPE=\"file\" size=\"60\">";
- echo " </TD><TR><TD WIDTH=10>";
- echo " <INPUT TYPE=submit NAME=save VALUE=\"$struploadthisfile\">";
- echo "</FORM>";
- echo "</TD><TD WIDTH=100%>";
- echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=\"get\">";
- echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
- echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
- echo " <INPUT TYPE=hidden NAME=action VALUE=cancel>";
- echo " <INPUT TYPE=submit VALUE=\"$strcancel\">";
- echo "</FORM>";
- echo "</TD></TR></TABLE>";
- }
- html_footer();
- break;
-
- case "delete":
- if (!empty($confirm)) {
- html_header($course, $wdir);
- foreach ($USER->filelist as $file) {
- $fullfile = $basedir.$file;
- if (! fulldelete($fullfile)) {
- echo "<BR>Error: Could not delete: $fullfile";
- }
- }
- clearfilelist();
- displaydir($wdir);
- html_footer();
-
- } else {
- html_header($course, $wdir);
- if (setfilelist($_POST)) {
- echo "<p align=center>".get_string("deletecheckwarning").":</p>";
- print_simple_box_start("center");
- printfilelist($USER->filelist);
- print_simple_box_end();
- echo "<br />";
- notice_yesno (get_string("deletecheckfiles"),
- "".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&action=delete&confirm=1",
- "".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&action=cancel");
- } else {
- displaydir($wdir);
- }
- html_footer();
- }
- break;
-
- case "move":
- html_header($course, $wdir);
- if ($count = setfilelist($_POST)) {
- $USER->fileop = $action;
- $USER->filesource = $wdir;
- echo "<p align=center>";
- print_string("selectednowmove", "moodle", $count);
- echo "</p>";
- }
- displaydir($wdir);
- html_footer();
- break;
-
- case "paste":
- html_header($course, $wdir);
- if (isset($USER->fileop) and $USER->fileop == "move") {
- foreach ($USER->filelist as $file) {
- $shortfile = basename($file);
- $oldfile = $basedir.$file;
- $newfile = $basedir.$wdir."/".$shortfile;
- if (!rename($oldfile, $newfile)) {
- echo "<P>Error: $shortfile not moved";
- }
- }
- }
- clearfilelist();
- displaydir($wdir);
- html_footer();
- break;
-
- case "rename":
- if (!empty($name)) {
- html_header($course, $wdir);
- $name = clean_filename($name);
- if (file_exists($basedir.$wdir."/".$name)) {
- echo "Error: $name already exists!";
- } else if (!rename($basedir.$wdir."/".$oldname, $basedir.$wdir."/".$name)) {
- echo "Error: could not rename $oldname to $name";
- }
- displaydir($wdir);
-
- } else {
- $strrename = get_string("rename");
- $strcancel = get_string("cancel");
- $strrenamefileto = get_string("renamefileto", "moodle", $file);
- html_header($course, $wdir, "form.name");
- echo "<P>$strrenamefileto:";
- echo "<TABLE><TR><TD>";
- echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=\"post\" NAME=\"form\">";
- echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
- echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
- echo " <INPUT TYPE=hidden NAME=action VALUE=rename>";
- echo " <INPUT TYPE=hidden NAME=oldname VALUE=\"$file\">";
- echo " <INPUT TYPE=text NAME=name SIZE=35 VALUE=\"$file\">";
- echo " <INPUT TYPE=submit VALUE=\"$strrename\">";
- echo "</FORM>";
- echo "</TD><TD>";
- echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=get>";
- echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
- echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
- echo " <INPUT TYPE=hidden NAME=action VALUE=cancel>";
- echo " <INPUT TYPE=submit VALUE=\"$strcancel\">";
- echo "</FORM>";
- echo "</TD></TR></TABLE>";
- }
- html_footer();
- break;
-
- case "mkdir":
- if (!empty($name)) {
- html_header($course, $wdir);
- $name = clean_filename($name);
- if (file_exists("$basedir$wdir/$name")) {
- echo "Error: $name already exists!";
- } else if (! make_upload_directory("$course->id/$wdir/$name")) {
- echo "Error: could not create $name";
- }
- displaydir($wdir);
-
- } else {
- $strcreate = get_string("create");
- $strcancel = get_string("cancel");
- $strcreatefolder = get_string("createfolder", "moodle", $wdir);
- html_header($course, $wdir, "form.name");
- echo "<P>$strcreatefolder:";
- echo "<TABLE><TR><TD>";
- echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=post NAME=form>";
- echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
- echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
- echo " <INPUT TYPE=hidden NAME=action VALUE=mkdir>";
- echo " <INPUT TYPE=text NAME=name SIZE=35>";
- echo " <INPUT TYPE=submit VALUE=\"$strcreate\">";
- echo "</FORM>";
- echo "</TD><TD>";
- echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=get>";
- echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
- echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
- echo " <INPUT TYPE=hidden NAME=action VALUE=cancel>";
- echo " <INPUT TYPE=submit VALUE=\"$strcancel\">";
- echo "</FORM>";
- echo "</TD></TR></TABLE>";
- }
- html_footer();
- break;
-
- case "edit":
- html_header($course, $wdir);
- if (isset($text)) {
- $fileptr = fopen($basedir.$file,"w");
- fputs($fileptr, stripslashes($text));
- fclose($fileptr);
- displaydir($wdir);
-
- } else {
- $streditfile = get_string("edit", "", "<B>$file</B>");
- $fileptr = fopen($basedir.$file, "r");
- $contents = fread($fileptr, filesize($basedir.$file));
- fclose($fileptr);
-
- if (mimeinfo("type", $file) == "text/html") {
- if ($usehtmleditor = can_use_richtext_editor()) {
- $onsubmit = "onsubmit=\"copyrichtext(document.form.text);\"";
- } else {
- $onsubmit = "";
- }
- } else {
- $usehtmleditor = false;
- $onsubmit = "";
- }
-
- print_heading("$streditfile");
-
- echo "<TABLE><TR><TD COLSPAN=2>";
- echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=\"post\" NAME=\"form\" $onsubmit>";
- echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
- echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">";
- echo " <INPUT TYPE=hidden NAME=file VALUE=\"$file\">";
- echo " <INPUT TYPE=hidden NAME=action VALUE=edit>";
- print_textarea($usehtmleditor, 25, 80, 680, 400, "text", $contents);
- echo "</TD></TR><TR><TD>";
- echo " <INPUT TYPE=submit VALUE=\"".get_string("savechanges")."\">";
- echo "</FORM>";
- echo "</TD><TD>";
- echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=get>";
- echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
- echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
- echo " <INPUT TYPE=hidden NAME=action VALUE=cancel>";
- echo " <INPUT TYPE=submit VALUE=\"".get_string("cancel")."\">";
- echo "</FORM>";
- echo "</TD></TR></TABLE>";
-
- if ($usehtmleditor) {
- print_richedit_javascript("form", "text", "yes");
- }
-
-
- }
- html_footer();
- break;
-
- case "zip":
- if (!empty($name)) {
- html_header($course, $wdir);
- $name = clean_filename($name);
- if (empty($CFG->zip)) { // Use built-in php-based zip function
- $files = array();
- foreach ($USER->filelist as $file) {
- $files[] = "$basedir/$file";
- }
- include_once('../pclzip/pclzip.lib.php');
- $archive = new PclZip("$basedir/$wdir/$name");
- if (($list = $archive->create($files,'',"$basedir/$wdir/")) == 0) {
- error($archive->errorInfo(true));
- }
- } else { // Use external zip program
- $files = "";
- foreach ($USER->filelist as $file) {
- $files .= basename($file);
- $files .= " ";
- }
- $command = "cd $basedir/$wdir ; $CFG->zip -r $name $files";
- Exec($command);
- }
- clearfilelist();
- displaydir($wdir);
-
- } else {
- html_header($course, $wdir, "form.name");
-
- if (setfilelist($_POST)) {
- echo "<P ALIGN=CENTER>".get_string("youareabouttocreatezip").":</P>";
- print_simple_box_start("center");
- printfilelist($USER->filelist);
- print_simple_box_end();
- echo "<BR>";
- echo "<P ALIGN=CENTER>".get_string("whattocallzip");
- echo "<TABLE><TR><TD>";
- echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=post NAME=form>";
- echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
- echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">";
- echo " <INPUT TYPE=hidden NAME=action VALUE=zip>";
- echo " <INPUT TYPE=text NAME=name SIZE=35 VALUE=\"new.zip\">";
- echo " <INPUT TYPE=submit VALUE=\"".get_string("createziparchive")."\">";
- echo "</FORM>";
- echo "</TD><TD>";
- echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=get>";
- echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
- echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
- echo " <INPUT TYPE=hidden NAME=action VALUE=cancel>";
- echo " <INPUT TYPE=submit VALUE=\"".get_string("cancel")."\">";
- echo "</FORM>";
- echo "</TD></TR></TABLE>";
- } else {
- displaydir($wdir);
- clearfilelist();
- }
- }
- html_footer();
- break;
-
- case "unzip":
- html_header($course, $wdir);
- if (!empty($file)) {
- $strname = get_string("name");
- $strsize = get_string("size");
- $strmodified = get_string("modified");
- $strstatus = get_string("status");
- $strok = get_string("ok");
- $strunpacking = get_string("unpacking", "", $file);
-
- echo "<P ALIGN=CENTER>$strunpacking:</P>";
-
- $file = basename($file);
-
- if (empty($CFG->unzip)) { // Use built-in php-based unzip function
- include_once('../pclzip/pclzip.lib.php');
- $archive = new PclZip("$basedir/$wdir/$file");
- if (!$list = $archive->extract("$basedir/$wdir")) {
- error($archive->errorInfo(true));
- } else { // print some output
- echo "<table cellpadding=\"4\" cellspacing=\"2\" border=\"0\" width=640>";
- echo "<tr><th align=left>$strname</th>";
- echo "<th align=right>$strsize</th>";
- echo "<th align=right>$strmodified</th>";
- echo "<th align=right>$strstatus</th></tr>";
- foreach ($list as $item) {
- echo "<tr>";
- $item['filename'] = str_replace("$basedir/$wdir/", "", $item['filename']);
- print_cell("left", $item['filename']);
- if (! $item['folder']) {
- print_cell("right", display_size($item['size']));
- } else {
- echo "<td> </td>";
- }
- $filedate = userdate($item['mtime'], get_string("strftimedatetime"));
- print_cell("right", $filedate);
- print_cell("right", $item['status']);
- echo "</tr>";
- }
- echo "</table>";
- }
-
- } else { // Use external unzip program
- print_simple_box_start("center");
- echo "<PRE>";
- $command = "cd $basedir/$wdir ; $CFG->unzip -o $file 2>&1";
- passthru($command);
- echo "</PRE>";
- print_simple_box_end();
- }
-
- echo "<CENTER><FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=get>";
- echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
- echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
- echo " <INPUT TYPE=hidden NAME=action VALUE=cancel>";
- echo " <INPUT TYPE=submit VALUE=\"$strok\">";
- echo "</FORM>";
- echo "</CENTER>";
- } else {
- displaydir($wdir);
- }
- html_footer();
- break;
-
- case "listzip":
- html_header($course, $wdir);
- if (!empty($file)) {
- $strname = get_string("name");
- $strsize = get_string("size");
- $strmodified = get_string("modified");
- $strok = get_string("ok");
- $strlistfiles = get_string("listfiles", "", $file);
-
- echo "<P ALIGN=CENTER>$strlistfiles:</P>";
- $file = basename($file);
-
- include_once('../lib/pclzip/pclzip.lib.php');
- $archive = new PclZip("$basedir/$wdir/$file");
- if (!$list = $archive->listContent("$basedir/$wdir")) {
- notify($archive->errorInfo(true));
-
- } else {
- echo "<table cellpadding=\"4\" cellspacing=\"2\" border=\"0\" width=640>";
- echo "<tr><th align=left>$strname</th><th align=right>$strsize</th><th align=right>$strmodified</th></tr>";
- foreach ($list as $item) {
- echo "<tr>";
- print_cell("left", $item['filename']);
- if (! $item['folder']) {
- print_cell("right", display_size($item['size']));
- } else {
- echo "<td> </td>";
- }
- $filedate = userdate($item['mtime'], get_string("strftimedatetime"));
- print_cell("right", $filedate);
- echo "</tr>";
- }
- echo "</table>";
- }
- echo "<br><center><form action=\"".$_SERVER['PHP_SELF']."\" method=get>";
- echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
- echo " <INPUT TYPE=hidden NAME=wdir VALUE=$wdir>";
- echo " <INPUT TYPE=hidden NAME=action VALUE=cancel>";
- echo " <INPUT TYPE=submit VALUE=\"$strok\">";
- echo "</FORM>";
- echo "</CENTER>";
- } else {
- displaydir($wdir);
- }
- html_footer();
- break;
-
- case "torte":
- if($_POST)
- {
- while(list($key, $val) = each($_POST))
- {
- if(ereg("file([0-9]+)", $key, $regs))
- {
- $file = $val;
- }
- }
- if(@filetype($CFG->dataroot ."/". $course->id . $file) == "file")
- {
- if(mimeinfo("icon", $file) == "image.gif")
- {
- $url = $CFG->wwwroot ."/file.php?file=/" .$course->id . $file;
- runjavascript($url);
- }
- else
- {
- print "File is not a image!";
- }
- }
- else
- {
- print "You cannot insert FOLDER into richtext editor!!!";
- }
- }
- break;
- case "cancel";
- clearfilelist();
-
- default:
- html_header($course, $wdir);
- displaydir($wdir);
- html_footer();
- break;
-}
-
-
-/// FILE FUNCTIONS ///////////////////////////////////////////////////////////
-
-
-function fulldelete($location) {
- if (is_dir($location)) {
- $currdir = opendir($location);
- while ($file = readdir($currdir)) {
- if ($file <> ".." && $file <> ".") {
- $fullfile = $location."/".$file;
- if (is_dir($fullfile)) {
- if (!fulldelete($fullfile)) {
- return false;
- }
- } else {
- if (!unlink($fullfile)) {
- return false;
- }
- }
- }
- }
- closedir($currdir);
- if (! rmdir($location)) {
- return false;
- }
-
- } else {
- if (!unlink($location)) {
- return false;
- }
- }
- return true;
-}
-
-
-
-function setfilelist($VARS) {
- global $USER;
-
- $USER->filelist = array ();
- $USER->fileop = "";
-
- $count = 0;
- foreach ($VARS as $key => $val) {
- if (substr($key,0,4) == "file") {
- $count++;
- $USER->filelist[] = rawurldecode($val);
- }
- }
- return $count;
-}
-
-function clearfilelist() {
- global $USER;
-
- $USER->filelist = array ();
- $USER->fileop = "";
-}
-
-
-function printfilelist($filelist) {
- global $basedir, $CFG;
-
- foreach ($filelist as $file) {
- if (is_dir($basedir.$file)) {
- echo "<IMG SRC=\"$CFG->wwwroot/files/pix/folder.gif\" HEIGHT=16 WIDTH=16> $file<BR>";
- $subfilelist = array();
- $currdir = opendir($basedir.$file);
- while ($subfile = readdir($currdir)) {
- if ($subfile <> ".." && $subfile <> ".") {
- $subfilelist[] = $file."/".$subfile;
- }
- }
- printfilelist($subfilelist);
-
- } else {
- $icon = mimeinfo("icon", $file);
- echo "<IMG SRC=\"$CFG->wwwroot/files/pix/$icon\" HEIGHT=16 WIDTH=16> $file<BR>";
- }
- }
-}
-
-
-function print_cell($alignment="center", $text=" ") {
- echo "<TD ALIGN=\"$alignment\" NOWRAP>";
- echo "<FONT SIZE=\"-1\" FACE=\"Arial, Helvetica\">";
- echo "$text";
- echo "</FONT>";
- echo "</TD>\n";
-}
-
-function displaydir ($wdir) {
-// $wdir == / or /a or /a/b/c/d etc
-
- global $basedir;
- global $id;
- global $USER, $CFG;
-
- $fullpath = $basedir.$wdir;
-
- $directory = opendir($fullpath); // Find all files
- while ($file = readdir($directory)) {
- if ($file == "." || $file == "..") {
- continue;
- }
-
- if (is_dir($fullpath."/".$file)) {
- $dirlist[] = $file;
- } else {
- $filelist[] = $file;
- }
- }
- closedir($directory);
-
- $strname = get_string("name");
- $strsize = get_string("size");
- $strmodified = get_string("modified");
- $straction = get_string("action");
- $strmakeafolder = get_string("makeafolder");
- $struploadafile = get_string("uploadafile");
- $strwithchosenfiles = get_string("withchosenfiles");
- $strmovetoanotherfolder = get_string("movetoanotherfolder");
- $strmovefilestohere = get_string("movefilestohere");
- $strdeletecompletely = get_string("deletecompletely");
- $strcreateziparchive = get_string("createziparchive");
- $strrename = get_string("rename");
- $stredit = get_string("edit");
- $strunzip = get_string("unzip");
- $strlist = get_string("list");
- $strchoose = get_string("choose");
-
-
- echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=post NAME=dirform>";
- echo "<TABLE BORDER=0 cellspacing=2 cellpadding=2 width=640>";
- echo "<TR>";
- echo "<TH WIDTH=5></TH>";
- echo "<TH ALIGN=left>$strname</TH>";
- echo "<TH ALIGN=right>$strsize</TH>";
- echo "<TH ALIGN=right>$strmodified</TH>";
- echo "<TH ALIGN=right>$straction</TH>";
- echo "</TR>\n";
-
- if ($wdir == "/") {
- $wdir = "";
- }
-
- $count = 0;
-
- if (!empty($dirlist)) {
- asort($dirlist);
- foreach ($dirlist as $dir) {
-
- $count++;
-
- $filename = $fullpath."/".$dir;
- $fileurl = rawurlencode($wdir."/".$dir);
- $filesafe = rawurlencode($dir);
- $filedate = userdate(filectime($filename), "%d %b %Y, %I:%M %p");
-
- echo "<TR>";
-
- print_cell("center", "<INPUT TYPE=checkbox NAME=\"file$count\" VALUE=\"$fileurl\">");
- print_cell("left", "<A HREF=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$fileurl\"><IMG SRC=\"$CFG->wwwroot/files/pix/folder.gif\" HEIGHT=16 WIDTH=16 BORDER=0 ALT=\"Folder\"></A> <A HREF=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$fileurl\">".htmlspecialchars($dir)."</A>");
- print_cell("right", "-");
- print_cell("right", $filedate);
- print_cell("right", "<A HREF=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&file=$filesafe&action=rename\">$strrename</A>");
-
- echo "</TR>";
- }
- }
-
-
- if (!empty($filelist)) {
- asort($filelist);
- foreach ($filelist as $file) {
-
- $icon = mimeinfo("icon", $file);
-
- $count++;
- $filename = $fullpath."/".$file;
- $fileurl = "$wdir/$file";
- $filesafe = rawurlencode($file);
- $fileurlsafe = rawurlencode($fileurl);
- $filedate = userdate(filectime($filename), "%d %b %Y, %I:%M %p");
-
- echo "<tr>";
-
- print_cell("center", "<INPUT TYPE=\"checkbox\" NAME=\"file$count\" VALUE=\"$fileurl\">");
- echo "<td align=left nowrap>";
- if ($CFG->slasharguments) {
- $ffurl = "/file.php/$id$fileurl";
- } else {
- $ffurl = "/file.php?file=/$id$fileurl";
- }
- link_to_popup_window ($ffurl, "display",
- "<IMG SRC=\"$CFG->wwwroot/files/pix/$icon\" HEIGHT=16 WIDTH=16 BORDER=0 ALT=\"File\">",
- 480, 640);
- echo "<font size=\"-1\" face=\"Arial, Helvetica\">";
- link_to_popup_window ($ffurl, "display",
- htmlspecialchars($file),
- 480, 640);
- echo "</font></td>";
-
- $file_size = filesize($filename);
- print_cell("right", display_size($file_size));
- print_cell("right", $filedate);
-
- if ($icon == "text.gif" || $icon == "html.gif") {
- $edittext = "<a href=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&file=$fileurl&action=edit\">$stredit</a>";
- } else if ($icon == "zip.gif") {
- $edittext = "<a href=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&file=$fileurl&action=unzip\">$strunzip</a> ";
- $edittext .= "<a href=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&file=$fileurl&action=listzip\">$strlist</a> ";
- } else if ($icon == "image.gif") {
- $edittext = "<b><a onMouseDown=\"return set_value('$CFG->wwwroot/$ffurl')\" href=\"\">$strchoose</a></b>";
- } else {
- $edittext = "";
- }
- print_cell("right", "$edittext <A HREF=\"".basename($_SERVER['PHP_SELF'])."?id=$id&wdir=$wdir&file=$filesafe&action=rename\">$strrename</A>");
-
- echo "</TR>";
- }
- }
- echo "</TABLE>";
- echo "<hr width=640 align=center noshade size=1>";
-
- if (empty($wdir)) {
- $wdir = "/";
- }
-
- echo "<TABLE BORDER=0 cellspacing=2 cellpadding=2 width=640>";
- echo "<TR><TD>";
- echo "<INPUT TYPE=hidden NAME=id VALUE=\"$id\">";
- echo "<INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\"> ";
- $options = array (
- "move" => "$strmovetoanotherfolder",
- "delete" => "$strdeletecompletely",
- "zip" => "$strcreateziparchive"
- );
- if (!empty($count)) {
- choose_from_menu ($options, "action", "", "$strwithchosenfiles...", "javascript:document.dirform.submit()");
- }
-
- echo "</FORM>";
- echo "<TD ALIGN=center>";
- if (!empty($USER->fileop) and ($USER->fileop == "move") and ($USER->filesource <> $wdir)) {
- echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=get>";
- echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
- echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">";
- echo " <INPUT TYPE=hidden NAME=action VALUE=paste>";
- echo " <INPUT TYPE=submit VALUE=\"$strmovefilestohere\">";
- echo "</FORM>";
- }
- echo "<TD ALIGN=right>";
- echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=get>";
- echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
- echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">";
- echo " <INPUT TYPE=hidden NAME=action VALUE=mkdir>";
- echo " <INPUT TYPE=submit VALUE=\"$strmakeafolder\">";
- echo "</FORM>";
- echo "</TD>";
- echo "<TD ALIGN=right>";
- echo "<FORM ACTION=\"".$_SERVER['PHP_SELF']."\" METHOD=get>";
- echo " <INPUT TYPE=hidden NAME=id VALUE=$id>";
- echo " <INPUT TYPE=hidden NAME=wdir VALUE=\"$wdir\">";
- echo " <INPUT TYPE=hidden NAME=action VALUE=upload>";
- echo " <INPUT TYPE=submit VALUE=\"$struploadafile\">";
- echo "</FORM>";
- echo "</TD></TR>";
- echo "</TABLE>";
- echo "<HR WIDTH=640 ALIGN=CENTER NOSHADE SIZE=1>";
-
-}
-
-?>
+++ /dev/null
-<!--\r
-#################################################################################\r
-##\r
-## HTML Text Editing Component for hosting in Web Pages\r
-## Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-##\r
-## This library is free software; you can redistribute it and/or\r
-## modify it under the terms of the GNU Lesser General Public\r
-## License as published by the Free Software Foundation; either\r
-## version 2.1 of the License, or (at your option) any later version.\r
-##\r
-## This library is distributed in the hope that it will be useful,\r
-## but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-## Lesser General Public License for more details.\r
-##\r
-## You should have received a copy of the GNU LesserGeneral Public License\r
-## along with this program; if not a copy can be obtained from\r
-##\r
-## http://www.gnu.org/copyleft/lesser.html\r
-##\r
-## or by writing to:\r
-##\r
-## Free Software Foundation, Inc.\r
-## 59 Temple Place - Suite 330,\r
-## Boston,\r
-## MA 02111-1307,\r
-## USA.\r
-##\r
-## Original Developer:\r
-##\r
-## Austin David France\r
-## Ramesys (Contracting Services) Limited\r
-## Mentor House\r
-## Ainsworth Street\r
-## Blackburn\r
-## Lancashire\r
-## BB1 6AY\r
-## United Kingdom\r
-## email: Austin.France@Ramesys.com\r
-##\r
-## Home Page: http://richtext.sourceforge.net/\r
-## Support: http://richtext.sourceforge.net/\r
-##\r
-#################################################################################\r
--->\r
-<html>\r
-<head>\r
-<title>Acknowledgements</title>\r
-<style type="text/css">\r
-code { font-size: 8pt; font-family: "Andale Mono", "Courier New"}\r
-h1 { font-size: 240%; }\r
-b { font-size: 120%; }\r
-</style>\r
-<base target="_blank">\r
-</head>\r
-<body><center><code>\r
-<b>PROJECT MANAGER</b><br>\r
-<br>\r
-AUSTIN DAVID FRANCE<br>\r
-<a href="http://sourceforge.net/users/third_of_five/">http://sourceforge.net/users/third_of_five/</a><br>\r
-<br>\r
-<br>\r
-<b>LEAD PROGRAMMER</b><br>\r
-<br>\r
-AUSTIN DAVID FRANCE<br>\r
-<a href="http://sourceforge.net/users/third_of_five/">http://sourceforge.net/users/third_of_five/</a><br>\r
-<br>\r
-<br>\r
-<b>DEVELOPERS</b><br>\r
-<br>\r
-William R. Cook<br>\r
-<a href="http://sourceforge.net/users/wcook/">http://sourceforge.net/users/wcook/</a><br>\r
-<br>\r
-Bill Chalmers<br>\r
-<a href="http://sourceforge.net/users/bchalmers/">http://sourceforge.net/users/bchalmers/</a><br>\r
-<br>\r
-Leon Reinders<br>\r
-<a href="http://sourceforge.net/users/leonreinders/">http://sourceforge.net/users/leonreinders/</a><br>\r
-<br>\r
-Torbjørn Engedal<br>\r
-<a href="http://sourceforge.net/users/torbjoen/">http://sourceforge.net/users/torbjoen/</a><br>\r
-<br>\r
-Jan Seda<br>\r
-<a href="http://sourceforge.net/users/aramir/">http://sourceforge.net/users/aramir/</a><br>\r
-<br>\r
-Dave Otto<br>\r
-<a href="http://sourceforge.net/users/daveotto/">http://sourceforge.net/users/daveotto/</a><br>\r
-<br>\r
-<br>\r
-<b>RELEASE TECHNITIONS</b><br>\r
-<br>\r
-William R. Cook<br>\r
-<a href="http://sourceforge.net/users/wcook/">http://sourceforge.net/users/wcook/</a><br>\r
-<br>\r
-AUSTIN DAVID FRANCE<br>\r
-<a href="http://sourceforge.net/users/third_of_five/">http://sourceforge.net/users/third_of_five/</a><br>\r
-<br>\r
-<br>\r
-<b>DREAMWEAVER EXTENSION</b><br>\r
-<br>\r
-Bill Chalmers<br>\r
-<a href="http://sourceforge.net/users/bchalmers/">http://sourceforge.net/users/bchalmers/</a><br>\r
-</code></center></body></html>\r
+++ /dev/null
-/*******************************************************************************\r
-**\r
-** HTML Text Editing Component for hosting in Web Pages\r
-** Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-** \r
-** This library is free software; you can redistribute it and/or\r
-** modify it under the terms of the GNU Lesser General Public\r
-** License as published by the Free Software Foundation; either\r
-** version 2.1 of the License, or (at your option) any later version.\r
-**\r
-** This library is distributed in the hope that it will be useful,\r
-** but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-** Lesser General Public License for more details.\r
-**\r
-** You should have received a copy of the GNU LesserGeneral Public License\r
-** along with this program; if not a copy can be obtained from \r
-**\r
-** http://www.gnu.org/copyleft/lesser.html\r
-**\r
-** or by writing to:\r
-**\r
-** Free Software Foundation, Inc.\r
-** 59 Temple Place - Suite 330,\r
-** Boston,\r
-** MA 02111-1307,\r
-** USA.\r
-** \r
-** Original Developer:\r
-**\r
-** Austin David France\r
-** Ramesys (Contracting Services) Limited\r
-** Mentor House\r
-** Ainsworth Street\r
-** Blackburn\r
-** Lancashire\r
-** BB1 6AY\r
-** United Kingdom\r
-** email: Austin.France@Ramesys.com\r
-**\r
-** Home Page: http://richtext.sourceforge.net/\r
-** Support: http://richtext.sourceforge.net/\r
-** \r
-*******************************************************************************/\r
-\r
-.rebar #featureHistory { display: ; } /* Change to display: none to disable history feature */\r
-.rebar #featureSource { display: ; } /* Change to display: none to disable source feature */
\ No newline at end of file
+++ /dev/null
-<%@language="JavaScript"%>\r
-<!--\r
-#################################################################################\r
-##\r
-## HTML Text Editing Component for hosting in Web Pages\r
-## Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-##\r
-## This library is free software; you can redistribute it and/or\r
-## modify it under the terms of the GNU Lesser General Public\r
-## License as published by the Free Software Foundation; either\r
-## version 2.1 of the License, or (at your option) any later version.\r
-##\r
-## This library is distributed in the hope that it will be useful,\r
-## but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-## Lesser General Public License for more details.\r
-##\r
-## You should have received a copy of the GNU LesserGeneral Public License\r
-## along with this program; if not a copy can be obtained from\r
-##\r
-## http://www.gnu.org/copyleft/lesser.html\r
-##\r
-## or by writing to:\r
-##\r
-## Free Software Foundation, Inc.\r
-## 59 Temple Place - Suite 330,\r
-## Boston,\r
-## MA 02111-1307,\r
-## USA.\r
-##\r
-## Original Developer:\r
-##\r
-## Austin David France\r
-## Ramesys (Contracting Services) Limited\r
-## Mentor House\r
-## Ainsworth Street\r
-## Blackburn\r
-## Lancashire\r
-## BB1 6AY\r
-## United Kingdom\r
-## email: Austin.France@Ramesys.com\r
-##\r
-## Home Page: http://richtext.sourceforge.net/\r
-## Support: http://richtext.sourceforge.net/\r
-##\r
-#################################################################################\r
--->\r
-<%\r
-var strHTML = Request.Form("text").Item();\r
-if (strHTML)\r
-{\r
- // Update your database here\r
- // ...\r
-\r
- // Confirmation\r
- Response.Write("<P>Database Updated</P>");\r
- Response.Write("<P>HTML:-<hr>" + Server.HTMLEncode(strHTML) + "</P>");\r
- Response.End();\r
-}\r
-\r
-// Get your HTML from the datbase here\r
-strHTML = '<H1>Heading 1</H1>'\r
- + '<H2>Heading 2</H2>'\r
- + '<H3>Heading 3</H3>'\r
- + '<P>Normal</P>'\r
- + '<P>Welcome to the richtext text editor, the HTML text editor which works inside a web page.</P>'\r
- + '<P>This is <a href="http://www.bakedbeanandtomatosoup.co.uk/">Link</a>'\r
- ;\r
-%>\r
-<HTML>\r
-<HEAD>\r
-<TITLE>Edit Text</TITLE>\r
-<META content="HTML 4.0" name=vs_targetSchema />\r
-<META content="Microsoft FrontPage 4.0" name=GENERATOR />\r
-</HEAD>\r
-<BODY leftMargin=0 topMargin=0 scroll="no" style="border:0">\r
-\r
-<object id="richedit" style="BACKGROUND-COLOR: buttonface" data="richedit.html"\r
-width="100%" height="75%" type="text/x-scriptlet" VIEWASTEXT>\r
- </object>\r
-<div id="debug">\r
-</div>\r
-\r
-<form id="theForm" method="post">\r
-<textarea name="text" style="display:none" rows="1" cols="20"><%=strHTML%></textarea>\r
-</form>\r
-\r
-<SCRIPT language="JavaScript" event="onload" for="window">\r
- var win = window.open('about:debugWindow',\r
- '_blank',\r
- 'width=1,height=1,top=-100,left=-100,resizable=yes,scrollbars=yes,status=no,menubar=no,toolbar=no,location=no'\r
- );\r
- win.document.write('<html>'\r
- + '<head>'\r
- + '<title>Editor Debug Window</title>'\r
- + '<style type="text/css">'\r
- + 'div#debug {'\r
- + 'border: 1px inset activeborder;'\r
- + 'overflow: auto;'\r
- + 'font-family: "Lucida Sans Unicode", "Verdana", "Arial";'\r
- + 'height: 100%;'\r
- + '}'\r
- + 'div#debug td {'\r
- + 'font-size: 8pt;'\r
- + 'vertical-align: top;'\r
- + '}'\r
- + 'div#debug th {'\r
- + 'font-size: 8pt;'\r
- + 'text-align: left;'\r
- + 'color: white;'\r
- + 'background-color: activecaption;'\r
- + '}'\r
- + '</style>'\r
- + '</head>'\r
- + '<body topmargin="0" leftmargin="0">'\r
- + '<table width="100%" height="100%">'\r
- + '<tr><td valign="top" width="100%" height="100%"><div id="debug">'\r
- + '</div></td></tr>'\r
- + '<tr valign="bottom"><td align="right">'\r
- + '<input type="button" value="close" onclick="window.close()" />'\r
- + '</td></tr>'\r
- + '</table>'\r
- + '</body>'\r
- + '<s'+'cript>'\r
- + 'var w = window.screen.availWidth/4, h = window.screen.availHeight/2;'\r
- + 'window.resizeTo(w,h);'\r
- + 'window.moveTo((window.screen.availWidth-w)/8,(window.screen.availHeight-h)/4);'\r
- + '</sc'+'ript>'\r
- + '</html>'\r
- );\r
- richedit.debugWindow = win.document.all("debug");\r
- richedit.options = "history=no;source=yes";\r
- richedit.addField("to", "To", 128, "someone@somewhere.com");\r
- richedit.addField("cc", "Cc", 128, "someone@else.com");\r
- richedit.addField("subject", "Subject", 128, "Something about Nothing");\r
- richedit.docHtml = theForm.text.innerText;\r
-</SCRIPT>\r
-\r
-<SCRIPT language="JavaScript" event="onscriptletevent(name, eventData)" for="richedit">\r
- if (name == "post") {\r
- richedit.getValue("subject");\r
- theForm.text.value = eventData;\r
- theForm.submit();\r
- }\r
-</SCRIPT>\r
-\r
-</BODY>\r
-</HTML>\r
+++ /dev/null
-/*******************************************************************************\r
-**\r
-** HTML Text Editing Component for hosting in Web Pages\r
-** Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-** \r
-** This library is free software; you can redistribute it and/or\r
-** modify it under the terms of the GNU Lesser General Public\r
-** License as published by the Free Software Foundation; either\r
-** version 2.1 of the License, or (at your option) any later version.\r
-**\r
-** This library is distributed in the hope that it will be useful,\r
-** but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-** Lesser General Public License for more details.\r
-**\r
-** You should have received a copy of the GNU LesserGeneral Public License\r
-** along with this program; if not a copy can be obtained from \r
-**\r
-** http://www.gnu.org/copyleft/lesser.html\r
-**\r
-** or by writing to:\r
-**\r
-** Free Software Foundation, Inc.\r
-** 59 Temple Place - Suite 330,\r
-** Boston,\r
-** MA 02111-1307,\r
-** USA.\r
-** \r
-** Original Developer:\r
-**\r
-** Austin David France\r
-** Ramesys (Contracting Services) Limited\r
-** Mentor House\r
-** Ainsworth Street\r
-** Blackburn\r
-** Lancashire\r
-** BB1 6AY\r
-** United Kingdom\r
-** email: Austin.France@Ramesys.com\r
-**\r
-** Home Page: http://richtext.sourceforge.net/\r
-** Support: http://richtext.sourceforge.net/\r
-** \r
-*******************************************************************************/\r
-\r
-BODY { background-color: buttonface; }\r
-TD, INPUT, SELECT { font-family: "MS Sans Serif"; font-size: xx-small; vertical-align: middle; }\r
-TABLE.dlg { border:0; }\r
-.dlg TD { align: left; height: 20; }\r
-.dlg INPUT { border-size: 2px; }\r
-INPUT.button { border-top: 1px solid white; border-left: 1px solid white;\r
-border-bottom: 1px solid black; border-right: 1px solid black;\r
-font-size: x-small; width: 60; }\r
-SELECT { height: 75%; }\r
+++ /dev/null
-<!--\r
-#################################################################################\r
-##\r
-## HTML Text Editing Component for hosting in Web Pages\r
-## Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-##\r
-## This library is free software; you can redistribute it and/or\r
-## modify it under the terms of the GNU Lesser General Public\r
-## License as published by the Free Software Foundation; either\r
-## version 2.1 of the License, or (at your option) any later version.\r
-##\r
-## This library is distributed in the hope that it will be useful,\r
-## but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-## Lesser General Public License for more details.\r
-##\r
-## You should have received a copy of the GNU LesserGeneral Public License\r
-## along with this program; if not a copy can be obtained from\r
-##\r
-## http://www.gnu.org/copyleft/lesser.html\r
-##\r
-## or by writing to:\r
-##\r
-## Free Software Foundation, Inc.\r
-## 59 Temple Place - Suite 330,\r
-## Boston,\r
-## MA 02111-1307,\r
-## USA.\r
-##\r
-## Original Developer:\r
-##\r
-## Austin David France\r
-## Ramesys (Contracting Services) Limited\r
-## Mentor House\r
-## Ainsworth Street\r
-## Blackburn\r
-## Lancashire\r
-## BB1 6AY\r
-## United Kingdom\r
-## email: Austin.France@Ramesys.com\r
-##\r
-## Home Page: http://richtext.sourceforge.net/\r
-## Support: http://richtext.sourceforge.net/\r
-##\r
-#################################################################################\r
--->\r
-<html>\r
-<head>\r
-<meta name=vs_targetSchema content="HTML 4.0">\r
-<meta name="GENERATOR" content="Microsoft Visual Studio 7.0">\r
-<LINK rel="stylesheet" type="text/css" href="dialog.css">\r
-<title>About Richtext Editor</title>\r
-</head>\r
-\r
-<body topmargin="0" leftmargin="0" style="border: 0; margin: 0;" scroll="no">\r
-<table class="dlg" cellpadding="1" cellspacing="0" border="0">\r
-<tr><td rowspan="10" width="2"> </td>\r
- <td colspan="2" height="12"><table cellspacing="0"><tr><td valign="middle"><hr width="10"></td><td nowrap> <b>Richtext Editor</b> </td><td valign="middle" width="100%"><hr width="100%"></td><td nowrap> <b>Version rt-0.3.0-beta-1</b> </td><td valign="middle"><hr width="10"></td></tr></table></td></tr>\r
-<tr><td rowspan="4" valign="top"><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"\r
- codebase="http://active.macromedia.com/flash4/cabs/swflash.cab#version=4,0,0,0"\r
- id="about_logo" width="64" height="64">\r
- <param name="movie" value="about_logo.swf">\r
- <param name="quality" value="high">\r
- <param name="wmode" value="transparent">\r
- <param name="bgcolor" value="#BBBBBB">\r
- <embed name="about_logo" src="about_logo.swf" quality="high" bgcolor="#FFFFFF"\r
- width="64" height="64"\r
- type="application/x-shockwave-flash"\r
- pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">\r
- </embed>\r
-</object></td>\r
- <td height="12">Copyright © 2001-2002, <a href="http://www.cs.ramesys.com/" target="_blank" hidefocus>Ramesys Construction Services</A></td></tr>\r
-<tr><td height="12"><a href="http://richtext.sourceforge.net" target="_blank" hidefocus>http://richtext.sourceforge.net/</a></td></tr>\r
-<tr><td height="12"></td></tr>\r
-<tr><td height="12"></td></tr>\r
-<tr><td colspan="2" height="12">Acknowledgments:</td></tr>\r
-<tr><td colspan="2" height="100"><iframe style="margin: 0; padding: 0" src="credits.html" width="485" height="100"></iframe></td></tr>\r
-<tr><td colspan="2" height="12">License Agreement:</td></tr>\r
-<tr><td colspan="2" height="100"><iframe style="margin: 0; padding: 0" src="license.html" width="485" height="100"></iframe></td></tr>\r
-<tr>\r
- <td><td colspan="2" height="28" align="right" valign="middle">\r
- <input class="button" type="button" value="Close" title="Close Dialog" onclick="self.close()"></td>\r
-</tr>\r
-</table>\r
-</body>\r
-</html>\r
+++ /dev/null
-<!--\r
-################################################################################\r
-##\r
-## HTML Text Editing Component for hosting in Web Pages\r
-## Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-##\r
-## This library is free software; you can redistribute it and/or\r
-## modify it under the terms of the GNU Lesser General Public\r
-## License as published by the Free Software Foundation; either\r
-## version 2.1 of the License, or (at your option) any later version.\r
-##\r
-## This library is distributed in the hope that it will be useful,\r
-## but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-## Lesser General Public License for more details.\r
-##\r
-## You should have received a copy of the GNU LesserGeneral Public License\r
-## along with this program; if not a copy can be obtained from\r
-##\r
-## http://www.gnu.org/copyleft/lesser.html\r
-##\r
-## or by writing to:\r
-##\r
-## Free Software Foundation, Inc.\r
-## 59 Temple Place - Suite 330,\r
-## Boston,\r
-## MA 02111-1307,\r
-## USA.\r
-##\r
-## Original Developer:\r
-##\r
-## Austin David France\r
-## Ramesys (Contracting Services) Limited\r
-## Mentor House\r
-## Ainsworth Street\r
-## Blackburn\r
-## Lancashire\r
-## BB1 6AY\r
-## United Kingdom\r
-## email: Austin.France@Ramesys.com\r
-##\r
-## Home Page: http://richtext.sourceforge.net/\r
-## Support: http://richtext.sourceforge.net/\r
-##\r
-################################################################################\r
--->\r
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r
-\r
-<html>\r
-<head>\r
-<style type="text/css">\r
- BODY {\r
- background-color: buttonface;\r
- }\r
- TD, INPUT {\r
- font-family: "Sans Serif";\r
- font-size: x-small;\r
- vertical-align: middle;\r
- cursor: hand;\r
- }\r
- TD.HOVER{\r
- background-color : Fuchsia;\r
- }\r
-\r
-\r
- .dlg TD {\r
- align: left;\r
- height: 20;\r
-\r
- }\r
-\r
- .dlg INPUT {\r
- border-top: 1px solid white;\r
- border-left: 1px solid white;\r
- border-bottom: 1px solid black;\r
- border-right: 1px solid black;\r
- font-size: x-small;\r
- width: 60; }\r
-</style>\r
-<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">\r
-<!--\r
-var chars = ["!",""","#","$","%","&","'","(",")","*","+","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","~","€","\83","\84","\85","\86","\87","\88","\\89","\8a","\8b","\8c","‘","’","’","“","”","\95","–","—","\98","\99","\9a","\9b","\9c","\9f","¡","¢","£","£","¤","¥","¦","§","¨","©","ª","«","¬","","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","º","»","¼","½","¾","¿","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","×","Ø","Ù","Ú","Û","Ü","Ý","Þ","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","÷","ø","ù","ú","û","ü","ü","ý","þ","ÿ"]\r
-\r
-function tab(w,h) {\r
- var strtab = ["<TABLE border='1' cellspacing='0' cellpadding='0' align='center' bordercolor='#dcdcdc' bgcolor='#C0C0C0'>"]\r
- var k = 0;\r
- for(var i = 0; i < w; i++) {\r
- strtab[strtab.length] = "<TR>";\r
- for(var j = 0; j < h; j++) {\r
- strtab[strtab.length] = "<TD width='14' align='center' onClick='getchar(this)' onMouseOver='hover(this,true)' onMouseOut='hover(this,false)'>"+(chars[k]||'')+"</TD>";\r
- k++;\r
- }\r
- strtab[strtab.length]="</TR>";\r
- }\r
- strtab[strtab.length] = "</TABLE>";\r
- return strtab.join("\n");\r
-}\r
-\r
-function hover(obj,val) {\r
- if (!obj.innerHTML) {\r
- obj.style.cursor = "default";\r
- return;\r
- }\r
- obj.style.border = val ? "1px solid black" : "1px solid #dcdcdc";\r
- //obj.style.backgroundColor = val ? "black" : "#C0C0C0"\r
- //obj.style.color = val ? "white" : "black";\r
-}\r
-function getchar(obj) {\r
- if(!obj.innerHTML) return;\r
- window.returnValue = obj.innerHTML || "";\r
- window.close();\r
-}\r
-function cancel() {\r
- window.returnValue = null;\r
- window.close();\r
-}\r
-//-->\r
-</SCRIPT>\r
-<title>Insert Character</title>\r
-</head>\r
-\r
-<body>\r
-<table class="dlg" cellpadding="0" cellspacing="2" width="100%" height="100%">\r
-<tr><td><table width="100%"><tr><td nowrap>Choose Character</td><td valign="middle" width="100%"><hr width="100%"></td></tr></table></td></tr>\r
-<tr>\r
-<td>\r
- <table border="0" align="center" cellpadding="5">\r
- <tr valign="top">\r
- <td>\r
-\r
- <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">\r
- <!--\r
- document.write(tab(7,32))\r
- //-->\r
- </SCRIPT>\r
-\r
- </td>\r
- </tr>\r
- </table>\r
-\r
- </td>\r
- </tr>\r
-<tr><td><table width="100%"><tr><td valign="middle" width="90%"><hr width="100%"></td></tr></table></td></tr>\r
-<tr><td align="right">\r
- <input type="button" value="Close" onclick="cancel()"></td></tr>\r
-</table>\r
-\r
-\r
-</body>\r
-</html>\r
+++ /dev/null
-<!--\r
-#################################################################################\r
-##\r
-## HTML Text Editing Component for hosting in Web Pages\r
-## Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-##\r
-## This library is free software; you can redistribute it and/or\r
-## modify it under the terms of the GNU Lesser General Public\r
-## License as published by the Free Software Foundation; either\r
-## version 2.1 of the License, or (at your option) any later version.\r
-##\r
-## This library is distributed in the hope that it will be useful,\r
-## but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-## Lesser General Public License for more details.\r
-##\r
-## You should have received a copy of the GNU LesserGeneral Public License\r
-## along with this program; if not a copy can be obtained from\r
-##\r
-## http://www.gnu.org/copyleft/lesser.html\r
-##\r
-## or by writing to:\r
-##\r
-## Free Software Foundation, Inc.\r
-## 59 Temple Place - Suite 330,\r
-## Boston,\r
-## MA 02111-1307,\r
-## USA.\r
-##\r
-## Original Developer:\r
-##\r
-## Austin David France\r
-## Ramesys (Contracting Services) Limited\r
-## Mentor House\r
-## Ainsworth Street\r
-## Blackburn\r
-## Lancashire\r
-## BB1 6AY\r
-## United Kingdom\r
-## email: Austin.France@Ramesys.com\r
-##\r
-## Home Page: http://richtext.sourceforge.net/\r
-## Support: http://richtext.sourceforge.net/\r
-##\r
-#################################################################################\r
-## Authors & Contributers:\r
-##\r
-## BC Bill Chalmers [bill_paula@btinternet.com]\r
-## Font Selection\r
-##\r
-## History:\r
-##\r
-## BC 24-07-2002\r
-## Billy fixed the bug relating to picking up the current image\r
-## I fixed a small bug as a result of the above fix, nothing wrong\r
-## with billys code, if statment evaluated to true even though it shouldn't\r
-## also fixed the border attribute not being applied on insert of image\r
-## and picking up all the properties of an image being edited.\r
-#################################################################################\r
--->\r
-<html>\r
-<head>\r
-<meta name=vs_targetSchema content="HTML 4.0">\r
-<meta name="GENERATOR" content="Microsoft Visual Studio 7.0">\r
-<LINK rel="stylesheet" type="text/css" href="dialog.css">\r
-<script language="JavaScript">\r
-function attr(name, value) {\r
- if (!value || value == "") return "";\r
- return ' ' + name + '="' + value + '"';\r
-}\r
-function insertImage() {\r
- window.returnValue = '<IMG' + attr("alt", alt.value) + attr("src", url.value)\r
- + attr("align", align[align.selectedIndex].value)\r
- + ((width.value)?attr("width", width.value):"")\r
- + ((height.value)?attr("height", height.value):"")\r
- + ((vspace.value)?attr("vspace", vspace.value):"")\r
- + ((hspace.value)?attr("hspace", hspace.value):"")\r
- + ((border.value)?attr("border", border.value):attr("border",0))\r
- + '/>';\r
- window.close();\r
-}\r
-function cancel() {\r
- window.returnValue = null;\r
- window.close();\r
-}\r
-\r
-\r
-function setDefaults() {\r
- if (dialogArguments.RichEditor.selectedImage != null) {\r
- image = dialogArguments.RichEditor.selectedImage;\r
- editmode = true;\r
- fm = document.forms[0];\r
- if (image.src)\r
- url.value = image.src\r
- if (image.alt)\r
- alt.value = image.alt\r
- if (image.width)\r
- width.value = image.width\r
- if (image.height)\r
- height.value = image.height\r
- if (image.vspace)\r
- vspace.value = image.vspace\r
- if (image.hspace)\r
- hspace.value = image.hspace\r
- if (image.border)\r
- border.value = image.border\r
- if (image.align) {\r
- for (var i = 0; i < align.options.length; i++) {\r
- if (align.options[i].value == image.align) {\r
- align.options[i].selected = true;\r
- break;\r
- }\r
- } \r
- }\r
- }\r
-}\r
-\r
-function updateImage() {\r
- image.width = width.value;\r
- image.height = height.value;\r
- image.vspace = vspace.value;\r
- image.hspace = hspace.value;\r
- image.border = border.value;\r
- image.align = align.options[ align.selectedIndex ].value;\r
- window.returnValue = null\r
- window.close();\r
-}\r
-\r
-var image = null // selected image if there is one\r
-\r
-// we need to set \r
-var editmode = false // are we editing an image?\r
-if (dialogArguments.RichEditor.selectedImage != null) {\r
- editmode = true;\r
- document.write("<title>Edit Image</title>");\r
-} else {\r
- document.write("<title>Insert Image</title>");\r
-\r
-}\r
-\r
-</script>\r
-\r
-</head>\r
-\r
-<body topmargin="0" leftmargin="0" style="border: 0; margin: 0;" scroll="no" onLoad="setDefaults()">\r
-<table class="dlg" cellpadding="0" cellspacing="2" width="100%" height="100%">\r
-<tr><td colspan="5"><table width="100%"><tr><td nowrap>Picture Info </td><td valign="middle" width="100%"><hr width="100%"></td></tr></table></td></tr>\r
-<tr>\r
- <td width="10"> </td>\r
- <td width="70">Url:</td><td valign="middle" colspan="3"><input type="text" name="url" value="images/em.icon.smile.gif" size="60"></td>\r
-</tr>\r
-<tr>\r
- <td height="10"> </td>\r
- <td width="70">Alt Text:</td><td valign="middle"><input type="text" name="alt" value="" size="25"></td>\r
- <td width="70">Align:</td><td valign="middle">\r
- <select name="align">\r
- <option value="left">Left</option>\r
- <option value="absBottom">Abs Bottom</option>\r
- <option value="absMiddle">Abs Middle</option>\r
- <option value="baseline">Baseline</option>\r
- <option value="bottom">Bottom</option>\r
- <option value="middle">Middle</option>\r
- <option value="right">Right</option>\r
- <option value="textTop">Text Top</option>\r
- <option value="top">Top</option>\r
- </select></td>\r
-</tr>\r
- <td> </td>\r
- <td colspan="4" align="center" valign="top">\r
- <table width="300" border="0" align="left"><tr>\r
- <td width="70">Border:</td><td> <input type="text" name="border" value="0" size="2"></td>\r
- <td width="70">Width:</td><td valign="middle"><input type="text" name="width" value="" size="3"></td>\r
- <td width="70">Height:</td><td valign="middle"><input type="text" name="height" value="" size="3"></td>\r
- <td width="70">Vspace:</td><td valign="middle"><input type="text" name="vspace" value="0" size="2"></td>\r
- <td width="70">Hspace:</td><td valign="middle"><input type="text" name="hspace" value="0" size="2"></td>\r
- </tr></table>\r
- </td>\r
-\r
-\r
-</tr>\r
-<tr><td colspan="5"><table width="100%"><tr><td valign="middle" width="100%" colspan="2"><hr width="100%"></td></tr></table></td></tr>\r
-<tr>\r
- <td> </td>\r
- <td><td colspan="4" align="right">\r
-<script language="JavaScript">\r
-if (editmode) {\r
- document.write("<input class=\"button\" type=\"button\" value=\"Update\" title=\"Update Image\" onclick=\"updateImage()\">");\r
-} else {\r
- document.write("<input class=\"button\" type=\"button\" value=\"Insert\" title=\"Insert Image\" onclick=\"insertImage()\">");\r
-}\r
-</script>\r
-<input class="button" type="button" value="Cancel" title="Cancel Dialog" onclick="cancel()"></td>\r
-</tr>\r
-</table>\r
-</body>\r
-</html>\r
+++ /dev/null
-<!--
-#################################################################################
-##
-## HTML Text Editing Component for hosting in Web Pages
-## Copyright (C) 2001 Ramesys (Contracting Services) Limited
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU LesserGeneral Public License
-## along with this program; if not a copy can be obtained from
-##
-## http://www.gnu.org/copyleft/lesser.html
-##
-## or by writing to:
-##
-## Free Software Foundation, Inc.
-## 59 Temple Place - Suite 330,
-## Boston,
-## MA 02111-1307,
-## USA.
-##
-## Original Developer:
-##
-## Austin David France
-## Ramesys (Contracting Services) Limited
-## Mentor House
-## Ainsworth Street
-## Blackburn
-## Lancashire
-## BB1 6AY
-## United Kingdom
-## email: Austin.France@Ramesys.com
-##
-## Home Page: http://richtext.sourceforge.net/
-## Support: http://richtext.sourceforge.net/
-##
-#################################################################################
-## Authors & Contributers:
-##
-## BC Bill Chalmers [bill_paula@btinternet.com]
-## Font Selection
-##
-## History:
-##
-## BC 24-07-2002
-## Billy fixed the bug relating to picking up the current image
-## I fixed a small bug as a result of the above fix, nothing wrong
-## with billys code, if statment evaluated to true even though it shouldn't
-## also fixed the border attribute not being applied on insert of image
-## and picking up all the properties of an image being edited.
-#################################################################################
--->
-<?php
- include("../../config.php");
-
- require_variable($id);
-
- if (!$course = get_record("course", "id", $id)) {
- $course->fullname = ""; // Just to keep display happy, though browsing may fail
- }
-
-?>
-<html>
-<head>
-<meta name=vs_targetSchema content="HTML 4.0">
-<meta name="GENERATOR" content="Microsoft Visual Studio 7.0">
-<LINK rel="stylesheet" type="text/css" href="dialog.css">
-<script language="JavaScript">
-function attr(name, value) {
- if (!value || value == "") return "";
- return ' ' + name + '="' + value + '"';
-}
-function insertImage() {
- window.returnValue = '<IMG' + attr("alt", alt.value) + attr("src", url.value)
- + attr("align", align[align.selectedIndex].value)
- + ((width.value)?attr("width", width.value):"")
- + ((height.value)?attr("height", height.value):"")
- + ((vspace.value)?attr("vspace", vspace.value):"")
- + ((hspace.value)?attr("hspace", hspace.value):"")
- + ((border.value)?attr("border", border.value):attr("border",0))
- + '/>';
- window.close();
-}
-function cancel() {
- window.returnValue = null;
- window.close();
-}
-
-
-function setDefaults() {
- if (dialogArguments.RichEditor.selectedImage != null) {
- image = dialogArguments.RichEditor.selectedImage;
- editmode = true;
- fm = document.forms[0];
- if (image.src)
- url.value = image.src
- if (image.alt)
- alt.value = image.alt
- if (image.width)
- width.value = image.width
- if (image.height)
- height.value = image.height
- if (image.vspace)
- vspace.value = image.vspace
- if (image.hspace)
- hspace.value = image.hspace
- if (image.border)
- border.value = image.border
- if (image.align) {
- for (var i = 0; i < align.options.length; i++) {
- if (align.options[i].value == image.align) {
- align.options[i].selected = true;
- break;
- }
- }
- }
- }
-}
-
-function updateImage() {
- image.width = width.value;
- image.height = height.value;
- image.vspace = vspace.value;
- image.hspace = hspace.value;
- image.border = border.value;
- image.align = align.options[ align.selectedIndex ].value;
- window.returnValue = null
- window.close();
-}
-
-var image = null // selected image if there is one
-
-// we need to set
-var editmode = false // are we editing an image?
-if (dialogArguments.RichEditor.selectedImage != null) {
- editmode = true;
- document.write("<title>Edit Image</title>");
-} else {
- document.write("<title>Insert Image</title>");
-
-}
-
-function openWindow()
-{
- var url = "<?php echo "courseimages.php?id=$id" ?>";
- window.open(url,'my_new_window','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, copyhistory=yes, width=750, height=500');
-}
-
-</script>
-
-</head>
-
-<body topmargin="0" leftmargin="0" style="border: 0; margin: 0;" scroll="no" onLoad="setDefaults()">
-<table class="dlg" cellpadding="0" cellspacing="2" width="100%" height="100%">
-<tr><td colspan="5"><table width="100%"><tr><td nowrap>Picture Info </td><td valign="middle" width="100%"><hr width="100%"></td></tr></table></td></tr>
-<tr>
- <td width="10"> </td>
- <td width="70">Url:</td><td valign="middle" colspan="3"><input type="text" name="url" value="images/em.icon.smile.gif" size="60"></td>
-</tr>
-<tr>
- <td height="10"> </td>
- <td width="70">Alt Text:</td><td valign="middle"><input type="text" name="alt" value="" size="25"></td>
- <td width="70">Align:</td><td valign="middle">
- <select name="align">
- <option value="left">Left</option>
- <option value="absBottom">Abs Bottom</option>
- <option value="absMiddle">Abs Middle</option>
- <option value="baseline">Baseline</option>
- <option value="bottom">Bottom</option>
- <option value="middle">Middle</option>
- <option value="right">Right</option>
- <option value="textTop">Text Top</option>
- <option value="top">Top</option>
- </select></td>
-</tr>
- <td> </td>
- <td colspan="4" align="center" valign="top">
- <table width="300" border="0" align="left"><tr>
- <td width="70">Border:</td><td> <input type="text" name="border" value="0" size="2"></td>
- <td width="70">Width:</td><td valign="middle"><input type="text" name="width" value="" size="3"></td>
- <td width="70">Height:</td><td valign="middle"><input type="text" name="height" value="" size="3"></td>
- <td width="70">Vspace:</td><td valign="middle"><input type="text" name="vspace" value="0" size="2"></td>
- <td width="70">Hspace:</td><td valign="middle"><input type="text" name="hspace" value="0" size="2"></td>
- </tr></table>
- </td>
-
-
-</tr>
-<tr><td colspan="5"><table width="100%"><tr><td valign="middle" width="100%" colspan="2"><hr width="100%"></td></tr></table></td></tr>
-<tr>
- <td> </td>
- <td><td colspan="4" align="right">
-<script language="JavaScript">
-if (editmode) {
- document.write("<input class=\"button\" type=\"button\" value=\"Browse\" title=\"<?php echo $course->fullname ?>\" onclick=\"openWindow()\"> ");
- document.write("<input class=\"button\" type=\"button\" value=\"Update\" title=\"Update Image\" onclick=\"updateImage()\">");
-} else {
- document.write("<input class=\"button\" type=\"button\" value=\"Browse\" title=\"<?php echo $course->fullname ?>\" onclick=\"openWindow()\"> ");
- document.write("<input class=\"button\" type=\"button\" value=\"Insert\" title=\"Insert Image\" onclick=\"insertImage()\">");
-}
-</script>
-<input class="button" type="button" value="Cancel" title="Cancel Dialog" onclick="cancel()"></td>
-</tr>
-</table>
-</body>
-</html>
+++ /dev/null
-<!--\r
-#################################################################################\r
-##\r
-## HTML Text Editing Component for hosting in Web Pages\r
-## Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-##\r
-## This library is free software; you can redistribute it and/or\r
-## modify it under the terms of the GNU Lesser General Public\r
-## License as published by the Free Software Foundation; either\r
-## version 2.1 of the License, or (at your option) any later version.\r
-##\r
-## This library is distributed in the hope that it will be useful,\r
-## but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-## Lesser General Public License for more details.\r
-##\r
-## You should have received a copy of the GNU LesserGeneral Public License\r
-## along with this program; if not a copy can be obtained from\r
-##\r
-## http://www.gnu.org/copyleft/lesser.html\r
-##\r
-## or by writing to:\r
-##\r
-## Free Software Foundation, Inc.\r
-## 59 Temple Place - Suite 330,\r
-## Boston,\r
-## MA 02111-1307,\r
-## USA.\r
-##\r
-## Original Developer:\r
-##\r
-## Austin David France\r
-## Ramesys (Contracting Services) Limited\r
-## Mentor House\r
-## Ainsworth Street\r
-## Blackburn\r
-## Lancashire\r
-## BB1 6AY\r
-## United Kingdom\r
-## email: Austin.France@Ramesys.com\r
-##\r
-## Home Page: http://richtext.sourceforge.net/\r
-## Support: http://richtext.sourceforge.net/\r
-##\r
-#################################################################################\r
--->\r
-<html>\r
-<head>\r
-<meta name=vs_targetSchema content="HTML 4.0">\r
-<meta name="GENERATOR" content="Microsoft Visual Studio 7.0">\r
-<LINK rel="stylesheet" type="text/css" href="dialog.css">\r
-<title>Insert Smiley Icon </title>\r
-<script language="JavaScript">\r
-function attr(name, value) {\r
- if (!value || value == "") return "";\r
- return ' ' + name + '="' + value + '"';\r
-}\r
-function insert() {\r
- var img = window.event.srcElement;\r
- if (img) {\r
- var src = img.src.replace(/^[a-z]*:[/][/][^/]*/, "");\r
- window.returnValue = '<IMG BORDER=0 HEIGHT=15 WIDTH=15 ALIGN=ABSMIDDLE SRC=' + src + '>';\r
- window.close();\r
- }\r
-}\r
-function cancel() {\r
- window.returnValue = null;\r
- window.close();\r
-}\r
-</script>\r
-</head>\r
-\r
-<body topmargin="0" leftmargin="0" style="border: 0; margin: 0;" scroll="no">\r
-<table class="dlg" cellpadding="0" cellspacing="2" width="100%" height="100%">\r
-<tr><td><table width="100%"><tr><td nowrap>Choose an icon to insert</td><td valign="middle" width="100%"><hr width="100%"></td></tr></table></td></tr>\r
-<tr>\r
-<td>\r
- <table border="0" align="center" cellpadding="5">\r
- <tr valign="top">\r
- <td>\r
- <table border="0" align="center">\r
- <tr>\r
- <td><img border="0" hspace="10" src="../../pix/s/smiley.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>smile</td>\r
- <td><FONT FACE=Courier>:-)</td>\r
- </tr>\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/biggrin.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>big grin</td>\r
- <td><FONT FACE=Courier>:-D</td>\r
- </tr>\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/wink.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>wink</td>\r
- <td><FONT FACE=Courier>;-)</td>\r
- </tr>\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/mixed.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>mixed</td>\r
- <td><FONT FACE=Courier>:-/</td>\r
- </tr>\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/thoughtful.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>thoughtful</td>\r
- <td><FONT FACE=Courier>V-.</FONT></td>\r
- </tr>\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/tongueout.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>tongue out</td>\r
- <td><FONT FACE=Courier>:-P</td>\r
- </tr>\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/cool.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>cool</td>\r
- <td><FONT FACE=Courier>B-)</td>\r
- </tr>\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/approve.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>approve</td>\r
- <td><FONT FACE=Courier>^-)</td>\r
- </tr>\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/wideeyes.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>wide eyes</td>\r
- <td><FONT FACE=Courier>8-)</td>\r
- </tr>\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/surprise.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>surprise</td>\r
- <td><FONT FACE=Courier>8-o</td>\r
- </tr>\r
- </table>\r
- </td>\r
- <td>\r
- <table border="0" align="center">\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/sad.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>sad</td>\r
- <td><FONT FACE=Courier>:-(</td>\r
- </tr>\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/shy.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>shy</td>\r
- <td><FONT FACE=Courier>8-.</td>\r
- </tr>\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/blush.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>blush</td>\r
- <td><FONT FACE=Courier>:-I</td>\r
- </tr>\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/kiss.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>kisses</td>\r
- <td><FONT FACE=Courier>:-X</td>\r
- </tr>\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/clown.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>clown</td>\r
- <td><FONT FACE=Courier>:o)</td>\r
- </tr>\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/blackeye.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>black eye</td>\r
- <td><FONT FACE=Courier>P-|</td>\r
- </tr>\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/angry.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>angry</td>\r
- <td><FONT FACE=Courier>8-[</td>\r
- </tr>\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/dead.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>dead</td>\r
- <td><FONT FACE=Courier>xx-P</td>\r
- </tr>\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/sleepy.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>sleepy</td>\r
- <td><FONT FACE=Courier>|-.</td>\r
- </tr>\r
- <tr>\r
- <td><img alt border="0" hspace="10" src="../../pix/s/evil.gif" onclick="insert()" width="15" height="15"></td>\r
- <td>evil</td>\r
- <td><FONT FACE=Courier>}-]</td>\r
- </tr>\r
- </table>\r
- </td>\r
- </tr>\r
- </table>\r
-\r
- </td>\r
- </tr>\r
-<tr><td><table width="100%"><tr><td valign="middle" width="90%"><hr width="100%"></td></tr></table></td></tr>\r
-<tr><td align="right">\r
- <input type="button" value="Close" onclick="cancel()"></td></tr>\r
-</table>\r
-\r
-</html>\r
+++ /dev/null
-<!--\r
-#################################################################################\r
-##\r
-## HTML Text Editing Component for hosting in Web Pages\r
-## Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-##\r
-## This library is free software; you can redistribute it and/or\r
-## modify it under the terms of the GNU Lesser General Public\r
-## License as published by the Free Software Foundation; either\r
-## version 2.1 of the License, or (at your option) any later version.\r
-##\r
-## This library is distributed in the hope that it will be useful,\r
-## but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-## Lesser General Public License for more details.\r
-##\r
-## You should have received a copy of the GNU LesserGeneral Public License\r
-## along with this program; if not a copy can be obtained from\r
-##\r
-## http://www.gnu.org/copyleft/lesser.html\r
-##\r
-## or by writing to:\r
-##\r
-## Free Software Foundation, Inc.\r
-## 59 Temple Place - Suite 330,\r
-## Boston,\r
-## MA 02111-1307,\r
-## USA.\r
-##\r
-## Original Developer:\r
-##\r
-## Austin David France\r
-## Ramesys (Contracting Services) Limited\r
-## Mentor House\r
-## Ainsworth Street\r
-## Blackburn\r
-## Lancashire\r
-## BB1 6AY\r
-## United Kingdom\r
-## email: Austin.France@Ramesys.com\r
-##\r
-## Home Page: http://richtext.sourceforge.net/\r
-## Support: http://richtext.sourceforge.net/\r
-##\r
-#################################################################################\r
--->\r
-<html>\r
-<head>\r
-<meta name=vs_targetSchema content="HTML 4.0">\r
-<meta name="GENERATOR" content="Microsoft Visual Studio 7.0">\r
-<LINK rel="stylesheet" type="text/css" href="dialog.css">\r
-<title>Insert Table</title>\r
-<script language="JavaScript">\r
-function attr(name, value) {\r
- if (!value || value == "") return "";\r
- return ' ' + name + '="' + value + '"';\r
-}\r
-\r
- function explore(obj, pnt) {\r
- var i;\r
- for (i in obj) {\r
- alert(i +"="+obj[i]);\r
- }\r
- }\r
-\r
-function insertTable() {\r
-\r
-\r
- // use DOM functions to create the table in the dlg_ins_table window\r
- // and then return the innerHTML of the DIV containing the table\r
-\r
- var nRows = rows.value ? parseInt(rows.value) : 2;\r
- var nCols = cols.value ? parseInt(cols.value) : 2;\r
-\r
- // create the div that will contain the table\r
- var d = document.body.appendChild( document.createElement("DIV") );\r
-\r
- // create the table in the div\r
- var t = d.appendChild( document.createElement("TABLE") );\r
- var tb = t.appendChild( document.createElement("TBODY") );\r
- \r
- for (var i = 0; i < nRows; i++) {\r
- var tr = tb.appendChild( document.createElement("TR") );\r
- for (var j = 0; j < nCols; j++) {\r
- var td = tr.appendChild( document.createElement("TD") );\r
- td.style.height = rowHeight.value;\r
- td.style.width = colWidth.value;\r
- }\r
- }\r
-\r
- // set table properties\r
- t.border = borderWidth.value;\r
- t.bordercolor = borderColor.value;\r
- t.cellspacing = cellSpacing.value;\r
- t.cellpadding = cellPadding.value;\r
- t.bgcolor = backgroundColor.value;\r
-\r
- window.returnValue = d.innerHTML;\r
- window.close();\r
-}\r
-\r
-function cancel() {\r
- window.returnValue = null;\r
- window.close();\r
-}\r
-</script>\r
-</head>\r
-\r
-<body topmargin="0" leftmargin="0" style="border: 0; margin: 0;" scroll="no">\r
-<table class="dlg" cellpadding="0" cellspacing="2" width="100%" height="100%">\r
-<tr><td colspan="5"><table width="100%"><tr><td>Layout</td><td valign="middle" width="90%"><hr width="100%"></td></tr></table></td></tr>\r
-<tr>\r
- <td width="10"> </td>\r
- <td width="70">Rows:</td><td valign="middle"><input type="text" name="rows" value="2" size="5"></td>\r
- <td width="70">Cell Padding:</td><td valign="middle"><input type="text" name="cellPadding" value="0" size="5"></td>\r
-</tr>\r
-<tr>\r
- <td> </td>\r
- <td>Cols:</td><td valign="middle"><input type="text" name="cols" value="2" size="5"></td>\r
- <td>Cell Spacing:</td><td valign="middle"><input type="text" name="cellSpacing" value="0" size="5"></td>\r
-</tr>\r
-<tr>\r
- <td> </td>\r
- <td>Rows Height:</td><td valign="middle"><input type="text" name="rowHeight" value="20" size="5"></td>\r
-</tr>\r
-<tr>\r
- <td> </td>\r
- <td>Column Width:</td><td valign="middle"><input type="text" name="colWidth" value="100" size="5"></td>\r
-</tr>\r
-<tr><td colspan="5"><table width="100%"><tr><td>Borders</td><td valign="middle" width="90%"><hr width="100%"></td></tr></table></td></tr>\r
-<tr>\r
- <td> </td>\r
- <td>Width:</td><td valign="middle"><input type="text" name="borderWidth" value="1" size="5"></td>\r
- <td>Color:</td><td valign="middle"><input type="text" name="borderColor" value="black" size="10"></td>\r
-</tr>\r
-<tr><td colspan="5"><table width="100%"><tr><td>Background</td><td valign="middle" width="90%"><hr width="100%"></td></tr></table></td></tr>\r
-<tr>\r
- <td> </td>\r
- <td>Color:</td><td valign="middle"><input type="text" name="backgroundColor" value="" size="15"></td>\r
-</tr>\r
-<tr><td colspan="5"><table width="100%"><tr><td valign="middle" width="100%" colspan="2"><hr width="100%"></td></tr></table></td></tr>\r
-<tr>\r
- <td> </td>\r
- <td><td colspan="4" align="right"><input class="button" type="button" value="Insert" title="Insert Table" onclick="insertTable()">\r
-<input class="button" type="button" value="Cancel" title="Cancel Dialog" onclick="cancel()"></td>\r
-</tr>\r
-</table>\r
-</body>\r
-</html>\r
+++ /dev/null
-<!--\r
-#################################################################################\r
-##\r
-## HTML Text Editing Component for hosting in Web Pages\r
-## Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-## \r
-## This library is free software; you can redistribute it and/or\r
-## modify it under the terms of the GNU Lesser General Public\r
-## License as published by the Free Software Foundation; either\r
-## version 2.1 of the License, or (at your option) any later version.\r
-##\r
-## This library is distributed in the hope that it will be useful,\r
-## but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-## Lesser General Public License for more details.\r
-##\r
-## You should have received a copy of the GNU LesserGeneral Public License\r
-## along with this program; if not a copy can be obtained from \r
-##\r
-## http://www.gnu.org/copyleft/lesser.html\r
-##\r
-## or by writing to:\r
-##\r
-## Free Software Foundation, Inc.\r
-## 59 Temple Place - Suite 330,\r
-## Boston,\r
-## MA 02111-1307,\r
-## USA.\r
-## \r
-## Original Developer:\r
-##\r
-## Austin David France\r
-## Ramesys (Contracting Services) Limited\r
-## Mentor House\r
-## Ainsworth Street\r
-## Blackburn\r
-## Lancashire\r
-## BB1 6AY\r
-## United Kingdom\r
-## email: Austin.France@Ramesys.com\r
-##\r
-## Home Page: http://richtext.sourceforge.net/\r
-## Support: http://richtext.sourceforge.net/\r
-## \r
-#################################################################################\r
--->\r
-<html>\r
-<head>\r
-<link rel="STYLESHEET" type="text/css" href="rte.css">\r
-\r
-\r
-</head>\r
-\r
-<body>\r
-<input type="button" value="Edit" onClick="edit()">\r
-<hr>\r
-<div id="data" height="200">\r
-\r
-<FORM name=exampleform>\r
-<P><INPUT size=33 value=22 name=text> <INPUT type=button value=22 name=text> </P></FORM>\r
-<TABLE cellSpacing=0 cellPadding=0 align=left border=2>\r
-<TBODY>\r
-<TR>\r
-<TH>\r
-<TD>header </TD></TH>\r
-<TR vAlign=center align=middle>\r
-<TD>td 1 </TD></TR></TBODY></TABLE>\r
-<UL>\r
-<LI> </LI></UL>\r
-<P> </P>\r
-<UL>\r
-<LI>These are some formatting examples</LI>\r
-<LI><A target=_new href="#">These are some formatting examples</A></LI></UL>\r
-\r
-<!-- html comment --------- -->\r
- \r
- \r
- \r
- \r
- \r
-</div>\r
-\r
-<script language="JavaScript">\r
- function edit() {\r
- var edit={}\r
- edit.src = data.innerHTML;\r
- edit.styledata=document.styleSheets\r
- window.showModalDialog("popup_editor.html", edit,"dialogWidth:800px;dialogHeight:600px;help:no;status:no;scroll:no;resizable:yes;")\r
- }\r
-</script>\r
-</body>\r
-</html>\r
+++ /dev/null
-<!--\r
-#################################################################################\r
-##\r
-## HTML Text Editing Component for hosting in Web Pages\r
-## Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-##\r
-## This library is free software; you can redistribute it and/or\r
-## modify it under the terms of the GNU Lesser General Public\r
-## License as published by the Free Software Foundation; either\r
-## version 2.1 of the License, or (at your option) any later version.\r
-##\r
-## This library is distributed in the hope that it will be useful,\r
-## but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-## Lesser General Public License for more details.\r
-##\r
-## You should have received a copy of the GNU LesserGeneral Public License\r
-## along with this program; if not a copy can be obtained from\r
-##\r
-## http://www.gnu.org/copyleft/lesser.html\r
-##\r
-## or by writing to:\r
-##\r
-## Free Software Foundation, Inc.\r
-## 59 Temple Place - Suite 330,\r
-## Boston,\r
-## MA 02111-1307,\r
-## USA.\r
-##\r
-## Original Developer:\r
-##\r
-## Austin David France\r
-## Ramesys (Contracting Services) Limited\r
-## Mentor House\r
-## Ainsworth Street\r
-## Blackburn\r
-## Lancashire\r
-## BB1 6AY\r
-## United Kingdom\r
-## email: Austin.France@Ramesys.com\r
-##\r
-## Home Page: http://richtext.sourceforge.net/\r
-## Support: http://richtext.sourceforge.net/\r
-##\r
-#################################################################################\r
--->\r
-<html>\r
-<head>\r
-<title>GNU LESSER GENERAL PUBLIC LICENSE</title>\r
-<style type="text/css">\r
-pre { font-size: 9.5px; font-family: "Andale Mono", "Courier New"}\r
-</style>\r
-</head>\r
-<body><pre>\r
- GNU LESSER GENERAL PUBLIC LICENSE\r
- Version 2.1, February 1999\r
-\r
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.\r
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
- Everyone is permitted to copy and distribute verbatim copies\r
- of this license document, but changing it is not allowed.\r
-\r
-[This is the first released version of the Lesser GPL. It also counts\r
- as the successor of the GNU Library Public License, version 2, hence\r
- the version number 2.1.]\r
-\r
- Preamble\r
-\r
- The licenses for most software are designed to take away your\r
-freedom to share and change it. By contrast, the GNU General Public\r
-Licenses are intended to guarantee your freedom to share and change\r
-free software--to make sure the software is free for all its users.\r
-\r
- This license, the Lesser General Public License, applies to some\r
-specially designated software packages--typically libraries--of the\r
-Free Software Foundation and other authors who decide to use it. You\r
-can use it too, but we suggest you first think carefully about whether\r
-this license or the ordinary General Public License is the better\r
-strategy to use in any particular case, based on the explanations below.\r
-\r
- When we speak of free software, we are referring to freedom of use,\r
-not price. Our General Public Licenses are designed to make sure that\r
-you have the freedom to distribute copies of free software (and charge\r
-for this service if you wish); that you receive source code or can get\r
-it if you want it; that you can change the software and use pieces of\r
-it in new free programs; and that you are informed that you can do\r
-these things.\r
-\r
- To protect your rights, we need to make restrictions that forbid\r
-distributors to deny you these rights or to ask you to surrender these\r
-rights. These restrictions translate to certain responsibilities for\r
-you if you distribute copies of the library or if you modify it.\r
-\r
- For example, if you distribute copies of the library, whether gratis\r
-or for a fee, you must give the recipients all the rights that we gave\r
-you. You must make sure that they, too, receive or can get the source\r
-code. If you link other code with the library, you must provide\r
-complete object files to the recipients, so that they can relink them\r
-with the library after making changes to the library and recompiling\r
-it. And you must show them these terms so they know their rights.\r
-\r
- We protect your rights with a two-step method: (1) we copyright the\r
-library, and (2) we offer you this license, which gives you legal\r
-permission to copy, distribute and/or modify the library.\r
-\r
- To protect each distributor, we want to make it very clear that\r
-there is no warranty for the free library. Also, if the library is\r
-modified by someone else and passed on, the recipients should know\r
-that what they have is not the original version, so that the original\r
-author's reputation will not be affected by problems that might be\r
-introduced by others.\r
-\r
- Finally, software patents pose a constant threat to the existence of\r
-any free program. We wish to make sure that a company cannot\r
-effectively restrict the users of a free program by obtaining a\r
-restrictive license from a patent holder. Therefore, we insist that\r
-any patent license obtained for a version of the library must be\r
-consistent with the full freedom of use specified in this license.\r
-\r
- Most GNU software, including some libraries, is covered by the\r
-ordinary GNU General Public License. This license, the GNU Lesser\r
-General Public License, applies to certain designated libraries, and\r
-is quite different from the ordinary General Public License. We use\r
-this license for certain libraries in order to permit linking those\r
-libraries into non-free programs.\r
-\r
- When a program is linked with a library, whether statically or using\r
-a shared library, the combination of the two is legally speaking a\r
-combined work, a derivative of the original library. The ordinary\r
-General Public License therefore permits such linking only if the\r
-entire combination fits its criteria of freedom. The Lesser General\r
-Public License permits more lax criteria for linking other code with\r
-the library.\r
-\r
- We call this license the "Lesser" General Public License because it\r
-does Less to protect the user's freedom than the ordinary General\r
-Public License. It also provides other free software developers Less\r
-of an advantage over competing non-free programs. These disadvantages\r
-are the reason we use the ordinary General Public License for many\r
-libraries. However, the Lesser license provides advantages in certain\r
-special circumstances.\r
-\r
- For example, on rare occasions, there may be a special need to\r
-encourage the widest possible use of a certain library, so that it becomes\r
-a de-facto standard. To achieve this, non-free programs must be\r
-allowed to use the library. A more frequent case is that a free\r
-library does the same job as widely used non-free libraries. In this\r
-case, there is little to gain by limiting the free library to free\r
-software only, so we use the Lesser General Public License.\r
-\r
- In other cases, permission to use a particular library in non-free\r
-programs enables a greater number of people to use a large body of\r
-free software. For example, permission to use the GNU C Library in\r
-non-free programs enables many more people to use the whole GNU\r
-operating system, as well as its variant, the GNU/Linux operating\r
-system.\r
-\r
- Although the Lesser General Public License is Less protective of the\r
-users' freedom, it does ensure that the user of a program that is\r
-linked with the Library has the freedom and the wherewithal to run\r
-that program using a modified version of the Library.\r
-\r
- The precise terms and conditions for copying, distribution and\r
-modification follow. Pay close attention to the difference between a\r
-"work based on the library" and a "work that uses the library". The\r
-former contains code derived from the library, whereas the latter must\r
-be combined with the library in order to run.\r
-\r
- GNU LESSER GENERAL PUBLIC LICENSE\r
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\r
-\r
- 0. This License Agreement applies to any software library or other\r
-program which contains a notice placed by the copyright holder or\r
-other authorized party saying it may be distributed under the terms of\r
-this Lesser General Public License (also called "this License").\r
-Each licensee is addressed as "you".\r
-\r
- A "library" means a collection of software functions and/or data\r
-prepared so as to be conveniently linked with application programs\r
-(which use some of those functions and data) to form executables.\r
-\r
- The "Library", below, refers to any such software library or work\r
-which has been distributed under these terms. A "work based on the\r
-Library" means either the Library or any derivative work under\r
-copyright law: that is to say, a work containing the Library or a\r
-portion of it, either verbatim or with modifications and/or translated\r
-straightforwardly into another language. (Hereinafter, translation is\r
-included without limitation in the term "modification".)\r
-\r
- "Source code" for a work means the preferred form of the work for\r
-making modifications to it. For a library, complete source code means\r
-all the source code for all modules it contains, plus any associated\r
-interface definition files, plus the scripts used to control compilation\r
-and installation of the library.\r
-\r
- Activities other than copying, distribution and modification are not\r
-covered by this License; they are outside its scope. The act of\r
-running a program using the Library is not restricted, and output from\r
-such a program is covered only if its contents constitute a work based\r
-on the Library (independent of the use of the Library in a tool for\r
-writing it). Whether that is true depends on what the Library does\r
-and what the program that uses the Library does.\r
-\r
- 1. You may copy and distribute verbatim copies of the Library's\r
-complete source code as you receive it, in any medium, provided that\r
-you conspicuously and appropriately publish on each copy an\r
-appropriate copyright notice and disclaimer of warranty; keep intact\r
-all the notices that refer to this License and to the absence of any\r
-warranty; and distribute a copy of this License along with the\r
-Library.\r
-\r
- You may charge a fee for the physical act of transferring a copy,\r
-and you may at your option offer warranty protection in exchange for a\r
-fee.\r
-\r
- 2. You may modify your copy or copies of the Library or any portion\r
-of it, thus forming a work based on the Library, and copy and\r
-distribute such modifications or work under the terms of Section 1\r
-above, provided that you also meet all of these conditions:\r
-\r
- a) The modified work must itself be a software library.\r
-\r
- b) You must cause the files modified to carry prominent notices\r
- stating that you changed the files and the date of any change.\r
-\r
- c) You must cause the whole of the work to be licensed at no\r
- charge to all third parties under the terms of this License.\r
-\r
- d) If a facility in the modified Library refers to a function or a\r
- table of data to be supplied by an application program that uses\r
- the facility, other than as an argument passed when the facility\r
- is invoked, then you must make a good faith effort to ensure that,\r
- in the event an application does not supply such function or\r
- table, the facility still operates, and performs whatever part of\r
- its purpose remains meaningful.\r
-\r
- (For example, a function in a library to compute square roots has\r
- a purpose that is entirely well-defined independent of the\r
- application. Therefore, Subsection 2d requires that any\r
- application-supplied function or table used by this function must\r
- be optional: if the application does not supply it, the square\r
- root function must still compute square roots.)\r
-\r
-These requirements apply to the modified work as a whole. If\r
-identifiable sections of that work are not derived from the Library,\r
-and can be reasonably considered independent and separate works in\r
-themselves, then this License, and its terms, do not apply to those\r
-sections when you distribute them as separate works. But when you\r
-distribute the same sections as part of a whole which is a work based\r
-on the Library, the distribution of the whole must be on the terms of\r
-this License, whose permissions for other licensees extend to the\r
-entire whole, and thus to each and every part regardless of who wrote\r
-it.\r
-\r
-Thus, it is not the intent of this section to claim rights or contest\r
-your rights to work written entirely by you; rather, the intent is to\r
-exercise the right to control the distribution of derivative or\r
-collective works based on the Library.\r
-\r
-In addition, mere aggregation of another work not based on the Library\r
-with the Library (or with a work based on the Library) on a volume of\r
-a storage or distribution medium does not bring the other work under\r
-the scope of this License.\r
-\r
- 3. You may opt to apply the terms of the ordinary GNU General Public\r
-License instead of this License to a given copy of the Library. To do\r
-this, you must alter all the notices that refer to this License, so\r
-that they refer to the ordinary GNU General Public License, version 2,\r
-instead of to this License. (If a newer version than version 2 of the\r
-ordinary GNU General Public License has appeared, then you can specify\r
-that version instead if you wish.) Do not make any other change in\r
-these notices.\r
-\r
- Once this change is made in a given copy, it is irreversible for\r
-that copy, so the ordinary GNU General Public License applies to all\r
-subsequent copies and derivative works made from that copy.\r
-\r
- This option is useful when you wish to copy part of the code of\r
-the Library into a program that is not a library.\r
-\r
- 4. You may copy and distribute the Library (or a portion or\r
-derivative of it, under Section 2) in object code or executable form\r
-under the terms of Sections 1 and 2 above provided that you accompany\r
-it with the complete corresponding machine-readable source code, which\r
-must be distributed under the terms of Sections 1 and 2 above on a\r
-medium customarily used for software interchange.\r
-\r
- If distribution of object code is made by offering access to copy\r
-from a designated place, then offering equivalent access to copy the\r
-source code from the same place satisfies the requirement to\r
-distribute the source code, even though third parties are not\r
-compelled to copy the source along with the object code.\r
-\r
- 5. A program that contains no derivative of any portion of the\r
-Library, but is designed to work with the Library by being compiled or\r
-linked with it, is called a "work that uses the Library". Such a\r
-work, in isolation, is not a derivative work of the Library, and\r
-therefore falls outside the scope of this License.\r
-\r
- However, linking a "work that uses the Library" with the Library\r
-creates an executable that is a derivative of the Library (because it\r
-contains portions of the Library), rather than a "work that uses the\r
-library". The executable is therefore covered by this License.\r
-Section 6 states terms for distribution of such executables.\r
-\r
- When a "work that uses the Library" uses material from a header file\r
-that is part of the Library, the object code for the work may be a\r
-derivative work of the Library even though the source code is not.\r
-Whether this is true is especially significant if the work can be\r
-linked without the Library, or if the work is itself a library. The\r
-threshold for this to be true is not precisely defined by law.\r
-\r
- If such an object file uses only numerical parameters, data\r
-structure layouts and accessors, and small macros and small inline\r
-functions (ten lines or less in length), then the use of the object\r
-file is unrestricted, regardless of whether it is legally a derivative\r
-work. (Executables containing this object code plus portions of the\r
-Library will still fall under Section 6.)\r
-\r
- Otherwise, if the work is a derivative of the Library, you may\r
-distribute the object code for the work under the terms of Section 6.\r
-Any executables containing that work also fall under Section 6,\r
-whether or not they are linked directly with the Library itself.\r
-\r
- 6. As an exception to the Sections above, you may also combine or\r
-link a "work that uses the Library" with the Library to produce a\r
-work containing portions of the Library, and distribute that work\r
-under terms of your choice, provided that the terms permit\r
-modification of the work for the customer's own use and reverse\r
-engineering for debugging such modifications.\r
-\r
- You must give prominent notice with each copy of the work that the\r
-Library is used in it and that the Library and its use are covered by\r
-this License. You must supply a copy of this License. If the work\r
-during execution displays copyright notices, you must include the\r
-copyright notice for the Library among them, as well as a reference\r
-directing the user to the copy of this License. Also, you must do one\r
-of these things:\r
-\r
- a) Accompany the work with the complete corresponding\r
- machine-readable source code for the Library including whatever\r
- changes were used in the work (which must be distributed under\r
- Sections 1 and 2 above); and, if the work is an executable linked\r
- with the Library, with the complete machine-readable "work that\r
- uses the Library", as object code and/or source code, so that the\r
- user can modify the Library and then relink to produce a modified\r
- executable containing the modified Library. (It is understood\r
- that the user who changes the contents of definitions files in the\r
- Library will not necessarily be able to recompile the application\r
- to use the modified definitions.)\r
-\r
- b) Use a suitable shared library mechanism for linking with the\r
- Library. A suitable mechanism is one that (1) uses at run time a\r
- copy of the library already present on the user's computer system,\r
- rather than copying library functions into the executable, and (2)\r
- will operate properly with a modified version of the library, if\r
- the user installs one, as long as the modified version is\r
- interface-compatible with the version that the work was made with.\r
-\r
- c) Accompany the work with a written offer, valid for at\r
- least three years, to give the same user the materials\r
- specified in Subsection 6a, above, for a charge no more\r
- than the cost of performing this distribution.\r
-\r
- d) If distribution of the work is made by offering access to copy\r
- from a designated place, offer equivalent access to copy the above\r
- specified materials from the same place.\r
-\r
- e) Verify that the user has already received a copy of these\r
- materials or that you have already sent this user a copy.\r
-\r
- For an executable, the required form of the "work that uses the\r
-Library" must include any data and utility programs needed for\r
-reproducing the executable from it. However, as a special exception,\r
-the materials to be distributed need not include anything that is\r
-normally distributed (in either source or binary form) with the major\r
-components (compiler, kernel, and so on) of the operating system on\r
-which the executable runs, unless that component itself accompanies\r
-the executable.\r
-\r
- It may happen that this requirement contradicts the license\r
-restrictions of other proprietary libraries that do not normally\r
-accompany the operating system. Such a contradiction means you cannot\r
-use both them and the Library together in an executable that you\r
-distribute.\r
-\r
- 7. You may place library facilities that are a work based on the\r
-Library side-by-side in a single library together with other library\r
-facilities not covered by this License, and distribute such a combined\r
-library, provided that the separate distribution of the work based on\r
-the Library and of the other library facilities is otherwise\r
-permitted, and provided that you do these two things:\r
-\r
- a) Accompany the combined library with a copy of the same work\r
- based on the Library, uncombined with any other library\r
- facilities. This must be distributed under the terms of the\r
- Sections above.\r
-\r
- b) Give prominent notice with the combined library of the fact\r
- that part of it is a work based on the Library, and explaining\r
- where to find the accompanying uncombined form of the same work.\r
-\r
- 8. You may not copy, modify, sublicense, link with, or distribute\r
-the Library except as expressly provided under this License. Any\r
-attempt otherwise to copy, modify, sublicense, link with, or\r
-distribute the Library is void, and will automatically terminate your\r
-rights under this License. However, parties who have received copies,\r
-or rights, from you under this License will not have their licenses\r
-terminated so long as such parties remain in full compliance.\r
-\r
- 9. You are not required to accept this License, since you have not\r
-signed it. However, nothing else grants you permission to modify or\r
-distribute the Library or its derivative works. These actions are\r
-prohibited by law if you do not accept this License. Therefore, by\r
-modifying or distributing the Library (or any work based on the\r
-Library), you indicate your acceptance of this License to do so, and\r
-all its terms and conditions for copying, distributing or modifying\r
-the Library or works based on it.\r
-\r
- 10. Each time you redistribute the Library (or any work based on the\r
-Library), the recipient automatically receives a license from the\r
-original licensor to copy, distribute, link with or modify the Library\r
-subject to these terms and conditions. You may not impose any further\r
-restrictions on the recipients' exercise of the rights granted herein.\r
-You are not responsible for enforcing compliance by third parties with\r
-this License.\r
-\r
- 11. If, as a consequence of a court judgment or allegation of patent\r
-infringement or for any other reason (not limited to patent issues),\r
-conditions are imposed on you (whether by court order, agreement or\r
-otherwise) that contradict the conditions of this License, they do not\r
-excuse you from the conditions of this License. If you cannot\r
-distribute so as to satisfy simultaneously your obligations under this\r
-License and any other pertinent obligations, then as a consequence you\r
-may not distribute the Library at all. For example, if a patent\r
-license would not permit royalty-free redistribution of the Library by\r
-all those who receive copies directly or indirectly through you, then\r
-the only way you could satisfy both it and this License would be to\r
-refrain entirely from distribution of the Library.\r
-\r
-If any portion of this section is held invalid or unenforceable under any\r
-particular circumstance, the balance of the section is intended to apply,\r
-and the section as a whole is intended to apply in other circumstances.\r
-\r
-It is not the purpose of this section to induce you to infringe any\r
-patents or other property right claims or to contest validity of any\r
-such claims; this section has the sole purpose of protecting the\r
-integrity of the free software distribution system which is\r
-implemented by public license practices. Many people have made\r
-generous contributions to the wide range of software distributed\r
-through that system in reliance on consistent application of that\r
-system; it is up to the author/donor to decide if he or she is willing\r
-to distribute software through any other system and a licensee cannot\r
-impose that choice.\r
-\r
-This section is intended to make thoroughly clear what is believed to\r
-be a consequence of the rest of this License.\r
-\r
- 12. If the distribution and/or use of the Library is restricted in\r
-certain countries either by patents or by copyrighted interfaces, the\r
-original copyright holder who places the Library under this License may add\r
-an explicit geographical distribution limitation excluding those countries,\r
-so that distribution is permitted only in or among countries not thus\r
-excluded. In such case, this License incorporates the limitation as if\r
-written in the body of this License.\r
-\r
- 13. The Free Software Foundation may publish revised and/or new\r
-versions of the Lesser General Public License from time to time.\r
-Such new versions will be similar in spirit to the present version,\r
-but may differ in detail to address new problems or concerns.\r
-\r
-Each version is given a distinguishing version number. If the Library\r
-specifies a version number of this License which applies to it and\r
-"any later version", you have the option of following the terms and\r
-conditions either of that version or of any later version published by\r
-the Free Software Foundation. If the Library does not specify a\r
-license version number, you may choose any version ever published by\r
-the Free Software Foundation.\r
-\r
- 14. If you wish to incorporate parts of the Library into other free\r
-programs whose distribution conditions are incompatible with these,\r
-write to the author to ask for permission. For software which is\r
-copyrighted by the Free Software Foundation, write to the Free\r
-Software Foundation; we sometimes make exceptions for this. Our\r
-decision will be guided by the two goals of preserving the free status\r
-of all derivatives of our free software and of promoting the sharing\r
-and reuse of software generally.\r
-\r
- NO WARRANTY\r
-\r
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\r
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\r
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\r
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY\r
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\r
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\r
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\r
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\r
-\r
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\r
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\r
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\r
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\r
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\r
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\r
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\r
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\r
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
-DAMAGES.\r
-\r
- END OF TERMS AND CONDITIONS\r
-\r
-</pre></body></html>
\ No newline at end of file
+++ /dev/null
- GNU LESSER GENERAL PUBLIC LICENSE\r
- Version 2.1, February 1999\r
-\r
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.\r
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
- Everyone is permitted to copy and distribute verbatim copies\r
- of this license document, but changing it is not allowed.\r
-\r
-[This is the first released version of the Lesser GPL. It also counts\r
- as the successor of the GNU Library Public License, version 2, hence\r
- the version number 2.1.]\r
-\r
- Preamble\r
-\r
- The licenses for most software are designed to take away your\r
-freedom to share and change it. By contrast, the GNU General Public\r
-Licenses are intended to guarantee your freedom to share and change\r
-free software--to make sure the software is free for all its users.\r
-\r
- This license, the Lesser General Public License, applies to some\r
-specially designated software packages--typically libraries--of the\r
-Free Software Foundation and other authors who decide to use it. You\r
-can use it too, but we suggest you first think carefully about whether\r
-this license or the ordinary General Public License is the better\r
-strategy to use in any particular case, based on the explanations below.\r
-\r
- When we speak of free software, we are referring to freedom of use,\r
-not price. Our General Public Licenses are designed to make sure that\r
-you have the freedom to distribute copies of free software (and charge\r
-for this service if you wish); that you receive source code or can get\r
-it if you want it; that you can change the software and use pieces of\r
-it in new free programs; and that you are informed that you can do\r
-these things.\r
-\r
- To protect your rights, we need to make restrictions that forbid\r
-distributors to deny you these rights or to ask you to surrender these\r
-rights. These restrictions translate to certain responsibilities for\r
-you if you distribute copies of the library or if you modify it.\r
-\r
- For example, if you distribute copies of the library, whether gratis\r
-or for a fee, you must give the recipients all the rights that we gave\r
-you. You must make sure that they, too, receive or can get the source\r
-code. If you link other code with the library, you must provide\r
-complete object files to the recipients, so that they can relink them\r
-with the library after making changes to the library and recompiling\r
-it. And you must show them these terms so they know their rights.\r
-\r
- We protect your rights with a two-step method: (1) we copyright the\r
-library, and (2) we offer you this license, which gives you legal\r
-permission to copy, distribute and/or modify the library.\r
-\r
- To protect each distributor, we want to make it very clear that\r
-there is no warranty for the free library. Also, if the library is\r
-modified by someone else and passed on, the recipients should know\r
-that what they have is not the original version, so that the original\r
-author's reputation will not be affected by problems that might be\r
-introduced by others.\r
-\r
- Finally, software patents pose a constant threat to the existence of\r
-any free program. We wish to make sure that a company cannot\r
-effectively restrict the users of a free program by obtaining a\r
-restrictive license from a patent holder. Therefore, we insist that\r
-any patent license obtained for a version of the library must be\r
-consistent with the full freedom of use specified in this license.\r
-\r
- Most GNU software, including some libraries, is covered by the\r
-ordinary GNU General Public License. This license, the GNU Lesser\r
-General Public License, applies to certain designated libraries, and\r
-is quite different from the ordinary General Public License. We use\r
-this license for certain libraries in order to permit linking those\r
-libraries into non-free programs.\r
-\r
- When a program is linked with a library, whether statically or using\r
-a shared library, the combination of the two is legally speaking a\r
-combined work, a derivative of the original library. The ordinary\r
-General Public License therefore permits such linking only if the\r
-entire combination fits its criteria of freedom. The Lesser General\r
-Public License permits more lax criteria for linking other code with\r
-the library.\r
-\r
- We call this license the "Lesser" General Public License because it\r
-does Less to protect the user's freedom than the ordinary General\r
-Public License. It also provides other free software developers Less\r
-of an advantage over competing non-free programs. These disadvantages\r
-are the reason we use the ordinary General Public License for many\r
-libraries. However, the Lesser license provides advantages in certain\r
-special circumstances.\r
-\r
- For example, on rare occasions, there may be a special need to\r
-encourage the widest possible use of a certain library, so that it becomes\r
-a de-facto standard. To achieve this, non-free programs must be\r
-allowed to use the library. A more frequent case is that a free\r
-library does the same job as widely used non-free libraries. In this\r
-case, there is little to gain by limiting the free library to free\r
-software only, so we use the Lesser General Public License.\r
-\r
- In other cases, permission to use a particular library in non-free\r
-programs enables a greater number of people to use a large body of\r
-free software. For example, permission to use the GNU C Library in\r
-non-free programs enables many more people to use the whole GNU\r
-operating system, as well as its variant, the GNU/Linux operating\r
-system.\r
-\r
- Although the Lesser General Public License is Less protective of the\r
-users' freedom, it does ensure that the user of a program that is\r
-linked with the Library has the freedom and the wherewithal to run\r
-that program using a modified version of the Library.\r
-\r
- The precise terms and conditions for copying, distribution and\r
-modification follow. Pay close attention to the difference between a\r
-"work based on the library" and a "work that uses the library". The\r
-former contains code derived from the library, whereas the latter must\r
-be combined with the library in order to run.\r
-\r
- GNU LESSER GENERAL PUBLIC LICENSE\r
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\r
-\r
- 0. This License Agreement applies to any software library or other\r
-program which contains a notice placed by the copyright holder or\r
-other authorized party saying it may be distributed under the terms of\r
-this Lesser General Public License (also called "this License").\r
-Each licensee is addressed as "you".\r
-\r
- A "library" means a collection of software functions and/or data\r
-prepared so as to be conveniently linked with application programs\r
-(which use some of those functions and data) to form executables.\r
-\r
- The "Library", below, refers to any such software library or work\r
-which has been distributed under these terms. A "work based on the\r
-Library" means either the Library or any derivative work under\r
-copyright law: that is to say, a work containing the Library or a\r
-portion of it, either verbatim or with modifications and/or translated\r
-straightforwardly into another language. (Hereinafter, translation is\r
-included without limitation in the term "modification".)\r
-\r
- "Source code" for a work means the preferred form of the work for\r
-making modifications to it. For a library, complete source code means\r
-all the source code for all modules it contains, plus any associated\r
-interface definition files, plus the scripts used to control compilation\r
-and installation of the library.\r
-\r
- Activities other than copying, distribution and modification are not\r
-covered by this License; they are outside its scope. The act of\r
-running a program using the Library is not restricted, and output from\r
-such a program is covered only if its contents constitute a work based\r
-on the Library (independent of the use of the Library in a tool for\r
-writing it). Whether that is true depends on what the Library does\r
-and what the program that uses the Library does.\r
- \r
- 1. You may copy and distribute verbatim copies of the Library's\r
-complete source code as you receive it, in any medium, provided that\r
-you conspicuously and appropriately publish on each copy an\r
-appropriate copyright notice and disclaimer of warranty; keep intact\r
-all the notices that refer to this License and to the absence of any\r
-warranty; and distribute a copy of this License along with the\r
-Library.\r
-\r
- You may charge a fee for the physical act of transferring a copy,\r
-and you may at your option offer warranty protection in exchange for a\r
-fee.\r
-\r
- 2. You may modify your copy or copies of the Library or any portion\r
-of it, thus forming a work based on the Library, and copy and\r
-distribute such modifications or work under the terms of Section 1\r
-above, provided that you also meet all of these conditions:\r
-\r
- a) The modified work must itself be a software library.\r
-\r
- b) You must cause the files modified to carry prominent notices\r
- stating that you changed the files and the date of any change.\r
-\r
- c) You must cause the whole of the work to be licensed at no\r
- charge to all third parties under the terms of this License.\r
-\r
- d) If a facility in the modified Library refers to a function or a\r
- table of data to be supplied by an application program that uses\r
- the facility, other than as an argument passed when the facility\r
- is invoked, then you must make a good faith effort to ensure that,\r
- in the event an application does not supply such function or\r
- table, the facility still operates, and performs whatever part of\r
- its purpose remains meaningful.\r
-\r
- (For example, a function in a library to compute square roots has\r
- a purpose that is entirely well-defined independent of the\r
- application. Therefore, Subsection 2d requires that any\r
- application-supplied function or table used by this function must\r
- be optional: if the application does not supply it, the square\r
- root function must still compute square roots.)\r
-\r
-These requirements apply to the modified work as a whole. If\r
-identifiable sections of that work are not derived from the Library,\r
-and can be reasonably considered independent and separate works in\r
-themselves, then this License, and its terms, do not apply to those\r
-sections when you distribute them as separate works. But when you\r
-distribute the same sections as part of a whole which is a work based\r
-on the Library, the distribution of the whole must be on the terms of\r
-this License, whose permissions for other licensees extend to the\r
-entire whole, and thus to each and every part regardless of who wrote\r
-it.\r
-\r
-Thus, it is not the intent of this section to claim rights or contest\r
-your rights to work written entirely by you; rather, the intent is to\r
-exercise the right to control the distribution of derivative or\r
-collective works based on the Library.\r
-\r
-In addition, mere aggregation of another work not based on the Library\r
-with the Library (or with a work based on the Library) on a volume of\r
-a storage or distribution medium does not bring the other work under\r
-the scope of this License.\r
-\r
- 3. You may opt to apply the terms of the ordinary GNU General Public\r
-License instead of this License to a given copy of the Library. To do\r
-this, you must alter all the notices that refer to this License, so\r
-that they refer to the ordinary GNU General Public License, version 2,\r
-instead of to this License. (If a newer version than version 2 of the\r
-ordinary GNU General Public License has appeared, then you can specify\r
-that version instead if you wish.) Do not make any other change in\r
-these notices.\r
-\r
- Once this change is made in a given copy, it is irreversible for\r
-that copy, so the ordinary GNU General Public License applies to all\r
-subsequent copies and derivative works made from that copy.\r
-\r
- This option is useful when you wish to copy part of the code of\r
-the Library into a program that is not a library.\r
-\r
- 4. You may copy and distribute the Library (or a portion or\r
-derivative of it, under Section 2) in object code or executable form\r
-under the terms of Sections 1 and 2 above provided that you accompany\r
-it with the complete corresponding machine-readable source code, which\r
-must be distributed under the terms of Sections 1 and 2 above on a\r
-medium customarily used for software interchange.\r
-\r
- If distribution of object code is made by offering access to copy\r
-from a designated place, then offering equivalent access to copy the\r
-source code from the same place satisfies the requirement to\r
-distribute the source code, even though third parties are not\r
-compelled to copy the source along with the object code.\r
-\r
- 5. A program that contains no derivative of any portion of the\r
-Library, but is designed to work with the Library by being compiled or\r
-linked with it, is called a "work that uses the Library". Such a\r
-work, in isolation, is not a derivative work of the Library, and\r
-therefore falls outside the scope of this License.\r
-\r
- However, linking a "work that uses the Library" with the Library\r
-creates an executable that is a derivative of the Library (because it\r
-contains portions of the Library), rather than a "work that uses the\r
-library". The executable is therefore covered by this License.\r
-Section 6 states terms for distribution of such executables.\r
-\r
- When a "work that uses the Library" uses material from a header file\r
-that is part of the Library, the object code for the work may be a\r
-derivative work of the Library even though the source code is not.\r
-Whether this is true is especially significant if the work can be\r
-linked without the Library, or if the work is itself a library. The\r
-threshold for this to be true is not precisely defined by law.\r
-\r
- If such an object file uses only numerical parameters, data\r
-structure layouts and accessors, and small macros and small inline\r
-functions (ten lines or less in length), then the use of the object\r
-file is unrestricted, regardless of whether it is legally a derivative\r
-work. (Executables containing this object code plus portions of the\r
-Library will still fall under Section 6.)\r
-\r
- Otherwise, if the work is a derivative of the Library, you may\r
-distribute the object code for the work under the terms of Section 6.\r
-Any executables containing that work also fall under Section 6,\r
-whether or not they are linked directly with the Library itself.\r
-\r
- 6. As an exception to the Sections above, you may also combine or\r
-link a "work that uses the Library" with the Library to produce a\r
-work containing portions of the Library, and distribute that work\r
-under terms of your choice, provided that the terms permit\r
-modification of the work for the customer's own use and reverse\r
-engineering for debugging such modifications.\r
-\r
- You must give prominent notice with each copy of the work that the\r
-Library is used in it and that the Library and its use are covered by\r
-this License. You must supply a copy of this License. If the work\r
-during execution displays copyright notices, you must include the\r
-copyright notice for the Library among them, as well as a reference\r
-directing the user to the copy of this License. Also, you must do one\r
-of these things:\r
-\r
- a) Accompany the work with the complete corresponding\r
- machine-readable source code for the Library including whatever\r
- changes were used in the work (which must be distributed under\r
- Sections 1 and 2 above); and, if the work is an executable linked\r
- with the Library, with the complete machine-readable "work that\r
- uses the Library", as object code and/or source code, so that the\r
- user can modify the Library and then relink to produce a modified\r
- executable containing the modified Library. (It is understood\r
- that the user who changes the contents of definitions files in the\r
- Library will not necessarily be able to recompile the application\r
- to use the modified definitions.)\r
-\r
- b) Use a suitable shared library mechanism for linking with the\r
- Library. A suitable mechanism is one that (1) uses at run time a\r
- copy of the library already present on the user's computer system,\r
- rather than copying library functions into the executable, and (2)\r
- will operate properly with a modified version of the library, if\r
- the user installs one, as long as the modified version is\r
- interface-compatible with the version that the work was made with.\r
-\r
- c) Accompany the work with a written offer, valid for at\r
- least three years, to give the same user the materials\r
- specified in Subsection 6a, above, for a charge no more\r
- than the cost of performing this distribution.\r
-\r
- d) If distribution of the work is made by offering access to copy\r
- from a designated place, offer equivalent access to copy the above\r
- specified materials from the same place.\r
-\r
- e) Verify that the user has already received a copy of these\r
- materials or that you have already sent this user a copy.\r
-\r
- For an executable, the required form of the "work that uses the\r
-Library" must include any data and utility programs needed for\r
-reproducing the executable from it. However, as a special exception,\r
-the materials to be distributed need not include anything that is\r
-normally distributed (in either source or binary form) with the major\r
-components (compiler, kernel, and so on) of the operating system on\r
-which the executable runs, unless that component itself accompanies\r
-the executable.\r
-\r
- It may happen that this requirement contradicts the license\r
-restrictions of other proprietary libraries that do not normally\r
-accompany the operating system. Such a contradiction means you cannot\r
-use both them and the Library together in an executable that you\r
-distribute.\r
-\r
- 7. You may place library facilities that are a work based on the\r
-Library side-by-side in a single library together with other library\r
-facilities not covered by this License, and distribute such a combined\r
-library, provided that the separate distribution of the work based on\r
-the Library and of the other library facilities is otherwise\r
-permitted, and provided that you do these two things:\r
-\r
- a) Accompany the combined library with a copy of the same work\r
- based on the Library, uncombined with any other library\r
- facilities. This must be distributed under the terms of the\r
- Sections above.\r
-\r
- b) Give prominent notice with the combined library of the fact\r
- that part of it is a work based on the Library, and explaining\r
- where to find the accompanying uncombined form of the same work.\r
-\r
- 8. You may not copy, modify, sublicense, link with, or distribute\r
-the Library except as expressly provided under this License. Any\r
-attempt otherwise to copy, modify, sublicense, link with, or\r
-distribute the Library is void, and will automatically terminate your\r
-rights under this License. However, parties who have received copies,\r
-or rights, from you under this License will not have their licenses\r
-terminated so long as such parties remain in full compliance.\r
-\r
- 9. You are not required to accept this License, since you have not\r
-signed it. However, nothing else grants you permission to modify or\r
-distribute the Library or its derivative works. These actions are\r
-prohibited by law if you do not accept this License. Therefore, by\r
-modifying or distributing the Library (or any work based on the\r
-Library), you indicate your acceptance of this License to do so, and\r
-all its terms and conditions for copying, distributing or modifying\r
-the Library or works based on it.\r
-\r
- 10. Each time you redistribute the Library (or any work based on the\r
-Library), the recipient automatically receives a license from the\r
-original licensor to copy, distribute, link with or modify the Library\r
-subject to these terms and conditions. You may not impose any further\r
-restrictions on the recipients' exercise of the rights granted herein.\r
-You are not responsible for enforcing compliance by third parties with\r
-this License.\r
-\r
- 11. If, as a consequence of a court judgment or allegation of patent\r
-infringement or for any other reason (not limited to patent issues),\r
-conditions are imposed on you (whether by court order, agreement or\r
-otherwise) that contradict the conditions of this License, they do not\r
-excuse you from the conditions of this License. If you cannot\r
-distribute so as to satisfy simultaneously your obligations under this\r
-License and any other pertinent obligations, then as a consequence you\r
-may not distribute the Library at all. For example, if a patent\r
-license would not permit royalty-free redistribution of the Library by\r
-all those who receive copies directly or indirectly through you, then\r
-the only way you could satisfy both it and this License would be to\r
-refrain entirely from distribution of the Library.\r
-\r
-If any portion of this section is held invalid or unenforceable under any\r
-particular circumstance, the balance of the section is intended to apply,\r
-and the section as a whole is intended to apply in other circumstances.\r
-\r
-It is not the purpose of this section to induce you to infringe any\r
-patents or other property right claims or to contest validity of any\r
-such claims; this section has the sole purpose of protecting the\r
-integrity of the free software distribution system which is\r
-implemented by public license practices. Many people have made\r
-generous contributions to the wide range of software distributed\r
-through that system in reliance on consistent application of that\r
-system; it is up to the author/donor to decide if he or she is willing\r
-to distribute software through any other system and a licensee cannot\r
-impose that choice.\r
-\r
-This section is intended to make thoroughly clear what is believed to\r
-be a consequence of the rest of this License.\r
-\r
- 12. If the distribution and/or use of the Library is restricted in\r
-certain countries either by patents or by copyrighted interfaces, the\r
-original copyright holder who places the Library under this License may add\r
-an explicit geographical distribution limitation excluding those countries,\r
-so that distribution is permitted only in or among countries not thus\r
-excluded. In such case, this License incorporates the limitation as if\r
-written in the body of this License.\r
-\r
- 13. The Free Software Foundation may publish revised and/or new\r
-versions of the Lesser General Public License from time to time.\r
-Such new versions will be similar in spirit to the present version,\r
-but may differ in detail to address new problems or concerns.\r
-\r
-Each version is given a distinguishing version number. If the Library\r
-specifies a version number of this License which applies to it and\r
-"any later version", you have the option of following the terms and\r
-conditions either of that version or of any later version published by\r
-the Free Software Foundation. If the Library does not specify a\r
-license version number, you may choose any version ever published by\r
-the Free Software Foundation.\r
-\r
- 14. If you wish to incorporate parts of the Library into other free\r
-programs whose distribution conditions are incompatible with these,\r
-write to the author to ask for permission. For software which is\r
-copyrighted by the Free Software Foundation, write to the Free\r
-Software Foundation; we sometimes make exceptions for this. Our\r
-decision will be guided by the two goals of preserving the free status\r
-of all derivatives of our free software and of promoting the sharing\r
-and reuse of software generally.\r
-\r
- NO WARRANTY\r
-\r
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\r
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\r
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\r
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY\r
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\r
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\r
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\r
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\r
-\r
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\r
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\r
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\r
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\r
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\r
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\r
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\r
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\r
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
-DAMAGES.\r
-\r
- END OF TERMS AND CONDITIONS\r
-\r
+++ /dev/null
-<!--\r
-#################################################################################\r
-##\r
-## HTML Text Editing Component for hosting in Web Pages\r
-## Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-## \r
-## This library is free software; you can redistribute it and/or\r
-## modify it under the terms of the GNU Lesser General Public\r
-## License as published by the Free Software Foundation; either\r
-## version 2.1 of the License, or (at your option) any later version.\r
-##\r
-## This library is distributed in the hope that it will be useful,\r
-## but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-## Lesser General Public License for more details.\r
-##\r
-## You should have received a copy of the GNU LesserGeneral Public License\r
-## along with this program; if not a copy can be obtained from \r
-##\r
-## http://www.gnu.org/copyleft/lesser.html\r
-##\r
-## or by writing to:\r
-##\r
-## Free Software Foundation, Inc.\r
-## 59 Temple Place - Suite 330,\r
-## Boston,\r
-## MA 02111-1307,\r
-## USA.\r
-## \r
-## Original Developer:\r
-##\r
-## Austin David France\r
-## Ramesys (Contracting Services) Limited\r
-## Mentor House\r
-## Ainsworth Street\r
-## Blackburn\r
-## Lancashire\r
-## BB1 6AY\r
-## United Kingdom\r
-## email: Austin.France@Ramesys.com\r
-##\r
-## Home Page: http://richtext.sourceforge.net/\r
-## Support: http://richtext.sourceforge.net/\r
-## \r
-#################################################################################\r
--->\r
-<HTML>\r
-<HEAD>\r
-<META content="HTML 4.0" name="vs_targetSchema">\r
-<META content="Microsoft Visual Studio 7.0" name="GENERATOR">\r
-<title>Edit Text</title>\r
-</HEAD>\r
-<BODY leftMargin=0 topMargin=0>\r
-<object id=richedit style="BACKGROUND-COLOR: buttonface" data="richedit.html" width="100%" height="100%" type="text/x-scriptlet" VIEWASTEXT>\r
- </object>\r
- \r
-<SCRIPT language="JavaScript">\r
-var edit = window.dialogArguments;\r
-</SCRIPT>\r
-\r
-<SCRIPT language="JavaScript" event="onload" for="window">\r
- window.returnValue = null;\r
- if (edit.defaultFont) richedit.defaultFont = edit.defaultFont;\r
- if (edit.defaultFontSize) richedit.defaultFontSize = edit.defaultFontSize;\r
- if (edit.styledata) richedit.styledata = edit.styledata\r
- richedit.docHtml = edit.src;\r
-</script>\r
-\r
-<SCRIPT language="JavaScript" event="onscriptletevent(name, eventData)" for="richedit">\r
- window.returnValue = eventData;\r
- window.close();\r
-</script>\r
-</BODY></HTML>\r
+++ /dev/null
-RichText is an HTML Text Editor written using DHTML, JavaScript and\r
-Scriptlet technologies allows WYSIWYG editing of HTML from\r
-within a web page. Ideal for use as a forum message editor\r
-or anywhere else description text is required.\r
-\r
-\r
-##\r
-## Home Page: http://richtext.sourceforge.net/\r
-## Support: http://richtext.sourceforge.net/\r
-##\r
-\r
-Author:\r
-\r
- Austin David France\r
- Ramesys (Contracting Services) Limited\r
- Mentor House\r
- Ainsworth Street\r
- Blackburn\r
- Lancashire\r
- BB1 6AY\r
- United Kingdom\r
-\r
- email: Austin.France@Ramesys.com\r
-\r
-\r
-HTML Text Editing Component for hosting in Web Pages\r
-Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
- \r
-This library is free software; you can redistribute it and/or\r
-modify it under the terms of the GNU Lesser General Public\r
-License as published by the Free Software Foundation; either\r
-version 2.1 of the License, or (at your option) any later version.\r
-\r
-This library is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-Lesser General Public License for more details.\r
-\r
-You should have received a copy of the GNU LesserGeneral Public License\r
-along with this program; if not a copy can be obtained from \r
-\r
- http://www.gnu.org/copyleft/lesser.html\r
-\r
-\r
+++ /dev/null
-/*******************************************************************************\r
-**\r
-** HTML Text Editing Component for hosting in Web Pages\r
-** Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-** \r
-** This library is free software; you can redistribute it and/or\r
-** modify it under the terms of the GNU Lesser General Public\r
-** License as published by the Free Software Foundation; either\r
-** version 2.1 of the License, or (at your option) any later version.\r
-**\r
-** This library is distributed in the hope that it will be useful,\r
-** but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-** Lesser General Public License for more details.\r
-**\r
-** You should have received a copy of the GNU LesserGeneral Public License\r
-** along with this program; if not a copy can be obtained from \r
-**\r
-** http://www.gnu.org/copyleft/lesser.html\r
-**\r
-** or by writing to:\r
-**\r
-** Free Software Foundation, Inc.\r
-** 59 Temple Place - Suite 330,\r
-** Boston,\r
-** MA 02111-1307,\r
-** USA.\r
-** \r
-** Original Developer:\r
-**\r
-** Austin David France\r
-** Ramesys (Contracting Services) Limited\r
-** Mentor House\r
-** Ainsworth Street\r
-** Blackburn\r
-** Lancashire\r
-** BB1 6AY\r
-** United Kingdom\r
-** email: Austin.France@Ramesys.com\r
-**\r
-** Home Page: http://richtext.sourceforge.net/\r
-** Support: http://richtext.sourceforge.net/\r
-** \r
-*******************************************************************************/\r
-\r
-body { width: 100%; border: 1px inset buttonface; border-left: 0px; background-color: buttonface }\r
-\r
-table#editor { width: 100%; height: 100%; border: 0px; visibility: hidden; }\r
-\r
-td.textedit { }\r
-\r
-.textedit div.document {\r
- height: 150;\r
- font-family: "Times New Roman";\r
- background-color: window;\r
- border: 2px inset buttonface; padding:5;\r
-}\r
-\r
-/* rebar styles ***************************************************************/\r
-td.rebar { padding:0; padding-bottom:2; padding-top:2;\r
- font-family: "MS Sans Serif"; font-size: xx-small; vertical-align: middle;\r
-}\r
-\r
-td.spacer {\r
- border-top: 1px solid buttonhighlight;\r
- padding: 0; margin: 0; height: 4;\r
-}\r
-\r
-.rebar span.toolbar {\r
- border-top: 1px solid buttonhighlight;\r
- border-left: 1px solid buttonhighlight;\r
- border-bottom: 1px solid buttonshadow;\r
- border-right: 1px solid buttonshadow;\r
- padding: 0; margin: 0; padding-bottom:1; padding-top:1;\r
-}\r
-\r
-.rebar span.spacer { width: 2px; }\r
-\r
-.rebar span.start {\r
- margin:0;\r
- background-color: buttonface;\r
- border-top: 1px solid buttonhighlight;\r
- border-left: 1px solid buttonhighlight;\r
- border-bottom: 1px solid buttonshadow;\r
- border-right: 1px solid buttonshadow;\r
- width: 3px;\r
- height: 18px;\r
-}\r
-\r
-.rebar span.label { border:0; position:relative; top: -2; margin-left: 3; }\r
-\r
-.rebar span.sep {\r
- margin:0;\r
- background-color: buttonface;\r
- border-top: 1px solid buttonshadow;\r
- border-left: 1px solid buttonshadow;\r
- border-bottom: 1px solid buttonhighlight;\r
- border-right: 1px solid buttonhighlight;\r
- width: 2px;\r
- height: 18px;\r
-}\r
-\r
-.rebar select {\r
- font-size: 11px;\r
- margin-top: 1; margin-bottom: 1;\r
- width : 100px;\r
-}\r
-\r
-.rebar .fontselect {\r
- font-size: 11px;\r
- margin-top: 1; margin-bottom: 1;\r
- width : 200px;\r
-}\r
-\r
-.rebar .fontsize {\r
- font-size: 11px;\r
- margin-top: 1; margin-bottom: 1;\r
- width : 60px;\r
-}\r
-\r
-.rebar .fontstyle {\r
- font-size: 11px;\r
- margin-top: 1; margin-bottom: 1;\r
- width : 80px;\r
-}\r
-\r
-.rebar option { border: 5px solid red; }\r
-\r
-.rebar span.field {\r
- border-top: 1px solid buttonhighlight;\r
- border-left: 1px solid buttonhighlight;\r
- border-bottom: 1px solid buttonshadow;\r
- border-right: 1px solid buttonshadow;\r
- padding: 0; margin: 0; padding-bottom:1; padding-top:1;\r
-}\r
-\r
-.rebar .field span.label {\r
- margin-left: 0;\r
- padding-left: 8; width: 60;\r
-}\r
-\r
-.rebar .field span.start {\r
- position: relative; top: 1;\r
-\r
-}\r
-\r
-.rebar .field input.field {\r
- border-top: 1px solid buttonshadow;\r
- border-left: 1px solid buttonshadow;\r
- border-bottom: 1px solid buttonhighlight;\r
- border-right: 1px solid buttonhighlight;\r
- height: 20px; margin: 0px; \r
- margin-bottom: -1px;\r
-}\r
-\r
-.rebar img {\r
- border: 1px solid buttonface; margin:0; padding:1;\r
- cursor: hand;\r
-}\r
-\r
-.rebar img.hover {\r
- border-top: 1px solid buttonhighlight;\r
- border-left: 1px solid buttonhighlight;\r
- border-bottom: 1px solid buttonshadow;\r
- border-right: 1px solid buttonshadow;\r
-}\r
-\r
-.rebar img.down {\r
- border-bottom: 1px solid buttonhighlight;\r
- border-right: 1px solid buttonhighlight;\r
- border-top: 1px solid buttonshadow;\r
- border-left: 1px solid buttonshadow;\r
-}\r
-\r
-.rebar img.disabled {\r
- border: 1px solid buttonface; margin:0; padding:0;\r
- filter: progid:DXImageTransform.Microsoft.Alpha(opacity=30);\r
- cursor: normal;\r
-}\r
-\r
-.rebar img.spacer {\r
- cursor: normal;\r
-}\r
-\r
-/* table control styles ***************************************************************/\r
-td.tbl { padding:0; padding-bottom:0; padding-top:0;\r
- font-family: "MS Sans Serif"; font-size: xx-small; vertical-align: middle;\r
-}\r
-\r
-td.spacer {\r
- border-top: 1px solid buttonhighlight;\r
- padding: 0; margin: 0; height: 4;\r
-}\r
-\r
-.tbl img {\r
- border: 1px solid buttonface; margin:0; padding:1;\r
- cursor: hand;\r
-}\r
-\r
-.tbl img.hover {\r
- border-top: 1px solid buttonhighlight;\r
- border-left: 1px solid buttonhighlight;\r
- border-bottom: 1px solid buttonshadow;\r
- border-right: 1px solid buttonshadow;\r
-}\r
-\r
-.tbl img.down {\r
- border-bottom: 1px solid buttonhighlight;\r
- border-right: 1px solid buttonhighlight;\r
- border-top: 1px solid buttonshadow;\r
- border-left: 1px solid buttonshadow;\r
-}\r
-\r
-.tbl img.disabled {\r
- border: 1px solid buttonface; margin:0; padding:0;\r
- filter: progid:DXImageTransform.Microsoft.Alpha(opacity=30);\r
- cursor: normal;\r
-}\r
-\r
-.tbl img.spacer {\r
- cursor: normal;\r
-}\r
-\r
-\r
-/* control styles ***************************************************************/\r
-object#color {\r
- position: absolute;\r
- width:252; height: 225;\r
- display: none;\r
- background-color: white; border: 1px outset buttonface\r
-}\r
+++ /dev/null
-<!--\r
-################################################################################\r
-##\r
-## HTML Text Editing Component for hosting in Web Pages\r
-## Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-##\r
-## This library is free software; you can redistribute it and/or\r
-## modify it under the terms of the GNU Lesser General Public\r
-## License as published by the Free Software Foundation; either\r
-## version 2.1 of the License, or (at your option) any later version.\r
-##\r
-## This library is distributed in the hope that it will be useful,\r
-## but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-## Lesser General Public License for more details.\r
-##\r
-## You should have received a copy of the GNU LesserGeneral Public License\r
-## along with this program; if not a copy can be obtained from\r
-##\r
-## http://www.gnu.org/copyleft/lesser.html\r
-##\r
-## or by writing to:\r
-##\r
-## Free Software Foundation, Inc.\r
-## 59 Temple Place - Suite 330,\r
-## Boston,\r
-## MA 02111-1307,\r
-## USA.\r
-##\r
-## Original Developer:\r
-##\r
-## Austin David France\r
-## Ramesys (Contracting Services) Limited\r
-## Mentor House\r
-## Ainsworth Street\r
-## Blackburn\r
-## Lancashire\r
-## BB1 6AY\r
-## United Kingdom\r
-## email: Austin.France@Ramesys.com\r
-##\r
-## Home Page: http://richtext.sourceforge.net/\r
-## Support: http://richtext.sourceforge.net/\r
-##\r
-################################################################################\r
-##\r
-## Authors & Contributers:\r
-##\r
-## OZ Austin David France [austin.france@ramesys.com]\r
-## Primary Developer\r
-##\r
-## LEON Leon Reinders [leonreinders@hetnet.nl]\r
-## Author of View Source & History Functions\r
-##\r
-## DIRK Dirk Datzert [Dirk.Datzert@rasselstein-hoesch.de]\r
-## Justify Full Option\r
-##\r
-## GE Herfurth, Gerrit [gerrit.herfurth@gs-druckfarben.de]\r
-## Translator\r
-##\r
-## BC Bill chalmers [bill_paula@btinternet.com]\r
-## General Geek\r
-##\r
-## History:\r
-##\r
-## OZ 08-01-2002\r
-## Extended the richeditor interface to include an options property.\r
-## This property can be set to enable/disable functionality in the\r
-## editor.\r
-##\r
-## OZ 22-01-2002\r
-## Disable drag-drop into the editor window and from toolbar buttons.\r
-##\r
-## OZ 10-02-2002\r
-## Added new Full Justify toolbar button. Implementation of\r
-## a mod to the editor made by Dirk Datzert who supplied the code and\r
-## the Image.\r
-##\r
-## OZ 11-02-2002\r
-## Startup with text area set to contenteditable="false". The content\r
-## is made editable when the editor has been initialised.\r
-##\r
-## OZ 11-02-2002\r
-## Include debug routines script (rte_debug.js)\r
-##\r
-## OZ 14-02-2002\r
-## Fix removing of color from text. This actually removes all formatting\r
-## and is equivelent to selecting the remove formatting option.\r
-##\r
-## OZ 14-02-2002\r
-## Reset Fill/Text color buttons once event has fired so they no longer\r
-## appear pressed.\r
-##\r
-## GE 05-06-2002\r
-## Add language translation support for table edit option.\r
-##\r
-## OZ 01-07-2002\r
-## Update table editing html (toolbar) with translation support.\r
-##\r
-## OZ 01-07-2002\r
-## Move language translation (rte_lang.js) below attaching of the\r
-## initEditor() window onload event to ensure translation is done\r
-## before the editor becomes visible.\r
-##\r
-## BC 10-07-2002\r
-## Made the font selection more "web style" with multiple font face attributes.\r
-## \r
-## WC 06-08-2002\r
-## Testing to ensure code was branched properly for 0.3.0 release\r
--->\r
-<html><head>\r
-<meta content="HTML 4.0" name="vs_targetSchema">\r
-<meta content="Microsoft FrontPage 5.0" name="GENERATOR">\r
-<link rel="StyleSheet" type="text/css" href="richedit.css">\r
-<link rel="StyleSheet" type="text/css" href="syntax.css">\r
-<link rel="StyleSheet" type="text/css" href="custom.css">\r
-<script language="JavaScript" src="rte_xhtml.js"></script>\r
-<script language="JavaScript" src="rte_interface.js"></script>\r
-<script language="JavaScript" src="rte_debug.js"></script>\r
-<script language="JavaScript" src="rte.js"></script>\r
-<script language="JavaScript" src="rte_codesweep.js"></script>\r
-<script language="JavaScript" src="rte_editmode.js"></script>\r
-<script language="JavaScript" src="rte_history.js"></script>\r
-<SCRIPT language="JavaScript" src="tableEditor.js"></SCRIPT>\r
-<script language="JavaScript">\r
-// This defines the scriptlets public interface. See rte_interface.js for\r
-// the actual interface definition.\r
-var public_description = new RichEditor();\r
-// Initialise the editor as soon as the window is loaded.\r
-window.attachEvent("onload", initEditor);\r
-// Initialise the tEdit var\r
-var tEdit = null;\r
-</script>\r
-<script language="JavaScript" src="rte_lang.js"></script>\r
-</head>\r
-<body leftMargin="0" topMargin="0" scroll="no" unselectable="on"\r
- onload="tEdit = new tableEditor('doc', 'textedit');"\r
- onMouseMove="if (tEdit) { tEdit.changePos(); tEdit.resizeCell() }" >\r
-\r
-<!-- Loading Layer ----------------------------------->\r
-<div id="loading" style="position: absolute; top: 0px; left: 0px; height: 100%; z-index: -1">\r
- <table width="100%" height="100%"><tr><td align="center" valign="middle">\r
- <font size="+2">Loading ...</font>\r
- </td></tr></table>\r
-</div>\r
-\r
-<!-- Editor Layer -------------------------------------->\r
-<table id="editor" unselectable="on" height="100%" cellspacing="0" cellpadding="0" width="100%" bgcolor="buttonface" border="0">\r
- <tr ondragstart="handleDrag(0)" onmouseup="press(false)" onmousedown="press(true)" onmouseover="hover(true)" onmouseout="hover(false)">\r
- <td class="rebar"><nobr><span class="toolbar">\r
- <img class="spacer" src="images/spacer.gif" width="2"><span class="start"></span>\r
- <img id="btnBold" onclick="doStyle('bold')" alt="@{Bold}" src="images/icon_bold.gif" align="absMiddle" width="20" height="20">\r
- <img id="btnItalic" onclick="doStyle('italic')" alt="@{Italic}" src="images/icon_italic.gif" align="absMiddle" width="20" height="20">\r
- <img id="btnUnderline" onclick="doStyle('underline')" alt="@{Underline}" src="images/icon_underline.gif" align="absMiddle" width="20" height="20">\r
- <img id="btnStrikethrough" onclick="doStyle('strikethrough')" alt="@{Strikethrough}" src="images/icon_strikethrough.gif" align="absMiddle" width="20" height="20">\r
- <img class="spacer" src="images/spacer.gif" width="2"><span class="sep"></span>\r
- <img id="btnLeftJustify" onclick="doStyle('JustifyLeft')" alt="@{AlignLeft}" src="images/icon_left.gif" align="absMiddle" width="20" height="20">\r
- <img id="btnCenter" onclick="doStyle('JustifyCenter')" alt="@{Center}" src="images/icon_center.gif" align="absMiddle" width="20" height="20">\r
- <img id="btnRightJustify" onclick="doStyle('JustifyRight')" alt="@{AlignRight}" src="images/icon_right.gif" align="absMiddle" width="20" height="20">\r
- <img id="btnFullJustify" onclick="doStyle('JustifyFull')" alt="@{AlignBlock}" src="images/icon_block.gif" align="absMiddle" width="20" height="20">\r
- <img class="spacer" src="images/spacer.gif" width="2"><span class="sep"></span>\r
- <img id="btnNumList" onclick="doStyle('InsertOrderedList')" alt="@{NumberedList}" src="images/icon_numlist.gif" align="absMiddle" width="20" height="20">\r
- <img id="btnBulList" onclick="doStyle('InsertUnorderedList')" alt="@{BulettedList}" src="images/icon_bullist.gif" align="absMiddle" width="20" height="20">\r
- <img class="spacer" src="images/spacer.gif" width="2"><span class="sep"></span>\r
- <img id="btnOutdent" onmousedown="doStyle('Outdent')" alt="@{DecreaseIndent}" src="images/icon_outdent.gif" align="absMiddle" width="20" height="20">\r
- <img id="btnIndent" onmousedown="doStyle('Indent')" alt="@{IncreaseIndent}" src="images/icon_indent.gif" align="absMiddle" width="20" height="20">\r
- <img id="btnSelect" onclick="doStyle('SelectAll')" alt="@{SelectAll}" src="images/icon_select_all.gif" align="absMiddle" width="20" height="20">\r
- <span id="featureHistory">\r
- <img class="spacer" src="images/spacer.gif" width="10"><span class="sep"></span>\r
- <img id="btnPrev" onmousedown="document.execCommand('Undo')" alt="@{HistoryBack}" src="images/icon_undo.gif" align="absMiddle" width="20" height="20">\r
- <img id="btnNext" onmousedown="document.execCommand('Redo')" alt="@{HistoryForward}" src="images/icon_redo.gif" align="absMiddle" width="20" height="20">\r
- </span></nobr></td>\r
-\r
- <td class="rebar"><nobr><span class="toolbar">\r
- <img class="spacer" src="images/spacer.gif" width="2"><span class="start"></span>\r
- <img id="btnLink" onclick="link(true)" alt="@{InsertLink}" src="images/icon_ins_link.gif" align="absMiddle" width="20" height="20">\r
- <img id="btnRemLink" onclick="link(false)" alt="@{RemoveLink}" src="images/icon_rem_link.gif" align="absMiddle" width="20" height="20">\r
- <img class="spacer" src="images/spacer.gif" width="2"><span class="sep"></span>\r
- <img id="btnImage" onclick="insert('image')" alt="@{InsertImage}" src="images/icon_ins_image.gif" align="absMiddle" width="20" height="20">\r
- <img id="btnTable" onclick="insert('table')" alt="@{InsertTable}" src="images/icon_ins_table.gif" align="absMiddle" width="20" height="20">\r
- <img id="btnTable" onclick="document.getElementById('tblCtrl').style.visibility = 'visible';" alt="@{EditTable}" src="images/icon_edt_table.gif" align="absMiddle" width="20" height="20">\r
- <img id="btnRule" onclick="doStyle('InsertHorizontalRule')" alt="@{InsertLine}" src="images/icon_rule.gif" align="absMiddle" width="20" height="20">\r
- <img id="btnSmile" onclick="insert('smile')" alt="@{InsertSmily}" src="images/em.icon.smile.gif" align="absMiddle" width="15" height="15">\r
- <img id="btnChar" onclick="insert('char')" alt="@{InsertCharacter}" src="images/icon_ins_char.gif" align="absMiddle" width="20" height="20" border="0">\r
- <span id="featureSource">\r
- <img class="spacer" src="images/spacer.gif" width="2"><span class="start"></span> \r
- <input title="@{SourceTitle}" class="checkbox" hidefocus type="checkbox" name="switchMode"\r
- onclick="tEdit.stopCellResize(true); tEdit.unSetTableElements(); setEditMode(switchMode)">\r
- <span class="label">@{Source}</span>\r
- </span>\r
- </span>\r
- </nobr></td></tr>\r
- <tr id="featureStyleBar" ondragstart="handleDrag(0)" onmouseup="press(false)" onmousedown="press(true)" onmouseover="hover(true)" onmouseout="hover(false)">\r
- <td colspan=2 class="rebar"><nobr><span class="toolbar">\r
- <img class="spacer" src="images/spacer.gif" width="2"><span class="start"></span> \r
- <span id="featureStyle">\r
- <span class="label">@{Style}</span>\r
- <select name="" id="ctlStyle" class="fontstyle" onchange="addTag(this)">\r
- </select>\r
- <span class="sep"></span>\r
- </span>\r
- <span id="featureFont">\r
- <span class="label">@{Font}</span>\r
- <select hidefocus class="fontselect" id="ctlFont" onchange="sel(this)">\r
- <option selected></option>\r
- <option id="Arial" value="Arial, Helvetica, sans-serif">Arial, Helvetica, sans-serif</option>\r
- <option id="Times New Roman" value="Times New Roman, Times, serif">Times New Roman, Times, serif</option>\r
- <option id="Courier New" value="Courier New, Courier, mono">Courier New, Courier, mono</option>\r
- <option id="Georgia" value="Georgia, Times New Roman, Times, serif">Georgia, Times New Roman, Times, serif</option>\r
- <option id="Verdana" value="Verdana, Arial, Helvetica, sans-serif">Verdana, Arial, Helvetica, sans-serif</option>\r
- <option id="Geneva" value="Geneva, Arial, Helvetica, sans-serif">Geneva, Arial, Helvetica, sans-serif</option>\r
- </select>\r
- </span>\r
- <span id="featureFontSize">\r
- <span class="sep"></span>\r
- <span class="label">@{Size}</span>\r
- <select hidefocus class="fontsize" id="ctlSize" onchange="sel(this)">\r
- <option selected></option>\r
- <option value="1">xx-small</option>\r
- <option value="2">x-small</option>\r
- <option value="3">small</option>\r
- <option value="4">medium</option>\r
- <option value="5">large</option>\r
- <option value="6">x-large</option>\r
- <option value="7">xx-large</option>\r
- </select>\r
- </span>\r
- <span id="featureColour">\r
- <span class="sep"></span>\r
- <img id="btnText" onclick="pickColor('ForeColor')" alt="@{TextColor}" src="images/icon_color_text.gif" align="absMiddle" width="36" height="20">\r
- <img id="btnFill" onclick="pickColor('BackColor')" alt="@{BackgroundColor}" src="images/icon_color_fill.gif" align="absMiddle" width="36" height="20">\r
- </span>\r
- </span></nobr></td>\r
-</tr>\r
-<!-- Fields are inserted here -->\r
-<tr id="rebarBottom">\r
- <td colspan=2 class="spacer" height="2"><img height="1" src="images/spacer.gif" align="left"></td></tr>\r
- <tr>\r
- <td colspan=2 class="textedit" id="textedit" valign="top" height="100%">\r
- <div class="document" id="doc" onkeyup="reset(); markSelectedElement(); tEdit.setTableElements(); tEdit.repositionArrows();" contenteditable="false" style="OVERFLOW: auto; WIDTH: 100%; HEIGHT: 100%" onclick="reset(); markSelectedElement()" onmouseup="markSelectedElement(); tEdit.setTableElements(); tEdit.stopCellResize(false);" onscroll="tEdit.repositionArrows()" height="100%" width="100%">\r
- </div>\r
- </td></tr>\r
-</table>\r
-<object id="color" data="colorchooser.html" type="text/x-scriptlet" VIEWASTEXT>\r
-</object>\r
-<script for="color" event="onscriptletevent(name, data)">\r
- setColor(name, data);\r
-</script>\r
-\r
-<!-- Table Editing Layer ----------------------------------->\r
-<div id="tblCtrl" style="position:absolute; visibility:hidden; left:200; top:200; z-index: 5">\r
-<table border="0" cellpadding="0" cellspacing="0" width="68" bgcolor="buttonface">\r
- <tr ondragstart="handleDrag(0)">\r
- <td><img src="images/spacer.gif" width="8" height="1" border="0"></td>\r
- <td><img src="images/spacer.gif" width="5" height="1" border="0"></td>\r
- <td><img src="images/spacer.gif" width="18" height="1" border="0"></td>\r
- <td><img src="images/spacer.gif" width="2" height="1" border="0"></td>\r
- <td><img src="images/spacer.gif" width="22" height="1" border="0"></td>\r
- <td><img src="images/spacer.gif" width="4" height="1" border="0"></td>\r
- <td><img src="images/spacer.gif" width="9" height="1" border="0"></td>\r
- <td><img src="images/spacer.gif" width="1" height="1" border="0"></td>\r
- </tr>\r
-\r
- <tr ondragstart="handleDrag(0)">\r
- <td colspan="2" onClick="document.getElementById('tblCtrl').style.visibility = 'hidden';"><img name="CloseWindow" src="images/CloseWindow.gif" width="13" height="16" border="0"></td>\r
- <td colspan="3" onmousedown="tEdit.setDrag( document.getElementById('tblCtrl') )" onmouseup="tEdit.setDrag( document.getElementById('tblCtrl') )"><img name="toolbar" src="images/toolbar.gif" width="42" height="16" border="0"></td>\r
- <td colspan="2"><img name="minimize" src="images/minimize.gif" width="13" height="16" border="0"></td>\r
- <td><img src="images/spacer.gif" width="1" height="16" border="0"></td>\r
- </tr>\r
- <tr ondragstart="handleDrag(0)">\r
- <td colspan="7"><img name="hdr_tables" src="@{hdr_tables}" width="68" height="15" border="0"></td>\r
- <td><img src="images/spacer.gif" width="1" height="15" border="0"></td>\r
- </tr>\r
- <tr ondragstart="handleDrag(0)">\r
- <td colspan="7"><img name="plt_hdr" src="images/plt_hdr.gif" width="68" height="9" border="0"></td>\r
- <td><img src="images/spacer.gif" width="1" height="9" border="0"></td>\r
- </tr>\r
-\r
- <tr ondragstart="handleDrag(0)" onmouseup="press(false)" onmousedown="press(true)" onmouseover="hover(true)" onmouseout="hover(false)">\r
- <td rowspan="8"><img class="spacer" name="Editor_r4_c1" src="images/Editor_r4_c1.gif" width="8" height="112" border="0"></td>\r
- <td colspan="2" class="tbl"><img name="rmv_colspan" onclick="tEdit.splitCell();" src="images/rmv_colspan.gif" width="21" height="24" alt="@{RemoveColspan}"></td>\r
- <td rowspan="8"><img class="spacer" name="Editor_r4_c4" src="images/Editor_r4_c4.gif" width="2" height="112" border="0"></td>\r
- <td colspan="2" class="tbl"><img name="rmv_rowspan" onclick="tEdit.unMergeDown();" src="images/rmv_rowspan.gif" width="24" height="24" alt="@{RemoveRowspan}"></td>\r
- <td rowspan="8"><img class="spacer" name="Editor_r4_c7" src="images/Editor_r4_c7.gif" width="9" height="112" border="0"></td>\r
- <td><img class="spacer" src="images/spacer.gif" width="1" height="26" border="0"></td>\r
- </tr>\r
-\r
- <tr ondragstart="handleDrag(0)">\r
- <td colspan="2"><img class="spacer" name="Editor_r5_c2" src="images/Editor_r5_c2.gif" width="23" height="2" border="0"></td>\r
- <td colspan="2"><img class="spacer" name="Editor_r5_c5" src="images/Editor_r5_c5.gif" width="26" height="2" border="0"></td>\r
- <td><img class="spacer" src="images/spacer.gif" width="1" height="2" border="0"></td>\r
- </tr>\r
-\r
- <tr ondragstart="handleDrag(0)" onmouseup="press(false)" onmousedown="press(true)" onmouseover="hover(true)" onmouseout="hover(false)">\r
- <td colspan="2" class="tbl"><img name="incr_colspan" onclick="tEdit.mergeRight();" src="images/incr_colspan.gif" width="21" height="24" alt="@{IncreaseColspan}" border="0"></td> \r
- <td colspan="2" class="tbl"><img name="incr_rowspan" onclick="tEdit.mergeDown();" src="images/incr_rowspan.gif" width="24" height="24" alt="@{IncreaseRowspan}" border="0"></td>\r
- <td><img class="spacer" src="images/spacer.gif" width="1" height="26" border="0"></td>\r
- </tr>\r
-\r
- <tr ondragstart="handleDrag(0)">\r
- <td colspan="2"><img class="spacer" name="Editor_r7_c2" src="images/Editor_r7_c2.gif" width="23" height="2" border="0"></td>\r
- <td colspan="2"><img class="spacer" name="Editor_r7_c5" src="images/Editor_r7_c5.gif" width="26" height="2" border="0"></td>\r
- <td><img class="spacer" src="images/spacer.gif" width="1" height="2" border="0"></td>\r
- </tr>\r
-\r
- <tr ondragstart="handleDrag(0)" onmouseup="press(false)" onmousedown="press(true)" onmouseover="hover(true)" onmouseout="hover(false)">\r
- <td colspan="2" class="tbl"><img name="add_col" onclick="tEdit.processColumn('add');" src="images/add_col.gif" width="21" height="22" alt="@{AddColumn}" border="0" ></td> \r
- <td colspan="2" class="tbl"><img name="add_row" onclick="tEdit.processRow('add');" src="images/add_row.gif" width="24" height="22" alt="@{AddRow}" border="0" ></td>\r
- <td><img src="images/spacer.gif" width="1" height="24" border="0"></td>\r
- </tr>\r
-\r
- <tr ondragstart="handleDrag(0)">\r
- <td colspan="2"><img class="spacer" name="Editor_r9_c2" src="images/Editor_r9_c2.gif" width="23" height="4" border="0"></td>\r
- <td colspan="2"><img class="spacer" name="Editor_r9_c5" src="images/Editor_r9_c5.gif" width="26" height="4" border="0"></td>\r
- <td><img class="spacer" src="images/spacer.gif" width="1" height="4" border="0"></td>\r
- </tr>\r
-\r
- <tr ondragstart="handleDrag(0)" onmouseup="press(false)" onmousedown="press(true)" onmouseover="hover(true)" onmouseout="hover(false)">\r
- <td colspan="2" class="tbl"><img name="rmv_col" onclick="tEdit.processColumn('remove');" src="images/rmv_col.gif" width="21" height="22" alt="@{RemoveColumn}" border="0" ></td> \r
- <td colspan="2" class="tbl"><img name="rmv_row" onclick="tEdit.processRow('remove');" src="images/rmv_row.gif" width="24" height="22" alt="@{RemoveRow}" border="0" ></td>\r
- <td><img src="images/spacer.gif" width="1" height="24" border="0"></td>\r
- </tr>\r
-\r
- <tr ondragstart="handleDrag(0)">\r
- <td colspan="2"><img name="Editor_r11_c2" src="images/Editor_r11_c2.gif" width="23" height="4" border="0"></td>\r
- <td colspan="2"><img name="Editor_r11_c5" src="images/Editor_r11_c5.gif" width="26" height="4" border="0"></td>\r
- <td><img class="spacer" src="images/spacer.gif" width="1" height="4" border="0"></td>\r
- </tr>\r
-\r
- <tr ondragstart="handleDrag(0)">\r
- <td colspan="7"><img name="plt_ftr" src="images/plt_ftr.gif" width="68" height="8" border="0"></td>\r
- <td><img class="spacer" src="images/spacer.gif" width="1" height="8" border="0"></td>\r
- </tr>\r
-</table>\r
-</div>\r
-\r
-</body></html>\r
+++ /dev/null
-<!--
-################################################################################
-##
-## HTML Text Editing Component for hosting in Web Pages
-## Copyright (C) 2001 Ramesys (Contracting Services) Limited
-##
-## This library is free software; you can redistribute it and/or
-## modify it under the terms of the GNU Lesser General Public
-## License as published by the Free Software Foundation; either
-## version 2.1 of the License, or (at your option) any later version.
-##
-## This library is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-## Lesser General Public License for more details.
-##
-## You should have received a copy of the GNU LesserGeneral Public License
-## along with this program; if not a copy can be obtained from
-##
-## http://www.gnu.org/copyleft/lesser.html
-##
-## or by writing to:
-##
-## Free Software Foundation, Inc.
-## 59 Temple Place - Suite 330,
-## Boston,
-## MA 02111-1307,
-## USA.
-##
-## Original Developer:
-##
-## Austin David France
-## Ramesys (Contracting Services) Limited
-## Mentor House
-## Ainsworth Street
-## Blackburn
-## Lancashire
-## BB1 6AY
-## United Kingdom
-## email: Austin.France@Ramesys.com
-##
-## Home Page: http://richtext.sourceforge.net/
-## Support: http://richtext.sourceforge.net/
-##
-################################################################################
-##
-## Authors & Contributers:
-##
-## OZ Austin David France [austin.france@ramesys.com]
-## Primary Developer
-##
-## LEON Leon Reinders [leonreinders@hetnet.nl]
-## Author of View Source & History Functions
-##
-## DIRK Dirk Datzert [Dirk.Datzert@rasselstein-hoesch.de]
-## Justify Full Option
-##
-## GE Herfurth, Gerrit [gerrit.herfurth@gs-druckfarben.de]
-## Translator
-##
-## BC Bill chalmers [bill_paula@btinternet.com]
-## General Geek
-##
-## History:
-##
-## OZ 08-01-2002
-## Extended the richeditor interface to include an options property.
-## This property can be set to enable/disable functionality in the
-## editor.
-##
-## OZ 22-01-2002
-## Disable drag-drop into the editor window and from toolbar buttons.
-##
-## OZ 10-02-2002
-## Added new Full Justify toolbar button. Implementation of
-## a mod to the editor made by Dirk Datzert who supplied the code and
-## the Image.
-##
-## OZ 11-02-2002
-## Startup with text area set to contenteditable="false". The content
-## is made editable when the editor has been initialised.
-##
-## OZ 11-02-2002
-## Include debug routines script (rte_debug.js)
-##
-## OZ 14-02-2002
-## Fix removing of color from text. This actually removes all formatting
-## and is equivelent to selecting the remove formatting option.
-##
-## OZ 14-02-2002
-## Reset Fill/Text color buttons once event has fired so they no longer
-## appear pressed.
-##
-## GE 05-06-2002
-## Add language translation support for table edit option.
-##
-## OZ 01-07-2002
-## Update table editing html (toolbar) with translation support.
-##
-## OZ 01-07-2002
-## Move language translation (rte_lang.js) below attaching of the
-## initEditor() window onload event to ensure translation is done
-## before the editor becomes visible.
-##
-## BC 10-07-2002
-## Made the font selection more "web style" with multiple font face attributes.
-##
-## WC 06-08-2002
-## Testing to ensure code was branched properly for 0.3.0 release
--->
-<?php
- include("../../config.php");
-
- require_variable($id);
-
-?>
-<html><head>
-<meta content="HTML 4.0" name="vs_targetSchema">
-<meta content="Microsoft FrontPage 5.0" name="GENERATOR">
-<link rel="StyleSheet" type="text/css" href="richedit.css">
-<link rel="StyleSheet" type="text/css" href="syntax.css">
-<link rel="StyleSheet" type="text/css" href="custom.css">
-<script language="JavaScript" src="rte_xhtml.js"></script>
-<script language="JavaScript" src="rte_interface.js"></script>
-<script language="JavaScript" src="rte_debug.js"></script>
-<script language="JavaScript" src="rte.php?id=<?php echo $id ?>"></script>
-<script language="JavaScript" src="rte_codesweep.js"></script>
-<script language="JavaScript" src="rte_editmode.js"></script>
-<script language="JavaScript" src="rte_history.js"></script>
-<SCRIPT language="JavaScript" src="tableEditor.js"></SCRIPT>
-<script language="JavaScript">
-// This defines the scriptlets public interface. See rte_interface.js for
-// the actual interface definition.
-var public_description = new RichEditor();
-// Initialise the editor as soon as the window is loaded.
-window.attachEvent("onload", initEditor);
-// Initialise the tEdit var
-var tEdit = null;
-</script>
-<script language="JavaScript" src="rte_lang.js"></script>
-</head>
-<body leftMargin="0" topMargin="0" scroll="no" unselectable="on"
- onload="tEdit = new tableEditor('doc', 'textedit');"
- onMouseMove="if (tEdit) { tEdit.changePos(); tEdit.resizeCell() }" >
-
-<!-- Loading Layer ----------------------------------->
-<div id="loading" style="position: absolute; top: 0px; left: 0px; height: 100%; z-index: -1">
- <table width="100%" height="100%"><tr><td align="center" valign="middle">
- <font size="+2">Loading ...</font>
- </td></tr></table>
-</div>
-
-<!-- Editor Layer -------------------------------------->
-<table id="editor" unselectable="on" height="100%" cellspacing="0" cellpadding="0" width="100%" bgcolor="buttonface" border="0">
- <tr ondragstart="handleDrag(0)" onmouseup="press(false)" onmousedown="press(true)" onmouseover="hover(true)" onmouseout="hover(false)">
- <td class="rebar"><nobr><span class="toolbar">
- <img class="spacer" src="images/spacer.gif" width="2"><span class="start"></span>
- <img id="btnBold" onclick="doStyle('bold')" alt="@{Bold}" src="images/icon_bold.gif" align="absMiddle" width="20" height="20">
- <img id="btnItalic" onclick="doStyle('italic')" alt="@{Italic}" src="images/icon_italic.gif" align="absMiddle" width="20" height="20">
- <img id="btnUnderline" onclick="doStyle('underline')" alt="@{Underline}" src="images/icon_underline.gif" align="absMiddle" width="20" height="20">
- <img id="btnStrikethrough" onclick="doStyle('strikethrough')" alt="@{Strikethrough}" src="images/icon_strikethrough.gif" align="absMiddle" width="20" height="20">
- <img class="spacer" src="images/spacer.gif" width="2"><span class="sep"></span>
- <img id="btnLeftJustify" onclick="doStyle('JustifyLeft')" alt="@{AlignLeft}" src="images/icon_left.gif" align="absMiddle" width="20" height="20">
- <img id="btnCenter" onclick="doStyle('JustifyCenter')" alt="@{Center}" src="images/icon_center.gif" align="absMiddle" width="20" height="20">
- <img id="btnRightJustify" onclick="doStyle('JustifyRight')" alt="@{AlignRight}" src="images/icon_right.gif" align="absMiddle" width="20" height="20">
- <img id="btnFullJustify" onclick="doStyle('JustifyFull')" alt="@{AlignBlock}" src="images/icon_block.gif" align="absMiddle" width="20" height="20">
- <img class="spacer" src="images/spacer.gif" width="2"><span class="sep"></span>
- <img id="btnNumList" onclick="doStyle('InsertOrderedList')" alt="@{NumberedList}" src="images/icon_numlist.gif" align="absMiddle" width="20" height="20">
- <img id="btnBulList" onclick="doStyle('InsertUnorderedList')" alt="@{BulettedList}" src="images/icon_bullist.gif" align="absMiddle" width="20" height="20">
- <img class="spacer" src="images/spacer.gif" width="2"><span class="sep"></span>
- <img id="btnOutdent" onmousedown="doStyle('Outdent')" alt="@{DecreaseIndent}" src="images/icon_outdent.gif" align="absMiddle" width="20" height="20">
- <img id="btnIndent" onmousedown="doStyle('Indent')" alt="@{IncreaseIndent}" src="images/icon_indent.gif" align="absMiddle" width="20" height="20">
- <img id="btnSelect" onclick="doStyle('SelectAll')" alt="@{SelectAll}" src="images/icon_select_all.gif" align="absMiddle" width="20" height="20">
- <span id="featureHistory">
- <img class="spacer" src="images/spacer.gif" width="10"><span class="sep"></span>
- <img id="btnPrev" onmousedown="document.execCommand('Undo')" alt="@{HistoryBack}" src="images/icon_undo.gif" align="absMiddle" width="20" height="20">
- <img id="btnNext" onmousedown="document.execCommand('Redo')" alt="@{HistoryForward}" src="images/icon_redo.gif" align="absMiddle" width="20" height="20">
- </span></nobr></td>
-
- <td class="rebar"><nobr><span class="toolbar">
- <img class="spacer" src="images/spacer.gif" width="2"><span class="start"></span>
- <img id="btnLink" onclick="link(true)" alt="@{InsertLink}" src="images/icon_ins_link.gif" align="absMiddle" width="20" height="20">
- <img id="btnRemLink" onclick="link(false)" alt="@{RemoveLink}" src="images/icon_rem_link.gif" align="absMiddle" width="20" height="20">
- <img class="spacer" src="images/spacer.gif" width="2"><span class="sep"></span>
- <img id="btnImage" onclick="insert('image')" alt="@{InsertImage}" src="images/icon_ins_image.gif" align="absMiddle" width="20" height="20">
- <img id="btnTable" onclick="insert('table')" alt="@{InsertTable}" src="images/icon_ins_table.gif" align="absMiddle" width="20" height="20">
- <img id="btnTable" onclick="document.getElementById('tblCtrl').style.visibility = 'visible';" alt="@{EditTable}" src="images/icon_edt_table.gif" align="absMiddle" width="20" height="20">
- <img id="btnRule" onclick="doStyle('InsertHorizontalRule')" alt="@{InsertLine}" src="images/icon_rule.gif" align="absMiddle" width="20" height="20">
- <img id="btnSmile" onclick="insert('smile')" alt="@{InsertSmily}" src="images/em.icon.smile.gif" align="absMiddle" width="15" height="15">
- <img id="btnChar" onclick="insert('char')" alt="@{InsertCharacter}" src="images/icon_ins_char.gif" align="absMiddle" width="20" height="20" border="0">
- <span id="featureSource">
- <img class="spacer" src="images/spacer.gif" width="2"><span class="start"></span>
- <input title="@{SourceTitle}" class="checkbox" hidefocus type="checkbox" name="switchMode"
- onclick="tEdit.stopCellResize(true); tEdit.unSetTableElements(); setEditMode(switchMode)">
- <span class="label">@{Source}</span>
- </span>
- </span>
- </nobr></td></tr>
- <tr id="featureStyleBar" ondragstart="handleDrag(0)" onmouseup="press(false)" onmousedown="press(true)" onmouseover="hover(true)" onmouseout="hover(false)">
- <td colspan=2 class="rebar"><nobr><span class="toolbar">
- <img class="spacer" src="images/spacer.gif" width="2"><span class="start"></span>
- <span id="featureStyle">
- <span class="label">@{Style}</span>
- <select name="" id="ctlStyle" class="fontstyle" onchange="addTag(this)">
- </select>
- <span class="sep"></span>
- </span>
- <span id="featureFont">
- <span class="label">@{Font}</span>
- <select hidefocus class="fontselect" id="ctlFont" onchange="sel(this)">
- <option selected></option>
- <option id="Arial" value="Arial, Helvetica, sans-serif">Arial, Helvetica, sans-serif</option>
- <option id="Times New Roman" value="Times New Roman, Times, serif">Times New Roman, Times, serif</option>
- <option id="Courier New" value="Courier New, Courier, mono">Courier New, Courier, mono</option>
- <option id="Georgia" value="Georgia, Times New Roman, Times, serif">Georgia, Times New Roman, Times, serif</option>
- <option id="Verdana" value="Verdana, Arial, Helvetica, sans-serif">Verdana, Arial, Helvetica, sans-serif</option>
- <option id="Geneva" value="Geneva, Arial, Helvetica, sans-serif">Geneva, Arial, Helvetica, sans-serif</option>
- </select>
- </span>
- <span id="featureFontSize">
- <span class="sep"></span>
- <span class="label">@{Size}</span>
- <select hidefocus class="fontsize" id="ctlSize" onchange="sel(this)">
- <option selected></option>
- <option value="1">xx-small</option>
- <option value="2">x-small</option>
- <option value="3">small</option>
- <option value="4">medium</option>
- <option value="5">large</option>
- <option value="6">x-large</option>
- <option value="7">xx-large</option>
- </select>
- </span>
- <span id="featureColour">
- <span class="sep"></span>
- <img id="btnText" onclick="pickColor('ForeColor')" alt="@{TextColor}" src="images/icon_color_text.gif" align="absMiddle" width="36" height="20">
- <img id="btnFill" onclick="pickColor('BackColor')" alt="@{BackgroundColor}" src="images/icon_color_fill.gif" align="absMiddle" width="36" height="20">
- </span>
- </span></nobr></td>
-</tr>
-<!-- Fields are inserted here -->
-<tr id="rebarBottom">
- <td colspan=2 class="spacer" height="2"><img height="1" src="images/spacer.gif" align="left"></td></tr>
- <tr>
- <td colspan=2 class="textedit" id="textedit" valign="top" height="100%">
- <div class="document" id="doc" onkeyup="reset(); markSelectedElement(); tEdit.setTableElements(); tEdit.repositionArrows();" contenteditable="false" style="OVERFLOW: auto; WIDTH: 100%; HEIGHT: 100%" onclick="reset(); markSelectedElement()" onmouseup="markSelectedElement(); tEdit.setTableElements(); tEdit.stopCellResize(false);" onscroll="tEdit.repositionArrows()" height="100%" width="100%">
- </div>
- </td></tr>
-</table>
-<object id="color" data="colorchooser.html" type="text/x-scriptlet" VIEWASTEXT>
-</object>
-<script for="color" event="onscriptletevent(name, data)">
- setColor(name, data);
-</script>
-
-<!-- Table Editing Layer ----------------------------------->
-<div id="tblCtrl" style="position:absolute; visibility:hidden; left:200; top:200; z-index: 5">
-<table border="0" cellpadding="0" cellspacing="0" width="68" bgcolor="buttonface">
- <tr ondragstart="handleDrag(0)">
- <td><img src="images/spacer.gif" width="8" height="1" border="0"></td>
- <td><img src="images/spacer.gif" width="5" height="1" border="0"></td>
- <td><img src="images/spacer.gif" width="18" height="1" border="0"></td>
- <td><img src="images/spacer.gif" width="2" height="1" border="0"></td>
- <td><img src="images/spacer.gif" width="22" height="1" border="0"></td>
- <td><img src="images/spacer.gif" width="4" height="1" border="0"></td>
- <td><img src="images/spacer.gif" width="9" height="1" border="0"></td>
- <td><img src="images/spacer.gif" width="1" height="1" border="0"></td>
- </tr>
-
- <tr ondragstart="handleDrag(0)">
- <td colspan="2" onClick="document.getElementById('tblCtrl').style.visibility = 'hidden';"><img name="CloseWindow" src="images/CloseWindow.gif" width="13" height="16" border="0"></td>
- <td colspan="3" onmousedown="tEdit.setDrag( document.getElementById('tblCtrl') )" onmouseup="tEdit.setDrag( document.getElementById('tblCtrl') )"><img name="toolbar" src="images/toolbar.gif" width="42" height="16" border="0"></td>
- <td colspan="2"><img name="minimize" src="images/minimize.gif" width="13" height="16" border="0"></td>
- <td><img src="images/spacer.gif" width="1" height="16" border="0"></td>
- </tr>
- <tr ondragstart="handleDrag(0)">
- <td colspan="7"><img name="hdr_tables" src="@{hdr_tables}" width="68" height="15" border="0"></td>
- <td><img src="images/spacer.gif" width="1" height="15" border="0"></td>
- </tr>
- <tr ondragstart="handleDrag(0)">
- <td colspan="7"><img name="plt_hdr" src="images/plt_hdr.gif" width="68" height="9" border="0"></td>
- <td><img src="images/spacer.gif" width="1" height="9" border="0"></td>
- </tr>
-
- <tr ondragstart="handleDrag(0)" onmouseup="press(false)" onmousedown="press(true)" onmouseover="hover(true)" onmouseout="hover(false)">
- <td rowspan="8"><img class="spacer" name="Editor_r4_c1" src="images/Editor_r4_c1.gif" width="8" height="112" border="0"></td>
- <td colspan="2" class="tbl"><img name="rmv_colspan" onclick="tEdit.splitCell();" src="images/rmv_colspan.gif" width="21" height="24" alt="@{RemoveColspan}"></td>
- <td rowspan="8"><img class="spacer" name="Editor_r4_c4" src="images/Editor_r4_c4.gif" width="2" height="112" border="0"></td>
- <td colspan="2" class="tbl"><img name="rmv_rowspan" onclick="tEdit.unMergeDown();" src="images/rmv_rowspan.gif" width="24" height="24" alt="@{RemoveRowspan}"></td>
- <td rowspan="8"><img class="spacer" name="Editor_r4_c7" src="images/Editor_r4_c7.gif" width="9" height="112" border="0"></td>
- <td><img class="spacer" src="images/spacer.gif" width="1" height="26" border="0"></td>
- </tr>
-
- <tr ondragstart="handleDrag(0)">
- <td colspan="2"><img class="spacer" name="Editor_r5_c2" src="images/Editor_r5_c2.gif" width="23" height="2" border="0"></td>
- <td colspan="2"><img class="spacer" name="Editor_r5_c5" src="images/Editor_r5_c5.gif" width="26" height="2" border="0"></td>
- <td><img class="spacer" src="images/spacer.gif" width="1" height="2" border="0"></td>
- </tr>
-
- <tr ondragstart="handleDrag(0)" onmouseup="press(false)" onmousedown="press(true)" onmouseover="hover(true)" onmouseout="hover(false)">
- <td colspan="2" class="tbl"><img name="incr_colspan" onclick="tEdit.mergeRight();" src="images/incr_colspan.gif" width="21" height="24" alt="@{IncreaseColspan}" border="0"></td>
- <td colspan="2" class="tbl"><img name="incr_rowspan" onclick="tEdit.mergeDown();" src="images/incr_rowspan.gif" width="24" height="24" alt="@{IncreaseRowspan}" border="0"></td>
- <td><img class="spacer" src="images/spacer.gif" width="1" height="26" border="0"></td>
- </tr>
-
- <tr ondragstart="handleDrag(0)">
- <td colspan="2"><img class="spacer" name="Editor_r7_c2" src="images/Editor_r7_c2.gif" width="23" height="2" border="0"></td>
- <td colspan="2"><img class="spacer" name="Editor_r7_c5" src="images/Editor_r7_c5.gif" width="26" height="2" border="0"></td>
- <td><img class="spacer" src="images/spacer.gif" width="1" height="2" border="0"></td>
- </tr>
-
- <tr ondragstart="handleDrag(0)" onmouseup="press(false)" onmousedown="press(true)" onmouseover="hover(true)" onmouseout="hover(false)">
- <td colspan="2" class="tbl"><img name="add_col" onclick="tEdit.processColumn('add');" src="images/add_col.gif" width="21" height="22" alt="@{AddColumn}" border="0" ></td>
- <td colspan="2" class="tbl"><img name="add_row" onclick="tEdit.processRow('add');" src="images/add_row.gif" width="24" height="22" alt="@{AddRow}" border="0" ></td>
- <td><img src="images/spacer.gif" width="1" height="24" border="0"></td>
- </tr>
-
- <tr ondragstart="handleDrag(0)">
- <td colspan="2"><img class="spacer" name="Editor_r9_c2" src="images/Editor_r9_c2.gif" width="23" height="4" border="0"></td>
- <td colspan="2"><img class="spacer" name="Editor_r9_c5" src="images/Editor_r9_c5.gif" width="26" height="4" border="0"></td>
- <td><img class="spacer" src="images/spacer.gif" width="1" height="4" border="0"></td>
- </tr>
-
- <tr ondragstart="handleDrag(0)" onmouseup="press(false)" onmousedown="press(true)" onmouseover="hover(true)" onmouseout="hover(false)">
- <td colspan="2" class="tbl"><img name="rmv_col" onclick="tEdit.processColumn('remove');" src="images/rmv_col.gif" width="21" height="22" alt="@{RemoveColumn}" border="0" ></td>
- <td colspan="2" class="tbl"><img name="rmv_row" onclick="tEdit.processRow('remove');" src="images/rmv_row.gif" width="24" height="22" alt="@{RemoveRow}" border="0" ></td>
- <td><img src="images/spacer.gif" width="1" height="24" border="0"></td>
- </tr>
-
- <tr ondragstart="handleDrag(0)">
- <td colspan="2"><img name="Editor_r11_c2" src="images/Editor_r11_c2.gif" width="23" height="4" border="0"></td>
- <td colspan="2"><img name="Editor_r11_c5" src="images/Editor_r11_c5.gif" width="26" height="4" border="0"></td>
- <td><img class="spacer" src="images/spacer.gif" width="1" height="4" border="0"></td>
- </tr>
-
- <tr ondragstart="handleDrag(0)">
- <td colspan="7"><img name="plt_ftr" src="images/plt_ftr.gif" width="68" height="8" border="0"></td>
- <td><img class="spacer" src="images/spacer.gif" width="1" height="8" border="0"></td>
- </tr>
-</table>
-</div>
-
-</body></html>
+++ /dev/null
-////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// HTML Text Editing Component for hosting in Web Pages\r
-// Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-//\r
-// This library is free software; you can redistribute it and/or\r
-// modify it under the terms of the GNU Lesser General Public\r
-// License as published by the Free Software Foundation; either\r
-// version 2.1 of the License, or (at your option) any later version.\r
-//\r
-// This library is distributed in the hope that it will be useful,\r
-// but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-// Lesser General Public License for more details.\r
-//\r
-// You should have received a copy of the GNU LesserGeneral Public License\r
-// along with this program; if not a copy can be obtained from\r
-//\r
-// http://www.gnu.org/copyleft/lesser.html\r
-//\r
-// or by writing to:\r
-//\r
-// Free Software Foundation, Inc.\r
-// 59 Temple Place - Suite 330,\r
-// Boston,\r
-// MA 02111-1307,\r
-// USA.\r
-//\r
-// Original Developer:\r
-//\r
-// Austin David France\r
-// Ramesys (Contracting Services) Limited\r
-// Mentor House\r
-// Ainsworth Street\r
-// Blackburn\r
-// Lancashire\r
-// BB1 6AY\r
-// United Kingdom\r
-// email: Austin.France@Ramesys.com\r
-//\r
-// Home Page: http://richtext.sourceforge.net/\r
-// Support: http://richtext.sourceforge.net/\r
-//\r
-////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Authors & Contributers:\r
-//\r
-// OZ Austin David France [austin.france@ramesys.com]\r
-// Primary Developer\r
-//\r
-// LEON Leon Reinders [leonreinders@hetnet.nl]\r
-// Author of View Source, History and Extended Style Functions\r
-//\r
-// DIRK Dirk Datzert [Dirk.Datzert@rasselstein-hoesch.de]\r
-// Justify Full Option\r
-//\r
-// BC Bill Chalmers [bill_paula@btinternet.com]\r
-// Font Selection\r
-//\r
-// History:\r
-//\r
-// OZ 21-01-2002\r
-// Fix a bug in applyOptions() that was not detecting a truth setting\r
-// properly. Changed substr(eq) to substr(eq+1). Also, set the\r
-// runtime style property, not the style property.\r
-//\r
-// OZ 22-01-2002\r
-// Moved initEditor() function into here from richedit.html\r
-//\r
-// OZ 22-01-2002\r
-// Added handleDrag() method to handle drag and drop events within the\r
-// html of the editor. Drag and drop is currently disabled until we\r
-// can find a practicle use for it.\r
-//\r
-// OZ 10-02-2002\r
-// Added code to handle the new Full Justify Option. Implementation of\r
-// a mod to the editor made by Dirk Datzert who supplied the code and\r
-// the Image.\r
-//\r
-// OZ 11-02-2002\r
-// Startup with text area set to contenteditable="false". The content\r
-// is made editable when the editor has been initialised.\r
-//\r
-// OZ 12-02-2002\r
-// Fix handling of mouse hover when hover over a button that is in the\r
-// down state. The down state of the button was being lost. This is\r
-// a re-introduction of an earlier bug which I thought was fixed.\r
-// The bug also occured when the button was pressed in some \r
-// circumstances. The fix implemented is to have a button state \r
-// property which is set when the state of a button is set in the\r
-// setState() routine and this is used to restore the button state when\r
-// the button is released or mouse moves out.\r
-//\r
-// OZ 12-06-2002 [richtext-Bugs-567960] Text area of editor window not get focus\r
-// Ensure the doc element (the DIV) has focus once initialisation is\r
-// complete. This ensures that when no HTML is supplied via the docHtml\r
-// property, that focus is where the user expects.\r
-//\r
-// BC 10-07-2002\r
-// added getfontface() function to retrieve the new "web style" font selection\r
-// this function is called from reset() in the same way as getStyle()\r
-//\r
-////////////////////////////////////////////////////////////////////////////////\r
-\r
-// Internal (private) properties. \r
-// RichEditor is the global RichEditor object (function) of which there is only\r
-// 1 instance.\r
-RichEditor.txtView = true; // WYSIWYG mode. false == View Source\r
-\r
-// initEditor(): Initialise the editor (called on window load, see below)\r
-function initEditor()\r
-{\r
- // Apply style data if supplied\r
- if (!public_description.styleData) {\r
- public_description.put_styleData(null);\r
- }\r
-\r
- // Apply default editor options\r
- var strDefaults = 'dragdrop=no;source=yes';\r
- strDefaults += ';history=' + (document.queryCommandSupported('Undo') ? 'yes' : 'no');\r
- applyOptions(strDefaults);\r
-\r
- // Prepare the editable region\r
- loading.style.display = 'none';\r
- doc.contentEditable = "true";\r
- editor.style.visibility = 'visible';\r
-\r
- // OZ - 12-06-2002\r
- // Put focus into the document (required when no HTML is supplied via docHtml property)\r
- doc.focus();\r
-}\r
-\r
-// checkRange(): make sure our pretend document (the content editable\r
-// DIV with id of "doc") has focus and that a text range exists (which\r
-// is what execCommand() operates on).\r
-function checkRange()\r
-{\r
- RichEditor.selectedImage = null;\r
- if (!RichEditor.txtView) return; // Disabled in View Source mode\r
- doc.focus();\r
- if (document.selection.type == "None") {\r
- document.selection.createRange();\r
- }\r
-var r = document.selection.createRange();\r
- DBG(1, 'RANGE Bounding('\r
- + 'top='+r.boundingHeight\r
- + ', left='+r.boundingHeight\r
- + ', width='+r.boundingWidth\r
- + ', height='+r.boundingHeight + ')'\r
- + ', Offset('\r
- + 'top='+r.offsetTop\r
- + ', left='+r.offsetLeft + ')'\r
- + ', Text=(' + r.text + ')'\r
- + ', HTML=(' + r.htmlText + ')'\r
- );\r
-}\r
-\r
-// post(): Called in response to clicking the post button in the\r
-// toolbar. It fires an event in the container named post, passing the\r
-// HTML of our newly edited document as the data argument.\r
-function post()\r
-{\r
- DBG(1, 'Raise "post" event');\r
- window.external.raiseEvent("post", doc.innerHTML);\r
-}\r
-\r
-// insert(): called in response to clicking the insert table, image,\r
-// smily icons in the toolbar. Loads up an appropriate dialog to\r
-// prompt for information, the dialog then returns the HTML code or\r
-// NULL. We paste the HTML code into the document.\r
-function insert(what)\r
-{\r
- if (!RichEditor.txtView) return; // Disabled in View Source mode\r
-\r
- DBG(1, 'insert(' + what + ')');\r
-\r
- // Chose action based on what is being inserted.\r
- switch(what)\r
- {\r
- case "table":\r
- strPage = "dlg_ins_table.html";\r
- strAttr = "status:no;dialogWidth:340px;dialogHeight:360px;help:no";\r
- break;\r
- case "smile":\r
- strPage = "dlg_ins_smile.html";\r
- strAttr = "status:no;dialogWidth:300px;dialogHeight:350px;help:no";\r
- break;\r
- case "char":\r
- strPage = "dlg_ins_char.html";\r
- strAttr = "status:no;dialogWidth:450px;dialogHeight:290px;help:no";\r
- break;\r
- case "image":\r
- strPage = "dlg_ins_image.html";\r
- strAttr = "status:no;dialogWidth:400px;dialogHeight:200px;help:no";' '\r
- break;\r
- case "about":\r
- strPage = "dlg_about.html";\r
- strAttr = "status:no;dialogWidth:500px;dialogHeight:405px;help:no";' '\r
- break;\r
- }\r
-\r
- // run the dialog that implements this type of element\r
- html = showModalDialog(strPage, window, strAttr);\r
-\r
- // and insert any result into the document.\r
- if (html) {\r
- insertHtml(html);\r
- }\r
-}\r
-\r
-// insertHtml(): Insert the supplied HTML into the current position\r
-// within the document.\r
-function insertHtml(html)\r
-{\r
- doc.focus();\r
- var sel = document.selection.createRange();\r
- // don't try to insert HTML into a control selection (ie. image or table)\r
- if (document.selection.type == 'Control') {\r
- return;\r
- }\r
- sel.pasteHTML(html);\r
-}\r
-\r
-// doStyle(): called to handle the simple style commands such a bold,\r
-// italic etc. These require no special handling, just a call to\r
-// execCommand(). We also call reset so that the toolbar represents\r
-// the state of the current text.\r
-//\r
-// 2002-07-30 Updated based on patch submitted by Michael Keck (mkkeck) \r
-//\r
-function doStyle(s){ \r
- if(!RichEditor.txtView) return; \r
- /* Disabled in View Source mode */ \r
- DBG(1, 'doStyle(' + s + ')'); \r
- checkRange(); \r
- if(s!='InsertHorizontalRule'){ \r
- /* what command string? */ \r
- document.execCommand(s); \r
- } else if( s=='InsertHorizontalRule') { \r
- /* if s=='InsertHorizontalRule then use this command */ \r
- document.execCommand(s,false, null); \r
-\r
- /* Note: \r
- In your source view the <HR> has an ID like this \r
- <HR id=null> \r
- */ \r
- } \r
- reset(); \r
-} \r
-\r
-\r
-// link(): called to insert a hyperlink. It will use the selected text\r
-// if there is some, or the URL entered if not. If clicked when over a\r
-// link, that link is allowed to be edited.\r
-function link(on)\r
-{\r
- if (!RichEditor.txtView) return; // Disabled in View Source mode\r
-\r
- var strURL = "http://";\r
- var strText;\r
-\r
- // First, pick up the current selection.\r
- doc.focus();\r
- var r = document.selection.createRange();\r
- var el = r.parentElement();\r
-\r
- // Is this aready a link?\r
- if (el && el.nodeName == "A") {\r
- r.moveToElementText(el);\r
- if (!on) { // If removing the link, then replace all with\r
- r.pasteHTML(el.innerHTML);\r
- return;\r
- }\r
- strURL = el.href;\r
- }\r
-\r
- // Get the text associated with this link\r
- strText = r.text;\r
-\r
- // Prompt for the URL\r
- strURL = window.prompt("Enter URL", strURL);\r
- if (strURL) {\r
- // Default the TEXT to the url if non selected\r
- if (!strText || !strText.length) {\r
- strText = strURL;\r
- }\r
-\r
- // Replace with new URL\r
- r.pasteHTML('<A href=' + strURL + ' target=_new>' + strText + '</a>');\r
- }\r
-\r
- reset();\r
-}\r
-\r
-// sel(); similar to doStyle() but called from the dropdown list boxes\r
-// for font and style commands.\r
-function sel(el)\r
-{\r
- if (!RichEditor.txtView) return; // Disabled in View Source mode\r
- checkRange();\r
- switch(el.id)\r
- {\r
- case "ctlFont":\r
- document.execCommand('FontName', false, el[el.selectedIndex].value);\r
- break;\r
- case "ctlSize":\r
- document.execCommand('FontSize', false, el[el.selectedIndex].value);\r
- break;\r
- case "ctlStyle":\r
- document.execCommand('FormatBlock', false, el[el.selectedIndex].text);\r
- break;\r
- }\r
- doc.focus();\r
- reset();\r
-}\r
-\r
-// pickColor(): called when the text or fill color icons are clicked. Displays\r
-// the color chooser control. The color setting is completed by the event\r
-// handler of this control (see richedit.html)\r
-function pickColor(fg)\r
-{\r
- if (!RichEditor.txtView) return; // Disabled in View Source mode\r
- checkRange();\r
- var el = window.event.srcElement;\r
- if (el && el.nodeName == "IMG") {\r
- setState(el, true);\r
- }\r
- color.style.top = window.event.clientY + 10;\r
- color.style.left = window.event.clientX - 250;\r
- color.style.display = 'block';\r
- color._fg = fg;\r
-}\r
-\r
-// setColor(): called from the fore/back color selection dialog event handler\r
-// to set/reset the fore/background color.\r
-function setColor(name, data)\r
-{\r
- color.style.display = 'none';\r
- checkRange();\r
- if (!data) {\r
- removeFormat(document.selection.createRange(), color._fg);\r
- } else {\r
- document.execCommand(color._fg, false, data);\r
- }\r
- setState(btnText, false);\r
- setState(btnFill, false);\r
- doc.focus();\r
-}\r
-\r
-// removeFormat(): Called to remove specific formats from the selected text.\r
-// The 'removeFormat' command removes all formatting. The principle behind\r
-// this routine is to have a list of the possible formats the selection may\r
-// have, check the selection for the current formats, ignoreing the one we\r
-// want to use, then remove all formatting and then re-apply all but the\r
-// one we wanted to remove.\r
-function removeFormat(r, name)\r
-{\r
- var cmd = [ "Bold", "Italic", "Underline", "Strikethrough", "FontName", "FontSize", "ForeColor", "BackColor" ];\r
- var on = new Array(cmd.length);\r
- for (var i = 0; i < cmd.length; i++) {\r
- on[i] = name == cmd[i] ? null : r.queryCommandValue(cmd[i]);\r
- }\r
- r.execCommand('RemoveFormat');\r
- for (var i = 0; i < cmd.length; i++) {\r
- if (on[i]) r.execCommand(cmd[i], false, on[i]);\r
- }\r
-}\r
-\r
-// setValue(): called from reset() to make a select list show the current font\r
-// or style attributes\r
-function selValue(el, str)\r
-{\r
- if (!RichEditor.txtView) return; // Disabled in View Source mode\r
- for (var i = 0; i < el.length; i++) {\r
- if ((!el[i].value && el[i].text == str) || el[i].value == str) {\r
- el.selectedIndex = i;\r
- return;\r
- }\r
- }\r
- el.selectedIndex = 0;\r
-}\r
-\r
-// setState(): called from reset() to make a button represent the state\r
-// of the current text. Pressed is on, unpressed is off.\r
-function setState(el, on)\r
-{\r
- if (!RichEditor.txtView) return; // Disabled in View Source mode\r
- if (!el.disabled) {\r
- if (on) {\r
- el.defaultState = el.className = "down";\r
- } else {\r
- el.defaultState = el.className = null;\r
- }\r
- }\r
-}\r
-\r
-// getStyle(): called to obtain the class or type of formatting applied to an element,\r
-// This is used by reset() to set the state of the toolbar to indicate the class of\r
-// the current element.\r
-function getStyle() {\r
- var style = document.queryCommandValue('FormatBlock');\r
- if (style == "Normal") {\r
- doc.focus();\r
- var rng = document.selection.createRange();\r
- if (typeof(rng.parentElement) != "undefined") {\r
- var el = rng.parentElement();\r
- var tag = el.nodeName.toUpperCase();\r
- var str = el.className.toLowerCase();\r
- if (!(tag == "DIV" && el.id == "doc" && str == "textedit")) {\r
- if (tag == "SPAN") {\r
- style = "." + str;\r
- } else if (str == "") {\r
- style = tag;\r
- } else {\r
- style = tag + "." + str;\r
- }\r
- }\r
- return style;\r
- }\r
- }\r
- return style;\r
-}\r
-\r
-// getfontface(): called to obtain the face attribute applied to a font tag,\r
-// This is used by reset() to set the state of the toolbar to indicate the class of\r
-// the current element.\r
-function getfontface()\r
-{\r
-var family = document.selection.createRange(); //create text range\r
-\r
-// don't get font face for image or table\r
-if (document.selection.type == 'Control') {\r
- return;\r
-}\r
-\r
-var el = family.parentElement(); //get parent element\r
-var tag = el.nodeName.toUpperCase(); //convert tag element to upper case\r
-\r
- if (typeof(el.parentElement) != "undefined" && tag == "FONT") { //only do function if tag is font - this is for greater execution speed\r
- var elface = el.getAttribute('FACE'); //get the font tags FACE attribute\r
- return elface; //return the value of the face attribute to the reset() function\r
- }\r
-}\r
-\r
-// markSelectedElement(): called by onClick and onKeyup events\r
-// on the contectEditable area\r
-function markSelectedElement() {\r
-\r
- RichEditor.selectedImage = null;\r
-\r
- var r = document.selection.createRange();\r
-\r
- if (document.selection.type != 'Text') {\r
- if (r.length == 1) {\r
- if (r.item(0).tagName == "IMG") {\r
- RichEditor.selectedImage = r.item(0);\r
- }\r
- }\r
- }\r
-}\r
-\r
-// reset(): called from all over the place to make the toolbar\r
-// represent the current text. If el specified, it was called from\r
-// hover(off)\r
-function reset(el)\r
-{\r
- if (!RichEditor.txtView) return; // Disabled in View Source mode\r
- if (!el) color.style.display = 'none';\r
- if (!el || el == ctlStyle) selValue(ctlStyle, getStyle());\r
- if (!el || el == ctlFont) selValue(ctlFont, getfontface());\r
- if (!el || el == ctlSize) selValue(ctlSize, document.queryCommandValue('FontSize'));\r
- if (!el || el == btnBold) setState(btnBold, document.queryCommandValue('Bold'));\r
- if (!el || el == btnItalic) setState(btnItalic, document.queryCommandValue('Italic'));\r
- if (!el || el == btnUnderline) setState(btnUnderline, document.queryCommandValue('Underline'));\r
- if (!el || el == btnStrikethrough) setState(btnStrikethrough, document.queryCommandValue('Strikethrough'));\r
- if (!el || el == btnLeftJustify) setState(btnLeftJustify, document.queryCommandValue('JustifyLeft'));\r
- if (!el || el == btnCenter) setState(btnCenter, document.queryCommandValue('JustifyCenter'));\r
- if (!el || el == btnRightJustify) setState(btnRightJustify, document.queryCommandValue('JustifyRight'));\r
- if (!el || el == btnFullJustify) setState(btnFullJustify, document.queryCommandValue('JustifyFull'));\r
- if (!el || el == btnNumList) setState(btnNumList, document.queryCommandValue('InsertOrderedList'));\r
- if (!el || el == btnBulList) setState(btnBulList, document.queryCommandValue('InsertUnorderedList'));\r
-}\r
-\r
-// hover(): Handles mouse hovering over toolbar buttons\r
-function hover(on)\r
-{\r
- if (!RichEditor.txtView) return; // Disabled in View Source mode\r
- var el = window.event.srcElement;\r
- if (el && !el.disabled && el.nodeName == "IMG" && el.className != "spacer") {\r
- if (on) {\r
- el.className = "hover";\r
- } else {\r
- el.className = el.defaultState ? el.defaultState : null;\r
- }\r
- }\r
-}\r
-// hover(): Handles mouse clicks on toolbar buttons\r
-function press(on)\r
-{\r
- if (!RichEditor.txtView) return; // Disabled in View Source mode\r
- var el = window.event.srcElement;\r
- if (el && !el.disabled && el.nodeName == "IMG" && el.className != "spacer") {\r
- if (on) {\r
- el.className = "down";\r
- } else {\r
- el.className = el.className == "down" ? "hover" : el.defaultState ? el.defaultState : null;\r
- }\r
- }\r
-}\r
-\r
-// addTag(): This is the handler for the style dropdown. This takes value\r
-// selected and interprates it and makes the necessary changes to the HTML to\r
-// apply this style.\r
-function addTag(obj) {\r
-\r
- if (!RichEditor.txtView) return; // Disabled in View Source mode\r
-\r
- // Determine the type of element we are dealing with.\r
- // TYPE 0 IS NORMAL-TAG, 1 IS CLASS, 2 IS SUBCLASS, 3 = Format Block command\r
- var value = obj[obj.selectedIndex].value;\r
- if (!value) { // Format Block\r
- sel(obj);\r
- return;\r
- }\r
-\r
- var type = 0; // TAG\r
-\r
- if (value.indexOf(".") == 0) { // .className\r
- type = 1;\r
- } else if (value.indexOf(".") != -1) { // TAG.className\r
- type = 2;\r
- }\r
-\r
- doc.focus();\r
-\r
- // Pick up the highlighted text\r
- var r = document.selection.createRange();\r
- r.select();\r
- var s = r.htmlText;\r
-\r
- // If we have some selected text, then ignore silly selections\r
- if (s == " " || s == " ") {\r
- return;\r
- }\r
-\r
- // How we apply formatting is based upon the type of formitting being\r
- // done.\r
- switch(type)\r
- {\r
- case 1:\r
- // class: Wrap the selected text with a span of the specified\r
- // class name\r
- value = value.substring(1,value.length);\r
- r.pasteHTML("<span class="+value+">" + r.htmlText + "</span>")\r
- break;\r
-\r
- case 2:\r
- // subclass: split the value into tag + class\r
- value = value.split(".");\r
- r.pasteHTML('<' + value[0] + ' class="' + value[1] +'">'\r
- + r.htmlText\r
- + '</' + value[0] + '>'\r
- );\r
- break;\r
-\r
- default:\r
- // TAG: wrap up the highlighted text with the specified tag\r
- r.pasteHTML("<"+value+">"+r.htmlText+"</"+value+">")\r
- break;\r
- }\r
-}\r
-\r
-// initStyleDropdown(): This takes the passed styleList and generates the style\r
-// dropdown list box from it.\r
-function initStyleDropdown(styleList) {\r
-\r
- // Build the option list for the styles dropdown from the passed styles\r
- for (var i = 0; i < styleList.length; i++) {\r
- var oOption = document.createElement("OPTION");\r
- if (styleList[i][0]) oOption.value = styleList[i][0];\r
- oOption.text = styleList[i][1];\r
- oOption.style.backgroundColor = 'white';\r
- document.all.ctlStyle.add(oOption);\r
- }\r
-}\r
-\r
-// applyOptions(): This takes the passed options string and actions them.\r
-// Called during the init process.\r
-function applyOptions(str)\r
-{\r
- var options = str.split(";");\r
- for (var i = 0; i < options.length; i++) {\r
- var eq = options[i].indexOf('=');\r
- var on = eq == -1 ? true : "yes;true;1".indexOf(options[i].substr(eq+1).toLowerCase()) != -1;\r
- var name = eq == -1 ? options[i] : options[i].substr(0,eq);\r
- var el = document.all("feature" + name);\r
- if (el) {\r
- el.runtimeStyle.display = (on ? 'inline' : 'none'); \r
- } else {\r
- if (!RichEditor.aOptions) RichEditor.aOptions = new Array;\r
- RichEditor.aOptions[name] = on;\r
- }\r
- }\r
-}\r
-\r
-// getOption(): Get the value for a previously set option or return undefined if\r
-// the option is not set.\r
-function getOption(name)\r
-{\r
- if (RichEditor.aOptions) return RichEditor.aOptions[name];\r
- return; // Undefined\r
-} \r
-\r
-// Handle drag and drop events into the editor window. Until we\r
-// work out how to handle these better (which requires co-operation\r
-// from the code being dragged from as far as I can tell) we simply\r
-// disable the functionality.\r
-function handleDrag(n)\r
-{\r
- // if drag and drop is disabled, then cancel the dragdrop\r
- // events\r
- if (!getOption("dragdrop"))\r
- {\r
- switch(n) {\r
- case 0: // ondragenter\r
- window.event.dataTransfer.dropEffect = "none";\r
- break;\r
- }\r
- // Cancel the event\r
- window.event.returnValue = false;\r
- }\r
-}\r
-\r
+++ /dev/null
-////////////////////////////////////////////////////////////////////////////////
-//
-// HTML Text Editing Component for hosting in Web Pages
-// Copyright (C) 2001 Ramesys (Contracting Services) Limited
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU LesserGeneral Public License
-// along with this program; if not a copy can be obtained from
-//
-// http://www.gnu.org/copyleft/lesser.html
-//
-// or by writing to:
-//
-// Free Software Foundation, Inc.
-// 59 Temple Place - Suite 330,
-// Boston,
-// MA 02111-1307,
-// USA.
-//
-// Original Developer:
-//
-// Austin David France
-// Ramesys (Contracting Services) Limited
-// Mentor House
-// Ainsworth Street
-// Blackburn
-// Lancashire
-// BB1 6AY
-// United Kingdom
-// email: Austin.France@Ramesys.com
-//
-// Home Page: http://richtext.sourceforge.net/
-// Support: http://richtext.sourceforge.net/
-//
-////////////////////////////////////////////////////////////////////////////////
-//
-// Authors & Contributers:
-//
-// OZ Austin David France [austin.france@ramesys.com]
-// Primary Developer
-//
-// LEON Leon Reinders [leonreinders@hetnet.nl]
-// Author of View Source, History and Extended Style Functions
-//
-// DIRK Dirk Datzert [Dirk.Datzert@rasselstein-hoesch.de]
-// Justify Full Option
-//
-// BC Bill Chalmers [bill_paula@btinternet.com]
-// Font Selection
-//
-// History:
-//
-// OZ 21-01-2002
-// Fix a bug in applyOptions() that was not detecting a truth setting
-// properly. Changed substr(eq) to substr(eq+1). Also, set the
-// runtime style property, not the style property.
-//
-// OZ 22-01-2002
-// Moved initEditor() function into here from richedit.html
-//
-// OZ 22-01-2002
-// Added handleDrag() method to handle drag and drop events within the
-// html of the editor. Drag and drop is currently disabled until we
-// can find a practicle use for it.
-//
-// OZ 10-02-2002
-// Added code to handle the new Full Justify Option. Implementation of
-// a mod to the editor made by Dirk Datzert who supplied the code and
-// the Image.
-//
-// OZ 11-02-2002
-// Startup with text area set to contenteditable="false". The content
-// is made editable when the editor has been initialised.
-//
-// OZ 12-02-2002
-// Fix handling of mouse hover when hover over a button that is in the
-// down state. The down state of the button was being lost. This is
-// a re-introduction of an earlier bug which I thought was fixed.
-// The bug also occured when the button was pressed in some
-// circumstances. The fix implemented is to have a button state
-// property which is set when the state of a button is set in the
-// setState() routine and this is used to restore the button state when
-// the button is released or mouse moves out.
-//
-// OZ 12-06-2002 [richtext-Bugs-567960] Text area of editor window not get focus
-// Ensure the doc element (the DIV) has focus once initialisation is
-// complete. This ensures that when no HTML is supplied via the docHtml
-// property, that focus is where the user expects.
-//
-// BC 10-07-2002
-// added getfontface() function to retrieve the new "web style" font selection
-// this function is called from reset() in the same way as getStyle()
-//
-////////////////////////////////////////////////////////////////////////////////
-
-<?php
- include("../../config.php");
-
- require_variable($id);
-
-?>
-
-// Internal (private) properties.
-// RichEditor is the global RichEditor object (function) of which there is only
-// 1 instance.
-RichEditor.txtView = true; // WYSIWYG mode. false == View Source
-
-// initEditor(): Initialise the editor (called on window load, see below)
-function initEditor()
-{
- // Apply style data if supplied
- if (!public_description.styleData) {
- public_description.put_styleData(null);
- }
-
- // Apply default editor options
- var strDefaults = 'dragdrop=no;source=yes';
- strDefaults += ';history=' + (document.queryCommandSupported('Undo') ? 'yes' : 'no');
- applyOptions(strDefaults);
-
- // Prepare the editable region
- loading.style.display = 'none';
- doc.contentEditable = "true";
- editor.style.visibility = 'visible';
-
- // OZ - 12-06-2002
- // Put focus into the document (required when no HTML is supplied via docHtml property)
- doc.focus();
-}
-
-// checkRange(): make sure our pretend document (the content editable
-// DIV with id of "doc") has focus and that a text range exists (which
-// is what execCommand() operates on).
-function checkRange()
-{
- RichEditor.selectedImage = null;
- if (!RichEditor.txtView) return; // Disabled in View Source mode
- doc.focus();
- if (document.selection.type == "None") {
- document.selection.createRange();
- }
-var r = document.selection.createRange();
- DBG(1, 'RANGE Bounding('
- + 'top='+r.boundingHeight
- + ', left='+r.boundingHeight
- + ', width='+r.boundingWidth
- + ', height='+r.boundingHeight + ')'
- + ', Offset('
- + 'top='+r.offsetTop
- + ', left='+r.offsetLeft + ')'
- + ', Text=(' + r.text + ')'
- + ', HTML=(' + r.htmlText + ')'
- );
-}
-
-// post(): Called in response to clicking the post button in the
-// toolbar. It fires an event in the container named post, passing the
-// HTML of our newly edited document as the data argument.
-function post()
-{
- DBG(1, 'Raise "post" event');
- window.external.raiseEvent("post", doc.innerHTML);
-}
-
-// insert(): called in response to clicking the insert table, image,
-// smily icons in the toolbar. Loads up an appropriate dialog to
-// prompt for information, the dialog then returns the HTML code or
-// NULL. We paste the HTML code into the document.
-function insert(what)
-{
- if (!RichEditor.txtView) return; // Disabled in View Source mode
-
- DBG(1, 'insert(' + what + ')');
-
- // Chose action based on what is being inserted.
- switch(what)
- {
- case "table":
- strPage = "dlg_ins_table.html";
- strAttr = "status:no;dialogWidth:340px;dialogHeight:360px;help:no";
- break;
- case "smile":
- strPage = "dlg_ins_smile.html";
- strAttr = "status:no;dialogWidth:300px;dialogHeight:350px;help:no";
- break;
- case "char":
- strPage = "dlg_ins_char.html";
- strAttr = "status:no;dialogWidth:450px;dialogHeight:290px;help:no";
- break;
- case "image":
- strPage = "dlg_ins_image.php?id=<?php echo $id ?>";
- strAttr = "status:no;dialogWidth:400px;dialogHeight:200px;help:no";' '
- break;
- case "about":
- strPage = "dlg_about.html";
- strAttr = "status:no;dialogWidth:500px;dialogHeight:405px;help:no";' '
- break;
- }
-
- // run the dialog that implements this type of element
- html = showModalDialog(strPage, window, strAttr);
-
- // and insert any result into the document.
- if (html) {
- insertHtml(html);
- }
-}
-
-// insertHtml(): Insert the supplied HTML into the current position
-// within the document.
-function insertHtml(html)
-{
- doc.focus();
- var sel = document.selection.createRange();
- // don't try to insert HTML into a control selection (ie. image or table)
- if (document.selection.type == 'Control') {
- return;
- }
- sel.pasteHTML(html);
-}
-
-// doStyle(): called to handle the simple style commands such a bold,
-// italic etc. These require no special handling, just a call to
-// execCommand(). We also call reset so that the toolbar represents
-// the state of the current text.
-//
-// 2002-07-30 Updated based on patch submitted by Michael Keck (mkkeck)
-//
-function doStyle(s){
- if(!RichEditor.txtView) return;
- /* Disabled in View Source mode */
- DBG(1, 'doStyle(' + s + ')');
- checkRange();
- if(s!='InsertHorizontalRule'){
- /* what command string? */
- document.execCommand(s);
- } else if( s=='InsertHorizontalRule') {
- /* if s=='InsertHorizontalRule then use this command */
- document.execCommand(s,false, null);
-
- /* Note:
- In your source view the <HR> has an ID like this
- <HR id=null>
- */
- }
- reset();
-}
-
-
-// link(): called to insert a hyperlink. It will use the selected text
-// if there is some, or the URL entered if not. If clicked when over a
-// link, that link is allowed to be edited.
-function link(on)
-{
- if (!RichEditor.txtView) return; // Disabled in View Source mode
-
- var strURL = "http://";
- var strText;
-
- // First, pick up the current selection.
- doc.focus();
- var r = document.selection.createRange();
- var el = r.parentElement();
-
- // Is this aready a link?
- if (el && el.nodeName == "A") {
- r.moveToElementText(el);
- if (!on) { // If removing the link, then replace all with
- r.pasteHTML(el.innerHTML);
- return;
- }
- strURL = el.href;
- }
-
- // Get the text associated with this link
- strText = r.text;
-
- // Prompt for the URL
- strURL = window.prompt("Enter URL", strURL);
- if (strURL) {
- // Default the TEXT to the url if non selected
- if (!strText || !strText.length) {
- strText = strURL;
- }
-
- // Replace with new URL
- r.pasteHTML('<A href=' + strURL + ' target=_new>' + strText + '</a>');
- }
-
- reset();
-}
-
-// sel(); similar to doStyle() but called from the dropdown list boxes
-// for font and style commands.
-function sel(el)
-{
- if (!RichEditor.txtView) return; // Disabled in View Source mode
- checkRange();
- switch(el.id)
- {
- case "ctlFont":
- document.execCommand('FontName', false, el[el.selectedIndex].value);
- break;
- case "ctlSize":
- document.execCommand('FontSize', false, el[el.selectedIndex].value);
- break;
- case "ctlStyle":
- document.execCommand('FormatBlock', false, el[el.selectedIndex].text);
- break;
- }
- doc.focus();
- reset();
-}
-
-// pickColor(): called when the text or fill color icons are clicked. Displays
-// the color chooser control. The color setting is completed by the event
-// handler of this control (see richedit.html)
-function pickColor(fg)
-{
- if (!RichEditor.txtView) return; // Disabled in View Source mode
- checkRange();
- var el = window.event.srcElement;
- if (el && el.nodeName == "IMG") {
- setState(el, true);
- }
- color.style.top = window.event.clientY + 10;
- color.style.left = window.event.clientX - 250;
- color.style.display = 'block';
- color._fg = fg;
-}
-
-// setColor(): called from the fore/back color selection dialog event handler
-// to set/reset the fore/background color.
-function setColor(name, data)
-{
- color.style.display = 'none';
- checkRange();
- if (!data) {
- removeFormat(document.selection.createRange(), color._fg);
- } else {
- document.execCommand(color._fg, false, data);
- }
- setState(btnText, false);
- setState(btnFill, false);
- doc.focus();
-}
-
-// removeFormat(): Called to remove specific formats from the selected text.
-// The 'removeFormat' command removes all formatting. The principle behind
-// this routine is to have a list of the possible formats the selection may
-// have, check the selection for the current formats, ignoreing the one we
-// want to use, then remove all formatting and then re-apply all but the
-// one we wanted to remove.
-function removeFormat(r, name)
-{
- var cmd = [ "Bold", "Italic", "Underline", "Strikethrough", "FontName", "FontSize", "ForeColor", "BackColor" ];
- var on = new Array(cmd.length);
- for (var i = 0; i < cmd.length; i++) {
- on[i] = name == cmd[i] ? null : r.queryCommandValue(cmd[i]);
- }
- r.execCommand('RemoveFormat');
- for (var i = 0; i < cmd.length; i++) {
- if (on[i]) r.execCommand(cmd[i], false, on[i]);
- }
-}
-
-// setValue(): called from reset() to make a select list show the current font
-// or style attributes
-function selValue(el, str)
-{
- if (!RichEditor.txtView) return; // Disabled in View Source mode
- for (var i = 0; i < el.length; i++) {
- if ((!el[i].value && el[i].text == str) || el[i].value == str) {
- el.selectedIndex = i;
- return;
- }
- }
- el.selectedIndex = 0;
-}
-
-// setState(): called from reset() to make a button represent the state
-// of the current text. Pressed is on, unpressed is off.
-function setState(el, on)
-{
- if (!RichEditor.txtView) return; // Disabled in View Source mode
- if (!el.disabled) {
- if (on) {
- el.defaultState = el.className = "down";
- } else {
- el.defaultState = el.className = null;
- }
- }
-}
-
-// getStyle(): called to obtain the class or type of formatting applied to an element,
-// This is used by reset() to set the state of the toolbar to indicate the class of
-// the current element.
-function getStyle() {
- var style = document.queryCommandValue('FormatBlock');
- if (style == "Normal") {
- doc.focus();
- var rng = document.selection.createRange();
- if (typeof(rng.parentElement) != "undefined") {
- var el = rng.parentElement();
- var tag = el.nodeName.toUpperCase();
- var str = el.className.toLowerCase();
- if (!(tag == "DIV" && el.id == "doc" && str == "textedit")) {
- if (tag == "SPAN") {
- style = "." + str;
- } else if (str == "") {
- style = tag;
- } else {
- style = tag + "." + str;
- }
- }
- return style;
- }
- }
- return style;
-}
-
-// getfontface(): called to obtain the face attribute applied to a font tag,
-// This is used by reset() to set the state of the toolbar to indicate the class of
-// the current element.
-function getfontface()
-{
-var family = document.selection.createRange(); //create text range
-
-// don't get font face for image or table
-if (document.selection.type == 'Control') {
- return;
-}
-
-var el = family.parentElement(); //get parent element
-var tag = el.nodeName.toUpperCase(); //convert tag element to upper case
-
- if (typeof(el.parentElement) != "undefined" && tag == "FONT") { //only do function if tag is font - this is for greater execution speed
- var elface = el.getAttribute('FACE'); //get the font tags FACE attribute
- return elface; //return the value of the face attribute to the reset() function
- }
-}
-
-// markSelectedElement(): called by onClick and onKeyup events
-// on the contectEditable area
-function markSelectedElement() {
-
- RichEditor.selectedImage = null;
-
- var r = document.selection.createRange();
-
- if (document.selection.type != 'Text') {
- if (r.length == 1) {
- if (r.item(0).tagName == "IMG") {
- RichEditor.selectedImage = r.item(0);
- }
- }
- }
-}
-
-// reset(): called from all over the place to make the toolbar
-// represent the current text. If el specified, it was called from
-// hover(off)
-function reset(el)
-{
- if (!RichEditor.txtView) return; // Disabled in View Source mode
- if (!el) color.style.display = 'none';
- if (!el || el == ctlStyle) selValue(ctlStyle, getStyle());
- if (!el || el == ctlFont) selValue(ctlFont, getfontface());
- if (!el || el == ctlSize) selValue(ctlSize, document.queryCommandValue('FontSize'));
- if (!el || el == btnBold) setState(btnBold, document.queryCommandValue('Bold'));
- if (!el || el == btnItalic) setState(btnItalic, document.queryCommandValue('Italic'));
- if (!el || el == btnUnderline) setState(btnUnderline, document.queryCommandValue('Underline'));
- if (!el || el == btnStrikethrough) setState(btnStrikethrough, document.queryCommandValue('Strikethrough'));
- if (!el || el == btnLeftJustify) setState(btnLeftJustify, document.queryCommandValue('JustifyLeft'));
- if (!el || el == btnCenter) setState(btnCenter, document.queryCommandValue('JustifyCenter'));
- if (!el || el == btnRightJustify) setState(btnRightJustify, document.queryCommandValue('JustifyRight'));
- if (!el || el == btnFullJustify) setState(btnFullJustify, document.queryCommandValue('JustifyFull'));
- if (!el || el == btnNumList) setState(btnNumList, document.queryCommandValue('InsertOrderedList'));
- if (!el || el == btnBulList) setState(btnBulList, document.queryCommandValue('InsertUnorderedList'));
-}
-
-// hover(): Handles mouse hovering over toolbar buttons
-function hover(on)
-{
- if (!RichEditor.txtView) return; // Disabled in View Source mode
- var el = window.event.srcElement;
- if (el && !el.disabled && el.nodeName == "IMG" && el.className != "spacer") {
- if (on) {
- el.className = "hover";
- } else {
- el.className = el.defaultState ? el.defaultState : null;
- }
- }
-}
-// hover(): Handles mouse clicks on toolbar buttons
-function press(on)
-{
- if (!RichEditor.txtView) return; // Disabled in View Source mode
- var el = window.event.srcElement;
- if (el && !el.disabled && el.nodeName == "IMG" && el.className != "spacer") {
- if (on) {
- el.className = "down";
- } else {
- el.className = el.className == "down" ? "hover" : el.defaultState ? el.defaultState : null;
- }
- }
-}
-
-// addTag(): This is the handler for the style dropdown. This takes value
-// selected and interprates it and makes the necessary changes to the HTML to
-// apply this style.
-function addTag(obj) {
-
- if (!RichEditor.txtView) return; // Disabled in View Source mode
-
- // Determine the type of element we are dealing with.
- // TYPE 0 IS NORMAL-TAG, 1 IS CLASS, 2 IS SUBCLASS, 3 = Format Block command
- var value = obj[obj.selectedIndex].value;
- if (!value) { // Format Block
- sel(obj);
- return;
- }
-
- var type = 0; // TAG
-
- if (value.indexOf(".") == 0) { // .className
- type = 1;
- } else if (value.indexOf(".") != -1) { // TAG.className
- type = 2;
- }
-
- doc.focus();
-
- // Pick up the highlighted text
- var r = document.selection.createRange();
- r.select();
- var s = r.htmlText;
-
- // If we have some selected text, then ignore silly selections
- if (s == " " || s == " ") {
- return;
- }
-
- // How we apply formatting is based upon the type of formitting being
- // done.
- switch(type)
- {
- case 1:
- // class: Wrap the selected text with a span of the specified
- // class name
- value = value.substring(1,value.length);
- r.pasteHTML("<span class="+value+">" + r.htmlText + "</span>")
- break;
-
- case 2:
- // subclass: split the value into tag + class
- value = value.split(".");
- r.pasteHTML('<' + value[0] + ' class="' + value[1] +'">'
- + r.htmlText
- + '</' + value[0] + '>'
- );
- break;
-
- default:
- // TAG: wrap up the highlighted text with the specified tag
- r.pasteHTML("<"+value+">"+r.htmlText+"</"+value+">")
- break;
- }
-}
-
-// initStyleDropdown(): This takes the passed styleList and generates the style
-// dropdown list box from it.
-function initStyleDropdown(styleList) {
-
- // Build the option list for the styles dropdown from the passed styles
- for (var i = 0; i < styleList.length; i++) {
- var oOption = document.createElement("OPTION");
- if (styleList[i][0]) oOption.value = styleList[i][0];
- oOption.text = styleList[i][1];
- oOption.style.backgroundColor = 'white';
- document.all.ctlStyle.add(oOption);
- }
-}
-
-// applyOptions(): This takes the passed options string and actions them.
-// Called during the init process.
-function applyOptions(str)
-{
- var options = str.split(";");
- for (var i = 0; i < options.length; i++) {
- var eq = options[i].indexOf('=');
- var on = eq == -1 ? true : "yes;true;1".indexOf(options[i].substr(eq+1).toLowerCase()) != -1;
- var name = eq == -1 ? options[i] : options[i].substr(0,eq);
- var el = document.all("feature" + name);
- if (el) {
- el.runtimeStyle.display = (on ? 'inline' : 'none');
- } else {
- if (!RichEditor.aOptions) RichEditor.aOptions = new Array;
- RichEditor.aOptions[name] = on;
- }
- }
-}
-
-// getOption(): Get the value for a previously set option or return undefined if
-// the option is not set.
-function getOption(name)
-{
- if (RichEditor.aOptions) return RichEditor.aOptions[name];
- return; // Undefined
-}
-
-// Handle drag and drop events into the editor window. Until we
-// work out how to handle these better (which requires co-operation
-// from the code being dragged from as far as I can tell) we simply
-// disable the functionality.
-function handleDrag(n)
-{
- // if drag and drop is disabled, then cancel the dragdrop
- // events
- if (!getOption("dragdrop"))
- {
- switch(n) {
- case 0: // ondragenter
- window.event.dataTransfer.dropEffect = "none";
- break;
- }
- // Cancel the event
- window.event.returnValue = false;
- }
-}
-
+++ /dev/null
-////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// HTML Text Editing Component for hosting in Web Pages\r
-// Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-//\r
-// This library is free software; you can redistribute it and/or\r
-// modify it under the terms of the GNU Lesser General Public\r
-// License as published by the Free Software Foundation; either\r
-// version 2.1 of the License, or (at your option) any later version.\r
-//\r
-// This library is distributed in the hope that it will be useful,\r
-// but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-// Lesser General Public License for more details.\r
-//\r
-// You should have received a copy of the GNU LesserGeneral Public License\r
-// along with this program; if not a copy can be obtained from\r
-//\r
-// http://www.gnu.org/copyleft/lesser.html\r
-//\r
-// or by writing to:\r
-//\r
-// Free Software Foundation, Inc.\r
-// 59 Temple Place - Suite 330,\r
-// Boston,\r
-// MA 02111-1307,\r
-// USA.\r
-//\r
-// Original Developer:\r
-//\r
-// Austin David France\r
-// Ramesys (Contracting Services) Limited\r
-// Mentor House\r
-// Ainsworth Street\r
-// Blackburn\r
-// Lancashire\r
-// BB1 6AY\r
-// United Kingdom\r
-// email: Austin.France@Ramesys.com\r
-//\r
-// Home Page: http://richtext.sourceforge.net/\r
-// Support: http://richtext.sourceforge.net/\r
-//\r
-////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Author(s): leonreinders@hetnet.nl LEON\r
-//\r
-// History:\r
-//\r
-// LEON 04-08-2001\r
-// Initial Implementation\r
-//\r
-////////////////////////////////////////////////////////////////////////////////\r
-\r
-function replaceCharacters(html) {\r
-\r
- // Special characters and their HTML equivelent\r
- var set = [\r
- ["\80","\91","\92","\92","\93","\94","\96","\97","¡","¢","£","£","¤","¥","¦","§","¨","©","ª","«","¬","","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","º","»","¼","½","¾","¿","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","×","Ø","Ù","Ú","Û","Ü","Ý","Þ","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","÷","ø","ù","ú","û","ü","ü","ý","þ","ÿ"],\r
- ["€","‘","’","’","“","”","–","—","¡","¢","£","£","¤","¥","¦","§","¨","©","ª","«","¬","","®","¯","°","±","²","³","´","µ","¶","·","¸","¹","º","»","¼","½","¾","¿","À","Á","Â","Ã","Ä","Å","Æ","Ç","È","É","Ê","Ë","Ì","Í","Î","Ï","Ð","Ñ","Ò","Ó","Ô","Õ","Ö","×","Ø","Ù","Ú","Û","Ü","Ý","Þ","ß","à","á","â","ã","ä","å","æ","ç","è","é","ê","ë","ì","í","î","ï","ð","ñ","ò","ó","ô","õ","ö","÷","ø","ù","ú","û","ü","ü","ý","þ","ÿ"]\r
- ];\r
-\r
- // Replace each instance of one of the above special characters with it's HTML equivelent\r
- if (html) {\r
- for(var j = 0; j < set[0].length; j++){\r
- html = html.replace(eval("/"+set[0][j]+"/g"),set[1][j]);\r
- }\r
- }\r
-\r
- // Return the HTML or an empty string if no HTML was supplied\r
- return html || "";\r
-}\r
-\r
-// removes empty tags and tags with only non-breaking-spaces unlimited levels\r
-function removeEmptyTags(html) {\r
- var re = /<[^(>|\/)]+>[ | ]*<\/[^>]+>/gi;\r
- while(re.test(html)) {\r
- html = html.replace(re,"");\r
- while(re.test(html)) {\r
- html = html.replace(re,"");\r
- }\r
- }\r
- return html;\r
-}\r
-\r
-// replaceAbsoluteUrls(): replaces absolute URL's with relative urls\r
-// assuming the editor is in a level equal-to or above the image.\r
-function replaceAbsoluteUrls(html) {\r
- var docLoc = document.location.toString();\r
- docLoc = docLoc.substring(0,docLoc.lastIndexOf("/")+1);\r
- docLoc = docLoc.replace(/\//gi,"\\\/");\r
- var re = eval("/"+docLoc+"/gi");\r
- return html.replace(re, "");\r
-}\r
-\r
-// replaceTags(): replace tags for better formatting\r
-// set: [[tag,replacement],[tag,replacm....\r
-function replaceTags(set, html) {\r
- var re;\r
- for(var i = 0; i < set.length; i++) {\r
- re = eval("/(<[\/]{0,1})"+set[i][0]+">/gi");\r
- html=html.replace(re,"$1"+set[i][1]+">");\r
- }\r
- return html\r
-}\r
-\r
-// codeSweeper(): apply several code-modifications\r
-function codeSweeper() {\r
- var html = doc.innerHTML;\r
- if (html) html = replaceCharacters(html);\r
- if (html) html = replaceAbsoluteUrls(html);\r
- // if (html) html = removeEmptyTags(html)\r
- if (html) html = replaceTags([["strong","B"],["em","I"]],html);\r
- return html;\r
-}\r
+++ /dev/null
-////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// HTML Text Editing Component for hosting in Web Pages\r
-// Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-//\r
-// This library is free software; you can redistribute it and/or\r
-// modify it under the terms of the GNU Lesser General Public\r
-// License as published by the Free Software Foundation; either\r
-// version 2.1 of the License, or (at your option) any later version.\r
-//\r
-// This library is distributed in the hope that it will be useful,\r
-// but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-// Lesser General Public License for more details.\r
-//\r
-// You should have received a copy of the GNU LesserGeneral Public License\r
-// along with this program; if not a copy can be obtained from\r
-//\r
-// http://www.gnu.org/copyleft/lesser.html\r
-//\r
-// or by writing to:\r
-//\r
-// Free Software Foundation, Inc.\r
-// 59 Temple Place - Suite 330,\r
-// Boston,\r
-// MA 02111-1307,\r
-// USA.\r
-//\r
-// Original Developer:\r
-//\r
-// Austin David France\r
-// Ramesys (Contracting Services) Limited\r
-// Mentor House\r
-// Ainsworth Street\r
-// Blackburn\r
-// Lancashire\r
-// BB1 6AY\r
-// United Kingdom\r
-// email: Austin.France@Ramesys.com\r
-//\r
-// Home Page: http://richtext.sourceforge.net/\r
-// Support: http://richtext.sourceforge.net/\r
-//\r
-////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Authors & Contributers:\r
-//\r
-// OZ Austin David France [austin.france@ramesys.com]\r
-// Primary Developer\r
-//\r
-////////////////////////////////////////////////////////////////////////////////\r
-\r
-// DBG(): Get the debug window handle in a safe manaer.\r
-function DBGGetWindow(el) {\r
- if (el) {\r
- // Debug window closed?\r
- try { el.className; } catch(e) {\r
- if (e.number == -2147418094) {\r
- return null;\r
- }\r
- }\r
- }\r
- return el;\r
-}\r
-\r
-// DBG(): Debug routine activated by the debugWindow property\r
-function DBG(n, str)\r
-{\r
- // Initialise debug functionality, first time in or if DBG() is called\r
- // with no arguments (as called from put_debugWindow).\r
- if (typeof(n) == "undefined" || !DBG.fInitialised) {\r
- var el = DBGGetWindow(public_description.debugWindow);\r
- if (el) {\r
- el.className = "debugWindow";\r
- el.innerHTML = '<table width="100%" id="debug">'\r
- + '<tr><th>Seq</th><th>Caller</th><th>Debug</th></tr>'\r
- + '</table>';\r
- DBG.idTable = el.all("debug");\r
- }\r
- DBG.fInitialised = true;\r
- DBG.seq = 0;\r
- }\r
-\r
- // If debug window supplied, then output debug message, assuming one was\r
- // supplied.\r
- if (typeof(str) != "undefined") {\r
- var el = DBGGetWindow(DBG.idTable);\r
- if (el) {\r
- var row = el.insertRow(1);\r
- var caller = DBG.caller.toString().substr(9);\r
- var cell = row.insertCell();\r
- cell.innerText = DBG.seq++;\r
- cell.nowrap = '';\r
- cell = row.insertCell();\r
- cell.innerText = caller.substr(0, caller.indexOf('\n'));\r
- cell.nowrap = '';\r
- row.insertCell().innerText = str;\r
- } else {\r
- // If no debug window, but RichEdit.debug is true, then output\r
- // debugs to status bar.\r
- if (RichEditor.debug) {\r
- window.status = str;\r
- }\r
- }\r
- }\r
-}\r
+++ /dev/null
- .text{\r
- font-family : Arial, Helvetica, sans-serif;\r
- font-size : x-small;\r
- color : black;\r
- }\r
- .red{\r
- font-family : Arial, Helvetica, sans-serif;\r
- color : red;\r
-}\r
- .acomment{\r
- background-color : #E7E7E7;\r
- color : Gray;\r
- font-family : Arial, Helvetica, sans-serif;\r
- font-size : x-small;\r
-}\r
- DIV.red{\r
- font-family : Arial, Helvetica, sans-serif;\r
- color : red;\r
- font-size : x-small;\r
-}\r
- LI.red{\r
- font-family : Arial, Helvetica, sans-serif;\r
- color : red;\r
- font-size : x-small;\r
-}\r
- H1{\r
- font-family : "Lucida Console";\r
- font-variant : small-caps;\r
- font-size : larger;\r
- color : ButtonHighlight;\r
- font-style : italic;\r
- font-weight : 300;\r
- letter-spacing : 3px;\r
- }\r
- address{\r
- font-family : "Lucida Console";\r
- font-variant : small-caps;\r
- font-size : smaller;\r
- color : Gray;\r
- font-style : normal;\r
- font-weight : bolder;\r
- letter-spacing : normal;\r
- text-align : center;\r
- }\r
- H1.purple{\r
- font-family : "Lucida Console";\r
- font-variant : small-caps;\r
- font-size : larger;\r
- color : Violet;\r
- font-style : italic;\r
- font-weight : 300;\r
- letter-spacing : 3px;\r
- border : #9966FF;\r
- }
\ No newline at end of file
+++ /dev/null
-////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// HTML Text Editing Component for hosting in Web Pages\r
-// Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-//\r
-// This library is free software; you can redistribute it and/or\r
-// modify it under the terms of the GNU Lesser General Public\r
-// License as published by the Free Software Foundation; either\r
-// version 2.1 of the License, or (at your option) any later version.\r
-//\r
-// This library is distributed in the hope that it will be useful,\r
-// but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-// Lesser General Public License for more details.\r
-//\r
-// You should have received a copy of the GNU LesserGeneral Public License\r
-// along with this program; if not a copy can be obtained from\r
-//\r
-// http://www.gnu.org/copyleft/lesser.html\r
-//\r
-// or by writing to:\r
-//\r
-// Free Software Foundation, Inc.\r
-// 59 Temple Place - Suite 330,\r
-// Boston,\r
-// MA 02111-1307,\r
-// USA.\r
-//\r
-// Original Developer:\r
-//\r
-// Austin David France\r
-// Ramesys (Contracting Services) Limited\r
-// Mentor House\r
-// Ainsworth Street\r
-// Blackburn\r
-// Lancashire\r
-// BB1 6AY\r
-// United Kingdom\r
-// email: Austin.France@Ramesys.com\r
-//\r
-// Home Page: http://richtext.sourceforge.net/\r
-// Support: http://richtext.sourceforge.net/\r
-//\r
-////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Author(s): leonreinders@hetnet.nl LEON\r
-//\r
-// Austin.France@Ramesys.com OZ\r
-//\r
-// History:\r
-//\r
-// LEON 04-08-2001\r
-// Initial Implementation\r
-//\r
-// OZ Disable/enable post button during view source mode.\r
-//\r
-////////////////////////////////////////////////////////////////////////////////\r
-\r
-// setEditMode(): switch between html and textview\r
-function setEditMode() {\r
- switchMode.blur(); // htmlview\r
- if (switchMode.checked == true) {\r
- ctlStyle.disabled = ctlFont.disabled = ctlSize.disabled = true;\r
- doc.style.fontFamily = "Courier";\r
- doc.style.fontSize = "10px";\r
- RichEditor.txtView = false;\r
- doc.innerText = codeSweeper();\r
- doc.innerHTML = ccParser(doc.innerHTML);\r
- alert("Remember to uncheck this Source box again before saving your changes!!");\r
- } else {\r
- ctlStyle.disabled = ctlFont.disabled = ctlSize.disabled = false;\r
- doc.style.fontFamily = doc.style.fontSize = "";\r
- RichEditor.txtView = true;\r
- doc.focus();\r
- doc.innerHTML = doc.innerText;\r
- }\r
-}\r
-\r
-// resetMode();\r
-function resetMode(){\r
- if (switchMode.checked == true) {\r
- switchMode.click();\r
- }\r
-}\r
-\r
-// ccParser(): colorcode-parser for html-editing view\r
-function ccParser(html) {\r
-\r
- html = html.replace(/@/gi,"_AT_");\r
- html = html.replace(/#/gi,"_HASH_");\r
-\r
- var htmltag = /(<[\w\/]+[ ]*[\w\=\"\'\.\/\;\: \)\(-]*>)/gi;\r
- html = html.replace(htmltag,"<span class=ccp_tag>$1</span>");\r
-\r
- var imgtag = /<span class=ccp_tag>(<IMG[ ]*[\w\=\"\'\.\/\;\: \)\(-]*>)<\/span>/gi;\r
- html = html.replace(imgtag,"<span class=ccp_img>$1</span>");\r
-\r
- var formtag = /<span class=ccp_tag>(<[\/]*(form|input){1}[ ]*[\w\=\"\'\.\/\;\: \)\(-]*>)<\/span>/gi;\r
- html = html.replace(formtag,"<br><span class=ccp_form>$1</span>");\r
-\r
- var tabletag = /<span class=ccp_tag>(<[\/]*(table|tbody|th|tr|td){1}([ ]*[\w\=\"\'\.\/\;\:\)\(-]*){0,}>)<\/span>/gi;\r
- html = html.replace(tabletag,"<span class=ccp_table>$1</span>");\r
-\r
- //var Atag = /<span class=ccp_tag>(<(\/a>|[\W _\w\=\"\'\.\/\;\:\)\(-]>){1})<\/span>/gi;\r
- var Atag = /<span class=ccp_tag>(<\/a>){1}<\/span>/gi;\r
- html = html.replace(Atag,"<span class=ccp_A>$1</span>");\r
-\r
- var Atag = /<span class=ccp_tag>(<a [\W _\w\=\"\'\.\/\;\:\)\(-]+>){1,}<\/span>/gi;\r
- html = html.replace(Atag,"<span class=ccp_A>$1</span>");\r
-\r
- var parameter = /=("[ \w\'\.\/\;\:\)\(-]+"|'[ \w\"\.\/\;\:\)\(-]+')/gi;\r
- html = html.replace(parameter,"=<span class=ccp_paramvalue>$1</span>");\r
-\r
- var entity = /&([\w]+);/gi;\r
- html = html.replace(entity,"<span class=ccp_entity>&$1;</span>");\r
-\r
- var comment = /(<\!--[\W _\w\=\"\'\.\/\;\:\)\(-]*-->)/gi;\r
- html = html.replace(comment,"<br><span class=ccp_htmlcomment>$1</span>");\r
-\r
- html = html.replace(/_AT_/gi,"@");\r
- html = html.replace(/_HASH_/gi,"#");\r
-\r
- return html;\r
-}\r
+++ /dev/null
-////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// HTML Text Editing Component for hosting in Web Pages\r
-// Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-//\r
-// This library is free software; you can redistribute it and/or\r
-// modify it under the terms of the GNU Lesser General Public\r
-// License as published by the Free Software Foundation; either\r
-// version 2.1 of the License, or (at your option) any later version.\r
-//\r
-// This library is distributed in the hope that it will be useful,\r
-// but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-// Lesser General Public License for more details.\r
-//\r
-// You should have received a copy of the GNU LesserGeneral Public License\r
-// along with this program; if not a copy can be obtained from\r
-//\r
-// http://www.gnu.org/copyleft/lesser.html\r
-//\r
-// or by writing to:\r
-//\r
-// Free Software Foundation, Inc.\r
-// 59 Temple Place - Suite 330,\r
-// Boston,\r
-// MA 02111-1307,\r
-// USA.\r
-//\r
-// Original Developer:\r
-//\r
-// Austin David France\r
-// Ramesys (Contracting Services) Limited\r
-// Mentor House\r
-// Ainsworth Street\r
-// Blackburn\r
-// Lancashire\r
-// BB1 6AY\r
-// United Kingdom\r
-// email: Austin.France@Ramesys.com\r
-//\r
-// Home Page: http://richtext.sourceforge.net/\r
-// Support: http://richtext.sourceforge.net/\r
-//\r
-////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Author(s): leonreinders@hetnet.nl LEON\r
-//\r
-// History:\r
-//\r
-// LEON 04-08-2001\r
-// Initial Implementation\r
-//\r
-// OZ 30-08-2001\r
-// * Correct a problem where the last amendment could not be re-done.\r
-// * Alter the way the buttons are disabled so that the background of\r
-// the button is transparent and matches the user rebar background\r
-// color - specifically - buttonface.\r
-//\r
-// OZ 22-01-2002\r
-// Only do any saving if the history option is enabled. This should\r
-// speed up the editor in the default case. This is because the\r
-// history option takes entire copies of the buffer being edited which\r
-// can consume large amounts of memory.\r
-//\r
-////////////////////////////////////////////////////////////////////////////////\r
-\r
-var history = new Object;\r
-history.items = [];\r
-history.cursor = -1;\r
-\r
-// saveHistory(): Saves a copy of the document in the history.items.items buffer\r
-function saveHistory() {\r
- if (!getOption("history")) return;\r
- codeSweeper();\r
- history.items[history.items.length] = doc.innerHTML;\r
- history.cursor = history.items.length;\r
- // window.status = 'saveHistory() cursor=' + history.cursor + ', items = ' + history.items.length;\r
- showHistory();\r
-}\r
-\r
-// goHistory(): Advance or retreat the history.items.items cursor and show the\r
-// document as it was at that point in time.\r
-function goHistory(value) {\r
-\r
- if (!RichEditor.txtView) return;\r
- switch(value) {\r
- case -1:\r
- i = history.cursor - 1;\r
- // when first start undoing, save final state at end of history buffer\r
- // so it can be re-done.\r
- if (history.cursor == history.items.length) {\r
- saveHistory();\r
- }\r
- history.cursor = i;\r
- break;\r
- case 1:\r
- history.cursor ++;\r
- break;\r
- }\r
- if (history.items[history.cursor]) {\r
- doc.innerHTML = history.items[history.cursor];\r
- }\r
- // window.status = 'goHistory(' + value + ') cursor=' + history.cursor + ', items = ' + history.items.length;\r
- showHistory()\r
-}\r
-\r
-// showHistory(): enable and disable the history.items buttons as appropriate\r
-function showHistory() {\r
-\r
- if (history.cursor > 0) {\r
- btnPrev.className = "";\r
- btnPrev.disabled = false;\r
- } else {\r
- btnPrev.className = "disabled";\r
- btnPrev.disabled = true;\r
- }\r
-\r
- if (history.cursor < history.items.length - 1) {\r
- btnNext.className = "";\r
- btnNext.disabled = false;\r
- } else {\r
- btnNext.className = "disabled";\r
- btnNext.disabled = true;\r
- }\r
-}\r
+++ /dev/null
-////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// HTML Text Editing Component for hosting in Web Pages\r
-// Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-//\r
-// This library is free software; you can redistribute it and/or\r
-// modify it under the terms of the GNU Lesser General Public\r
-// License as published by the Free Software Foundation; either\r
-// version 2.1 of the License, or (at your option) any later version.\r
-//\r
-// This library is distributed in the hope that it will be useful,\r
-// but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-// Lesser General Public License for more details.\r
-//\r
-// You should have received a copy of the GNU LesserGeneral Public License\r
-// along with this program; if not a copy can be obtained from\r
-//\r
-// http://www.gnu.org/copyleft/lesser.html\r
-//\r
-// or by writing to:\r
-//\r
-// Free Software Foundation, Inc.\r
-// 59 Temple Place - Suite 330,\r
-// Boston,\r
-// MA 02111-1307,\r
-// USA.\r
-//\r
-// Original Developer:\r
-//\r
-// Austin David France\r
-// Ramesys (Contracting Services) Limited\r
-// Mentor House\r
-// Ainsworth Street\r
-// Blackburn\r
-// Lancashire\r
-// BB1 6AY\r
-// United Kingdom\r
-// email: Austin.France@Ramesys.com\r
-//\r
-// Home Page: http://richtext.sourceforge.net/\r
-// Support: http://richtext.sourceforge.net/\r
-//\r
-////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Author(s): austin.france@ramesys.com OZ\r
-// leonreinders@hetnet.nl LEON\r
-//\r
-// History:\r
-//\r
-// LEON 04-08-2001\r
-// Added styleData functionality for extending the style dropdown\r
-//\r
-// OZ 30-08-2001\r
-// Re-worked styleData to restore FormatBlock logic which works better\r
-// for some styles, for example, heading styles - as these can be\r
-// applied without having to select text.\r
-//\r
-// OZ 02-09-2001\r
-// Extended the richeditor interface to make the docHtml property read\r
-// write.\r
-//\r
-// OZ 08-01-2002\r
-// Extended the richeditor interface to include an options property.\r
-// This property can be set to enable/disable functionality in the\r
-// editor.\r
-//\r
-// OZ 21-01-2002\r
-// After set editor options, apply them. In some circumstances the\r
-// options property is set after the editor has initialised and so the\r
-// options need to be re-applied.\r
-//\r
-// OZ 12-02-2002\r
-// Add new property debugWindow which should be a reference to an HTML\r
-// element that can contain innerHTML. A table is inserted into this\r
-// element and debug statements are output.\r
-//\r
-// OZ 12-06-2002 [ richtext-Bugs-567677 ] Cursor at bottom of document on load\r
-// When initialising HTML throught the docHtml property, get a text range\r
-// object before inserting HTML (this will reflect the cursor position for\r
-// the empty document), insert the HTML (this moves the cursor position)\r
-// and then collapse the resulting range which now covers the entire document\r
-// to the beginning (i.e. move the insertion point to the start of the\r
-// selection). All changes isolated to the put_docHtml() routine.\r
-//\r
-// OZ 18-06-2002\r
-// Add support for a docXHtml property to allow an XHMTL representation\r
-// of the document to be extracted. See rte_xhtml.js for the\r
-// implementation.\r
-//\r
-// OZ 01-07-2002\r
-// If the editor is slow at initialisation (for example if an alert box\r
-// is placed inside initEditor() in rte.js) then it is possible for\r
-// the docHtml property to be called before the editor is properly\r
-// initialised. This is ok except that we can't put focus on the editor\r
-// until it is visible.\r
-//\r
-////////////////////////////////////////////////////////////////////////////////\r
-\r
-// object: RichEditor()\r
-// description: This object provides the interface to the calling page.\r
-function RichEditor()\r
-{\r
- var selectedImage = null; // currently selected image\r
-\r
- this.put_docHtml = put_docHtml;\r
- this.get_docHtml = get_docHtml; // OZ\r
- this.get_docXHtml = get_docXHtml; // OZ\r
- this.put_defaultFont = put_defaultFont;\r
- this.put_defaultFontSize = put_defaultFontSize;\r
- this.put_styleData = put_styleData; // LEON\r
- this.put_options = put_options;\r
- this.addField = addField;\r
- this.getValue = getValue;\r
- this.put_debugWindow = put_debugWindow; // OZ\r
-}\r
-\r
-// property: docHtml\r
-// access: read/write\r
-// description: Set this property to define the initial HTML to be\r
-// edited.\r
-// author: austin.france@ramesys.com\r
-function put_docHtml(passedValue) {\r
- var r = document.selection.createRange();\r
- doc.innerHTML = passedValue;\r
- r.collapse(true);\r
- r.select();\r
-\r
- // Only if editor initialisation has completed (and therfore visible)\r
- if (editor.style.visibility == "visible") {\r
- doc.focus();\r
- reset();\r
- }\r
-}\r
-\r
-function get_docHtml() {\r
- return doc.innerHTML;\r
-}\r
-\r
-// property: docXHtml\r
-// access: read only\r
-// description: Return an XHTML representation of the document. \r
-// author: austin.france@ramesys.com\r
-function get_docXHtml() { // OZ\r
- // Ignore any contenteditable attributes seen as these are \r
- // inherited from the editor and not relevent to the document\r
- // HTML.\r
- return innerXHTML(doc, new RegExp("contenteditable"));\r
-}\r
-\r
-// property: defaultFont\r
-// access: write only\r
-// description: Sets the default font for the editor. The default\r
-// if this is not specified is whatever the microsoft\r
-// html editing component decides (Times New Roman\r
-// typically)\r
-// author: austin.france@ramesys.com\r
-function put_defaultFont(passedValue) {\r
- doc.style.fontFamily = passedValue;\r
-}\r
-\r
-// property: defaultFontSize\r
-// access: write only\r
-// description: Sets the default font size for the editor.\r
-// author: austin.france@ramesys.com\r
-function put_defaultFontSize(passedValue) {\r
- switch(passedValue) {\r
- case "1": passedValue = "xx-small"; break;\r
- case "2": passedValue = "x-small"; break;\r
- case "3": passedValue = "small"; break;\r
- case "4": passedValue = "medium"; break;\r
- case "5": passedValue = "large"; break;\r
- case "6": passedValue = "x-large"; break;\r
- case "7": passedValue = "xx-large"; break;\r
- }\r
- doc.style.fontSize = passedValue;\r
-}\r
-\r
-// property: styleData\r
-// access: writeOnly\r
-// description: Defines extended style data for the style dropdown\r
-// author: leonreinders@hetnet.nl\r
-function put_styleData(passedValue) {\r
-\r
- var a,b;\r
-\r
- // Define the default style list\r
- this.styleList = [\r
- // element description Active\r
- [null, "Normal", 0],\r
- [null, "Heading 1", 0],\r
- [null, "Heading 2", 0],\r
- [null, "Heading 3", 0],\r
- [null, "Heading 4", 0],\r
- [null, "Heading 5", 0],\r
- [null, "Heading 6", 0],\r
- [null, "Address", 0],\r
- [null, "Formatted", 0],\r
- ["BLOCKQUOTE", "Blockquote", 0],\r
- ["CITE", "Citation", 0],\r
- ["BDO", "Reversed", 0],\r
- ["BIG", "Big", 0],\r
- ["SMALL", "Small", 0],\r
- ["DIV", "Div", 0],\r
- ["SUP", "Superscript", 0],\r
- ["SUB", "Subscript", 0]\r
- ];\r
-\r
- // Add the passed styles to the documents stylesheet\r
- for (var i = 0; passedValue && i < passedValue.length; i++)\r
- {\r
- for (var j = 0; j < passedValue[i].rules.length; j++)\r
- {\r
- // Extract the rule and the rule definition from the passed style\r
- // data.\r
- a = passedValue[i].rules[j].selectorText.toString().toLowerCase();\r
- b = passedValue[i].rules[j].style.cssText.toLowerCase();\r
-\r
- // Ignore non-style entries\r
- if (!a || !b) continue;\r
-\r
- // Add this rule to our style sheet\r
- document.styleSheets[0].addRule(a,b);\r
-\r
- // Id: These are added to the document style sheet but are not\r
- // available in the style dropdown\r
- if (a.indexOf("#") != -1) {\r
- continue;\r
- }\r
-\r
- // Class: Append a cless element to the style list\r
- if (a.indexOf(".") == 0) {\r
- this.styleList[this.styleList.length] = [a, "Class " + a, 1];\r
- }\r
-\r
- // SubClass: Append the sub-class to the style list\r
- else if(a.indexOf(".") > 0) {\r
- this.styleList[this.styleList.length] = [a, a, 1];\r
- }\r
-\r
- // Otherwise, assume it's a tag and select the existing tag entry\r
- // in the style list.\r
- else {\r
- for (var k = 0; k < this.styleList.length; k++) {\r
- if (this.styleList[k][0] == a) {\r
- this.styleList[k][2] = 1;\r
- break;\r
- }\r
- }\r
- }\r
- }\r
- }\r
-\r
- // Initialise the style dropdown with the new style list\r
- initStyleDropdown(this.styleList);\r
-}\r
-\r
-function addField(name, label, maxlen, value, size) {\r
- var row = rebarBottom.parentElement.insertRow(rebarBottom.rowIndex);\r
- var cell = row.insertCell();\r
- cell.className = 'rebar';\r
- cell.width = '100%';\r
- cell.innerHTML = '<nobr width="100%"><span class="field" width="100%">'\r
- + '<img class="spacer" src="spacer.gif" width="2">'\r
- + '<span class="start"></span>'\r
- + '<span class="label">' + label + ':</span>'\r
- + ' <input class="field" type="text"'\r
- + ' name="' + name + '" maxlength="' + maxlen + '"'\r
- + (value ? ' value="' + value + '"' : '')\r
- + 'size="' + (size ? size : 58) + '"'\r
- + '> '\r
- + '</span>'\r
- + '</nobr>';\r
-}\r
-\r
-function getValue(name) {\r
- return document.all(name).value;\r
-}\r
-\r
-// property: options\r
-// access: writeOnly\r
-// description: Sets options for the editor. Used by the editor to control\r
-// certain features\r
-//\r
-// viewsource=<true|false>;...\r
-//\r
-// author: austin.france@ramesys.com\r
-function put_options(passedValue) {\r
- this.options = passedValue;\r
- applyOptions(this.options);\r
-}\r
-\r
-// property: debugWindow\r
-// access: writeOnly\r
-// description: Tells the editor to emit debugs to the debug window.\r
-// author: austin.france@ramesys.com\r
-function put_debugWindow(passedValue) {\r
- this.debugWindow = passedValue;\r
- DBG();\r
-}\r
+++ /dev/null
-////////////////////////////////////////////////////////////////////////////////
-//
-// HTML Text Editing Component for hosting in Web Pages
-// Copyright (C) 2001 Ramesys (Contracting Services) Limited
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU LesserGeneral Public License
-// along with this program; if not a copy can be obtained from
-//
-// http://www.gnu.org/copyleft/lesser.html
-//
-// or by writing to:
-//
-// Free Software Foundation, Inc.
-// 59 Temple Place - Suite 330,
-// Boston,
-// MA 02111-1307,
-// USA.
-//
-// Original Developer:
-//
-// Austin David France
-// Ramesys (Contracting Services) Limited
-// Mentor House
-// Ainsworth Street
-// Blackburn
-// Lancashire
-// BB1 6AY
-// United Kingdom
-// email: Austin.France@Ramesys.com
-//
-// Home Page: http://richtext.sourceforge.net/
-// Support: http://richtext.sourceforge.net/
-//
-////////////////////////////////////////////////////////////////////////////////
-//
-// Authors & Contributers:
-//
-// OZ Austin David France [austin.france@ramesys.com]
-// Primary Developer
-//
-// TE Torbjørn Engedal [torbjoen@stud.ntnu.no]
-// Doc. Translator
-//
-// GE Herfurth, Gerrit [gerrit.herfurth@gs-druckfarben.de]
-//
-// BC Bill Chalmers [bill_paula@btinternet.com]
-//
-// History:
-//
-// OZ 16-02-2002
-// Initial Implementation
-//
-// TE 17-02-2002
-// Norwegian Translation
-//
-// GE 05-06-2002
-// German Translation
-//
-// OZ 01-07-2002
-// Extended EN translation to include table editing. Other languages
-// to follow.
-//
-// BC 21-07-2002
-// Fixed bug no: 584424, trying to set lang equal to local[lang] caused error
-// if the users local lang was not in the predefined locale array.
-//
-// BC 31-07-2002
-// Added french translation courtesy of Arnaud Vatel.
-//
-// OZ 27-08-2002
-// Added Russian Translation - submitted by Artem Orlov [art@ural.ru]
-//
-// OZ 27-08-2002
-// Added Turkish Translation - submitted by Fatih BOY <fatih_boy@yahoo.com>
-//
-// OZ 27-08-2002
-// Fix bug where missing text in non-en/us language was not falling back
-// to en/us text.
-//
-// OZ 27-08-2002
-// Added Italiano Translation - submitted by Angelo Del Mazza <delmazza@a99.it>
-//
-// BC 04-09-2002
-// Added Dutch Translation - Courtesy of levOOware, Marja Ribbers-de Vroed
-//
-// BC 31-10-2002
-// Added Portugese (Brazilian) Translation - Courtesy of Ricardo Colombani de Sousa <colombani@ig.com.br>
-//
-// BC 31-10-2002
-// Added Danish Translation - Courtesy of Morten Flyger <flyger@email.dk>
-//
-// BC 31-10-2002
-// Added bold, underline and italic icons sources for en-us
-////////////////////////////////////////////////////////////////////////////////
-
-var locale = new Object;
-
-// locale.getLanguage(): Called to work out what language to use.
-locale.getLanguage = function()
-{
- return locale.language ? locale.language : navigator.userLanguage;
-}
-
-// locale.getString(): Called to return the language variant of a @code string.
-// this routin will fall back to en-us is no language variant is found. If no
-// english version exists, the code is returned.
-locale.getString = function(str, lang)
-{
- // If not supplied, pick up the language to use
- if (!lang) lang = locale.getLanguage();
-
- // Get references to required languages
- if (!locale[lang])
- {
- enus = lang = locale["en-us"];
- }
- else
- {
- lang = locale[lang];
- enus = locale["en-us"];
- }
-
- // Find the end of the text code
- var i = str.indexOf('@{');
- while (i != -1)
- {
- // Find the closing }
- var j = str.indexOf('}', i+1);
-
- // Extrace the language code
- var code = str.substr(i+2,j-i-2);
-
- // Return the language version of the text
- if (lang[code]) {
- str = str.substr(0,i) + lang[code] + str.substr(i+j+1);
- } else {
- if (enus[code]) {
- str = str.substr(0,i) + enus[code] + str.substr(i+j+1);
- }
- }
-
- // Find the next code if any
- i = str.indexOf('@{', i+1);
- }
-
- // Untranslated
- return str;
-}
-
-// locale.setLocale(): Called once the editor has loaded to replace all language
-// codes in alt, title and innerText with thier language counterparts.
-locale.setLocale = function()
-{
- // Work out which language to apply
- var lang = locale.getLanguage();
-
- // Enumerate all elements within the document
- for (var i = 0; i < document.all.length; i++)
- {
- // Get a reference to this element
- var el = document.all(i);
-
- // Translate the alt attribute (alternate image text) if required
- if (el.alt && el.alt.indexOf('@{') != -1) {
- el.alt = locale.getString(el.alt, lang);
- }
-
- // Translate the title attribute (tooltip) if required
- if (el.title && el.title.indexOf('@{') != -1) {
- el.title = locale.getString(el.title, lang);
- }
-
- // Translate the src attribute (image/script source url) if required
- if (el.src && el.src.indexOf('@{') != -1) {
- el.src = locale.getString(el.src, lang);
- }
-
- // Translate bottom level (leaf nodes) innerText if required.
- if (!el.children.length && el.innerText && el.innerText.indexOf('@{') != -1) {
- el.innerText = locale.getString(el.innerText, lang);
- }
- }
-}
-
-// Arrange for translation to occur when the document has loaded
-window.attachEvent("onload", locale.setLocale);
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// English (American & British)
-//
-////////////////////////////////////////////////////////////////////////////////
-
-var o = locale["en-us"] = locale["en-gb"] = new Object;
-
- // Icon Titles (alt="")
- o["PostTopic"] = "Post Topic";
- o["Cut"] = "Cut";
- o["Copy"] = "Copy";
- o["Paste"] = "Paste";
- o["SpellCheck"] = "Spell Check";
- o["SelectAll"] = "Select All";
- o["RemoveFormatting"] = "Remove Formatting";
- o["InsertLink"] = "Insert Link";
- o["RemoveLink"] = "Remove Link";
- o["InsertImage"] = "Insert Image";
- o["InsertTable"] = "Insert Table";
- o["EditTable"] = "Edit Table";
- o["InsertLine"] = "Insert Horizontal Line";
- o["InsertSmily"] = "Insert Smily 8-)";
- o["InsertCharacter"] = "Insert special character";
- o["About"] = "About Richtext Editor";
- o["Bold"] = "Bold";
- o["Italic"] = "Italic";
- o["Underline"] = "Underline";
- o["Strikethrough"] = "Strikethrough";
- o["AlignLeft"] = "Align Left";
- o["Center"] = "Center";
- o["AlignRight"] = "Align Right";
- o["AlignBlock"] = "Align Block";
- o["NumberedList"] = "Numbered List";
- o["BulettedList"] = "Buletted List";
- o["DecreaseIndent"] = "Decrease Indent";
- o["IncreaseIndent"] = "Increase Indent";
- o["HistoryBack"] = "History back";
- o["HistoryForward"] = "History forward";
- o["TextColor"] = "Text Color";
- o["BackgroundColor"] = "Background Color";
-
- o["RemoveColspan"] = "Remove Colspan";
- o["RemoveRowspan"] = "Remove Rowspan";
- o["IncreaseColspan"] = "Increase Colspan";
- o["IncreaseRowspan"] = "Increase Rowspan";
- o["AddColumn"] = "Add Column";
- o["AddRow"] = "Add Row";
- o["RemoveColumn"] = "Remove Column";
- o["RemoveRow"] = "Remove Row";
-
- // Label Text
- o["Style"] = "Style";
- o["Font"] = "Font";
- o["Size"] = "Size";
- o["Source"] = "Source";
-
- // Titles
- o["SourceTitle"] = "Click here to toggle between WYSIWYG and Source mode.";
-
- // Image Sources
- o["icon_post"] = "images/icon_post.gif";
- o["hdr_tables"] = "images/hdr_tables.gif";
- o["icon_bold"] = "images/icon_bold.gif";
- o["icon_underline"] = "images/icon_underline.gif";
- o["icon_italic"] = "images/icon_italic.gif";
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// Norwegian Bokmål
-//
-////////////////////////////////////////////////////////////////////////////////
-
-var o = locale["no"] = new Object;
-
- // Icon Titles (alt="")
- o["PostTopic"] = "Send";
- o["Cut"] = "Klipp";
- o["Copy"] = "Kopier";
- o["Paste"] = "Lim";
- o["SpellCheck"] = "Stavekontroll";
- o["SelectAll"] = "Marker alt";
- o["RemoveFormatting"] = "Fjern formatering";
- o["InsertLink"] = "Sett inn link";
- o["RemoveLink"] = "Fjern link";
- o["InsertImage"] = "Sett inn bilde";
- o["InsertTable"] = "Sett inn tabell";
- o["EditTable"] = "Endre tabell";
- o["InsertLine"] = "Sett inn horisontal linje";
- o["InsertSmily"] = "Sett inn smily 8-)";
- o["InsertCharacter"] = "Sett inn spesialtegn";
- o["About"] = "Om Richtext Editor";
- o["Bold"] = "Fet";
- o["Italic"] = "Kursiv";
- o["Underline"] = "Understrekning";
- o["Strikethrough"] = "Gjennomstrekning";
- o["AlignLeft"] = "Venstrejustering";
- o["Center"] = "Sentrering";
- o["AlignRight"] = "Høyrejustering";
- o["AlignBlock"] = "Blokkjustering";
- o["NumberedList"] = "Nummerert liste";
- o["BulettedList"] = "Punktliste";
- o["DecreaseIndent"] = "Mink innrykksverdi";
- o["IncreaseIndent"] = "Øk innrykksverdi";
- o["HistoryBack"] = "Historie bakover";
- o["HistoryForward"] = "Historie forover";
- o["TextColor"] = "Tekstfarge";
- o["BackgroundColor"] = "Bakgrunnsfarge";
-
- // Label Text
- o["Style"] = "Stil";
- o["Font"] = "Type";
- o["Size"] = "Størrelse";
- o["Source"] = "Kilde";
-
- // Titles
- o["SourceTitle"] = "Klikk her for å bytte mellom WYSIWYG og kilde modus.";
-
- // Image Sources
- o["icon_post"] = "images/lang/no.icon_post.gif";
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// German
-//
-////////////////////////////////////////////////////////////////////////////////
-
-var o = locale["de"] = new Object;
-
- // Icon Titles (alt="")
- o["PostTopic"] = "Speichern";
- o["Cut"] = "Ausschneiden";
- o["Copy"] = "Kopieren";
- o["Paste"] = "Einfügen";
- o["SpellCheck"] = "Rechschreibprüfung";
- o["SelectAll"] = "Alles markieren";
- o["RemoveFormatting"] = "Formatierung entfernen";
- o["InsertLink"] = "Link einfügen";
- o["RemoveLink"] = "Link entfernen";
- o["InsertImage"] = "Bild einfügen";
- o["InsertTable"] = "Tabelle einfügen";
- o["EditTable"] = "Tabelle bearbeiten";
- o["InsertLine"] = "Horizontale Linie einfügen";
- o["InsertSmily"] = "Smily 8-) einfügen";
- o["InsertCharacter"] = "Sonderzeichen einfügen";
- o["About"] = "Über Richtext Editor";
- o["Bold"] = "Fett";
- o["Italic"] = "Kursiv";
- o["Underline"] = "Unterstrichen";
- o["Strikethrough"] = "Durchgestrichen";
- o["AlignLeft"] = "Linksbündig";
- o["Center"] = "Zentriert";
- o["AlignRight"] = "Rechtsbündig";
- o["AlignBlock"] = "Blocksatz";
- o["NumberedList"] = "Nummerierung";
- o["BulettedList"] = "Aufzählungszeichen";
- o["DecreaseIndent"] = "Einzug verkleinern";
- o["IncreaseIndent"] = "Einzug vergrößern";
- o["HistoryBack"] = "Rückgängig";
- o["HistoryForward"] = "Wiederherstellen";
- o["TextColor"] = "Zeichenfarbe";
- o["BackgroundColor"] = "Hintergrundfarbe";
-
- // Label Text
- o["Style"] = "Absatzformat";
- o["Font"] = "Schriftart";
- o["Size"] = "Größe";
- o["Source"] = "Quelltext";
-
- // Titles
- o["SourceTitle"] = "Hier klicken, um zwischen WYSIWYG- und Quelltext-Modus umzuschalten.";
-
- // Image Sources
- o["icon_post"] = "images/lang/de.icon_post.gif";
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// Français
-//
-////////////////////////////////////////////////////////////////////////////////
-
-var o = locale["fr"] = new Object;
-
- // Icon Titles (alt="")
- o["PostTopic"] = "Poster le sujet";
- o["Cut"] = "Couper";
- o["Copy"] = "Copier";
- o["Paste"] = "Coller";
- o["Find Text"] = "Rechercher";
- o["SpellCheck"] = "Vérifier l'orthographe";
- o["SelectAll"] = "Sélectionner tout";
- o["RemoveFormatting"] = "Supprimer le formattage";
- o["InsertLink"] = "Insérer un lien";
- o["RemoveLink"] = "Supprimer un lien";
- o["InsertImage"] = "Insérer une image";
- o["InsertTable"] = "Insérer un tableau";
- o["EditTable"] = "Editer le tableau";
- o["InsertLine"] = "Insérer une ligne horizontale";
- o["InsertSmily"] = "Insérer un Smiley 8-)";
- o["InsertCharacter"] = "Insérer des caractères spéciaux";
- o["About"] = "A propos de Richtext Editor";
- o["Bold"] = "Gras";
- o["Italic"] = "Italique";
- o["Underline"] = "Souligné";
- o["Strikethrough"] = "Barré";
- o["AlignLeft"] = "Aligné à gauche";
- o["Center"] = "Centré";
- o["AlignRight"] = "Aligné à droite";
- o["AlignBlock"] = "Justifié";
- o["NumberedList"] = "Liste numérotée";
- o["BulettedList"] = "Liste à puces";
- o["DecreaseIndent"] = "Diminuer le retrait";
- o["IncreaseIndent"] = "Augmenter le retrait";
- o["HistoryBack"] = "Annuler";
- o["HistoryForward"] = "Rétablir";
- o["TextColor"] = "Couleur du texte";
- o["BackgroundColor"] = "Couleur de l'arrière plan";
-
- o["RemoveColspan"] = "Fractionner la cellule";
- o["RemoveRowspan"] = "Fusionner la cellule";
- o["IncreaseColspan"] = "Augmenter l'étendue de la colonne";
- o["IncreaseRowspan"] = "Augmenter l'étendue de la ligne";
- o["AddColumn"] = "Ajouter une colonne";
- o["AddRow"] = "Ajouter une ligne";
- o["RemoveColumn"] = "Supprimer une colonne";
- o["RemoveRow"] = "Supprimer une ligne";
-
- // Label Text
- o["Style"] = "Style";
- o["Font"] = "Police";
- o["Size"] = "Taille";
- o["Source"] = "Code source";
-
- // Titles
- o["SourceTitle"] = "Cliquez ici pour basculer entre Aperçu et mode Source.";
-
- // Image Sources
- o["icon_post"] = "images/icon_post.gif";
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// Russian (Windows 1251)
-// by Artem Orlov [art@ural.ru]
-//
-////////////////////////////////////////////////////////////////////////////////
-
-var o = locale["ru"] = locale["ru"] = new Object;
-
- // Icon Titles (alt="")
- o["PostTopic"] = "Ñîõðàíèòü";
- o["Cut"] = "Âûðåçàòü";
- o["Copy"] = "Êîïèðîâàòü";
- o["Paste"] = "Âñòàâèòü";
- o["SpellCheck"] = "Ïðîâåðèòü îðôîãðàôèþ";
- o["SelectAll"] = "Âûäåëèòü âñå";
- o["RemoveFormatting"] = "Óäàëèòü ôîðìàòèðîâàíèå";
- o["InsertLink"] = "Âñòàâèòü ññûëêó";
- o["RemoveLink"] = "Óáðàòü ññûëêó";
- o["InsertImage"] = "Âñòàâèòü êàðòèíêó";
- o["InsertTable"] = "Âñòàâèòü òàáëèöó";
- o["EditTable"] = "Èçìåíèòü òàáëèöó";
- o["InsertLine"] = "Âñòàâèòü ãîðèçîíòàëüíóþ ëèíèþ";
- o["InsertSmily"] = "Âñòàâèòü ñìàéëèê 8-)";
- o["InsertCharacter"] = "Âñòàâèòü ñïåöñèìâîë";
- o["About"] = "Î ðåäàêòîðå";
- o["Bold"] = "Æèðíûé";
- o["Italic"] = "Êóðñèâ";
- o["Underline"] = "Ïîä÷åðêíóòûé";
- o["Strikethrough"] = "Çà÷åðêíóòûé";
- o["AlignLeft"] = "Ïî ëåâîìó êðàþ";
- o["Center"] = "Ïî öåíòðó";
- o["AlignRight"] = "Ïî ïðàâîìó êðàþ";
- o["AlignBlock"] = "Ïî øèðèíå";
- o["NumberedList"] = "Íóìåðîâàííûé ñïèñîê";
- o["BulettedList"] = "Ìàðêèðîâàííûé ñèñîê";
- o["DecreaseIndent"] = "Óìåíüøèòü îòñòóï";
- o["IncreaseIndent"] = "Óâåëè÷èòü îòñòóï";
- o["HistoryBack"] = "Îòìåíèòü";
- o["HistoryForward"] = "Ïîâòîðèòü";
- o["TextColor"] = "Öâåò òåêñòà";
- o["BackgroundColor"] = "Öâåò ôîíà";
-
- o["RemoveColspan"] = "Óáðàòü îáúåäèíåíèå ñòîëáöîâ";
- o["RemoveRowspan"] = "Óáðàòü îáúåäèíåíèå ñòðîê";
- o["IncreaseColspan"] = "Îáúåäèíèòü ñòîëáöû";
- o["IncreaseRowspan"] = "Îáúåäèíèòü ñòðîêè";
- o["AddColumn"] = "Äîáàâèòü Ñòîëáåö";
- o["AddRow"] = "Äîáàâèòü Ñòðîêó";
- o["RemoveColumn"] = "Óäàëèòü Ñòîëáåö";
- o["RemoveRow"] = "Óäàëèòü Ñòðîêó";
-
- // Label Text
- o["Style"] = "Ñòèëü";
- o["Font"] = "Øðèôò";
- o["Size"] = "Ðàçìåð";
- o["Source"] = "Â âèäå HTML";
-
- // Titles
- o["SourceTitle"] = "Ùåëêíèòå çäåñü äëÿ ïåðåêþ÷åíèÿ ìåæäó WYSIWYG and ïðîñìîòðîì â âèäå HTML.";
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// Türkçe
-// Fatih BOY <fatih_boy@yahoo.com> tarafindan Türkçeye çevirilmistir.
-//
-// Turkish
-// Translated into Turkish by Fatih BOY <fatih_boy@yahoo.com>
-//
-////////////////////////////////////////////////////////////////////////////////
-
-var o = locale["tr"] = new Object;
-
- // Icon Titles (alt="")
- o["PostTopic"] = "Konuyu Gönder";
- o["Cut"] = "Kes";
- o["Copy"] = "Kopyala";
- o["Paste"] = "Yapýþtýr";
- o["SpellCheck"] = "Dil Kontrolü";
- o["SelectAll"] = "Hepsini Seç";
- o["RemoveFormatting"] = "Biçimlemeyi Kaldýr";
- o["InsertLink"] = "Köprü Ekle";
- //o["InsertLink"] = "Link Ekle";
- o["RemoveLink"] = "Köprüyü Kaldýr";
- //o["RemoveLink"] = "Link'i Kaldýr";
- o["InsertImage"] = "Resim Ekle";
- o["InsertTable"] = "Tablo Ekle";
- o["EditTable"] = "Tabloyu Düzenle";
- o["InsertLine"] = "Yatay Çizgi Ekle";
- o["InsertSmily"] = "Gülümseme Ekle 8-)";
- o["InsertCharacter"] = "Özel Karakter Ekle";
- o["About"] = "Richtext Editörü Hakkýnda";
- o["Bold"] = "Kalýn";
- o["Italic"] = "Yatay";
- o["Underline"] = "Altý çizili";
- o["Strikethrough"] = "Çizili";
- o["AlignLeft"] = "Sola Daya";
- o["Center"] = "Ortala";
- o["AlignRight"] = "Saða Daya";
- o["AlignBlock"] = "Blokla";
- o["NumberedList"] = "Numaralý Liste";
- o["BulettedList"] = "Buletted Liste";
- o["DecreaseIndent"] = "Satýr aralýðýný Azalt";
- o["IncreaseIndent"] = "Satýr Aralýðýný Arttýr";
- o["HistoryBack"] = "Geçmiþ - Geri";
- o["HistoryForward"] = "Geçmiþ - Ýleri";
- o["TextColor"] = "Yazý Rengi";
- o["BackgroundColor"] = "Artalan Rengi";
-
- o["RemoveColspan"] = "Colspan'ý Kaldýr";
- o["RemoveRowspan"] = "Rowspan'ý Kaldýr";
- o["IncreaseColspan"] = "Colspan'ý Arttýr";
- o["IncreaseRowspan"] = "Rowspan'ý Arttýr";
- o["AddColumn"] = "Sütunu Kaldýr";
- o["AddRow"] = "Satýr Ekle";
- o["RemoveColumn"] = "Sütun Ekle";
- o["RemoveRow"] = "Satýrý Kaldýr";
-
- // Label Text
- o["Style"] = "Stil";
- o["Font"] = "Font";
- o["Size"] = "Boyut";
- o["Source"] = "Kaynak";
-
- // Titles
- o["SourceTitle"] = "Editör ile kaynak modlarý arasýnda geçiþ için týklayýnýz.";
-
- // Image Sources
- o["icon_post"] = "images/lang/tr.icon_post.gif";
- o["hdr_tables"] = "images/lang/tr.hdr_tables.gif";
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// Italiano: delmazza@a99.it - Angelo Del Mazza - Area99 http://www.a99.it
-//
-////////////////////////////////////////////////////////////////////////////////
-
-var o = locale["it"] = new Object;
-
- // Icon Titles (alt="")
- o["PostTopic"] = "Invia Articolo";
- o["Cut"] = "Taglia";
- o["Copy"] = "Copia";
- o["Paste"] = "Incolla";
- o["SpellCheck"] = "Controlla Ortografia";
- o["SelectAll"] = "Seleziona Tutto";
- o["RemoveFormatting"] = "Rimuovi Formattazione";
- o["InsertLink"] = "Insrisci Link";
- o["RemoveLink"] = "Rimuovi Link";
- o["InsertImage"] = "Inserisci Immagine";
- o["InsertTable"] = "Inserisci Tabella";
- o["EditTable"] = "Modifica Tabella";
- o["InsertLine"] = "Inserisci Linea Orizzontale";
- o["InsertSmily"] = "Inserisci Smily 8-)";
- o["InsertCharacter"] = "Inserisci Carattere Speciale";
- o["About"] = "Info su Richtext Editor";
- o["Bold"] = "Grassetto";
- o["Italic"] = "Italico";
- o["Underline"] = "Sottolineato";
- o["Strikethrough"] = "Barrato";
- o["AlignLeft"] = "Allinea a Sinistra";
- o["Center"] = "Centrato";
- o["AlignRight"] = "Alline a Destra";
- o["AlignBlock"] = "Allinea Blocco";
- o["NumberedList"] = "Elenco Numerato";
- o["BulettedList"] = "Elenco Puntato";
- o["DecreaseIndent"] = "Diminuisci Rientro";
- o["IncreaseIndent"] = "Incrementa Rientro";
- o["HistoryBack"] = "Indietro";
- o["HistoryForward"] = "Avanti";
- o["TextColor"] = "Colore Testo";
- o["BackgroundColor"] = "Colore Sfondo";
-
- o["RemoveColspan"] = "Rimuovi Colspan";
- o["RemoveRowspan"] = "Rimuovi Rowspan";
- o["IncreaseColspan"] = "Incrementa Colspan";
- o["IncreaseRowspan"] = "Incrementa Rowspan";
- o["AddColumn"] = "Aggiungi Colonna";
- o["AddRow"] = "Aggiungi Riga";
- o["RemoveColumn"] = "Rimuovi Colonna";
- o["RemoveRow"] = "Rimuovi Riga";
-
- // Label Text
- o["Style"] = "Stile";
- o["Font"] = "Carattere";
- o["Size"] = "Dimensione";
- o["Source"] = "Sorgente";
-
- // Titles
- o["SourceTitle"] = "Clicca per passare in modalità WYSIWYG o Sorgente";
-
- // Image Sources
- o["icon_post"] = "images/lang/it.icon_post.gif";
- o["hdr_tables"] = "images/hdr_tables.gif";
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// Dutch Translation - Courtesy of FlevOOware, Marja Ribbers-de Vroed
-// <marja@flevooware.nl>
-//
-////////////////////////////////////////////////////////////////////////////////
-
-var o = locale["nl"] = new Object;
-
- // Icon Titles (alt="")
- o["PostTopic"] = "Opslaan";
- o["Cut"] = "Knippen";
- o["Copy"] = "Kopieren";
- o["Paste"] = "Plakken";
- o["SpellCheck"] = "Controleer spelling";
- o["SelectAll"] = "Selecteer alles";
- o["RemoveFormatting"] = "Opmaak verwijderen";
- o["InsertLink"] = "Link invoegen";
- o["RemoveLink"] = "Link verwijderen";
- o["InsertImage"] = "Afbeelding invoegen";
- o["InsertTable"] = "Tabel invoegen";
- o["EditTable"] = "Tabel wijzigen";
- o["InsertLine"] = "Horizontale lijn invoegen";
- o["InsertSmily"] = "Smiley 8-) invoegen";
- o["InsertCharacter"] = "Karakter invoegen";
- o["About"] = "Over Richtext Editor";
- o["Bold"] = "Vet";
- o["Italic"] = "Cursief";
- o["Underline"] = "Onderstreept";
- o["Strikethrough"] = "Doorgehaald";
- o["AlignLeft"] = "Links uitlijnen";
- o["Center"] = "Centreren";
- o["AlignRight"] = "Rechts uitlijnen";
- o["AlignBlock"] = "Uitlijnen als blok";
- o["NumberedList"] = "Lijst met nummering";
- o["BulettedList"] = "Lijst met opsommingstekens";
- o["DecreaseIndent"] = "Inspringing verkleinen";
- o["IncreaseIndent"] = "Inspringing vergroten";
- o["HistoryBack"] = "Herstel";
- o["HistoryForward"] = "Opnieuw";
- o["TextColor"] = "Tekstkleur";
- o["BackgroundColor"] = "Achtergrondkleur";
-
- o["RemoveColspan"] = "Verwijder Colspan";
- o["RemoveRowspan"] = "Verwijder Rowspan";
- o["IncreaseColspan"] = "Verhoog Colspan";
- o["IncreaseRowspan"] = "Verlaag Rowspan";
- o["AddColumn"] = "Voeg kolom toe";
- o["AddRow"] = "Voeg rij toe";
- o["RemoveColumn"] = "Verwijder kolom";
- o["RemoveRow"] = "Verwijder rij";
-
- // Label Text
- o["Style"] = "Stijl";
- o["Font"] = "Lettertype";
- o["Size"] = "Grootte";
- o["Source"] = "HTML-brontekst";
-
- // Titles
- o["SourceTitle"] = "Klik hier om te wisselen tussen WYSIWYG-en HTML-brontekst-modus.";
-
- // Image Sources
- o["icon_post"] = "images/icon_post.gif";
- o["hdr_tables"] = "images/hdr_tables.gif";
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// Portuguese (Brazilian)
-// Courtesy of Ricardo Colombani de Sousa <colombani@ig.com.br>
-//
-////////////////////////////////////////////////////////////////////////////////
-
-var o = locale["pt-br"] = new Object;
-
- // Icon Titles (alt="")
- o["PostTopic"] = "Enviar";
- o["Cut"] = "Recortar";
- o["Copy"] = "Copiar";
- o["Paste"] = "Colar";
- o["SpellCheck"] = "Corretor Ortográfico";
- o["SelectAll"] = "Selecionar Tudo";
- o["RemoveFormatting"] = "Remover Formatação";
- o["InsertLink"] = "Inserir Link";
- o["RemoveLink"] = "Remover Link";
- o["InsertImage"] = "Inserir Imagem";
- o["InsertTable"] = "Inserir Tabela";
- o["EditTable"] = "Editar Tabela";
- o["InsertLine"] = "Inserir Linha Horizontal";
- o["InsertSmily"] = "Inserir Emoticon 8-)";
- o["InsertCharacter"] = "Inserir caráter Especial";
- o["About"] = "Sobre o Richtext Editor";
- o["Bold"] = "Negrito";
- o["Italic"] = "Itálico";
- o["Underline"] = "Sublinhado";
- o["Strikethrough"] = "Riscado";
- o["AlignLeft"] = "Alinhar à Esquerda";
- o["Center"] = "Centralizar";
- o["AlignRight"] = "Alinhar à Direita";
- o["AlignBlock"] = "Justificar";
- o["NumberedList"] = "Lista Numerada";
- o["BulettedList"] = "Lista com Marcadores";
- o["DecreaseIndent"] = "Diminuir Identação";
- o["IncreaseIndent"] = "Aumentar Identação";
- o["HistoryBack"] = "Desfazer";
- o["HistoryForward"] = "Refazer";
- o["TextColor"] = "Cor de Texto";
- o["BackgroundColor"] = "Cor de Fundo";
-
- o["RemoveColspan"] = "Remover Colspan";
- o["RemoveRowspan"] = "Remover Rowspan";
- o["IncreaseColspan"] = "Aumentar Colspan";
- o["IncreaseRowspan"] = "Aumentar Rowspan";
- o["AddColumn"] = "Adicionar Coluna";
- o["AddRow"] = "Adicionar Linha";
- o["RemoveColumn"] = "Remover Coluna";
- o["RemoveRow"] = "Remover Linha";
-
- // Label Text
- o["Style"] = "Estilo";
- o["Font"] = "Fonte";
- o["Size"] = "Tamanho";
- o["Source"] = "Código fonte";
-
- // Titles
- o["SourceTitle"] = "Clique aqui para alternar entre modo de edição e modo código fonte.";
-
- // Image Sources
- o["icon_post"] = "images/lang/br.icon_post.gif";
- o["hdr_tables"] = "images/lang/br.hdr_tables.gif";
- o["icon_bold"] = "images/lang/br.icon_bold.gif";
- o["icon_italic"] = "images/icon_italic.gif";
- o["icon_underline"] = "images/lang/br.icon_underline.gif";
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// Danish - translated by Morten Flyger (flyger@email.dk)
-//
-////////////////////////////////////////////////////////////////////////////////
-
-var o = locale["da"] = new Object;
-
- // Icon Titles (alt="")
- o["PostTopic"] = "Gem";
- o["Cut"] = "Klip";
- o["Copy"] = "Kopiere";
- o["Paste"] = "Indsæt";
- o["SpellCheck"] = "Stavekontrol";
- o["SelectAll"] = "Markere alt";
- o["RemoveFormatting"] = "Fjern formatering";
- o["InsertLink"] = "Indsæt link";
- o["RemoveLink"] = "Fjern link";
- o["InsertImage"] = "Indsæt billede";
- o["InsertTable"] = "Indsæt tabel";
- o["EditTable"] = "Ændre tabel";
- o["InsertLine"] = "Indsæt horisontal linje";
- o["InsertSmily"] = "Indsæt smily 8-)";
- o["InsertCharacter"] = "Indsæt specialtegn";
- o["About"] = "Om Richtext Editor";
- o["Bold"] = "Fed";
- o["Italic"] = "Kursiv";
- o["Underline"] = "Understregning";
- o["Strikethrough"] = "Gennemstregning";
- o["AlignLeft"] = "Venstrejustering";
- o["Center"] = "Centrering";
- o["AlignRight"] = "Højrejustering";
- o["AlignBlock"] = "Blokjustering";
- o["NumberedList"] = "Nummereret liste";
- o["BulettedList"] = "Punktopstilling";
- o["DecreaseIndent"] = "Mindske indrykningsværdi";
- o["IncreaseIndent"] = "Øge indrykningsværdi";
- o["HistoryBack"] = "Historie tilbage";
- o["HistoryForward"] = "Historie frem";
- o["TextColor"] = "Tekstfarve";
- o["BackgroundColor"] = "Baggrundsfarve";
-
- // Label Text
- o["Style"] = "Stil";
- o["Font"] = "Type";
- o["Size"] = "Størrelse";
- o["Source"] = "Kilde";
-
- // Titles
- o["SourceTitle"] = "Klik her for at skifte imellem WYSIWYG og kilde fremtrædelsesform.";
-
- // Image Sources
- o["icon_post"] = "images/lang/no.icon_post.gif";
- o["icon_bold"] = "images/lang/da_icon_bold.gif";
- o["icon_italic"] = "images/lang/da_icon_italic.gif";
- o["icon_underline"] = "images/lang/da_icon_underline.gif";
-
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// Español (es-mx)
-//
-////////////////////////////////////////////////////////////////////////////////
-
-var o = locale["es-mx"] = new Object;
-
-
- // Icon Titles (alt="")
- o["PostTopic"] = "Colcar";
- o["Cut"] = "Cortar";
- o["Copy"] = "Copiar";
- o["Paste"] = "Pegar";
- o["SpellCheck"] = "Checar orografía";
- o["SelectAll"] = "Seleccionar todo";
- o["RemoveFormatting"] = "Quitar formato";
- o["InsertLink"] = "Insertar liga";
- o["RemoveLink"] = "Quitar liga";
- o["InsertImage"] = "Insertar imagen";
- o["InsertTable"] = "Insertar tabla";
- o["EditTable"] = "Editar tabla";
- o["InsertLine"] = "Insertar línea horizontal";
- o["InsertSmily"] = "Insertar carita 8-)";
- o["InsertCharacter"] = "Insertar caracter especial";
- o["About"] = "Sobre el editor";
- o["Bold"] = "Negrita";
- o["Italic"] = "Cursiva";
- o["Underline"] = "Subrayado";
- o["Strikethrough"] = "Tachado";
- o["AlignLeft"] = "Alinear a la izquierda";
- o["Center"] = "Centrar";
- o["AlignRight"] = "Alinear a la derecha";
- o["AlignBlock"] = "Alinear justificado";
- o["NumberedList"] = "Lista numerada";
- o["BulettedList"] = "Lista no numerada";
- o["DecreaseIndent"] = "Sangría decreciente";
- o["IncreaseIndent"] = "Sangría creciente";
- o["HistoryBack"] = "Deshacer";
- o["HistoryForward"] = "Rehacer";
- o["TextColor"] = "Color de texto";
- o["BackgroundColor"] = "Color de fondo";
-
- o["RemoveColspan"] = "Separar columnas";
- o["RemoveRowspan"] = "Separar filas";
- o["IncreaseColspan"] = "Juntar columnas";
- o["IncreaseRowspan"] = "Juntar filas";
- o["AddColumn"] = "Agregar columnas";
- o["AddRow"] = "Agregar fila";
- o["RemoveColumn"] = "Quitar columna";
- o["RemoveRow"] = "Quitar fila";
-
- // Label Text
- o["Style"] = "Est.";
- o["Font"] = "Fte.";
- o["Size"] = "Tam.";
- o["Source"] = "Cód.";
-
- // Titles
- o["SourceTitle"] = "Cambiar entre editor visual y de código fuente.";
-
- // Image Sources
- o["icon_post"] = "images/icon_post.gif";
- o["hdr_tables"] = "images/hdr_tables.gif";
-
-
-////////////////////////////////////////////////////////////////////////////////
-//
-// Español Alfabetización Internacional (es-es) Traducción de Emmanuelle //Gutiérrez (emmanuelle@sidar.org)
-//
-////////////////////////////////////////////////////////////////////////////////
-
-var o = locale["es"] = locale["es-es"] = new Object;
-
- // Icon Titles (alt="")
- o["PostTopic"] = "Responder";
- o["Cut"] = "Cortar";
- o["Copy"] = "Copiar";
- o["Paste"] = "Pegar";
- o["SpellCheck"] = "Revisión ortográfica";
- o["SelectAll"] = "Seleccionar todo";
- o["RemoveFormatting"] = "Eliminar formato";
- o["InsertLink"] = "Insertar enlace";
- o["RemoveLink"] = "Eliminar enlace";
- o["InsertImage"] = "Insertar Imagen";
- o["InsertTable"] = "Insertar Tabla";
- o["EditTable"] = "Editar Tabla";
- o["InsertLine"] = "Insertar línea horizontal";
- o["InsertSmily"] = "Insertar Emoticon 8-)";
- o["InsertCharacter"] = "Insertar carácter especial";
- o["About"] = "Acerca del Editor de texto enriquecido";
- o["Bold"] = "Negrita";
- o["Italic"] = "Itálica";
- o["Underline"] = "Subrayado";
- o["Strikethrough"] = "Tachado";
- o["AlignLeft"] = "Alinear a la izquierda";
- o["Center"] = "Centrado";
- o["AlignRight"] = "Alinear a la derecha";
- o["AlignBlock"] = "Alinear bloque";
- o["NumberedList"] = "Lista numerada";
- o["BulettedList"] = "Lista con viñetas";
- o["DecreaseIndent"] = "Disminuir sangrado";
- o["IncreaseIndent"] = "Incrementar sangrado";
- o["HistoryBack"] = "Deshacer";
- o["HistoryForward"] = "Rehacer";
- o["TextColor"] = "Color del Texto";
- o["BackgroundColor"] = "Color del Fondo";
-
- o["RemoveColspan"] = "Separar Columnas";
- o["RemoveRowspan"] = "Separar Filas";
- o["IncreaseColspan"] = "Juntar Columnas";
- o["IncreaseRowspan"] = "Juntar Filas";
- o["AddColumn"] = "Añadir Columna";
- o["AddRow"] = "Añadir Fila";
- o["RemoveColumn"] = "Eliminar Columna";
- o["RemoveRow"] = "Eliminar Fila";
-
- // Label Text
- o["Style"] = "Estilo";
- o["Font"] = "Fuente";
- o["Size"] = "Tamaño";
- o["Source"] = "Código";
-
- // Titles
- o["SourceTitle"] = "Cambiar entre vista edición y código.";
-
- // Image Sources
- o["icon_post"] = "images/icon_post.gif";
- o["hdr_tables"] = "images/hdr_tables.gif";
-
-////////////////////////////////////////////////////////////////////////////
-
+++ /dev/null
-////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// HTML Text Editing Component for hosting in Web Pages\r
-// Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-//\r
-// This library is free software; you can redistribute it and/or\r
-// modify it under the terms of the GNU Lesser General Public\r
-// License as published by the Free Software Foundation; either\r
-// version 2.1 of the License, or (at your option) any later version.\r
-//\r
-// This library is distributed in the hope that it will be useful,\r
-// but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-// Lesser General Public License for more details.\r
-//\r
-// You should have received a copy of the GNU LesserGeneral Public License\r
-// along with this program; if not a copy can be obtained from\r
-//\r
-// http://www.gnu.org/copyleft/lesser.html\r
-//\r
-// or by writing to:\r
-//\r
-// Free Software Foundation, Inc.\r
-// 59 Temple Place - Suite 330,\r
-// Boston,\r
-// MA 02111-1307,\r
-// USA.\r
-//\r
-// Original Developer:\r
-//\r
-// Austin David France\r
-// Ramesys (Contracting Services) Limited\r
-// Mentor House\r
-// Ainsworth Street\r
-// Blackburn\r
-// Lancashire\r
-// BB1 6AY\r
-// United Kingdom\r
-// email: Austin.France@Ramesys.com\r
-//\r
-// Home Page: http://richtext.sourceforge.net/\r
-// Support: http://richtext.sourceforge.net/\r
-//\r
-////////////////////////////////////////////////////////////////////////////////\r
-//\r
-// Author(s): austin.france@ramesys.com OZ\r
-//\r
-////////////////////////////////////////////////////////////////////////////////\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-// Description:\r
-// Escape XHTML text\r
-//\r
-\r
-function escapeXHTML(str)\r
-{\r
- return str.replace(/[&]/g, "&")\r
- .replace(/[<]/g, "<")\r
- .replace(/[>]/g, ">")\r
- ;\r
-}\r
-\r
-function escapeXHTMLAttribute(str)\r
-{\r
- return str.replace(/[\"]/g, """);\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-// Description:\r
-// Return the XHTML attribute list (space separated) for the given element\r
-//\r
-// Notes:\r
-// The ignore list is a JavaScript Regular expression that matches those\r
-// attribute that should not be output.\r
-//\r
-\r
-function innerXHTMLAttributes(el, ignore)\r
-{\r
- // Start with an empty attribute list\r
- var str = '';\r
-\r
- // Output attributes for the element\r
- for (var i = 0; i < el.attributes.length; i++)\r
- {\r
- // Get this attribute\r
- var attr = el.attributes[i];\r
-\r
- // Only output if it has a value of type string\r
- if (attr.nodeValue && typeof(attr.nodeValue) == "string")\r
- {\r
- // and it's not one we want to ignore\r
- if (!ignore || attr.nodeName.toLowerCase().search(ignore) == -1)\r
- {\r
- // Output the attribute (space separated if necessary)\r
- if (str.length) str += ' ';\r
- str += attr.nodeName.toLowerCase();\r
- str += '="' + escapeXHTMLAttribute(attr.nodeValue) + '"';\r
- }\r
- }\r
- }\r
-\r
- // Return the resulting attribute string\r
- return str;\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-// Description:\r
-// Get the inner XHTML from the supplied element.\r
-//\r
-// Return Value:\r
-// XHTML string\r
-//\r
-// Notes:\r
-// The ignore list is a JavaScript Regular expression that matches those\r
-// attribute that should not be output.\r
-//\r
-\r
-function innerXHTML(el, ignore)\r
-{\r
- // Default innerXTHML is empty\r
- var str = '';\r
-\r
- // Create a text range for the element we are converting to source\r
- var r2; var r = document.body.createTextRange();\r
- r.moveToElementText(el);\r
-\r
- // Scan the child nodes of this element.\r
- for (var i = 0; i < el.children.length; i++)\r
- {\r
- // Create a text range for this child node\r
- r2 = document.body.createTextRange();\r
- r2.moveToElementText(el.children[i]);\r
-\r
- // Set the end of our range to the start of this child node.\r
- // so that r.text contains all the text up to this element.\r
- r.setEndPoint("EndToStart", r2);\r
- str += escapeXHTML(r.text);\r
-\r
- // Emit the child node\r
- str += outerXHTML(el.children[i], ignore);\r
-\r
- // Now, reset the text range for the main element and then move\r
- // the start point of our range to the end of the element just\r
- // output in preperation for the next chunk of text (or last chunk\r
- // if this was the last child node)\r
- r.moveToElementText(el);\r
- r.setEndPoint("StartToEnd", r2);\r
- }\r
-\r
- // Output the HTML (if any) plus the last chunk of text (again, if any).\r
- // Note: if no child nodes existed, the r.text contains the entire text\r
- // however, if child nodes did exist, then r.text contains just the \r
- return str + escapeXHTML(r.text);\r
-}\r
-\r
-///////////////////////////////////////////////////////////////////////////\r
-//\r
-// Description:\r
-// Get the outer XHTML from the supplied element.\r
-//\r
-// Return Value:\r
-// XHTML string\r
-//\r
-// Notes:\r
-// The ignore list is a JavaScript Regular expression that matches those\r
-// attribute that should not be output.\r
-//\r
-\r
-function outerXHTML(el, ignore)\r
-{\r
- // First, get the attribute values\r
- var attrs = innerXHTMLAttributes(el, ignore);\r
-\r
- // And any inner XHTML\r
- var inner = innerXHTML(el, ignore);\r
-\r
- // Then build the tag. Note: We use the XML abbreviation if the element is empty\r
- return '<' + el.nodeName.toLowerCase()\r
- + (attrs.length ? ' ' + attrs : '')\r
- + (inner.length ? '>' + inner + '</' + el.nodeName.toLowerCase() + '>'\r
- : ' />');\r
-}\r
+++ /dev/null
-/*******************************************************************************\r
-**\r
-** HTML Text Editing Component for hosting in Web Pages\r
-** Copyright (C) 2001 Ramesys (Contracting Services) Limited\r
-** \r
-** This library is free software; you can redistribute it and/or\r
-** modify it under the terms of the GNU Lesser General Public\r
-** License as published by the Free Software Foundation; either\r
-** version 2.1 of the License, or (at your option) any later version.\r
-**\r
-** This library is distributed in the hope that it will be useful,\r
-** but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
-** Lesser General Public License for more details.\r
-**\r
-** You should have received a copy of the GNU LesserGeneral Public License\r
-** along with this program; if not a copy can be obtained from \r
-**\r
-** http://www.gnu.org/copyleft/lesser.html\r
-**\r
-** or by writing to:\r
-**\r
-** Free Software Foundation, Inc.\r
-** 59 Temple Place - Suite 330,\r
-** Boston,\r
-** MA 02111-1307,\r
-** USA.\r
-** \r
-** Original Developer:\r
-**\r
-** Austin David France\r
-** Ramesys (Contracting Services) Limited\r
-** Mentor House\r
-** Ainsworth Street\r
-** Blackburn\r
-** Lancashire\r
-** BB1 6AY\r
-** United Kingdom\r
-** email: Austin.France@Ramesys.com\r
-**\r
-** Home Page: http://richtext.sourceforge.net/\r
-** Support: http://richtext.sourceforge.net/\r
-** \r
-*******************************************************************************/\r
-\r
-.ccp_paramvalue {\r
- color : #0000FF ;\r
- font-family : "Courier New";\r
- font-size : 13px;\r
-}\r
-.ccp_htmlcomment {\r
- color : #808080 ;\r
- font-family : "Courier New";\r
- font-size : 12px;\r
- font-style : italic;\r
-}\r
-.ccp_tag {\r
- color : #000080;\r
- font-family : "Courier New";\r
- font-size : 12px;\r
-}\r
-.ccp_img {\r
- color : #800080;\r
- font-family : "Courier New";\r
- font-size : 12px;\r
-}\r
-.ccp_A {\r
- color : #008000;\r
- font-family : "Courier New";\r
- font-size : 12px;\r
-}\r
-.ccp_form {\r
- color : #FF8000;\r
- font-family : "Courier New";\r
- font-size : 12px;\r
-}\r
-.ccp_table {\r
- color : #008080;\r
- font-family : "Courier New";\r
- font-size : 12px;\r
-}\r
-.ccp_entity {\r
- color : #000000;\r
- font-family : "Courier New";\r
- font-size : 12px;\r
- font-weight : bold;\r
-}\r
-.ccp_styletag {\r
- color : #800080;\r
- font-family : "Courier New";\r
- font-size : 12px;\r
-}\r
-.ccp_styleitem {\r
- color : #800080;\r
- font-family : "Courier New";\r
- font-size : 12px;\r
-}\r
+++ /dev/null
-///////////////////////////////////////////////////////////////\r
-// Table Editing Class\r
-// Author: Billy Cook (wcook@nuvox.net)\r
-// Date: 2002-05-07\r
-// Purpose: Provide methods to edit a table. Only\r
-// works in Internet Explorer version 5.5\r
-// and above for now.\r
-//\r
-\r
-function tableEditor(docID, pntCell) {\r
-\r
- this.docID = docID; // ID of editable portion of document\r
- this.pntCell = pntCell; // TD contentarea is contained in if any\r
- this.tableCell = null; // cell currently selected\r
- this.tableElem = null; // table currently selected\r
- this.cellResizeObj = null; // object that user clicks on to resize cell\r
- this.cellWidth = null; // selected cell's current width\r
- this.cellHeight = null; // selected cell's current height\r
- this.cellX = null; // x coord of selected cell's bottom right \r
- this.cellY = null; // y coord of selected cell's bottom right\r
- this.moveable = null; // moveable div\r
-\r
- // define methods only once\r
- if (typeof(_tableEditor_prototype_called) == 'undefined') {\r
- _tableEditor_prototype_called = true;\r
-\r
- // public methods\r
- tableEditor.prototype.mergeDown = mergeDown;\r
- tableEditor.prototype.unMergeDown = unMergeDown;\r
- tableEditor.prototype.mergeRight = mergeRight;\r
- tableEditor.prototype.splitCell = splitCell;\r
- tableEditor.prototype.addCell = addCell;\r
- tableEditor.prototype.removeCell = removeCell;\r
- tableEditor.prototype.processRow = processRow;\r
- tableEditor.prototype.processColumn = processColumn;\r
- tableEditor.prototype.buildTable = buildTable;\r
- tableEditor.prototype.setTableElements = setTableElements;\r
- tableEditor.prototype.unSetTableElements = unSetTableElements;\r
- tableEditor.prototype.setDrag = setDrag;\r
- tableEditor.prototype.stopCellResize = stopCellResize;\r
- tableEditor.prototype.markCellResize = markCellResize;\r
- tableEditor.prototype.resizeCell = resizeCell;\r
- tableEditor.prototype.changePos = changePos;\r
- tableEditor.prototype.resizeColumn = resizeColumn;\r
- tableEditor.prototype.resizeRow = resizeRow;\r
- tableEditor.prototype.repositionArrows = repositionArrows;\r
- tableEditor.prototype.explore = explore;\r
-\r
- // private methods\r
- tableEditor.prototype.__addOrRemoveCols = __addOrRemoveCols;\r
- tableEditor.prototype.__findParentTable = __findParentTable;\r
- tableEditor.prototype.__hideArrows = __hideArrows;\r
- tableEditor.prototype.__showArrows = __showArrows;\r
- tableEditor.prototype.__resizeColumn = __resizeColumn;\r
- }\r
-\r
- // create divs for editing cell width and height\r
- document.body.innerHTML += ' <div id="rArrow" title="Drag to modify cell width." style="position:absolute; visibility:hidden; cursor: E-resize; z-index: 1" onmousedown="tEdit.markCellResize(this)" onmouseup="tEdit.stopCellResize(false)" ondragstart="handleDrag(0)"> <table border="0" cellpadding="0" cellspacing="0" width="7" height="7"> <tr><td bgcolor="#000000"></td></tr> </table> </div> <div id="dArrow" title="Drag to modify cell height." style="position:absolute; visibility:hidden; cursor: S-resize; z-index: 1" onmousedown="tEdit.markCellResize(this)" onmouseup="tEdit.stopCellResize(false)" ondragstart="handleDrag(0)"> <table border="0" cellpadding="0" cellspacing="0" width="7" height="7"> <tr><td bgcolor="#000000"></td></tr> </table> </div>';\r
-\r
-\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: setTableElements\r
- // args: none\r
- // purpose: look to see if the cursor is inside a TD or TABLE and\r
- // if so assign the TD to this.tableCell or the TABLE to\r
- // this.tableElem\r
- //\r
- function setTableElements(){\r
-\r
- // stop resizing cell if already resizing one\r
- this.stopCellResize(true);\r
- this.tableCell = null;\r
- \r
- cursorPos=document.selection.createRange();\r
-\r
- if (document.selection.type == 'Text') {\r
- var elt = cursorPos.parentElement(); \r
- while (elt) {\r
- if (elt.tagName == "TD") {\r
- break;\r
- }\r
- elt = elt.parentElement;\r
- }\r
-\r
-\r
- if (elt) {\r
- // don't select document area\r
- if (elt.id == this.docID)\r
- return;\r
-\r
- // don't select parent TD\r
- if (this.pntCell)\r
- if (this.pntCell == elt.id)\r
- return;\r
-\r
- this.tableCell = elt;\r
-\r
- // set width and height as globals for \r
- // resizing\r
- this.cellWidth = this.tableCell.offsetWidth;\r
- this.cellHeight = this.tableCell.offsetHeight;\r
- this.__showArrows();\r
- }\r
- } else {\r
- if (cursorPos.length == 1) {\r
- if (cursorPos.item(0).tagName == "TABLE") {\r
- this.tableElem = cursorPos.item(0);\r
- this.__hideArrows();\r
- this.tableCell = null;\r
- }\r
- }\r
- }\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: unSetTableElements\r
- // args: none\r
- // purpose: unset references to currently selected cell or table \r
- // \r
- function unSetTableElements(){\r
-\r
- this.tableCell = null;\r
- this.tableElem = null;\r
- return;\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: mergeDown\r
- // args: none\r
- // purpose: merge the currently selected cell with the one below it\r
- //\r
- function mergeDown() {\r
- if (!this.tableCell)\r
- return;\r
- \r
- if (!this.tableCell.parentNode.nextSibling) {\r
- alert("There is not a cell below this one to merge with.");\r
- return;\r
- }\r
-\r
- var topRowIndex = this.tableCell.parentNode.rowIndex;\r
-\r
- // [ TD ] [ TR ] [ TBODY ] [ TR ] [ TD ]\r
- var bottomCell = this.tableCell.parentNode.parentNode.childNodes[ topRowIndex + this.tableCell.rowSpan ].childNodes[ this.tableCell.cellIndex ];\r
-\r
- if (!bottomCell) {\r
- alert("There is not a cell below this one to merge with.");\r
- return;\r
- }\r
-\r
- // don't allow merging rows with different colspans\r
- if (this.tableCell.colSpan != bottomCell.colSpan) {\r
- alert("Can't merge cells with different colSpans."); \r
- return;\r
- }\r
-\r
- // do the merge\r
- this.tableCell.innerHTML += bottomCell.innerHTML;\r
- this.tableCell.rowSpan += bottomCell.rowSpan;\r
- bottomCell.removeNode(true); \r
- this.repositionArrows();\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: unMergeDown\r
- // args: none\r
- // purpose: merge the currently selected cell with the one below it\r
- //\r
- function unMergeDown() {\r
- if (!this.tableCell)\r
- return;\r
- \r
- if (this.tableCell.rowSpan <= 1) {\r
- alert("RowSpan is already set to 1.");\r
- return;\r
- }\r
-\r
- var topRowIndex = this.tableCell.parentNode.rowIndex;\r
-\r
- // add a cell to the beginning of the next row\r
- this.tableCell.parentNode.parentNode.childNodes[ topRowIndex + this.tableCell.rowSpan - 1 ].appendChild( document.createElement("TD") );\r
-\r
- this.tableCell.rowSpan -= 1;\r
-\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: mergeRight\r
- // args: none\r
- // purpose: merge the currently selected cell with the one to \r
- // the immediate right. Won't allow user to merge cells\r
- // with different rowspans.\r
- //\r
- function mergeRight() {\r
- if (!this.tableCell)\r
- return;\r
- if (!this.tableCell.nextSibling)\r
- return;\r
-\r
- // don't allow user to merge rows with different rowspans\r
- if (this.tableCell.rowSpan != this.tableCell.nextSibling.rowSpan) {\r
- alert("Can't merge cells with different rowSpans.");\r
- return;\r
- }\r
-\r
- this.tableCell.innerHTML += this.tableCell.nextSibling.innerHTML;\r
- this.tableCell.colSpan += this.tableCell.nextSibling.colSpan;\r
- this.tableCell.nextSibling.removeNode(true);\r
- \r
-\r
- this.repositionArrows();\r
- this.__hideArrows();\r
- this.tableCell = null;\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: splitCell \r
- // args: none\r
- // purpose: split the currently selected cell back into two cells \r
- // it the cell has a colspan > 1.\r
- //\r
- function splitCell() {\r
- if (!this.tableCell)\r
- return;\r
- if (this.tableCell.colSpan < 2) {\r
- alert("Cell can't be divided. Add another cell instead");\r
- return;\r
- }\r
-\r
- this.tableCell.colSpan = this.tableCell.colSpan - 1;\r
- var newCell = this.tableCell.parentNode.insertBefore( document.createElement("TD"), this.tableCell);\r
- newCell.rowSpan = this.tableCell.rowSpan;\r
- this.repositionArrows();\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: removeCell \r
- // args: none\r
- // purpose: remove the currently selected cell\r
- //\r
- function removeCell() {\r
- if (!this.tableCell)\r
- return;\r
-\r
- // can't remove all cells for a row\r
- if (!this.tableCell.previousSibling && !this.tableCell.nextSibling) {\r
- alert("You can't remove the only remaining cell in a row.");\r
- return;\r
- }\r
-\r
- this.tableCell.removeNode(false);\r
-\r
- this.repositionArrows();\r
- this.tableCell = null;\r
- } \r
- \r
- ////////////////////////////////////////////////////////////////\r
- // method: addCell \r
- // args: none\r
- // purpose: add a cell to the right of the selected cell\r
- //\r
- function addCell() {\r
- if (!this.tableCell)\r
- return;\r
-\r
- this.tableCell.parentElement.insertBefore(document.createElement("TD"), this.tableCell.nextSibling);\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: processRow \r
- // args: (string)action = "add" or "remove"\r
- // purpose: add a row above the row that \r
- // contains the currently selected cell or\r
- // remove the row containing the selected cell\r
- //\r
- function processRow(action) {\r
- if (!this.tableCell)\r
- return;\r
-\r
- // go back to TABLE def and keep track of cell index\r
- var idx = 0;\r
- var rowidx = -1;\r
- var tr = this.tableCell.parentNode;\r
- var numcells = tr.childNodes.length;\r
- \r
-\r
- while (tr) {\r
- if (tr.tagName == "TR")\r
- rowidx++;\r
- tr = tr.previousSibling;\r
- }\r
- // now we should have a row index indicating where the\r
- // row should be added / removed\r
-\r
- var tbl = this.__findParentTable(this.tableCell);\r
- \r
- if (!tbl) {\r
- alert("Could not " + action + " row.");\r
- return;\r
- }\r
- \r
- if (action == "add") {\r
- var r = tbl.insertRow(rowidx);\r
- for (var i = 0; i < numcells; i++) {\r
- var c = r.appendChild( document.createElement("TD") );\r
- if (this.tableCell.parentNode.childNodes[i].colSpan)\r
- c.colSpan = this.tableCell.parentNode.childNodes[i].colSpan;\r
- }\r
- } else {\r
- tbl.deleteRow(rowidx);\r
- this.stopCellResize(true);\r
- this.tableCell = null;\r
- }\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: processColumn\r
- // args: (string)action = "add" or "remove"\r
- // purpose: add a column to the right column containing\r
- // the selected cell\r
- //\r
- function processColumn(action) {\r
- if (!this.tableCell)\r
- return;\r
-\r
- // store cell index in a var because the cell will be\r
- // deleted when processing the first row\r
- var cellidx = this.tableCell.cellIndex;\r
- \r
- var tbl = this.__findParentTable(this.tableCell);\r
- \r
- if (!tbl) {\r
- alert("Could not " + action + " column.");\r
- return;\r
- }\r
- \r
- // now we have the table containing the cell\r
- this.__addOrRemoveCols(tbl, cellidx, action);\r
-\r
- // clear out global this.tableCell value for remove\r
- if (action == 'remove') {\r
- this.stopCellResize(true);\r
- this.tableCell = null;\r
- } else {\r
- this.repositionArrows();\r
- }\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: __addOrRemoveCols\r
- // args: (table object)tbl, (int)cellidx, (string)action\r
- // tbl = the table containing the selected cell\r
- // cellidx = the index of the selected cell in its row\r
- // action = "add" or "remove" the column\r
- //\r
- // purpose: add or remove the column at the cell index\r
- //\r
- function __addOrRemoveCols(tbl, cellidx, action) {\r
- if (!tbl.childNodes.length)\r
- return;\r
- var i;\r
- for (i = 0; i < tbl.childNodes.length; i++) {\r
- if (tbl.childNodes[i].tagName == "TR") {\r
- var cell = tbl.childNodes[i].childNodes[ cellidx ];\r
- if (!cell)\r
- break; // can't add cell after cell that doesn't exist\r
- if (action == "add") {\r
- cell.insertAdjacentElement("AfterEnd", document.createElement("TD") );\r
- } else {\r
- // don't delete too many cells because or a rowspan setting\r
- \r
- if (cell.rowSpan > 1) {\r
- i += (cell.rowSpan - 1);\r
- }\r
- cell.removeNode(true);\r
- }\r
- } else {\r
- // keep looking for a "TR"\r
- this.__addOrRemoveCols(tbl.childNodes[i], cellidx, action); \r
- }\r
- }\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: __findParentTable \r
- // args: (TD object)cell\r
- // cell = the selected cell object\r
- //\r
- // purpose: locate the table object that contains the\r
- // cell object passed in\r
- //\r
- function __findParentTable(cell) {\r
- var tbl = cell.parentElement\r
- while (tbl) {\r
- if (tbl.tagName == "TABLE") {\r
- return tbl;\r
- }\r
- tbl = tbl.parentElement;\r
- }\r
- return false;\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: exploreTree \r
- // args: (obj)obj, (obj)pnt\r
- // obj = object to explore\r
- // pnt = object to append output to\r
- //\r
- // purpose: traverse the dom tree printing out all properties\r
- // of the object, its children.....recursive. helpful\r
- // when looking for object properties.\r
- //\r
- function exploreTree(obj, pnt) {\r
- if (!obj.childNodes.length)\r
- return;\r
- var i;\r
- var ul = pnt.appendChild( document.createElement("UL") );\r
- for (i = 0; i < obj.childNodes.length; i++) {\r
- var li = document.createElement("LI");\r
- explore(obj.childNodes[i], li);\r
- ul.appendChild(li);\r
- exploreTree(obj.childNodes[i], li); \r
- /*\r
- var n = document.createTextNode(obj.childNodes[i].tagName);\r
- li.appendChild(n);\r
- */\r
- }\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: explore\r
- // args: (obj)obj, (obj)pnt\r
- // obj = object to explore\r
- // pnt = object to append output to\r
- //\r
- // purpose: show all properties for the object "obj"\r
- //\r
- function explore(obj, pnt) {\r
- var i;\r
- for (i in obj) {\r
- var n = document.createTextNode(i +"="+obj[i]);\r
- pnt.appendChild(n);\r
- pnt.appendChild( document.createElement("BR") );\r
- }\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: buildTable \r
- // args: pnt = parent to append table to\r
- //\r
- // purpose: build a test table for debugging\r
- //\r
- function buildTable(pnt) {\r
- var t = pnt.appendChild( document.createElement("TABLE") );\r
- t.border=1;\r
- t.cellPadding=2;\r
- t.cellSpacing=0;\r
- var tb = t.appendChild( document.createElement("TBODY") );\r
- for(var r = 0; r < 10; r++) {\r
- var tr = tb.appendChild( document.createElement("TR") );\r
- for(var c = 0; c < 10; c++) {\r
- var cell = tr.appendChild( document.createElement("TD") );\r
- cell.appendChild( document.createTextNode(r+"-"+c) );\r
- }\r
- }\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: setDrag\r
- // args: obj = object (DIV) that is currently draggable\r
- //\r
- // purpose: set the object to be moved with the mouse\r
- //\r
- function setDrag(obj) {\r
- if (this.moveable) \r
- this.moveable = null;\r
- else \r
- this.moveable = obj; \r
- }\r
-\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: changePos\r
- // args: none\r
- // mouse pointer appear inside the object set by "setDrag"\r
- // function above.\r
- //\r
- // purpose: move the object selected in the "setDrag" function defined\r
- // above.\r
- //\r
- function changePos() {\r
- if (!this.moveable) \r
- return;\r
-\r
- this.moveable.style.posTop = event.clientY - 10;\r
- this.moveable.style.posLeft = event.clientX - 25;\r
- }\r
-\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: markCellResize\r
- // args: (object)obj = the square table div object that\r
- // was clicked on by the user to resize a cell\r
- //\r
- // purpose: store the object in "this.cellResizeObj" to be referenced\r
- // in the "resizeCell" function.\r
- // \r
- //\r
- function markCellResize(obj) {\r
- if (this.cellResizeObj) {\r
- this.cellResizeObj = null;\r
- } else {\r
- this.cellResizeObj = obj;\r
- }\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: stopCellResize\r
- // args: (bool)hideArrows\r
- //\r
- // purpose: stop changing cell width and height\r
- //\r
- function stopCellResize(hidearrows) {\r
- this.cellResizeObj = null;\r
- if (hidearrows)\r
- this.__hideArrows();\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: __hideArrows()\r
- // args: none\r
- //\r
- // purpose: hide editing tabs that are positioned in the selected\r
- // cell\r
- //\r
- function __hideArrows() {\r
- document.getElementById("rArrow").style.visibility = 'hidden';\r
- document.getElementById("dArrow").style.visibility = 'hidden';\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: __showArrows()\r
- // args: none\r
- //\r
- // purpose: position editing tabs in the middle or the right cell\r
- // wall and middle of the bottom wall to be used to drag\r
- // the cell's width and height dimensions\r
- //\r
- function __showArrows() {\r
- if (!this.tableCell)\r
- return;\r
-\r
- var cell_hgt = this.tableCell.offsetTop;\r
- var cell_wdt = this.tableCell.offsetLeft;\r
- var par = this.tableCell.offsetParent;\r
- while (par) {\r
- cell_hgt = cell_hgt + par.offsetTop;\r
- cell_wdt = cell_wdt + par.offsetLeft;\r
- current_obj = par;\r
- par = current_obj.offsetParent;\r
- }\r
- this.cellX = cell_wdt + this.tableCell.offsetWidth; //bottom right X\r
- this.cellY = cell_hgt + this.tableCell.offsetHeight; // bottom right Y\r
-\r
- var scrollTop = document.getElementById(this.docID).scrollTop;\r
- var scrollLeft = document.getElementById(this.docID).scrollLeft;\r
-\r
- document.getElementById("rArrow").style.posLeft = cell_wdt + this.tableCell.offsetWidth - 6 - scrollLeft;\r
- document.getElementById("rArrow").style.posTop = cell_hgt + (this.tableCell.offsetHeight / 2) - 2 - scrollTop;\r
-\r
- document.getElementById("dArrow").style.posLeft = cell_wdt + (this.tableCell.offsetWidth / 2) - 2 - scrollLeft;\r
- document.getElementById("dArrow").style.posTop = cell_hgt + this.tableCell.offsetHeight - 6 - scrollTop;\r
-\r
- document.getElementById("rArrow").style.visibility = 'visible';\r
- document.getElementById("dArrow").style.visibility = 'visible';\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: repositionArrows()\r
- // args: none\r
- //\r
- // purpose: reposition editing tabs in the middle or the right cell\r
- // wall and middle of the bottom wall to be used to drag\r
- // the cell's width and height dimensions. this must be\r
- // run while changing the cell's dimensions.\r
- //\r
- function repositionArrows() {\r
-\r
- if (!this.tableCell)\r
- return;\r
-\r
- var cell_hgt = this.tableCell.offsetTop;\r
- var cell_wdt = this.tableCell.offsetLeft;\r
- var par = this.tableCell.offsetParent;\r
- while (par) {\r
- cell_hgt = cell_hgt + par.offsetTop;\r
- cell_wdt = cell_wdt + par.offsetLeft;\r
- current_obj = par;\r
- par = current_obj.offsetParent;\r
- }\r
-\r
- var scrollTop = document.getElementById(this.docID).scrollTop;\r
- var scrollLeft = document.getElementById(this.docID).scrollLeft;\r
-\r
- document.getElementById("rArrow").style.posLeft = cell_wdt + this.tableCell.offsetWidth - 6 - scrollLeft;\r
- document.getElementById("rArrow").style.posTop = cell_hgt + (this.tableCell.offsetHeight / 2) - 2 - scrollTop;\r
-\r
- document.getElementById("dArrow").style.posLeft = cell_wdt + (this.tableCell.offsetWidth / 2) - 2 - scrollLeft; \r
- document.getElementById("dArrow").style.posTop = cell_hgt + this.tableCell.offsetHeight - 6 - scrollTop;\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: resizeCell()\r
- // args: none\r
- //\r
- // purpose: resize the selected cell based on the direction of the mouse\r
- //\r
- function resizeCell() {\r
- if (!this.cellResizeObj)\r
- return;\r
-\r
- if (this.cellResizeObj.id == 'dArrow') {\r
- var scrollTop = document.getElementById(this.docID).scrollTop;\r
- var newHeight = (event.clientY - (this.cellY - scrollTop) ) + this.cellHeight;\r
-\r
- if (newHeight > 0)\r
- // don't resize entire row if rowspan > 1\r
- if (this.tableCell.rowSpan > 1) \r
- this.tableCell.style.height = newHeight;\r
- else \r
- this.resizeRow(newHeight);\r
-\r
- this.repositionArrows();\r
-\r
- } else if (this.cellResizeObj.id == 'rArrow') {\r
- var scrollLeft = document.getElementById(this.docID).scrollLeft;\r
- var newWidth = (event.clientX - (this.cellX - scrollLeft) ) + this.cellWidth;\r
-\r
- if (newWidth > 0) \r
- // don't resize entire column if colspan > 1\r
- if (this.tableCell.colSpan > 1)\r
- this.tableCell.style.width = newWidth;\r
- else\r
- this.resizeColumn(newWidth);\r
-\r
- this.repositionArrows();\r
-\r
- } else {\r
- // do nothing\r
- }\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: resizeRow \r
- // args: (int)size\r
- // purpose: set cell.style.height on all cells in a row that\r
- // have rowspan = 1 \r
- //\r
- function resizeRow(size) {\r
- if (!this.tableCell)\r
- return;\r
-\r
- // go back to TABLE def and keep track of cell index\r
- var idx = 0;\r
- var rowidx = -1;\r
- var tr = this.tableCell.parentNode;\r
- var numcells = tr.childNodes.length;\r
-\r
- while (tr) {\r
- if (tr.tagName == "TR")\r
- rowidx++;\r
- tr = tr.previousSibling;\r
- }\r
- // now we should have a row index indicating where the\r
- // row should be added / removed\r
-\r
- var tbl = this.__findParentTable(this.tableCell);\r
- \r
- if (!tbl) {\r
- return;\r
- }\r
- \r
- // resize cells in the row\r
- for (var j = 0; j < tbl.rows(rowidx).cells.length; j++) {\r
- if (tbl.rows(rowidx).cells(j).rowSpan == 1)\r
- tbl.rows(rowidx).cells(j).style.height = size;\r
- }\r
- }\r
-\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: resizeColumn \r
- // args: (int)size = size in pixels\r
- // purpose: set column width\r
- //\r
- function resizeColumn(size) {\r
- if (!this.tableCell)\r
- return;\r
-\r
- // store cell index in a var because the cell will be\r
- // deleted when processing the first row\r
- var cellidx = this.tableCell.cellIndex;\r
- \r
- var tbl = this.__findParentTable(this.tableCell);\r
- \r
- if (!tbl) {\r
- alert("Could not resize column.");\r
- return;\r
- }\r
- \r
- // now we have the table containing the cell\r
- this.__resizeColumn(tbl, cellidx, size);\r
- }\r
-\r
- ////////////////////////////////////////////////////////////////\r
- // method: __resizeColumn\r
- // args: (table object)tbl, (int)cellidx, (int)size\r
- // tbl = the table containing the selected cell\r
- // cellidx = the index of the selected cell in its row\r
- // size = size in pixels\r
- //\r
- // purpose: resize all cells in the a column\r
- //\r
- function __resizeColumn(tbl, cellidx, size) {\r
- if (!tbl.childNodes.length)\r
- return;\r
- var i;\r
- for (i = 0; i < tbl.childNodes.length; i++) {\r
- if (tbl.childNodes[i].tagName == "TR") {\r
- var cell = tbl.childNodes[i].childNodes[ cellidx ];\r
- if (!cell)\r
- break; // can't add cell after cell that doesn't exist\r
-\r
- if (cell.colSpan == 1)\r
- cell.style.width = size;\r
- } else {\r
- // keep looking for a "TR"\r
- this.__resizeColumn(tbl.childNodes[i], cellidx, size); \r
- }\r
- }\r
- }\r
-} \r
}
}
+ // Add a stylesheet for the HTML editor
+ $meta = "<style type=\"text/css\">@import url($CFG->wwwroot/lib/editor/htmlarea.css);</style>\n$meta\n";
+
// Specify character set ... default is iso-8859-1 but some languages might need something else
// Could be optimised by carrying the charset variable around in $USER
if (current_language() == "en") {
return $output;
}
-function print_textarea($richedit, $rows, $cols, $width, $height, $name, $value="", $courseid=0) {
-/// Prints a richtext field or a normal textarea
+function print_textarea($usehtmleditor, $rows, $cols, $width, $height, $name, $value="", $courseid=0) {
+/// Prints a basic textarea field
+/// $width and height are legacy fields and no longer used
- global $CFG, $THEME, $course;
+ global $CFG, $course;
if (empty($courseid)) {
if (!empty($course->id)) { // search for it in global context
}
}
- if ($richedit) {
- if (!empty($CFG->useneweditor)) { /// Use the new HTMLarea editor
+ if ($usehtmleditor) {
+ if (!empty($courseid) and isteacher($courseid)) {
+ echo "<script type=\"text/javascript\" src=\"$CFG->wwwroot/lib/editor/htmlarea.php?id=$courseid\"></script>\n";
+ } else {
+ echo "<script type=\"text/javascript\" src=\"$CFG->wwwroot/lib/editor/htmlarea.php\"></script>\n";
+ }
+ echo "<script type=\"text/javascript\" src=\"$CFG->wwwroot/lib/editor/dialog.js\"></script>\n";
+ echo "<script type=\"text/javascript\" src=\"$CFG->wwwroot/lib/editor/lang/en.php\"></script>\n";
+ echo "<script type=\"text/javascript\" src=\"$CFG->wwwroot/lib/editor/popupwin.js\"></script>\n";
- if (!empty($courseid) and isteacher($courseid)) {
- echo "<script type=\"text/javascript\" src=\"$CFG->wwwroot/lib/editor/htmlarea.php?id=$courseid\"></script>\n";
- } else {
- echo "<script type=\"text/javascript\" src=\"$CFG->wwwroot/lib/editor/htmlarea.php\"></script>\n";
- }
- echo "<script type=\"text/javascript\" src=\"$CFG->wwwroot/lib/editor/dialog.js\"></script>\n";
- echo "<script type=\"text/javascript\" src=\"$CFG->wwwroot/lib/editor/lang/en.php\"></script>\n";
- echo "<script type=\"text/javascript\" src=\"$CFG->wwwroot/lib/editor/popupwin.js\"></script>\n";
- echo "<style type=\"text/css\">@import url($CFG->wwwroot/lib/editor/htmlarea.css);</style>\n";
- if ($rows < 20) {
- $rows = 20; /// Minimum rows
- }
- if ($cols < 65) {
- $cols = 65; /// Minimum columns
- }
- echo "<textarea id=\"TA\" name=\"$name\" rows=\"$rows\" cols=\"$cols\" wrap=\"virtual\">";
- p($value);
- echo "</textarea>\n";
-
- } else { /// Use the old Richtext editor
- $richediturl = "$CFG->wwwroot/lib/rte/richedit.html";
- if (!empty($courseid) and isteacher($courseid)) {
- $richediturl = "$CFG->wwwroot/lib/rte/richedit.php?id=$courseid";
- }
-
- echo "<object id=\"richedit\" style=\"background-color: buttonface\"";
- echo " data=\"$richediturl\"";
- echo " width=\"$width\" height=\"$height\" ";
- echo " type=\"text/x-scriptlet\" VIEWASTEXT=\"true\"></object>\n";
- echo "<textarea style=\"display:none\" name=\"$name\" rows=\"1\" cols=\"1\">";
- p($value);
- echo "</textarea>\n";
+ if ($rows < 20) {
+ $rows = 20;
+ }
+ if ($cols < 65) {
+ $cols = 65;
}
- } else {
- echo "<textarea name=\"$name\" rows=\"$rows\" cols=\"$cols\" wrap=\"virtual\">";
- p($value);
- echo "</textarea>\n";
}
+
+ echo "<textarea id=\"$name\" name=\"$name\" rows=\"$rows\" cols=\"$cols\" wrap=\"virtual\">";
+ p($value);
+ echo "</textarea>\n";
}
function print_richedit_javascript($form, $name, $source="no") {
- global $CFG;
+/// Legacy function, provided for backward compatability
+ use_html_editor($name);
+}
+
+function use_html_editor($name="") {
+/// Sets up the HTML editor on textareas in the current page.
+/// If a field name is provided, then it will only be
+/// applied to that field - otherwise it will be used
+/// on every textarea in the page.
+///
+/// In most cases no arguments need to be supplied
- if (!empty($CFG->useneweditor)) { /// Use the new HTMLarea editor
- echo "<script language=\"javascript\" type=\"text/javascript\" defer=\"1\">\n";
- echo "var editor = null;\n";
- echo "function initEditor() {\n";
- echo " editor = new HTMLArea(\"TA\");\n";
- echo " editor.generate();\n";
- echo " return false;\n";
- echo "}\n";
- echo "initEditor();\n";
- echo "</script>\n";
-
- } else { /// Use the old Richtext editor
- echo "<script language=\"javascript\" event=\"onload\" for=\"window\">\n";
- echo " document.richedit.options = \"history=no;source=$source\";";
- echo " document.richedit.docHtml = $form.$name.innerText;";
- echo "</script>";
+ echo "<script language=\"javascript\" type=\"text/javascript\" defer=\"1\">\n";
+ if (empty($name)) {
+ echo "HTMLArea.replaceAll();";
+ } else {
+ echo "HTMLArea.replace('$name')";
}
+ echo "</script>";
}