Annotation of kupuMPIWG/common/kupusourceedit.js, revision 1.1.1.1

1.1       dwinter     1: /*****************************************************************************
                      2:  *
                      3:  * Copyright (c) 2003-2005 Kupu Contributors. All rights reserved.
                      4:  *
                      5:  * This software is distributed under the terms of the Kupu
                      6:  * License. See LICENSE.txt for license text. For a list of Kupu
                      7:  * Contributors see CREDITS.txt.
                      8:  *
                      9:  *****************************************************************************/
                     10: 
                     11: // $Id$
                     12: 
                     13: 
                     14: function SourceEditTool(sourcebuttonid, sourceareaid) {
                     15:     /* Source edit tool to edit document's html source */
                     16:     this.sourceButton = getFromSelector(sourcebuttonid);
                     17:     this.sourcemode = false;
                     18:     this._currently_editing = null;
                     19: 
                     20:     this.getSourceArea = function() {
                     21:         return getFromSelector(sourceareaid);
                     22:     }
                     23: 
                     24:     this.cancelSourceMode = function() {
                     25:         if (this._currently_editing) {
                     26:             this.switchSourceEdit(null, true);
                     27:         }
                     28:     }
                     29:     this.updateState = this.cancelSourceMode;
                     30: 
                     31:     this.initialize = function(editor) {
                     32:         /* attach the event handlers */
                     33:         this.editor = editor;
                     34:         this._fixTabIndex(this.sourceButton);
                     35:         addEventHandler(this.sourceButton, "click", this.switchSourceEdit, this);
                     36:         this.editor.logMessage(_('Source edit tool initialized'));
                     37:     };
                     38:  
                     39:     this.switchSourceEdit = function(event, nograb) {
                     40:         var kupu = this.editor;
                     41:         var docobj = this._currently_editing||kupu.getDocument();
                     42:         var editorframe = docobj.getEditable();
                     43:         var sourcearea = this.getSourceArea();
                     44:         var kupudoc = docobj.getDocument();
                     45:         var sourceClass = 'kupu-sourcemode';
                     46:     
                     47:         if (!this.sourcemode) {
                     48:             if (window.drawertool) {
                     49:                 window.drawertool.closeDrawer();
                     50:             }
                     51:             if (/on/i.test(kupudoc.designMode)) {
                     52:                 kupudoc.designMode = 'Off';
                     53:             };
                     54:             kupu._initialized = false;
                     55: 
                     56:             var data='';
                     57:             if(kupu.config.filtersourceedit) {
                     58:                 window.status = _('Cleaning up HTML...');
                     59:                 var transform = kupu._filterContent(kupu.getInnerDocument().documentElement);
                     60:                 data = kupu.getXMLBody(transform);
                     61:                 data = kupu._fixupSingletons(data).replace(/<\/?body[^>]*>/g, "");
                     62:                 window.status = '';
                     63:             } else {
                     64:                 data = kupu.getHTMLBody();
                     65:             }
                     66:             sourcearea.value = data;
                     67:             kupu.setClass(sourceClass);
                     68:             editorframe.style.display = 'none';
                     69:             sourcearea.style.display = 'block';
                     70:             if (!nograb) {
                     71:                 sourcearea.focus();
                     72:             };
                     73:             this._currently_editing = docobj;
                     74:           } else {
                     75:             kupu.setHTMLBody(sourcearea.value);
                     76:             kupu.clearClass(sourceClass);
                     77:             sourcearea.style.display = 'none';
                     78:             editorframe.style.display = 'block';
                     79:             if (/off/i.test(kupudoc.designMode)) {
                     80:                 kupudoc.designMode = 'On';
                     81:             };
                     82:             if (!nograb) {
                     83:                 docobj.getWindow().focus();
                     84:                 var selection = this.editor.getSelection();
                     85:                 selection.collapse();
                     86:             };
                     87: 
                     88:             kupu._initialized = true;
                     89:             this._currently_editing = null;
                     90:         };
                     91:         this.sourcemode = !this.sourcemode;
                     92:     };
                     93:     this.enable = function() {
                     94:         KupuButtonEnable(this.sourceButton);
                     95:     }
                     96:     this.disable = function() {
                     97:         KupuButtonDisable(this.sourceButton);
                     98:     }
                     99: };
                    100: 
                    101: SourceEditTool.prototype = new KupuTool;
                    102: 
                    103: function MultiSourceEditTool(sourcebuttonid, textareaprefix) {
                    104:     /* Source edit tool to edit document's html source */
                    105:     this.sourceButton = getFromSelector(sourcebuttonid);
                    106:     this.textareaprefix = textareaprefix;
                    107: 
                    108:     this.getSourceArea = function() {
                    109:         var docobj = this._currently_editing||kupu.getDocument();
                    110:         var sourceareaid = this.textareaprefix + docobj.getEditable().id;
                    111:         return getFromSelector(sourceareaid);
                    112:     }
                    113: 
                    114:     this._currently_editing = null;
                    115: 
                    116: };
                    117: 
                    118: MultiSourceEditTool.prototype = new SourceEditTool;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>