From 89590ba4b08c5fb4c93c64b968f97fc8851484b2 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Sat, 23 Aug 2003 14:08:43 +0000 Subject: [PATCH] added support for editing tables to html area editor --- docs/changelog/5.x.x.txt | 1 + docs/credits.txt | 1 + www/extras/htmlArea/editor.js | 551 +++++++++++++++++- www/extras/htmlArea/images/ed_cellprop.gif | Bin 0 -> 155 bytes www/extras/htmlArea/images/ed_delcel.gif | Bin 0 -> 121 bytes www/extras/htmlArea/images/ed_delcol.gif | Bin 0 -> 120 bytes www/extras/htmlArea/images/ed_delrow.gif | Bin 0 -> 125 bytes www/extras/htmlArea/images/ed_insabove.gif | Bin 0 -> 125 bytes www/extras/htmlArea/images/ed_inscellft.gif | Bin 0 -> 124 bytes www/extras/htmlArea/images/ed_inscelrgt.gif | Bin 0 -> 125 bytes www/extras/htmlArea/images/ed_insleft.gif | Bin 0 -> 116 bytes www/extras/htmlArea/images/ed_insright.gif | Bin 0 -> 117 bytes www/extras/htmlArea/images/ed_insunder.gif | Bin 0 -> 121 bytes www/extras/htmlArea/images/ed_mergecels.gif | Bin 0 -> 910 bytes www/extras/htmlArea/images/ed_mergerows.gif | Bin 0 -> 910 bytes www/extras/htmlArea/images/ed_new.gif | Bin 0 -> 92 bytes www/extras/htmlArea/images/ed_paste.gif | Bin 0 -> 148 bytes www/extras/htmlArea/images/ed_preview.gif | Bin 0 -> 949 bytes www/extras/htmlArea/images/ed_print.gif | Bin 0 -> 127 bytes www/extras/htmlArea/images/ed_rowprop.gif | Bin 0 -> 149 bytes www/extras/htmlArea/images/ed_save.gif | Bin 0 -> 119 bytes www/extras/htmlArea/images/ed_show_border.gif | Bin 0 -> 892 bytes www/extras/htmlArea/images/ed_splitcel.gif | Bin 0 -> 925 bytes www/extras/htmlArea/images/ed_splitrow.gif | Bin 0 -> 923 bytes www/extras/htmlArea/images/ed_table.gif | Bin 0 -> 121 bytes www/extras/htmlArea/images/ed_tableprop.gif | Bin 0 -> 145 bytes www/extras/htmlArea/images/ed_upload.gif | Bin 0 -> 920 bytes www/extras/htmlArea/popups/blank.html | 2 + www/extras/htmlArea/popups/cellprop.html | 262 +++++++++ www/extras/htmlArea/popups/cellpropold.html | 171 ++++++ www/extras/htmlArea/popups/rowprop.html | 223 +++++++ www/extras/htmlArea/popups/set_color.html | 352 +++++++++++ www/extras/htmlArea/popups/tableprop.html | 302 ++++++++++ 33 files changed, 1838 insertions(+), 27 deletions(-) create mode 100644 www/extras/htmlArea/images/ed_cellprop.gif create mode 100644 www/extras/htmlArea/images/ed_delcel.gif create mode 100644 www/extras/htmlArea/images/ed_delcol.gif create mode 100644 www/extras/htmlArea/images/ed_delrow.gif create mode 100644 www/extras/htmlArea/images/ed_insabove.gif create mode 100644 www/extras/htmlArea/images/ed_inscellft.gif create mode 100644 www/extras/htmlArea/images/ed_inscelrgt.gif create mode 100644 www/extras/htmlArea/images/ed_insleft.gif create mode 100644 www/extras/htmlArea/images/ed_insright.gif create mode 100644 www/extras/htmlArea/images/ed_insunder.gif create mode 100644 www/extras/htmlArea/images/ed_mergecels.gif create mode 100644 www/extras/htmlArea/images/ed_mergerows.gif create mode 100644 www/extras/htmlArea/images/ed_new.gif create mode 100644 www/extras/htmlArea/images/ed_paste.gif create mode 100644 www/extras/htmlArea/images/ed_preview.gif create mode 100644 www/extras/htmlArea/images/ed_print.gif create mode 100644 www/extras/htmlArea/images/ed_rowprop.gif create mode 100644 www/extras/htmlArea/images/ed_save.gif create mode 100644 www/extras/htmlArea/images/ed_show_border.gif create mode 100644 www/extras/htmlArea/images/ed_splitcel.gif create mode 100644 www/extras/htmlArea/images/ed_splitrow.gif create mode 100644 www/extras/htmlArea/images/ed_table.gif create mode 100644 www/extras/htmlArea/images/ed_tableprop.gif create mode 100644 www/extras/htmlArea/images/ed_upload.gif create mode 100644 www/extras/htmlArea/popups/blank.html create mode 100644 www/extras/htmlArea/popups/cellprop.html create mode 100644 www/extras/htmlArea/popups/cellpropold.html create mode 100644 www/extras/htmlArea/popups/rowprop.html create mode 100644 www/extras/htmlArea/popups/set_color.html create mode 100644 www/extras/htmlArea/popups/tableprop.html diff --git a/docs/changelog/5.x.x.txt b/docs/changelog/5.x.x.txt index 04829b48e..1ec00c08f 100644 --- a/docs/changelog/5.x.x.txt +++ b/docs/changelog/5.x.x.txt @@ -13,6 +13,7 @@ - Templatized the HttpProxy wobject. (Thanks to Len Kranendonk.) - Added a "Search for" and "Stop at" option to HttpProxy. (Thanks to Len Kranendonk.) - Fixed a bug in the PreviousDropMenu macro. + - Enhanced HTMLArea editor to include table editing. (Thanks to IRV.) 5.4.3 diff --git a/docs/credits.txt b/docs/credits.txt index a7266e92b..60e9bed1b 100644 --- a/docs/credits.txt +++ b/docs/credits.txt @@ -21,6 +21,7 @@ Contributing Developers..............Peter Beardsley / Appropriate Solutions Greg Fast / WDI Chris Gebhardt / OpenServe Andy Grundman + IRV Chris Jackson Koen de Jonge / ProcoliX Martin Kamerbeek / ProcoliX diff --git a/www/extras/htmlArea/editor.js b/www/extras/htmlArea/editor.js index 227d899a6..92af76ae3 100644 --- a/www/extras/htmlArea/editor.js +++ b/www/extras/htmlArea/editor.js @@ -61,6 +61,10 @@ this.toolbar = [ ['HorizontalRule','Createlink','InsertImage','InsertTable','htmlmode','separator'], ['Macros','separator'], ['Smileys','separator'], + +// inserted by lvn : table actions + ['TableProperties','RowProperties','InsertRowBefore','InsertRowAfter','DeleteRow','InsertColumnBefore','InsertColumnAfter','DeleteColumn','CellProperties','InsertCellBefore','InsertCellAfter','DeleteCell','SplitCell','MergeCells','SplitRow','MergeRows','separator'], +// end insert by lvn // ['custom1','custom2','custom3','separator'], ['popupeditor']]; //,'about']]; @@ -131,6 +135,27 @@ this.btnList = { "custom3": ['custom3', 'Purpose of button 3', 'editor_action(this.id)', 'ed_custom.gif'], // end: custom buttons +// inserted by lvn : table operations + "tableproperties": ['TableProperties', 'Table Properties', 'editor_action(this.id)', 'ed_tableprop.gif'], + "rowproperties": ['RowProperties', 'Row Properties', 'editor_action(this.id)', 'ed_rowprop.gif'], + "insertrowbefore": ['InsertRowBefore', 'Insert Row Before', 'editor_action(this.id)', 'ed_insabove.gif'], + "insertrowafter": ['InsertRowAfter', 'Insert Row After', 'editor_action(this.id)', 'ed_insunder.gif'], + "deleterow": ['DeleteRow', 'Delete Row', 'editor_action(this.id)', 'ed_delrow.gif'], + "insertcolumnbefore": ['InsertColumnBefore','Insert Column Before', 'editor_action(this.id)', 'ed_insleft.gif'], + "insertcolumnafter": ['InsertColumnAfter', 'Insert Column Afer','editor_action(this.id)', 'ed_insright.gif'], + "deletecolumn": ['DeleteColumn', 'Delete Column', ' editor_action(this.id)', 'ed_delcol.gif'], + "cellproperties": ['CellProperties', 'Cell Properties', 'editor_action(this.id)', 'ed_cellprop.gif'], + "insertcellbefore": ['InsertCellBefore', 'Insert Cell Before','editor_action(this.id)', 'ed_inscellft.gif'], + "insertcellafter": ['InsertCellAfter', 'Insert Cell After', 'editor_action(this.id)', 'ed_inscelrgt.gif'], + "deletecell": ['DeleteCell', 'Delete Cell', 'editor_action(this.id)', 'ed_delcel.gif'], + "splitcell": ['SplitCell', 'Split Cell', 'editor_action(this.id)', 'ed_splitcel.gif'], + "mergecells": ['MergeCells', 'Merge Cells', 'editor_action(this.id)', 'ed_mergecels.gif'], + "splitrow": ['SplitRow', 'Split row', 'editor_action(this.id)', 'ed_splitrow.gif'], + "mergerows": ['MergeRows', 'Merge rows', 'editor_action(this.id)', 'ed_mergerows.gif'], + +// end insert by lvn + + "help": ['showhelp', 'Help using editor', 'editor_action(this.id)', 'ed_help.gif']}; @@ -312,6 +337,23 @@ function editor_action(button_id) { 'toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=640,height=480'); return; } + + // inserted by lvn : showborders + + if (cmdID == 'ShowBorder'){ + var btnObj = document.all["_" +objname+ "_ShowBorder"]; + if (config.showborders){ // toggle is on : put borders off + nullBorders(editor_obj.contentWindow.document,'hide'); + btnObj.className = 'btn'; + config.showborders = false; + } else { + nullBorders(editor_obj.contentWindow.document,'show'); + btnObj.className = 'btnDown'; + config.showborders = true; + } + return; + } +// end insert by lvn // check editor mode (don't perform actions in textedit mode) if (editor_obj.tagName.toLowerCase() == 'textarea') { return; } @@ -365,7 +407,37 @@ function editor_action(button_id) { "resizable: yes; help: no; status: no; scroll: no; "); if (myText) { editor_insertHTML(objname, myText); } } - + + // inserted by lvn : table operations + else if ( cmdID == 'TableProperties' || + cmdID == 'RowProperties' || + cmdID == 'InsertRowBefore' || + cmdID == 'InsertRowAfter' || + cmdID == 'DeleteRow' || + cmdID == 'InsertColumnBefore' || + cmdID == 'InsertColumnAfter' || + cmdID == 'DeleteColumn' || + cmdID == 'CellProperties' || + cmdID == 'InsertCellBefore' || + cmdID == 'InsertCellAfter' || + cmdID == 'SplitCell' || + cmdID == 'MergeRows' || + cmdID == 'SplitRow' || + cmdID == 'MergeCells' || + cmdID == 'DeleteCell' ) { + // table operations + var table_src_element = editdoc.selection.createRange().parentElement(); + while (table_src_element != null && table_src_element.tagName != 'TD' && table_src_element.tagName != 'TH'){ + table_src_element = table_src_element.parentElement; + } + if (table_src_element == null) { + alert('Table operations not allowed here'); + } else { + tables_action(button_id,table_src_element); + } + } +// end insert by lvn + // Custom3 else if (cmdID == 'custom3') { // insert some text editor_insertHTML(objname, "It's easy to add buttons that insert text!"); @@ -492,19 +564,6 @@ oTags[i].outerHTML = oTags[i].innerHTML; var tar_attribute = ''; var linkText = ''; - - // a few tests. - var elmSelectedImage; - var htmlSelectionControl = "Control"; - var grngMaster = editdoc.selection.createRange(); - if (editdoc.selection.type == htmlSelectionControl) { - // alright! here we have an image. - elmSelectedImage = grngMaster.item(0); - highlightedText = elmSelectedImage.outerHTML; - } - - else { // else NOT an image - if (editdoc.selection.createRange().parentElement().outerHTML.search(/^\<[A|a]/) != -1) { var fullElement = editdoc.selection.createRange().parentElement().outerHTML; @@ -531,7 +590,6 @@ oTags[i].outerHTML = oTags[i].innerHTML; linkText = lt[0]; } - } var myValues = new Object(); myValues.highlightedText = highlightedText; @@ -548,17 +606,11 @@ oTags[i].outerHTML = oTags[i].innerHTML; } } else { - if (myText) { - if (editdoc.selection.type == htmlSelectionControl) { - grngMaster.execCommand('Delete'); - } - editor_insertHTML(objname, unescape(myText) ); // this function ALWAYS puts in an absolute link - } + if (myText) { editor_insertHTML(objname, unescape(myText) ); } // this function ALWAYS puts in an absolute link } } - // insert image else if (cmdID.toLowerCase() == 'insertimage'){ showModalDialog(_editor_url + "popups/insert_image.html", editdoc, "resizable: no; help: no; status: no; scroll: no; "); @@ -576,8 +628,270 @@ oTags[i].outerHTML = oTags[i].innerHTML; } editor_event(objname); + // inserted by lvn + editor_obj.focus(); +// end insert by lvn } +// inserted by lvn : table operations +/* ---------------------------------------------------------------------- *\ + Function : tables_action + Description : perform an action on selected table + Usage : + Arguments : table_action - objectname + action to execute + td - startpoint cell +\* ---------------------------------------------------------------------- */ + +function tables_action(table_action,td) { + + // operations only valid on table cells + if (td.tagName == 'TD' || td.tagName == 'TH' ) { + var TableParts = table_action.split("_"); + var objname = table_action.replace(/^_(.*)_[^_]*$/, '$1'); + var cmdID = TableParts[ TableParts.length-1 ]; + var editor_obj = document.all["_" +objname + "_editor"]; + var config = document.all[objname].config; + var tr,td,tbody,table,newtr; + // get the table object model + tr = td.parentNode; + while(tr != null && tr.tagName != 'TR'){tr = tr.parentNode;} + if (tr != null) { + var tbody = tr.parentNode; + while(tbody != null && tbody.tagName != 'TBODY' && tbody.tagName != 'THEAD' && tbody.tagName != 'TFOOT'){tbody = tbody.parentNode;} + if (tbody != null) { + table = tbody.parentNode; + while(table!= null && table.tagName != 'TABLE'){table = table.parentNode;} + } + } + // only execute commands if table object model is complete + if (table != null) { + // local functions to insert rowdetails and columns + function insertRowDetails(tr,newtr) { + //for (var i=0;i < tr.childNodes.length;i++) { + for (var i=0;i < tr.cells.length;i++) { + newtr.insertCell(-1); + } + } + function insertColumn(tbody,where) { + //for (var i=0;i < tbody.childNodes.length;i++) { + for (var i=0;i < tbody.rows.length;i++) { + //tr = tbody.childNodes(i); + tr = tbody.rows(i); + //if (where > tr.childNodes.length){ + if (where > tr.cells.length){ + tr.insertCell(); + } else { + tr.insertCell(where); + } + } + } + function deleteColumn(tbody,where) { + //for (var i=0;i < tbody.childNodes.length;i++) { + for (var i=0;i < tbody.rows.length;i++) { + //var tr = tbody.childNodes(i); + var tr = tbody.rows(i); + //if (tr.childNodes.length - 1 < where){ + if (tr.cells.length - 1 < where){ + //tr.deleteCell(tr.childNodes.length - 1); + tr.deleteCell(tr.cells.length - 1); + } else { + tr.deleteCell(where); + } + //tr = tbody.childNodes(i); + tr = tbody.rows(i); + //if (tr.childNodes.length == 0){ + if (tr.cells.length == 0){ + tbody.deleteRow(i); + } + } + } + function splitCell(tbody,currTr,currTd){ + if (currTd.colSpan > 1) { + // rowspan > 1 just insert cell and decrease colspan + currTd.colSpan = currTd.colSpan - 1; + currTr.insertCell(currTd.cellIndex + 1); + } else { + // rowspan = 1 increase colspan for all other rows and insert cell in current row + for (var i=0;i < tbody.rows.length;i++) { + var tr = tbody.rows(i); + var td = tr.cells(currTd.cellIndex); + if (i == currTr.rowIndex) { + tr.insertCell(currTd.cellIndex + 1); + } else { + td.colSpan = td.colSpan + 1; + } + } + } + } + // commented out! + /* function mergeCells(tbody,currTr,currTd){ + // check if leftmost of cells to merge + var left = false; + for (var i=0;i < tbody.rows.length;i++) { + var tr = tbody.rows(i); + var allTd = tr.cells; + if (currTd.cellIndex + 2 > allTd.length) { + left = false; + break; + } else { + var td = tr.cells(currTd.cellIndex); + if (i != currTr.rowIndex) { + if (td.colSpan > 1) { + left = true; + } else { + left = false; + break; + } + } + } + } + if (left){ + for (var i=0;i < tbody.rows.length;i++){ + var tr = tbody.rows(i); + var td = tr.cells(currTd.cellIndex); + if (currTd.cellIndex + 2 > tr.length) { + alert("You can't merge cells here."); + return; + } else { + var mergeCell = tr.cells(currTd.cellIndex + 1); + if (i == currTr.rowIndex) { + // merge the contents of the current cell with the one on the right + currTd.innerHTML = currTd.innerHTML + mergeCell.innerHTML; + currTr.deleteCell(currTd.cellIndex + 1); + } else { + // decrease colspan for non current rows + td.colSpan = td.colSpan - 1; + } + } + } + } else { + alert('Select the leftmost cell of the split to merge.'); + } + } */ + function mergeCells(tbody,currTr,currTd){ + //first check if there are cells to the right + if (currTd.cellIndex < currTr.cells.length-1) { + //get current colspan and cell to be merged's colspan + //add the two together to get the new one, + //move the conetent and delete the right one + var currColSpan = currTd.colSpan ; + var mergeCellColSpan = currTr.cells(currTd.cellIndex+1).colSpan; + var mergeCell = currTr.cells(currTd.cellIndex+1); + currTd.innerHTML = currTd.innerHTML + mergeCell.innerHTML; + currTr.deleteCell(currTd.cellIndex + 1); + currTd.colSpan = currColSpan+mergeCellColSpan ; + } else { + alert('Select the leftmost cell of the split to merge.'); + } + } + function splitRow(tbody,currTr,currTd){ + // check rowspan on other cells + if (currTd.rowSpan > 1){ + currTd.rowSpan = currTd.rowSpan - 1; + var tr = tbody.rows(currTr.rowIndex + 1); + var where = 0; + for (var i=0;i < currTr.cells.length;i++) { + if (i < currTd.cellIndex){ + if (currTr.cells(i).rowSpan < 2){where++;} + } + } + tr.insertCell(where); + } else { + for (var i=0;i < currTr.cells.length;i++) { + var td = currTr.cells(i); + if (i == currTd.cellIndex) { + tr = tbody.insertRow(currTr.rowIndex + 1); + tr.insertCell(0); + } else { + td.rowSpan = td.rowSpan + 1; + } + } + } + } + function mergeRows(tbody,currTr,currTd){ + // check if topmost of cells to merge + var top = false; + if (currTd.rowSpan < 2){ + for (var i=0;i < currTr.cells.length;i++) { + if (i !== currTd.cellIndex) { + if (currTr.cells(i).rowSpan > 1){ + top = true; + break; + } + } + } + } + if (top){ + return; + } else { + alert('Select the topmost row of the split to merge.'); + } + } + // execute the operation depending on the given command + switch(cmdID) { + case 'CreateCaption' : table.createCaption();break; + case 'DeleteCaption' : table.deleteCaption();break; + case 'CreateTHead' : table.createTHead();break; + case 'DeleteTHead' : table.deleteTHead();break; + case 'CreateTFoot' : table.createTFoot();break; + case 'DeleteTFoot' : table.deleteTFoot();break; + case 'InsertRowTop' : newtr = tbody.insertRow(0);insertRowDetails(tr,newtr);break; + case 'InsertRowBottom' : newtr = tbody.insertRow(-1);insertRowDetails(tr,newtr);break; + case 'InsertRowBefore' : newtr = tbody.insertRow(tr.rowIndex);insertRowDetails(tr,newtr);break; + case 'InsertRowAfter' : newtr = tbody.insertRow(tr.rowIndex+1);insertRowDetails(tr,newtr);break; + case 'InsertRowStart' : newtr = tbody.insertRow(0);insertRowDetails(tr,newtr);break; + case 'DeleteRow' : tbody.deleteRow(tr.rowIndex);break; + case 'InsertColumnLeft' : insertColumn(tbody,0);break; + case 'InsertColumnRight' : insertColumn(tbody,-1);break; + case 'InsertColumnBefore' : insertColumn(tbody,td.cellIndex);break; + case 'InsertColumnAfter' : insertColumn(tbody,td.cellIndex+1);break; + case 'DeleteColumn' : deleteColumn(tbody,td.cellIndex);break; + case 'InsertCellLeft' : tr.insertCell(0);break; + case 'InsertCellRight' : tr.insertCell(-1);break; + case 'InsertCellBefore' : tr.insertCell(td.cellIndex);break; + case 'InsertCellAfter' : tr.insertCell(td.cellIndex+1);break; + case 'InsertCellStart' : tr.insertCell(0);break; + case 'DeleteCell' : tr.deleteCell(td.cellIndex);break; + case 'SplitCell' : splitCell(tbody,tr,td);break; + case 'MergeCells' : mergeCells(tbody,tr,td);break; + case 'SplitRow' : splitRow(tbody,tr,td);break; + case 'MergeRows' : mergeRows(tbody,tr,td);break; +// inserted by lvn : property pallettes + case 'TableProperties' : nullBorders(editor_obj.contentWindow.document,'hide'); + setGlobalVar('_editor_field',objname); + setGlobalVar('_editor_table',table); + showModalDialog(_editor_url + "popups/tableprop.html?"+objname, + window, + "resizable: yes; help: no; status: no; scroll: no; "); + td.focus(); + break; + case 'RowProperties' : setGlobalVar('_editor_field',objname); + setGlobalVar('_editor_row',tr); + showModalDialog(_editor_url + "popups/rowprop.html?"+objname, + window, + "resizable: yes; help: no; status: no; scroll: no; "); + td.focus(); + break; + case 'CellProperties' : setGlobalVar('_editor_field',objname); + setGlobalVar('_editor_cell',td); + showModalDialog(_editor_url + "popups/cellprop.html?"+objname, + window, + "resizable: yes; help: no; status: no; scroll: no; "); + td.focus(); + break; +// end insert lvn property pallettes + default : break; + } + // if 0 table borders and the switch to show them is on: show them + if (config.showborders){ // toggle is on : show null borders + nullBorders(editor_obj.contentWindow.document,'show'); + } + } + } + return; +} +// end insert by lvn + /* ---------------------------------------------------------------------- *\ Function : MS-Word clean-up Description : replace textarea with wysiwyg editor @@ -808,6 +1122,42 @@ function editor_updateToolbar(objname,action) { if (btnObj.disabled != false) { btnObj.disabled = false; } } } + + // inserted by lvn: table operations +// disable table handling buttons when not in a table cell + var table_src_element = null; + // only works on non-control ranges + if (editdoc.selection.type != 'Control'){ + table_src_element = editdoc.selection.createRange().parentElement(); + while (table_src_element != null && table_src_element.tagName != 'TD' && table_src_element.tagName != 'TH'){ + table_src_element = table_src_element.parentElement; + } + } + // check if buttons are set in the config + var IDList = Array('TableProperties','RowProperties','InsertRowBefore','InsertRowAfter','DeleteRow','InsertColumnBefore','InsertColumnAfter','DeleteColumn','CellProperties','InsertCellBefore','InsertCellAfter','DeleteCell','SplitCell','MergeCells','SplitRow','MergeRows'); + for (var i=0; i]*|'[^']*'|"[^"]*")*)>/g; // this will match tags, but still doesn't handle container tags (textarea, comments, etc) contents = contents.replace(matchTag, filterTag); - contents = contents.replace(/http:\/\/www\.___relativelink___\.com\//g, ""); // remove nextlines from output (if requested) if (config.replaceNextlines) { @@ -932,9 +1329,16 @@ function editor_setmode(objname, mode) { editor_obj = document.all["_" +objname + "_editor"]; editor_obj.value = contents; editor_event(objname); - + // inserted by lvn + if (config.showborders) { + editor_updateToolbar(objname, "disable"); + config.showborders = true; + } else { + // end insert by lvn editor_updateToolbar(objname, "disable"); // disable toolbar items - + // insert by lvn + } + // end insert by lvn // set event handlers editor_obj.onkeydown = function() { editor_event(objname); } editor_obj.onkeypress = function() { editor_event(objname); } @@ -983,11 +1387,13 @@ function editor_setmode(objname, mode) { + '' + contents + '\n' + '\n'; + // write to editor window var editdoc = editor_obj.contentWindow.document; @@ -1011,9 +1417,32 @@ function editor_setmode(objname, mode) { editdoc.body.onpaste = function() { editor_event(objname, 100); } editdoc.body.onblur = function() { editor_event(objname, -1); } + // inserted by lvn + // show table borders + if (config.showborders) { + nullBorders(editdoc,'show'); + var btnObj = document.all["_" +objname+ "_ShowBorder"]; + if(btnObj) { btnObj.className = 'btnDown'; } + } + // end insert by lvn + // bring focus to editor if (mode != 'init') { // don't focus on page load, only on mode switch editor_focus(editor_obj); + // insert by lvn : check editor changes) + } else { + if (config.checkChanges == 1) { + var localVar = getGlobalVar("objnames"); + if (localVar == null){ + setGlobalVar("objnames",objname); + } else { + localVar = localVar + ',' + objname; + setGlobalVar("objnames",localVar); + } + setGlobalVar("_" +objname + "_initialText",editdoc.body.innerHTML); + if (window.onbeforeunload == null){window.onbeforeunload = function() {discardOnExit();}} + } +// end insert by lvn } } @@ -1225,7 +1654,10 @@ function _isMouseOver(obj,event) { // determine if mouse is over object function editor_cMenu_generate(editorWin,objname) { var parentWin = window; editorWin.event.returnValue = false; // cancel default context menu - +// inserted by lvn : table operations + var table_object = document.all["_" +objname + "_editor"]; + var table_src_element = table_object.contentWindow.event.srcElement; +// end insert bylvn // define content menu options var cMenuOptions = [ // menu name, shortcut displayed, javascript code ['Cut', 'Ctrl-X', function() {}], @@ -1239,6 +1671,52 @@ function editor_cMenu_generate(editorWin,objname) { ['About this editor...', '', function() { alert("about this editor"); }]]; + + // inserted by lvn: table operations + // (uncomment to have more elements in popup menu) + if (table_src_element.tagName == 'TD') { + // set the contextmenu for tableactions when clicked in a table + cMenuOptions = [ + // ['Insert Table' , '' , function() {editor_action('_' + objname + '_' + 'InsertTable');}], + // ['Delete Table' , '' , function() {tables_action('_' + objname + '_' + 'DeleteTable',table_src_element);}], + // ['Insert Caption' , '' , function() {tables_action('_' + objname + '_' + 'CreateCaption',table_src_element);}], + // ['Delete Caption' , '' , function() {tables_action('_' + objname + '_' + 'DeleteCaption',table_src_element);}], + // ['Insert Head' , '' , function() {tables_action('_' + objname + '_' + 'CreateTHead',table_src_element);}], + // ['Delete Head' , '' , function() {tables_action('_' + objname + '_' + 'DeleteTHead',table_src_element);}], + // ['Insert Foot' , '' , function() {tables_action('_' + objname + '_' + 'CreateTFoot',table_src_element);}], + // ['Delete Foot' , '' , function() {tables_action('_' + objname + '_' + 'DeleteTFoot',table_src_element);}], + // ['Insert Row at Top' , '' , function() {tables_action('_' + objname + '_' + 'InsertRowTop',table_src_element );}], + // ['Insert Row at Bottom' , '' , function() {tables_action('_' + objname + '_' + 'InsertRowBottom',table_src_element );}], + ['Insert Row before' , '' , function() {tables_action('_' + objname + '_' + 'InsertRowBefore',table_src_element );}], + ['Insert Row after' , '' , function() {tables_action('_' + objname + '_' + 'InsertRowAfter',table_src_element );}], + ['Delete Row' , '' , function() {tables_action('_' + objname + '_' + 'DeleteRow',table_src_element );}], + // ['Insert Column leftmost', '' , function() {tables_action('_' + objname + '_' + 'InsertColumnLeft',table_src_element );}], + // ['Insert Column righttmost', '' , function() {tables_action('_' + objname + '_' + 'InsertColumnRight',table_src_element );}], + ['Insert Column before', '' , function() {tables_action('_' + objname + '_' + 'InsertColumnBefore',table_src_element );}], + ['Insert Column after', '' , function() {tables_action('_' + objname + '_' + 'InsertColumnAfter',table_src_element );}], + ['Delete Column', '' , function() {tables_action('_' + objname + '_' + 'DeleteColumn',table_src_element );}], + // ['Insert Cell leftmost', '' , function() {tables_action('_' + objname + '_' + 'InsertCellLeft',table_src_element );}], + // ['Insert Cell rightmost' , '' , function() {tables_action('_' + objname + '_' + 'InsertCellRight',table_src_element );}], + ['Insert Cell before' , '' , function() {tables_action('_' + objname + '_' + 'InsertCellBefore',table_src_element );}], + ['Insert Cell after' , '' , function() {tables_action('_' + objname + '_' + 'InsertCellAfter',table_src_element );}], + ['Delete Cell' , '' , function() {tables_action('_' + objname + '_' + 'DeleteCell',table_src_element );}], + ['Split Cell' , '' , function() {tables_action('_' + objname + '_' + 'SplitCell',table_src_element );}], + ['Merge Cells' , '' , function() {tables_action('_' + objname + '_' + 'MergeCells',table_src_element );}], + ['Split Row' , '' , function() {tables_action('_' + objname + '_' + 'SplitRow',table_src_element );}], + ['Merge Rows' , '' , function() {tables_action('_' + objname + '_' + 'MergeRows',table_src_element );}], +// inserted by lvn : property pallettes + ['Table Properties' , '' , function() {tables_action('_' + objname + '_' + 'TableProperties',table_src_element );}], + ['Row Properties' , '' , function() {tables_action('_' + objname + '_' + 'RowProperties',table_src_element );}], + ['Cell Properties' , '' , function() {tables_action('_' + objname + '_' + 'CellProperties',table_src_element );}] +// end insert lvn property pallettes + ]; + } else { + // reset to de default browser contextmenu + editorWin.event.returnValue = true; + return; + } +// end insert by lvn + editor_cMenu.options = cMenuOptions; // save options // generate context menu @@ -1368,6 +1846,25 @@ function getGlobalVar(varName, value) { } } +// insert by lvn : check editor changes +/* ---------------------------------------------------------------------- *\ + Function : discardOnExit + Description : check if contents have been changed and ask user confirmation + to discard changes + Usage : discardOnExit(); +\* ---------------------------------------------------------------------- */ +function discardOnExit(){ + var objNames = getGlobalVar("objnames").split(","); + for (var i=0;i < objNames.length;i++){ + if (document.all["_" +objNames[i] + "_editor"].contentWindow.document.body.innerHTML + != getGlobalVar("_" + objNames[i] + "_initialText")) { + event.returnValue = "Your document has been changed. Discard changes?"; + } + } +} +// end insert by lvn + + function CheckDocument() { oShell= new diff --git a/www/extras/htmlArea/images/ed_cellprop.gif b/www/extras/htmlArea/images/ed_cellprop.gif new file mode 100644 index 0000000000000000000000000000000000000000..2f71bae6f833a0311205f482be7266ae75a56aa0 GIT binary patch literal 155 zcmV;M0A&A1Nk%w1VG;lm0HOx~;edbu0D!>2zyLFu%*@RH|Nj600RR90A^8LW000L7 zEC2ui01^Na000AEc)Hx~Cdw1SJ4Wbj>dV=tc?~Fpnh%_>bN&{gfC0MUhg`r>oc(+HWmg@z8pGoa>g~b}i&Uo{^l!w!pw*E?| J`l$yA06RU|K-&NS literal 0 HcmV?d00001 diff --git a/www/extras/htmlArea/images/ed_delcel.gif b/www/extras/htmlArea/images/ed_delcel.gif new file mode 100644 index 0000000000000000000000000000000000000000..af48ea666dc3fb9cbcf210e7ce4e982a3e3c0dd1 GIT binary patch literal 121 zcmZ?wbhEHb6lV})SoEI(3>pp`IKc291R#7MsrZwHk%57UK?fuPQtQBMr?KnKKZR2( zohrB{_%i%Um{B-4W8RD9g>k1cm<_i~v)Y=s?)`(_`K!;aXX-i1Fiqu{yI@Snl7$)( MUOy`$LYNq=0X%3crT_o{ literal 0 HcmV?d00001 diff --git a/www/extras/htmlArea/images/ed_delcol.gif b/www/extras/htmlArea/images/ed_delcol.gif new file mode 100644 index 0000000000000000000000000000000000000000..dc950738f52fa046f8bca5e69c7a3df56f2f4210 GIT binary patch literal 120 zcmZ?wbhEHb6lV})SoEI(3>pp`IKc291R#7MsrZwHk%57UK?fuPQtQBMtFi0OKZRqC zZ9VT>_iq0GfGHp>W8Mm8fj1Fr-@csoQs~Or-uE`l!rG_!KS+i(=qz~Sv4(Z(Id1>$ MkH4&2#=>9?08-m6h5!Hn literal 0 HcmV?d00001 diff --git a/www/extras/htmlArea/images/ed_delrow.gif b/www/extras/htmlArea/images/ed_delrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..a543c465572948d940e879b23c821bf1449fb69b GIT binary patch literal 125 zcmZ?wbhEHb6lV})SoELa|Ns974jced3=Ay{NI>x?3nK#qBZCe|45Ze9*-2v8op%ae z4)f-2x^=cvgh3{?yJhcU=08v7%ocy literal 0 HcmV?d00001 diff --git a/www/extras/htmlArea/images/ed_insabove.gif b/www/extras/htmlArea/images/ed_insabove.gif new file mode 100644 index 0000000000000000000000000000000000000000..dbc15eeb2b5e2a917a5bd367b202c62ed102a0fd GIT binary patch literal 125 zcmZ?wbhEHb6lV})Sj5V}@c%ypL(9X4hW{W2kOv}xK=CIFBLf2~gARxTQp>>X6tU~h zKZ8@A;Q=boqYmk^7<5cc7kX?^Ag4A-XPMynHHBRZ-ka?EyyKAn^~X2NET$F(tkDVe UJvCX<#;y6rnzGY#RTvno0Zg|pi~s-t literal 0 HcmV?d00001 diff --git a/www/extras/htmlArea/images/ed_inscellft.gif b/www/extras/htmlArea/images/ed_inscellft.gif new file mode 100644 index 0000000000000000000000000000000000000000..37da8f518c41913307ac12968034840134da1f6a GIT binary patch literal 124 zcmZ?wbhEHb6lV})Sj5V}z|iopp@HE)2mm<{639^e$->CMz{;QlWHW%&GB7(v?7H*M z;FPEM3W1nI)mNnqIg}eSSsf=mn^|^;`S=VcmWm74%J(I2j(0WD;L>zSK5G`etm{;2 SQNbLRxi{97X?rp-SOWmnvnzZ6 literal 0 HcmV?d00001 diff --git a/www/extras/htmlArea/images/ed_inscelrgt.gif b/www/extras/htmlArea/images/ed_inscelrgt.gif new file mode 100644 index 0000000000000000000000000000000000000000..4aab4fbc7d6af2c3022bd7335c69def89f378f28 GIT binary patch literal 125 zcmZ?wbhEHb6lV})Sj5V}z|iopp@HE)2mm<{639^e$->CMz{;QlWHW%&GB7(u?7H*M z;FM>!vc+xJHu)pVO5!!rZb`0b+$or&EvB)I!I=5MR_(XD`w|pB{H-{=urOrz#aVol T(k&-8rR|+lcKWTE5Q8-UH9{_> literal 0 HcmV?d00001 diff --git a/www/extras/htmlArea/images/ed_insleft.gif b/www/extras/htmlArea/images/ed_insleft.gif new file mode 100644 index 0000000000000000000000000000000000000000..67c82d7b6047f663d75b7c3eeeb3b6cde9cf1cc3 GIT binary patch literal 116 zcmZ?wbhEHb6lV})Sj5Wku%Us0p@HE)2rw{!Xdnp$ia%Kx85md@bU+-CS_Wpzh+TL7 z8JzN5y|<^qw@rQ8u}bC$!HijcjMrE;tUj>C=C*hCYBe_wX2#ok25SJN2PnS) literal 0 HcmV?d00001 diff --git a/www/extras/htmlArea/images/ed_insright.gif b/www/extras/htmlArea/images/ed_insright.gif new file mode 100644 index 0000000000000000000000000000000000000000..a29c46b9b74f66806f5ef040f5c915b824340b48 GIT binary patch literal 117 zcmZ?wbhEHb6lV})Sj5Wku%Us0p@HE)2rw{!Xdnp$ia%Kx85md@bU+-CS_WpTh+TL7 z8JzN5y*DL;$!g=xYmD)(b2O?v58h(gu=>Cjo7>*m%b$92Fgx-K%kVflEYxAPnKj98 LPRS_`1_o;Y&}S#c literal 0 HcmV?d00001 diff --git a/www/extras/htmlArea/images/ed_insunder.gif b/www/extras/htmlArea/images/ed_insunder.gif new file mode 100644 index 0000000000000000000000000000000000000000..4ed40c17da3665fb6428cdae1220f280522acfda GIT binary patch literal 121 zcmZ?wbhEHb6lV})Sj5V}@c%ypL(9X4hW{W2kOv}xK=CIFBLf2~gARxTQp><>7qRQk zKZ8@A*~%8etK0rde{YO2tXjAwB$Sq#NOER+SIjuiK@l(MiGNr{!El_R29+(K4j6t|m&uKWX| zF6m-rOU)l(ag~xRKJ(nEx99ujotZP|oaa3?bMnyPi(9b`e=tHTk5&%#KPfxD=iJgV z4Q`Mj3~49>2qQ>1AtHz*ih#o$bhtx~aHOLgJ}X>_BEVN7EgySCFEPKpdN$?5@4 z^O1F@oZ(DoIh&+ul)5M}#1u3M2>&BvDRk}F*4D({iq-G!YS z5mHJewG$RJ+o3X_iiplDN9wtxED>Y-R`3HuM)Pip&1NhV%2Xqdn_)5Z z^%z@5WJXprc;ocQ?(V|Q<>cRT#7jw&zAO_=R*pXVSI5r3YgPd-v9DiZd=prE4KwR@ zOfSUy+iN%Nz3^$_#fjV4b^7V_Ml9Z(z`xI5zx46J_G5Q{UwP{v9!(uzz5HkP)#oSs z&rJQC|MlwY?4AQ}?%eqH{L8I_H`ZVNd$tyz9ewa{{r$)DOLGU#ZP@a9^X{d4=igoZ Kv2^YtapXTtmwZnE literal 0 HcmV?d00001 diff --git a/www/extras/htmlArea/images/ed_mergerows.gif b/www/extras/htmlArea/images/ed_mergerows.gif new file mode 100644 index 0000000000000000000000000000000000000000..35a0091cbe69db077559aeabd773d5ebeb228293 GIT binary patch literal 910 zcmW+#O{k7x5Itgnm7g0MWyrNai7ectj+EcsU0GNRMZ(s`>R>@E6$@95uCNpfWi{fK zuClPEW@qcJ{H4!4ck1o=zIkWn%sJ~H z2_+(tiAtbg1s1%ZLKL!41%Nizp$`zoXk~%Dr5R~-ql{rpV;Q@)(;ZHV3^K{;0Z#Lg zb*G%+OlLWpq-m78C^5toOKj#Aqu+xHMlgdFY&k5)P){lu$xK$VHL_wOc~QkEX0eJG z>h?JKkVi2{tDsiRY+$=drZALzO|RYVqV}-uYG;Ov zWR$};VK2&ob*x{L;xjEELLABafS5G4%Bq zTSjC?Ry26y^vLe+!p`O7?~jP5k|upwCYUTAefF=8ZNFEo0G?t`zr^?^u=)y4uGw

k0Sq8M|6djxMvjJnPq=$(-#InHa1Ak8dNN literal 0 HcmV?d00001 diff --git a/www/extras/htmlArea/images/ed_paste.gif b/www/extras/htmlArea/images/ed_paste.gif new file mode 100644 index 0000000000000000000000000000000000000000..b173d3d5374801319f24f2ddb5b3d61d235047d7 GIT binary patch literal 148 zcmZ?wbhEHb6lV})Sj52a9|RZ<95~Pb0t^fcAPf{z{K>+}0c7d`F#|}g19K$Dt~>kE z1T4L@zrFnX$iPX%t!3lHDXD98CKPTsw$9ODwz}zCt9vg+9k`o2cXpguRCqH}lGnP~ rx9gMTg3Ggy-)eX@NkZ@N?rKe)XNLU~;qB7QUp2ug}Qg4d{|+H?uRm_MLcsnx+EL+vc6#|W)F zS~=AJr0n=J?>t?i!3{EmAq`~!VFU>$LbWvNOS z_oC^w+g;Qiwq5PaaM5gN;Wj3QWm=ZCIqky`$T?tQ$kR#;zs-kg?gKkK)3dzAXx>e+ z*^GrknQG*5Gc1O_9%IXh%*cucZ=4?4-CfwZoW5I%SdcXB%QD4u<><42b$s@A^_p3H zgx&oTCpYye|BN{^2_bSj``*Hn@`PFJif60_07$I^vx~&8JNq6S z6j;1x2jd~@?LrEDPdrjJc2&wsY UEmzph-Qs@k_}i-eds!H)0YX(U3IG5A literal 0 HcmV?d00001 diff --git a/www/extras/htmlArea/images/ed_rowprop.gif b/www/extras/htmlArea/images/ed_rowprop.gif new file mode 100644 index 0000000000000000000000000000000000000000..76397253fbaec4d2cdf84ea0ec2ae4421daba6fc GIT binary patch literal 149 zcmZ?wbhEHb6k-r!Sj5i2z|iopq2a)R0}RG9&zw2)|NnoW5Rg>-$->CMz|NopjlYtV7UYAczh^OP7dZzs>Bx%jf%@cV?b>p6BzP-gsqo?ZT6I0)Jyd z`;Yby^*<>)e$B1>yEM2#hA^a|3?Pgk;e?1Fk|+WWbI{=qIl_^Sa`ZeCD7bnsLP((+ zD_{WzJfJ`XGEe~|EWv~)l!!zoDuIF(Snz@hQOH6S0NSiW9}vd0vcTTbj5NAY#xSO_ zj9uI54ktwhnPl|vDQ7s-S)8J*Z#=Gg!fv!*YgtQpreW zvXZTl6&uNmDn>DjRm7;<xj z77Asmk>_SujJ_VTWkhCVMT0j^kL>O)>|8GX-Hq6kwCKySz+(UCvww9w^Uu-&U=z>v zOUyTc7Z@zr+`M17bI{(_{gU^=U|NXs<&tv@{FCTjL$B*jNjrEIP|Mb++t+TiH rt{wVs?c+P=UO)EbyPsVA`RxZcRzLXk)vJHq`sLeq9=>pR887`0phAK! literal 0 HcmV?d00001 diff --git a/www/extras/htmlArea/images/ed_splitrow.gif b/www/extras/htmlArea/images/ed_splitrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..97c0db16f867552e554c49431bbc8a8dc9d4ceba GIT binary patch literal 923 zcmW+#L2H(05S+9@qEtar(n}#*TT3YFAs3ZiMuaBm)j|=Ztd}0V^&&+?M#PKWMMUbh zgv3J+fl46YVM{GYK?8cR(8Gd%Ac`Q;!{kU}+9 zzyb_-K!FHkpaMu(f(cJ35s6Gx0tG9u-~|<;kcBD$w6P9-fG|cY3+ye;NTVBN3}YJ0 z*tMPRa8hKDNmdVVnvbkIDjRm4!Y$H|90ia}ZhwQ6Pq+f6csDNSX%h$shzM;^YKoFB9x&DwLO+G&-5&BF`9Q% zY&K(|P^KDr+zgAMugBOjA~Uk0!5gPXc6S$cE+_x*M661h^ktb~vU~K|zdAm9H$4Tc z;z+;5_$Dy(GgkI~y1Ws8UYnWy>fGavU;ny}L*L$AKA5L4S^V+Q{a5o#H}{;p@bT79 zFaN%=@c9pK-fquN-8y#u%EK40=da#5e)j1{E3v+PZ~EfgqsNQuPwvcqzj=Af@8tiyknrICQOg89DDQ*Xq=S`xgIB)$BR$5T)k6=Wm2Zc-pZiSG$f} PO10{YSbrmjiNP8Go=7f( literal 0 HcmV?d00001 diff --git a/www/extras/htmlArea/images/ed_tableprop.gif b/www/extras/htmlArea/images/ed_tableprop.gif new file mode 100644 index 0000000000000000000000000000000000000000..e15a4a4445482677100bdebe0c8b5d621c14f438 GIT binary patch literal 145 zcmZ?wbhEHb6k-r!Sj5J_z|e5uzySv1ng9R)KXc{`kPl=4NyVQmj0_BH3_3tIP^Az9 z19Mo$t~>8ky_gRetG4r`;<20bf&ea313?Kh<{UyJ%Ls@}L6JL%-jsWo{X3=Gx)=N>w3 literal 0 HcmV?d00001 diff --git a/www/extras/htmlArea/images/ed_upload.gif b/www/extras/htmlArea/images/ed_upload.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b88b64d136ead77a2d9bde40b4c1a82e02a03b7 GIT binary patch literal 920 zcmW+#KWN`|5Ph}Pq=HC6g49A!DE^@lu{c<|JP?{VX%i3yk+XwSr$WI&@JT=rItT?< zuQXQOYH@HpCzDWc$s`>PaS1qND@EkzT@Jo{e!u(P-MjbR=ezdK<+m<=@&Z=y2opMb zbabfyN!jr*@9rJa;077OkcKjVFoJ{=B7#Vw2sq3^hdbm5M>@*U^Gu-N>cI#hg=(yT z1sL#v0ujhS1(2`=6P{2a5}Bw33RYmj3o1k*3snGUvkrYg7}LrEdrLFY=tddCn8q@8 zZKpe&6d7ca)dQU7lXa(@;Y?>ao1|$nJ{c-A)j>`xj}lKT3_?o(p_?e zD_!M1vb(#ma}yz@R8l)(q2}YA3PmVG6>57d)g-;^QjyA3rP?zqHFNLgQk1e(CCt5O zdhK=>wTEq2J2NhtjTUY*F)Y)vtj%d3Mj+?F#K_Z1jNj&?n)_gfXL^>m7|pvWHk(-} zl&MCZn_)5fdd!v)nUNI@-Z(w7ySuP+x%l@mVq4OpFUtapqodFM)$!uv6DOCkgw=kD z`6jr01J5p>S-%&*Z9Vnqzs;S)vpRMh|GfR#H_yF_l{Y@#-ud~?+LzB9TmNYN`d`1_ zdS!Ft+RpvIcfWo5^{a0lT)BPuCQdx@!H@TU_~Scnt*m~y@zPIUy!`cr&!0bau=f3X jxBh(a>$~T6w@<(J>Hfj~o%c7ER=;}k{4dw`giHSeB942% literal 0 HcmV?d00001 diff --git a/www/extras/htmlArea/popups/blank.html b/www/extras/htmlArea/popups/blank.html new file mode 100644 index 000000000..5b1b16d1f --- /dev/null +++ b/www/extras/htmlArea/popups/blank.html @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/www/extras/htmlArea/popups/cellprop.html b/www/extras/htmlArea/popups/cellprop.html new file mode 100644 index 000000000..f3e1644a0 --- /dev/null +++ b/www/extras/htmlArea/popups/cellprop.html @@ -0,0 +1,262 @@ + + + + + + + + Cell Properties + + + + + + +

+ Height: +
+ + +
+ Width: +
+ + +
+ Id: +
+ +
+ Tooltip: +
+ +
+ Background Image: +
+ +
+ Horizontal Align: +
+ +
+ Vertical Align: +
+ +
+ Background Color: +
+
+
+ Border Color: +
+
+
+ Border Color Dark: +
+
+
+ Border Color Light: +
+
+
+ Colspan: +
+ +
+ Rowspan: +
+ +
+ No Wrap: +
+ + + + + \ No newline at end of file diff --git a/www/extras/htmlArea/popups/cellpropold.html b/www/extras/htmlArea/popups/cellpropold.html new file mode 100644 index 000000000..7c94b95fa --- /dev/null +++ b/www/extras/htmlArea/popups/cellpropold.html @@ -0,0 +1,171 @@ + + + + + + + + Cell Properties + + + + + + +
+ Height: +
+ +
+ Width: +
+ +
+ Id: +
+ +
+ Align: +
+ +
+ Vertical Align: +
+ +
+ Background Image: +
+ +
+ Background Color: +
+ +
+ Border Color: +
+ +
+ Border Color Dark: +
+ +
+ Border Color Light: +
+ +
+ Tooltip: +
+ +
+ Colspan: +
+ +
+ Rowspan: +
+ +
+ No Wrap: +
+ + + + + \ No newline at end of file diff --git a/www/extras/htmlArea/popups/rowprop.html b/www/extras/htmlArea/popups/rowprop.html new file mode 100644 index 000000000..270f7482c --- /dev/null +++ b/www/extras/htmlArea/popups/rowprop.html @@ -0,0 +1,223 @@ + + + + + + + + Row Properties + + + + + + +
+ Height: +
+ + +
+ Width: +
+ + +
+ Id: +
+ +
+ Tooltip: +
+ +
+ Horizontal Align: +
+ +
+ Vertical Align: +
+ +
+ Background Color: +
+
+
+ Border Color: +
+
+
+ Border Color Dark: +
+
+
+ Border Color Light: +
+
+ + + + \ No newline at end of file diff --git a/www/extras/htmlArea/popups/set_color.html b/www/extras/htmlArea/popups/set_color.html new file mode 100644 index 000000000..2c19b4089 --- /dev/null +++ b/www/extras/htmlArea/popups/set_color.html @@ -0,0 +1,352 @@ + + +Select Color + + + + +
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No Color
+ +
+ \ No newline at end of file diff --git a/www/extras/htmlArea/popups/tableprop.html b/www/extras/htmlArea/popups/tableprop.html new file mode 100644 index 000000000..a0a77a27f --- /dev/null +++ b/www/extras/htmlArea/popups/tableprop.html @@ -0,0 +1,302 @@ + + + + + + + + Table Properties + + + + + + +
+ Height: +
+ + +
+ Width: +
+ + +
+ Border: +
+ + +
+ Id: +
+ +
+ Caption: +
+ +
+ Tooltip: +
+ +
+ Background Image: +
+ +
+ Frame: +
+ +
+ Rules: +
+ +
+ Horizontal Align: +
+ +
+ Cell Padding: +
+ +
+ Cell Spacing: +
+ +
+ Background Color: +
+
+
+ Border Color: +
+
+
+ Border Color Dark: +
+
+
+ Border Color Light: +
+
+ + + + \ No newline at end of file