Annotation of kupuMPIWG/common/kupusourceedit.js, revision 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>