annotate rhodecode/public/js/yui/editor/editor-debug.js @ 677:469108c210f6 beta

Upgrade of Yui2, added selector rollup.
author Marcin Kuzminski <marcin@python-works.com>
date Thu, 11 Nov 2010 01:40:59 +0000
parents 1e757ac98988
children 289ff43cc190
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2 Copyright (c) 2009, Yahoo! Inc. All rights reserved.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3 Code licensed under the BSD License:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4 http://developer.yahoo.net/yui/license.txt
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5 version: 2.8.0r4
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7 (function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8 var Dom = YAHOO.util.Dom,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9 Event = YAHOO.util.Event,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
10 Lang = YAHOO.lang;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
11 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
12 * @module editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
13 * @description <p>Creates a rich custom Toolbar Button. Primarily used with the Rich Text Editor's Toolbar</p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
14 * @class ToolbarButtonAdvanced
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
15 * @namespace YAHOO.widget
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
16 * @requires yahoo, dom, element, event, container_core, menu, button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
17 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
18 * Provides a toolbar button based on the button and menu widgets.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
19 * @constructor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
20 * @class ToolbarButtonAdvanced
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
21 * @param {String/HTMLElement} el The element to turn into a button.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
22 * @param {Object} attrs Object liternal containing configuration parameters.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
23 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
24 if (YAHOO.widget.Button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
25 YAHOO.widget.ToolbarButtonAdvanced = YAHOO.widget.Button;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
26 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
27 * @property buttonType
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
28 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
29 * @description Tells if the Button is a Rich Button or a Simple Button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
30 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
31 YAHOO.widget.ToolbarButtonAdvanced.prototype.buttonType = 'rich';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
32 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
33 * @method checkValue
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
34 * @param {String} value The value of the option that we want to mark as selected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
35 * @description Select an option by value
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
36 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
37 YAHOO.widget.ToolbarButtonAdvanced.prototype.checkValue = function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
38 var _menuItems = this.getMenu().getItems();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
39 if (_menuItems.length === 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
40 this.getMenu()._onBeforeShow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
41 _menuItems = this.getMenu().getItems();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
42 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
43 for (var i = 0; i < _menuItems.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
44 _menuItems[i].cfg.setProperty('checked', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
45 if (_menuItems[i].value == value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
46 _menuItems[i].cfg.setProperty('checked', true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
47 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
48 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
49 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
50 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
51 YAHOO.widget.ToolbarButtonAdvanced = function() {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
52 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
53
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
54
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
55 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
56 * @description <p>Creates a basic custom Toolbar Button. Primarily used with the Rich Text Editor's Toolbar</p><p>Provides a toolbar button based on the button and menu widgets, &lt;select&gt; elements are used in place of menu's.</p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
57 * @class ToolbarButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
58 * @namespace YAHOO.widget
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
59 * @requires yahoo, dom, element, event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
60 * @extends YAHOO.util.Element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
61 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
62 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
63 * @constructor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
64 * @param {String/HTMLElement} el The element to turn into a button.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
65 * @param {Object} attrs Object liternal containing configuration parameters.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
66 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
67
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
68 YAHOO.widget.ToolbarButton = function(el, attrs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
69 YAHOO.log('ToolbarButton Initalizing', 'info', 'ToolbarButton');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
70 YAHOO.log(arguments.length + ' arguments passed to constructor', 'info', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
71
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
72 if (Lang.isObject(arguments[0]) && !Dom.get(el).nodeType) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
73 attrs = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
74 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
75 var local_attrs = (attrs || {});
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
76
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
77 var oConfig = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
78 element: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
79 attributes: local_attrs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
80 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
81
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
82 if (!oConfig.attributes.type) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
83 oConfig.attributes.type = 'push';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
84 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
85
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
86 oConfig.element = document.createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
87 oConfig.element.setAttribute('unselectable', 'on');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
88 oConfig.element.className = 'yui-button yui-' + oConfig.attributes.type + '-button';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
89 oConfig.element.innerHTML = '<span class="first-child"><a href="#">LABEL</a></span>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
90 oConfig.element.firstChild.firstChild.tabIndex = '-1';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
91 oConfig.attributes.id = (oConfig.attributes.id || Dom.generateId());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
92 oConfig.element.id = oConfig.attributes.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
93
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
94 YAHOO.widget.ToolbarButton.superclass.constructor.call(this, oConfig.element, oConfig.attributes);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
95 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
96
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
97 YAHOO.extend(YAHOO.widget.ToolbarButton, YAHOO.util.Element, {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
98 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
99 * @property buttonType
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
100 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
101 * @description Tells if the Button is a Rich Button or a Simple Button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
102 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
103 buttonType: 'normal',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
104 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
105 * @method _handleMouseOver
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
106 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
107 * @description Adds classes to the button elements on mouseover (hover)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
108 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
109 _handleMouseOver: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
110 if (!this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
111 this.addClass('yui-button-hover');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
112 this.addClass('yui-' + this.get('type') + '-button-hover');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
113 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
114 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
115 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
116 * @method _handleMouseOut
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
117 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
118 * @description Removes classes from the button elements on mouseout (hover)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
119 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
120 _handleMouseOut: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
121 this.removeClass('yui-button-hover');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
122 this.removeClass('yui-' + this.get('type') + '-button-hover');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
123 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
124 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
125 * @method checkValue
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
126 * @param {String} value The value of the option that we want to mark as selected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
127 * @description Select an option by value
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
128 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
129 checkValue: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
130 if (this.get('type') == 'menu') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
131 var opts = this._button.options;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
132 for (var i = 0; i < opts.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
133 if (opts[i].value == value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
134 opts.selectedIndex = i;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
135 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
136 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
137 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
138 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
139 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
140 * @method init
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
141 * @description The ToolbarButton class's initialization method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
142 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
143 init: function(p_oElement, p_oAttributes) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
144 YAHOO.widget.ToolbarButton.superclass.init.call(this, p_oElement, p_oAttributes);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
145
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
146 this.on('mouseover', this._handleMouseOver, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
147 this.on('mouseout', this._handleMouseOut, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
148 this.on('click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
149 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
150 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
151 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
152 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
153 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
154 * @method initAttributes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
155 * @description Initializes all of the configuration attributes used to create
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
156 * the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
157 * @param {Object} attr Object literal specifying a set of
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
158 * configuration attributes used to create the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
159 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
160 initAttributes: function(attr) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
161 YAHOO.widget.ToolbarButton.superclass.initAttributes.call(this, attr);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
162 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
163 * @attribute value
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
164 * @description The value of the button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
165 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
166 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
167 this.setAttributeConfig('value', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
168 value: attr.value
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
169 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
170 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
171 * @attribute menu
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
172 * @description The menu attribute, see YAHOO.widget.Button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
173 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
174 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
175 this.setAttributeConfig('menu', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
176 value: attr.menu || false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
177 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
178 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
179 * @attribute type
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
180 * @description The type of button to create: push, menu, color, select, spin
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
181 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
182 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
183 this.setAttributeConfig('type', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
184 value: attr.type,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
185 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
186 method: function(type) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
187 var el, opt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
188 if (!this._button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
189 this._button = this.get('element').getElementsByTagName('a')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
190 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
191 switch (type) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
192 case 'select':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
193 case 'menu':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
194 el = document.createElement('select');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
195 el.id = this.get('id');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
196 var menu = this.get('menu');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
197 for (var i = 0; i < menu.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
198 opt = document.createElement('option');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
199 opt.innerHTML = menu[i].text;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
200 opt.value = menu[i].value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
201 if (menu[i].checked) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
202 opt.selected = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
203 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
204 el.appendChild(opt);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
205 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
206 this._button.parentNode.replaceChild(el, this._button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
207 Event.on(el, 'change', this._handleSelect, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
208 this._button = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
209 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
210 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
211 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
212 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
213
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
214 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
215 * @attribute disabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
216 * @description Set the button into a disabled state
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
217 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
218 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
219 this.setAttributeConfig('disabled', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
220 value: attr.disabled || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
221 method: function(disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
222 if (disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
223 this.addClass('yui-button-disabled');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
224 this.addClass('yui-' + this.get('type') + '-button-disabled');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
225 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
226 this.removeClass('yui-button-disabled');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
227 this.removeClass('yui-' + this.get('type') + '-button-disabled');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
228 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
229 if ((this.get('type') == 'menu') || (this.get('type') == 'select')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
230 this._button.disabled = disabled;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
231 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
232 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
233 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
234
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
235 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
236 * @attribute label
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
237 * @description The text label for the button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
238 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
239 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
240 this.setAttributeConfig('label', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
241 value: attr.label,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
242 method: function(label) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
243 if (!this._button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
244 this._button = this.get('element').getElementsByTagName('a')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
245 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
246 if (this.get('type') == 'push') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
247 this._button.innerHTML = label;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
248 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
249 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
250 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
251
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
252 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
253 * @attribute title
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
254 * @description The title of the button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
255 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
256 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
257 this.setAttributeConfig('title', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
258 value: attr.title
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
259 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
260
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
261 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
262 * @config container
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
263 * @description The container that the button is rendered to, handled by Toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
264 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
265 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
266 this.setAttributeConfig('container', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
267 value: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
268 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
269 method: function(cont) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
270 this.appendTo(cont);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
271 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
272 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
273
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
274 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
275 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
276 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
277 * @method _handleSelect
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
278 * @description The event fired when a change event gets fired on a select element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
279 * @param {Event} ev The change event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
280 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
281 _handleSelect: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
282 var tar = Event.getTarget(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
283 var value = tar.options[tar.selectedIndex].value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
284 this.fireEvent('change', {type: 'change', value: value });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
285 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
286 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
287 * @method getMenu
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
288 * @description A stub function to mimic YAHOO.widget.Button's getMenu method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
289 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
290 getMenu: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
291 return this.get('menu');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
292 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
293 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
294 * @method destroy
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
295 * @description Destroy the button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
296 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
297 destroy: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
298 Event.purgeElement(this.get('element'), true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
299 this.get('element').parentNode.removeChild(this.get('element'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
300 //Brutal Object Destroy
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
301 for (var i in this) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
302 if (Lang.hasOwnProperty(this, i)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
303 this[i] = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
304 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
305 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
306 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
307 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
308 * @method fireEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
309 * @description Overridden fireEvent method to prevent DOM events from firing if the button is disabled.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
310 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
311 fireEvent: function(p_sType, p_aArgs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
312 // Disabled buttons should not respond to DOM events
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
313 if (this.DOM_EVENTS[p_sType] && this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
314 Event.stopEvent(p_aArgs);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
315 return;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
316 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
317
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
318 YAHOO.widget.ToolbarButton.superclass.fireEvent.call(this, p_sType, p_aArgs);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
319 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
320 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
321 * @method toString
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
322 * @description Returns a string representing the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
323 * @return {String}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
324 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
325 toString: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
326 return 'ToolbarButton (' + this.get('id') + ')';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
327 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
328
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
329 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
330 })();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
331 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
332 * @module editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
333 * @description <p>Creates a rich Toolbar widget based on Button. Primarily used with the Rich Text Editor</p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
334 * @namespace YAHOO.widget
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
335 * @requires yahoo, dom, element, event, toolbarbutton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
336 * @optional container_core, dragdrop
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
337 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
338 (function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
339 var Dom = YAHOO.util.Dom,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
340 Event = YAHOO.util.Event,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
341 Lang = YAHOO.lang;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
342
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
343 var getButton = function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
344 var button = id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
345 if (Lang.isString(id)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
346 button = this.getButtonById(id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
347 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
348 if (Lang.isNumber(id)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
349 button = this.getButtonByIndex(id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
350 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
351 if ((!(button instanceof YAHOO.widget.ToolbarButton)) && (!(button instanceof YAHOO.widget.ToolbarButtonAdvanced))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
352 button = this.getButtonByValue(id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
353 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
354 if ((button instanceof YAHOO.widget.ToolbarButton) || (button instanceof YAHOO.widget.ToolbarButtonAdvanced)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
355 return button;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
356 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
357 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
358 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
359
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
360 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
361 * Provides a rich toolbar widget based on the button and menu widgets
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
362 * @constructor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
363 * @class Toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
364 * @extends YAHOO.util.Element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
365 * @param {String/HTMLElement} el The element to turn into a toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
366 * @param {Object} attrs Object liternal containing configuration parameters.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
367 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
368 YAHOO.widget.Toolbar = function(el, attrs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
369 YAHOO.log('Toolbar Initalizing', 'info', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
370 YAHOO.log(arguments.length + ' arguments passed to constructor', 'info', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
371
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
372 if (Lang.isObject(arguments[0]) && !Dom.get(el).nodeType) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
373 attrs = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
374 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
375 var local_attrs = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
376 if (attrs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
377 Lang.augmentObject(local_attrs, attrs); //Break the config reference
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
378 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
379
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
380
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
381 var oConfig = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
382 element: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
383 attributes: local_attrs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
384 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
385
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
386
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
387 if (Lang.isString(el) && Dom.get(el)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
388 oConfig.element = Dom.get(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
389 } else if (Lang.isObject(el) && Dom.get(el) && Dom.get(el).nodeType) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
390 oConfig.element = Dom.get(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
391 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
392
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
393
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
394 if (!oConfig.element) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
395 YAHOO.log('No element defined, creating toolbar container', 'warn', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
396 oConfig.element = document.createElement('DIV');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
397 oConfig.element.id = Dom.generateId();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
398
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
399 if (local_attrs.container && Dom.get(local_attrs.container)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
400 YAHOO.log('Container found in config appending to it (' + Dom.get(local_attrs.container).id + ')', 'info', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
401 Dom.get(local_attrs.container).appendChild(oConfig.element);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
402 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
403 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
404
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
405
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
406 if (!oConfig.element.id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
407 oConfig.element.id = ((Lang.isString(el)) ? el : Dom.generateId());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
408 YAHOO.log('No element ID defined for toolbar container, creating..', 'warn', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
409 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
410 YAHOO.log('Initing toolbar with id: ' + oConfig.element.id, 'info', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
411
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
412 var fs = document.createElement('fieldset');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
413 var lg = document.createElement('legend');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
414 lg.innerHTML = 'Toolbar';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
415 fs.appendChild(lg);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
416
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
417 var cont = document.createElement('DIV');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
418 oConfig.attributes.cont = cont;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
419 Dom.addClass(cont, 'yui-toolbar-subcont');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
420 fs.appendChild(cont);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
421 oConfig.element.appendChild(fs);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
422
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
423 oConfig.element.tabIndex = -1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
424
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
425
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
426 oConfig.attributes.element = oConfig.element;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
427 oConfig.attributes.id = oConfig.element.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
428
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
429 this._configuredButtons = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
430
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
431 YAHOO.widget.Toolbar.superclass.constructor.call(this, oConfig.element, oConfig.attributes);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
432
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
433 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
434
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
435 YAHOO.extend(YAHOO.widget.Toolbar, YAHOO.util.Element, {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
436 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
437 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
438 * @property _configuredButtons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
439 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
440 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
441 _configuredButtons: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
442 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
443 * @method _addMenuClasses
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
444 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
445 * @description This method is called from Menu's renderEvent to add a few more classes to the menu items
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
446 * @param {String} ev The event that fired.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
447 * @param {Array} na Array of event information.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
448 * @param {Object} o Button config object.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
449 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
450 _addMenuClasses: function(ev, na, o) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
451 Dom.addClass(this.element, 'yui-toolbar-' + o.get('value') + '-menu');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
452 if (Dom.hasClass(o._button.parentNode.parentNode, 'yui-toolbar-select')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
453 Dom.addClass(this.element, 'yui-toolbar-select-menu');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
454 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
455 var items = this.getItems();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
456 for (var i = 0; i < items.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
457 Dom.addClass(items[i].element, 'yui-toolbar-' + o.get('value') + '-' + ((items[i].value) ? items[i].value.replace(/ /g, '-').toLowerCase() : items[i]._oText.nodeValue.replace(/ /g, '-').toLowerCase()));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
458 Dom.addClass(items[i].element, 'yui-toolbar-' + o.get('value') + '-' + ((items[i].value) ? items[i].value.replace(/ /g, '-') : items[i]._oText.nodeValue.replace(/ /g, '-')));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
459 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
460 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
461 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
462 * @property buttonType
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
463 * @description The default button to use
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
464 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
465 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
466 buttonType: YAHOO.widget.ToolbarButton,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
467 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
468 * @property dd
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
469 * @description The DragDrop instance associated with the Toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
470 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
471 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
472 dd: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
473 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
474 * @property _colorData
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
475 * @description Object reference containing colors hex and text values.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
476 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
477 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
478 _colorData: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
479 /* {{{ _colorData */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
480 '#111111': 'Obsidian',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
481 '#2D2D2D': 'Dark Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
482 '#434343': 'Shale',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
483 '#5B5B5B': 'Flint',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
484 '#737373': 'Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
485 '#8B8B8B': 'Concrete',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
486 '#A2A2A2': 'Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
487 '#B9B9B9': 'Titanium',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
488 '#000000': 'Black',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
489 '#D0D0D0': 'Light Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
490 '#E6E6E6': 'Silver',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
491 '#FFFFFF': 'White',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
492 '#BFBF00': 'Pumpkin',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
493 '#FFFF00': 'Yellow',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
494 '#FFFF40': 'Banana',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
495 '#FFFF80': 'Pale Yellow',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
496 '#FFFFBF': 'Butter',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
497 '#525330': 'Raw Siena',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
498 '#898A49': 'Mildew',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
499 '#AEA945': 'Olive',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
500 '#7F7F00': 'Paprika',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
501 '#C3BE71': 'Earth',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
502 '#E0DCAA': 'Khaki',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
503 '#FCFAE1': 'Cream',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
504 '#60BF00': 'Cactus',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
505 '#80FF00': 'Chartreuse',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
506 '#A0FF40': 'Green',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
507 '#C0FF80': 'Pale Lime',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
508 '#DFFFBF': 'Light Mint',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
509 '#3B5738': 'Green',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
510 '#668F5A': 'Lime Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
511 '#7F9757': 'Yellow',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
512 '#407F00': 'Clover',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
513 '#8A9B55': 'Pistachio',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
514 '#B7C296': 'Light Jade',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
515 '#E6EBD5': 'Breakwater',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
516 '#00BF00': 'Spring Frost',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
517 '#00FF80': 'Pastel Green',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
518 '#40FFA0': 'Light Emerald',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
519 '#80FFC0': 'Sea Foam',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
520 '#BFFFDF': 'Sea Mist',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
521 '#033D21': 'Dark Forrest',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
522 '#438059': 'Moss',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
523 '#7FA37C': 'Medium Green',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
524 '#007F40': 'Pine',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
525 '#8DAE94': 'Yellow Gray Green',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
526 '#ACC6B5': 'Aqua Lung',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
527 '#DDEBE2': 'Sea Vapor',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
528 '#00BFBF': 'Fog',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
529 '#00FFFF': 'Cyan',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
530 '#40FFFF': 'Turquoise Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
531 '#80FFFF': 'Light Aqua',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
532 '#BFFFFF': 'Pale Cyan',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
533 '#033D3D': 'Dark Teal',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
534 '#347D7E': 'Gray Turquoise',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
535 '#609A9F': 'Green Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
536 '#007F7F': 'Seaweed',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
537 '#96BDC4': 'Green Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
538 '#B5D1D7': 'Soapstone',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
539 '#E2F1F4': 'Light Turquoise',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
540 '#0060BF': 'Summer Sky',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
541 '#0080FF': 'Sky Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
542 '#40A0FF': 'Electric Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
543 '#80C0FF': 'Light Azure',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
544 '#BFDFFF': 'Ice Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
545 '#1B2C48': 'Navy',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
546 '#385376': 'Biscay',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
547 '#57708F': 'Dusty Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
548 '#00407F': 'Sea Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
549 '#7792AC': 'Sky Blue Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
550 '#A8BED1': 'Morning Sky',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
551 '#DEEBF6': 'Vapor',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
552 '#0000BF': 'Deep Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
553 '#0000FF': 'Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
554 '#4040FF': 'Cerulean Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
555 '#8080FF': 'Evening Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
556 '#BFBFFF': 'Light Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
557 '#212143': 'Deep Indigo',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
558 '#373E68': 'Sea Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
559 '#444F75': 'Night Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
560 '#00007F': 'Indigo Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
561 '#585E82': 'Dockside',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
562 '#8687A4': 'Blue Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
563 '#D2D1E1': 'Light Blue Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
564 '#6000BF': 'Neon Violet',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
565 '#8000FF': 'Blue Violet',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
566 '#A040FF': 'Violet Purple',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
567 '#C080FF': 'Violet Dusk',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
568 '#DFBFFF': 'Pale Lavender',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
569 '#302449': 'Cool Shale',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
570 '#54466F': 'Dark Indigo',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
571 '#655A7F': 'Dark Violet',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
572 '#40007F': 'Violet',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
573 '#726284': 'Smoky Violet',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
574 '#9E8FA9': 'Slate Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
575 '#DCD1DF': 'Violet White',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
576 '#BF00BF': 'Royal Violet',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
577 '#FF00FF': 'Fuchsia',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
578 '#FF40FF': 'Magenta',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
579 '#FF80FF': 'Orchid',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
580 '#FFBFFF': 'Pale Magenta',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
581 '#4A234A': 'Dark Purple',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
582 '#794A72': 'Medium Purple',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
583 '#936386': 'Cool Granite',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
584 '#7F007F': 'Purple',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
585 '#9D7292': 'Purple Moon',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
586 '#C0A0B6': 'Pale Purple',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
587 '#ECDAE5': 'Pink Cloud',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
588 '#BF005F': 'Hot Pink',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
589 '#FF007F': 'Deep Pink',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
590 '#FF409F': 'Grape',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
591 '#FF80BF': 'Electric Pink',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
592 '#FFBFDF': 'Pink',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
593 '#451528': 'Purple Red',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
594 '#823857': 'Purple Dino',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
595 '#A94A76': 'Purple Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
596 '#7F003F': 'Rose',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
597 '#BC6F95': 'Antique Mauve',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
598 '#D8A5BB': 'Cool Marble',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
599 '#F7DDE9': 'Pink Granite',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
600 '#C00000': 'Apple',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
601 '#FF0000': 'Fire Truck',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
602 '#FF4040': 'Pale Red',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
603 '#FF8080': 'Salmon',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
604 '#FFC0C0': 'Warm Pink',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
605 '#441415': 'Sepia',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
606 '#82393C': 'Rust',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
607 '#AA4D4E': 'Brick',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
608 '#800000': 'Brick Red',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
609 '#BC6E6E': 'Mauve',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
610 '#D8A3A4': 'Shrimp Pink',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
611 '#F8DDDD': 'Shell Pink',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
612 '#BF5F00': 'Dark Orange',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
613 '#FF7F00': 'Orange',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
614 '#FF9F40': 'Grapefruit',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
615 '#FFBF80': 'Canteloupe',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
616 '#FFDFBF': 'Wax',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
617 '#482C1B': 'Dark Brick',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
618 '#855A40': 'Dirt',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
619 '#B27C51': 'Tan',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
620 '#7F3F00': 'Nutmeg',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
621 '#C49B71': 'Mustard',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
622 '#E1C4A8': 'Pale Tan',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
623 '#FDEEE0': 'Marble'
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
624 /* }}} */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
625 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
626 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
627 * @property _colorPicker
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
628 * @description The HTML Element containing the colorPicker
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
629 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
630 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
631 _colorPicker: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
632 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
633 * @property STR_COLLAPSE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
634 * @description String for Toolbar Collapse Button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
635 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
636 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
637 STR_COLLAPSE: 'Collapse Toolbar',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
638 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
639 * @property STR_EXPAND
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
640 * @description String for Toolbar Collapse Button - Expand
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
641 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
642 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
643 STR_EXPAND: 'Expand Toolbar',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
644 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
645 * @property STR_SPIN_LABEL
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
646 * @description String for spinbutton dynamic label. Note the {VALUE} will be replaced with YAHOO.lang.substitute
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
647 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
648 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
649 STR_SPIN_LABEL: 'Spin Button with value {VALUE}. Use Control Shift Up Arrow and Control Shift Down arrow keys to increase or decrease the value.',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
650 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
651 * @property STR_SPIN_UP
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
652 * @description String for spinbutton up
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
653 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
654 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
655 STR_SPIN_UP: 'Click to increase the value of this input',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
656 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
657 * @property STR_SPIN_DOWN
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
658 * @description String for spinbutton down
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
659 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
660 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
661 STR_SPIN_DOWN: 'Click to decrease the value of this input',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
662 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
663 * @property _titlebar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
664 * @description Object reference to the titlebar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
665 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
666 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
667 _titlebar: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
668 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
669 * @property browser
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
670 * @description Standard browser detection
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
671 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
672 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
673 browser: YAHOO.env.ua,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
674 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
675 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
676 * @property _buttonList
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
677 * @description Internal property list of current buttons in the toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
678 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
679 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
680 _buttonList: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
681 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
682 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
683 * @property _buttonGroupList
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
684 * @description Internal property list of current button groups in the toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
685 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
686 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
687 _buttonGroupList: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
688 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
689 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
690 * @property _sep
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
691 * @description Internal reference to the separator HTML Element for cloning
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
692 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
693 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
694 _sep: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
695 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
696 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
697 * @property _sepCount
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
698 * @description Internal refernce for counting separators, so we can give them a useful class name for styling
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
699 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
700 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
701 _sepCount: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
702 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
703 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
704 * @property draghandle
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
705 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
706 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
707 _dragHandle: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
708 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
709 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
710 * @property _toolbarConfigs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
711 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
712 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
713 _toolbarConfigs: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
714 renderer: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
715 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
716 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
717 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
718 * @property CLASS_CONTAINER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
719 * @description Default CSS class to apply to the toolbar container element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
720 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
721 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
722 CLASS_CONTAINER: 'yui-toolbar-container',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
723 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
724 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
725 * @property CLASS_DRAGHANDLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
726 * @description Default CSS class to apply to the toolbar's drag handle element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
727 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
728 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
729 CLASS_DRAGHANDLE: 'yui-toolbar-draghandle',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
730 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
731 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
732 * @property CLASS_SEPARATOR
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
733 * @description Default CSS class to apply to all separators in the toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
734 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
735 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
736 CLASS_SEPARATOR: 'yui-toolbar-separator',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
737 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
738 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
739 * @property CLASS_DISABLED
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
740 * @description Default CSS class to apply when the toolbar is disabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
741 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
742 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
743 CLASS_DISABLED: 'yui-toolbar-disabled',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
744 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
745 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
746 * @property CLASS_PREFIX
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
747 * @description Default prefix for dynamically created class names
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
748 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
749 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
750 CLASS_PREFIX: 'yui-toolbar',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
751 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
752 * @method init
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
753 * @description The Toolbar class's initialization method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
754 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
755 init: function(p_oElement, p_oAttributes) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
756 YAHOO.widget.Toolbar.superclass.init.call(this, p_oElement, p_oAttributes);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
757 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
758 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
759 * @method initAttributes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
760 * @description Initializes all of the configuration attributes used to create
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
761 * the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
762 * @param {Object} attr Object literal specifying a set of
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
763 * configuration attributes used to create the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
764 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
765 initAttributes: function(attr) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
766 YAHOO.widget.Toolbar.superclass.initAttributes.call(this, attr);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
767 this.addClass(this.CLASS_CONTAINER);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
768
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
769 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
770 * @attribute buttonType
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
771 * @description The buttonType to use (advanced or basic)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
772 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
773 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
774 this.setAttributeConfig('buttonType', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
775 value: attr.buttonType || 'basic',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
776 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
777 validator: function(type) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
778 switch (type) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
779 case 'advanced':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
780 case 'basic':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
781 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
782 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
783 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
784 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
785 method: function(type) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
786 if (type == 'advanced') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
787 if (YAHOO.widget.Button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
788 this.buttonType = YAHOO.widget.ToolbarButtonAdvanced;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
789 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
790 YAHOO.log('Can not find YAHOO.widget.Button', 'error', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
791 this.buttonType = YAHOO.widget.ToolbarButton;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
792 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
793 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
794 this.buttonType = YAHOO.widget.ToolbarButton;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
795 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
796 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
797 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
798
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
799
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
800 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
801 * @attribute buttons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
802 * @description Object specifying the buttons to include in the toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
803 * Example:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
804 * <code><pre>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
805 * {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
806 * { id: 'b3', type: 'button', label: 'Underline', value: 'underline' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
807 * { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
808 * { id: 'b4', type: 'menu', label: 'Align', value: 'align',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
809 * menu: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
810 * { text: "Left", value: 'alignleft' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
811 * { text: "Center", value: 'aligncenter' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
812 * { text: "Right", value: 'alignright' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
813 * ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
814 * }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
815 * }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
816 * </pre></code>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
817 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
818 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
819
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
820 this.setAttributeConfig('buttons', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
821 value: [],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
822 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
823 method: function(data) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
824 var i, button, buttons, len, b;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
825 for (i in data) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
826 if (Lang.hasOwnProperty(data, i)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
827 if (data[i].type == 'separator') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
828 this.addSeparator();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
829 } else if (data[i].group !== undefined) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
830 buttons = this.addButtonGroup(data[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
831 if (buttons) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
832 len = buttons.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
833 for(b = 0; b < len; b++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
834 if (buttons[b]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
835 this._configuredButtons[this._configuredButtons.length] = buttons[b].id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
836 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
837 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
838 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
839
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
840 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
841 button = this.addButton(data[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
842 if (button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
843 this._configuredButtons[this._configuredButtons.length] = button.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
844 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
845 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
846 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
847 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
848 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
849 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
850
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
851 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
852 * @attribute disabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
853 * @description Boolean indicating if the toolbar should be disabled. It will also disable the draggable attribute if it is on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
854 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
855 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
856 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
857 this.setAttributeConfig('disabled', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
858 value: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
859 method: function(disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
860 if (this.get('disabled') === disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
861 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
862 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
863 if (disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
864 this.addClass(this.CLASS_DISABLED);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
865 this.set('draggable', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
866 this.disableAllButtons();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
867 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
868 this.removeClass(this.CLASS_DISABLED);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
869 if (this._configs.draggable._initialConfig.value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
870 //Draggable by default, set it back
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
871 this.set('draggable', true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
872 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
873 this.resetAllButtons();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
874 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
875 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
876 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
877
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
878 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
879 * @config cont
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
880 * @description The container for the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
881 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
882 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
883 this.setAttributeConfig('cont', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
884 value: attr.cont,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
885 readOnly: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
886 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
887
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
888
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
889 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
890 * @attribute grouplabels
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
891 * @description Boolean indicating if the toolbar should show the group label's text string.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
892 * @default true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
893 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
894 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
895 this.setAttributeConfig('grouplabels', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
896 value: ((attr.grouplabels === false) ? false : true),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
897 method: function(grouplabels) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
898 if (grouplabels) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
899 Dom.removeClass(this.get('cont'), (this.CLASS_PREFIX + '-nogrouplabels'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
900 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
901 Dom.addClass(this.get('cont'), (this.CLASS_PREFIX + '-nogrouplabels'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
902 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
903 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
904 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
905 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
906 * @attribute titlebar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
907 * @description Boolean indicating if the toolbar should have a titlebar. If
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
908 * passed a string, it will use that as the titlebar text
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
909 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
910 * @type Boolean or String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
911 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
912 this.setAttributeConfig('titlebar', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
913 value: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
914 method: function(titlebar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
915 if (titlebar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
916 if (this._titlebar && this._titlebar.parentNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
917 this._titlebar.parentNode.removeChild(this._titlebar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
918 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
919 this._titlebar = document.createElement('DIV');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
920 this._titlebar.tabIndex = '-1';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
921 Event.on(this._titlebar, 'focus', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
922 this._handleFocus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
923 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
924 Dom.addClass(this._titlebar, this.CLASS_PREFIX + '-titlebar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
925 if (Lang.isString(titlebar)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
926 var h2 = document.createElement('h2');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
927 h2.tabIndex = '-1';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
928 h2.innerHTML = '<a href="#" tabIndex="0">' + titlebar + '</a>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
929 this._titlebar.appendChild(h2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
930 Event.on(h2.firstChild, 'click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
931 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
932 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
933 Event.on([h2, h2.firstChild], 'focus', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
934 this._handleFocus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
935 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
936 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
937 if (this.get('firstChild')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
938 this.insertBefore(this._titlebar, this.get('firstChild'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
939 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
940 this.appendChild(this._titlebar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
941 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
942 if (this.get('collapse')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
943 this.set('collapse', true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
944 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
945 } else if (this._titlebar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
946 if (this._titlebar && this._titlebar.parentNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
947 this._titlebar.parentNode.removeChild(this._titlebar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
948 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
949 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
950 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
951 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
952
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
953
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
954 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
955 * @attribute collapse
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
956 * @description Boolean indicating if the the titlebar should have a collapse button.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
957 * The collapse button will not remove the toolbar, it will minimize it to the titlebar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
958 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
959 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
960 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
961 this.setAttributeConfig('collapse', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
962 value: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
963 method: function(collapse) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
964 if (this._titlebar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
965 var collapseEl = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
966 var el = Dom.getElementsByClassName('collapse', 'span', this._titlebar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
967 if (collapse) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
968 if (el.length > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
969 //There is already a collapse button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
970 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
971 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
972 collapseEl = document.createElement('SPAN');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
973 collapseEl.innerHTML = 'X';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
974 collapseEl.title = this.STR_COLLAPSE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
975
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
976 Dom.addClass(collapseEl, 'collapse');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
977 this._titlebar.appendChild(collapseEl);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
978 Event.addListener(collapseEl, 'click', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
979 if (Dom.hasClass(this.get('cont').parentNode, 'yui-toolbar-container-collapsed')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
980 this.collapse(false); //Expand Toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
981 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
982 this.collapse(); //Collapse Toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
983 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
984 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
985 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
986 collapseEl = Dom.getElementsByClassName('collapse', 'span', this._titlebar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
987 if (collapseEl[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
988 if (Dom.hasClass(this.get('cont').parentNode, 'yui-toolbar-container-collapsed')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
989 //We are closed, reopen the titlebar..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
990 this.collapse(false); //Expand Toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
991 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
992 collapseEl[0].parentNode.removeChild(collapseEl[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
993 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
994 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
995 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
996 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
997 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
998
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
999 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1000 * @attribute draggable
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1001 * @description Boolean indicating if the toolbar should be draggable.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1002 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1003 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1004 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1005
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1006 this.setAttributeConfig('draggable', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1007 value: (attr.draggable || false),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1008 method: function(draggable) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1009 if (draggable && !this.get('titlebar')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1010 YAHOO.log('Dragging enabled', 'info', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1011 if (!this._dragHandle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1012 this._dragHandle = document.createElement('SPAN');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1013 this._dragHandle.innerHTML = '|';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1014 this._dragHandle.setAttribute('title', 'Click to drag the toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1015 this._dragHandle.id = this.get('id') + '_draghandle';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1016 Dom.addClass(this._dragHandle, this.CLASS_DRAGHANDLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1017 if (this.get('cont').hasChildNodes()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1018 this.get('cont').insertBefore(this._dragHandle, this.get('cont').firstChild);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1019 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1020 this.get('cont').appendChild(this._dragHandle);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1021 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1022 this.dd = new YAHOO.util.DD(this.get('id'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1023 this.dd.setHandleElId(this._dragHandle.id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1024
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1025 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1026 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1027 YAHOO.log('Dragging disabled', 'info', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1028 if (this._dragHandle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1029 this._dragHandle.parentNode.removeChild(this._dragHandle);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1030 this._dragHandle = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1031 this.dd = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1032 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1033 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1034 if (this._titlebar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1035 if (draggable) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1036 this.dd = new YAHOO.util.DD(this.get('id'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1037 this.dd.setHandleElId(this._titlebar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1038 Dom.addClass(this._titlebar, 'draggable');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1039 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1040 Dom.removeClass(this._titlebar, 'draggable');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1041 if (this.dd) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1042 this.dd.unreg();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1043 this.dd = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1044 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1045 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1046 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1047 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1048 validator: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1049 var ret = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1050 if (!YAHOO.util.DD) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1051 ret = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1052 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1053 return ret;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1054 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1055 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1056
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1057 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1058 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1059 * @method addButtonGroup
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1060 * @description Add a new button group to the toolbar. (uses addButton)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1061 * @param {Object} oGroup Object literal reference to the Groups Config (contains an array of button configs as well as the group label)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1062 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1063 addButtonGroup: function(oGroup) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1064 if (!this.get('element')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1065 this._queue[this._queue.length] = ['addButtonGroup', arguments];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1066 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1067 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1068
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1069 if (!this.hasClass(this.CLASS_PREFIX + '-grouped')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1070 this.addClass(this.CLASS_PREFIX + '-grouped');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1071 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1072 var div = document.createElement('DIV');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1073 Dom.addClass(div, this.CLASS_PREFIX + '-group');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1074 Dom.addClass(div, this.CLASS_PREFIX + '-group-' + oGroup.group);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1075 if (oGroup.label) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1076 var label = document.createElement('h3');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1077 label.innerHTML = oGroup.label;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1078 div.appendChild(label);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1079 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1080 if (!this.get('grouplabels')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1081 Dom.addClass(this.get('cont'), this.CLASS_PREFIX, '-nogrouplabels');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1082 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1083
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1084 this.get('cont').appendChild(div);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1085
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1086 //For accessibility, let's put all of the group buttons in an Unordered List
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1087 var ul = document.createElement('ul');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1088 div.appendChild(ul);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1089
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1090 if (!this._buttonGroupList) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1091 this._buttonGroupList = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1092 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1093
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1094 this._buttonGroupList[oGroup.group] = ul;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1095
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1096 //An array of the button ids added to this group
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1097 //This is used for destruction later...
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1098 var addedButtons = [],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1099 button;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1100
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1101
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1102 for (var i = 0; i < oGroup.buttons.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1103 var li = document.createElement('li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1104 li.className = this.CLASS_PREFIX + '-groupitem';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1105 ul.appendChild(li);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1106 if ((oGroup.buttons[i].type !== undefined) && oGroup.buttons[i].type == 'separator') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1107 this.addSeparator(li);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1108 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1109 oGroup.buttons[i].container = li;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1110 button = this.addButton(oGroup.buttons[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1111 if (button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1112 addedButtons[addedButtons.length] = button.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1113 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1114 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1115 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1116 return addedButtons;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1117 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1118 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1119 * @method addButtonToGroup
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1120 * @description Add a new button to a toolbar group. Buttons supported:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1121 * push, split, menu, select, color, spin
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1122 * @param {Object} oButton Object literal reference to the Button's Config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1123 * @param {String} group The Group identifier passed into the initial config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1124 * @param {HTMLElement} after Optional HTML element to insert this button after in the DOM.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1125 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1126 addButtonToGroup: function(oButton, group, after) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1127 var groupCont = this._buttonGroupList[group],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1128 li = document.createElement('li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1129
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1130 li.className = this.CLASS_PREFIX + '-groupitem';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1131 oButton.container = li;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1132 this.addButton(oButton, after);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1133 groupCont.appendChild(li);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1134 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1135 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1136 * @method addButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1137 * @description Add a new button to the toolbar. Buttons supported:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1138 * push, split, menu, select, color, spin
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1139 * @param {Object} oButton Object literal reference to the Button's Config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1140 * @param {HTMLElement} after Optional HTML element to insert this button after in the DOM.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1141 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1142 addButton: function(oButton, after) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1143 if (!this.get('element')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1144 this._queue[this._queue.length] = ['addButton', arguments];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1145 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1146 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1147 if (!this._buttonList) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1148 this._buttonList = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1149 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1150 YAHOO.log('Adding button of type: ' + oButton.type, 'info', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1151 if (!oButton.container) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1152 oButton.container = this.get('cont');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1153 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1154
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1155 if ((oButton.type == 'menu') || (oButton.type == 'split') || (oButton.type == 'select')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1156 if (Lang.isArray(oButton.menu)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1157 for (var i in oButton.menu) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1158 if (Lang.hasOwnProperty(oButton.menu, i)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1159 var funcObject = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1160 fn: function(ev, x, oMenu) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1161 if (!oButton.menucmd) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1162 oButton.menucmd = oButton.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1163 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1164 oButton.value = ((oMenu.value) ? oMenu.value : oMenu._oText.nodeValue);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1165 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1166 scope: this
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1167 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1168 oButton.menu[i].onclick = funcObject;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1169 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1170 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1171 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1172 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1173 var _oButton = {}, skip = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1174 for (var o in oButton) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1175 if (Lang.hasOwnProperty(oButton, o)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1176 if (!this._toolbarConfigs[o]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1177 _oButton[o] = oButton[o];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1178 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1179 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1180 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1181 if (oButton.type == 'select') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1182 _oButton.type = 'menu';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1183 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1184 if (oButton.type == 'spin') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1185 _oButton.type = 'push';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1186 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1187 if (_oButton.type == 'color') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1188 if (YAHOO.widget.Overlay) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1189 _oButton = this._makeColorButton(_oButton);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1190 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1191 skip = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1192 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1193 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1194 if (_oButton.menu) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1195 if ((YAHOO.widget.Overlay) && (oButton.menu instanceof YAHOO.widget.Overlay)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1196 oButton.menu.showEvent.subscribe(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1197 this._button = _oButton;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1198 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1199 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1200 for (var m = 0; m < _oButton.menu.length; m++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1201 if (!_oButton.menu[m].value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1202 _oButton.menu[m].value = _oButton.menu[m].text;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1203 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1204 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1205 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1206 _oButton.focusmenu = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1207 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1208 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1209 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1210 if (skip) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1211 oButton = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1212 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1213 //Add to .get('buttons') manually
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1214 this._configs.buttons.value[this._configs.buttons.value.length] = oButton;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1215
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1216 var tmp = new this.buttonType(_oButton);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1217 tmp.get('element').tabIndex = '-1';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1218 tmp.get('element').setAttribute('role', 'button');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1219 tmp._selected = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1220
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1221 if (this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1222 //Toolbar is disabled, disable the new button too!
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1223 tmp.set('disabled', true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1224 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1225 if (!oButton.id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1226 oButton.id = tmp.get('id');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1227 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1228 YAHOO.log('Button created (' + oButton.type + ')', 'info', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1229
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1230 if (after) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1231 var el = tmp.get('element');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1232 var nextSib = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1233 if (after.get) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1234 nextSib = after.get('element').nextSibling;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1235 } else if (after.nextSibling) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1236 nextSib = after.nextSibling;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1237 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1238 if (nextSib) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1239 nextSib.parentNode.insertBefore(el, nextSib);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1240 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1241 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1242 tmp.addClass(this.CLASS_PREFIX + '-' + tmp.get('value'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1243
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1244 var icon = document.createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1245 icon.className = this.CLASS_PREFIX + '-icon';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1246 tmp.get('element').insertBefore(icon, tmp.get('firstChild'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1247 if (tmp._button.tagName.toLowerCase() == 'button') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1248 tmp.get('element').setAttribute('unselectable', 'on');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1249 //Replace the Button HTML Element with an a href if it exists
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1250 var a = document.createElement('a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1251 a.innerHTML = tmp._button.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1252 a.href = '#';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1253 a.tabIndex = '-1';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1254 Event.on(a, 'click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1255 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1256 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1257 tmp._button.parentNode.replaceChild(a, tmp._button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1258 tmp._button = a;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1259 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1260
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1261 if (oButton.type == 'select') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1262 if (tmp._button.tagName.toLowerCase() == 'select') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1263 icon.parentNode.removeChild(icon);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1264 var iel = tmp._button,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1265 parEl = tmp.get('element');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1266 parEl.parentNode.replaceChild(iel, parEl);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1267 //The 'element' value is currently the orphaned element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1268 //In order for "destroy" to execute we need to get('element') to reference the correct node.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1269 //I'm not sure if there is a direct approach to setting this value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1270 tmp._configs.element.value = iel;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1271 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1272 //Don't put a class on it if it's a real select element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1273 tmp.addClass(this.CLASS_PREFIX + '-select');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1274 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1275 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1276 if (oButton.type == 'spin') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1277 if (!Lang.isArray(oButton.range)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1278 oButton.range = [ 10, 100 ];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1279 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1280 this._makeSpinButton(tmp, oButton);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1281 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1282 tmp.get('element').setAttribute('title', tmp.get('label'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1283 if (oButton.type != 'spin') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1284 if ((YAHOO.widget.Overlay) && (_oButton.menu instanceof YAHOO.widget.Overlay)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1285 var showPicker = function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1286 var exec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1287 if (ev.keyCode && (ev.keyCode == 9)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1288 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1289 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1290 if (exec) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1291 if (this._colorPicker) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1292 this._colorPicker._button = oButton.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1293 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1294 var menuEL = tmp.getMenu().element;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1295 if (Dom.getStyle(menuEL, 'visibility') == 'hidden') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1296 tmp.getMenu().show();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1297 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1298 tmp.getMenu().hide();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1299 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1300 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1301 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1302 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1303 tmp.on('mousedown', showPicker, oButton, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1304 tmp.on('keydown', showPicker, oButton, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1305
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1306 } else if ((oButton.type != 'menu') && (oButton.type != 'select')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1307 tmp.on('keypress', this._buttonClick, oButton, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1308 tmp.on('mousedown', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1309 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1310 this._buttonClick(ev, oButton);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1311 }, oButton, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1312 tmp.on('click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1313 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1314 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1315 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1316 //Stop the mousedown event so we can trap the selection in the editor!
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1317 tmp.on('mousedown', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1318 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1319 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1320 tmp.on('click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1321 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1322 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1323 tmp.on('change', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1324 if (!ev.target) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1325 if (!oButton.menucmd) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1326 oButton.menucmd = oButton.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1327 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1328 oButton.value = ev.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1329 this._buttonClick(ev, oButton);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1330 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1331 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1332
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1333 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1334 //Hijack the mousedown event in the menu and make it fire a button click..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1335 tmp.on('appendTo', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1336 var tmp = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1337 if (tmp.getMenu() && tmp.getMenu().mouseDownEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1338 tmp.getMenu().mouseDownEvent.subscribe(function(ev, args) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1339 YAHOO.log('mouseDownEvent', 'warn', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1340 var oMenu = args[1];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1341 YAHOO.util.Event.stopEvent(args[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1342 tmp._onMenuClick(args[0], tmp);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1343 if (!oButton.menucmd) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1344 oButton.menucmd = oButton.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1345 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1346 oButton.value = ((oMenu.value) ? oMenu.value : oMenu._oText.nodeValue);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1347 self._buttonClick.call(self, args[1], oButton);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1348 tmp._hideMenu();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1349 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1350 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1351 tmp.getMenu().clickEvent.subscribe(function(ev, args) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1352 YAHOO.log('clickEvent', 'warn', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1353 YAHOO.util.Event.stopEvent(args[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1354 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1355 tmp.getMenu().mouseUpEvent.subscribe(function(ev, args) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1356 YAHOO.log('mouseUpEvent', 'warn', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1357 YAHOO.util.Event.stopEvent(args[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1358 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1359 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1360 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1361
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1362 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1363 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1364 //Stop the mousedown event so we can trap the selection in the editor!
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1365 tmp.on('mousedown', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1366 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1367 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1368 tmp.on('click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1369 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1370 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1371 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1372 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1373 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1374 //Add a couple of new events for IE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1375 tmp.DOM_EVENTS.focusin = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1376 tmp.DOM_EVENTS.focusout = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1377
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1378 //Stop them so we don't loose focus in the Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1379 tmp.on('focusin', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1380 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1381 }, oButton, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1382
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1383 tmp.on('focusout', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1384 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1385 }, oButton, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1386 tmp.on('click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1387 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1388 }, oButton, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1389 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1390 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1391 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1392 //This will keep the document from gaining focus and the editor from loosing it..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1393 //Forcefully remove the focus calls in button!
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1394 tmp.hasFocus = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1395 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1396 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1397 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1398 this._buttonList[this._buttonList.length] = tmp;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1399 if ((oButton.type == 'menu') || (oButton.type == 'split') || (oButton.type == 'select')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1400 if (Lang.isArray(oButton.menu)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1401 YAHOO.log('Button type is (' + oButton.type + '), doing extra renderer work.', 'info', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1402 var menu = tmp.getMenu();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1403 if (menu && menu.renderEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1404 menu.renderEvent.subscribe(this._addMenuClasses, tmp);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1405 if (oButton.renderer) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1406 menu.renderEvent.subscribe(oButton.renderer, tmp);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1407 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1408 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1409 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1410 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1411 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1412 return oButton;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1413 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1414 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1415 * @method addSeparator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1416 * @description Add a new button separator to the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1417 * @param {HTMLElement} cont Optional HTML element to insert this button into.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1418 * @param {HTMLElement} after Optional HTML element to insert this button after in the DOM.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1419 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1420 addSeparator: function(cont, after) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1421 if (!this.get('element')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1422 this._queue[this._queue.length] = ['addSeparator', arguments];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1423 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1424 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1425 var sepCont = ((cont) ? cont : this.get('cont'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1426 if (!this.get('element')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1427 this._queue[this._queue.length] = ['addSeparator', arguments];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1428 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1429 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1430 if (this._sepCount === null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1431 this._sepCount = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1432 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1433 if (!this._sep) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1434 YAHOO.log('Separator does not yet exist, creating', 'info', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1435 this._sep = document.createElement('SPAN');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1436 Dom.addClass(this._sep, this.CLASS_SEPARATOR);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1437 this._sep.innerHTML = '|';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1438 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1439 YAHOO.log('Separator does exist, cloning', 'info', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1440 var _sep = this._sep.cloneNode(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1441 this._sepCount++;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1442 Dom.addClass(_sep, this.CLASS_SEPARATOR + '-' + this._sepCount);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1443 if (after) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1444 var nextSib = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1445 if (after.get) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1446 nextSib = after.get('element').nextSibling;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1447 } else if (after.nextSibling) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1448 nextSib = after.nextSibling;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1449 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1450 nextSib = after;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1451 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1452 if (nextSib) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1453 if (nextSib == after) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1454 nextSib.parentNode.appendChild(_sep);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1455 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1456 nextSib.parentNode.insertBefore(_sep, nextSib);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1457 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1458 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1459 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1460 sepCont.appendChild(_sep);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1461 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1462 return _sep;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1463 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1464 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1465 * @method _createColorPicker
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1466 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1467 * @description Creates the core DOM reference to the color picker menu item.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1468 * @param {String} id the id of the toolbar to prefix this DOM container with.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1469 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1470 _createColorPicker: function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1471 if (Dom.get(id + '_colors')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1472 Dom.get(id + '_colors').parentNode.removeChild(Dom.get(id + '_colors'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1473 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1474 var picker = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1475 picker.className = 'yui-toolbar-colors';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1476 picker.id = id + '_colors';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1477 picker.style.display = 'none';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1478 Event.on(window, 'load', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1479 document.body.appendChild(picker);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1480 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1481
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1482 this._colorPicker = picker;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1483
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1484 var html = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1485 for (var i in this._colorData) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1486 if (Lang.hasOwnProperty(this._colorData, i)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1487 html += '<a style="background-color: ' + i + '" href="#">' + i.replace('#', '') + '</a>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1488 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1489 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1490 html += '<span><em>X</em><strong></strong></span>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1491 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1492 picker.innerHTML = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1493 }, 0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1494
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1495 Event.on(picker, 'mouseover', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1496 var picker = this._colorPicker;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1497 var em = picker.getElementsByTagName('em')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1498 var strong = picker.getElementsByTagName('strong')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1499 var tar = Event.getTarget(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1500 if (tar.tagName.toLowerCase() == 'a') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1501 em.style.backgroundColor = tar.style.backgroundColor;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1502 strong.innerHTML = this._colorData['#' + tar.innerHTML] + '<br>' + tar.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1503 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1504 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1505 Event.on(picker, 'focus', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1506 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1507 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1508 Event.on(picker, 'click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1509 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1510 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1511 Event.on(picker, 'mousedown', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1512 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1513 var tar = Event.getTarget(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1514 if (tar.tagName.toLowerCase() == 'a') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1515 var retVal = this.fireEvent('colorPickerClicked', { type: 'colorPickerClicked', target: this, button: this._colorPicker._button, color: tar.innerHTML, colorName: this._colorData['#' + tar.innerHTML] } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1516 if (retVal !== false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1517 var info = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1518 color: tar.innerHTML,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1519 colorName: this._colorData['#' + tar.innerHTML],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1520 value: this._colorPicker._button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1521 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1522
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1523 this.fireEvent('buttonClick', { type: 'buttonClick', target: this.get('element'), button: info });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1524 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1525 this.getButtonByValue(this._colorPicker._button).getMenu().hide();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1526 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1527 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1528 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1529 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1530 * @method _resetColorPicker
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1531 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1532 * @description Clears the currently selected color or mouseover color in the color picker.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1533 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1534 _resetColorPicker: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1535 var em = this._colorPicker.getElementsByTagName('em')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1536 var strong = this._colorPicker.getElementsByTagName('strong')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1537 em.style.backgroundColor = 'transparent';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1538 strong.innerHTML = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1539 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1540 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1541 * @method _makeColorButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1542 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1543 * @description Called to turn a "color" button into a menu button with an Overlay for the menu.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1544 * @param {Object} _oButton <a href="YAHOO.widget.ToolbarButton.html">YAHOO.widget.ToolbarButton</a> reference
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1545 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1546 _makeColorButton: function(_oButton) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1547 if (!this._colorPicker) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1548 this._createColorPicker(this.get('id'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1549 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1550 _oButton.type = 'color';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1551 _oButton.menu = new YAHOO.widget.Overlay(this.get('id') + '_' + _oButton.value + '_menu', { visible: false, position: 'absolute', iframe: true });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1552 _oButton.menu.setBody('');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1553 _oButton.menu.render(this.get('cont'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1554 Dom.addClass(_oButton.menu.element, 'yui-button-menu');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1555 Dom.addClass(_oButton.menu.element, 'yui-color-button-menu');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1556 _oButton.menu.beforeShowEvent.subscribe(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1557 _oButton.menu.cfg.setProperty('zindex', 5); //Re Adjust the overlays zIndex.. not sure why.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1558 _oButton.menu.cfg.setProperty('context', [this.getButtonById(_oButton.id).get('element'), 'tl', 'bl']); //Re Adjust the overlay.. not sure why.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1559 //Move the DOM reference of the color picker to the Overlay that we are about to show.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1560 this._resetColorPicker();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1561 var _p = this._colorPicker;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1562 if (_p.parentNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1563 _p.parentNode.removeChild(_p);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1564 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1565 _oButton.menu.setBody('');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1566 _oButton.menu.appendToBody(_p);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1567 this._colorPicker.style.display = 'block';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1568 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1569 return _oButton;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1570 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1571 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1572 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1573 * @method _makeSpinButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1574 * @description Create a button similar to an OS Spin button.. It has an up/down arrow combo to scroll through a range of int values.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1575 * @param {Object} _button <a href="YAHOO.widget.ToolbarButton.html">YAHOO.widget.ToolbarButton</a> reference
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1576 * @param {Object} oButton Object literal containing the buttons initial config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1577 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1578 _makeSpinButton: function(_button, oButton) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1579 _button.addClass(this.CLASS_PREFIX + '-spinbutton');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1580 var self = this,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1581 _par = _button._button.parentNode.parentNode, //parentNode of Button Element for appending child
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1582 range = oButton.range,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1583 _b1 = document.createElement('a'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1584 _b2 = document.createElement('a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1585 _b1.href = '#';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1586 _b2.href = '#';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1587 _b1.tabIndex = '-1';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1588 _b2.tabIndex = '-1';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1589
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1590 //Setup the up and down arrows
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1591 _b1.className = 'up';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1592 _b1.title = this.STR_SPIN_UP;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1593 _b1.innerHTML = this.STR_SPIN_UP;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1594 _b2.className = 'down';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1595 _b2.title = this.STR_SPIN_DOWN;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1596 _b2.innerHTML = this.STR_SPIN_DOWN;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1597
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1598 //Append them to the container
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1599 _par.appendChild(_b1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1600 _par.appendChild(_b2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1601
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1602 var label = YAHOO.lang.substitute(this.STR_SPIN_LABEL, { VALUE: _button.get('label') });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1603 _button.set('title', label);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1604
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1605 var cleanVal = function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1606 value = ((value < range[0]) ? range[0] : value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1607 value = ((value > range[1]) ? range[1] : value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1608 return value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1609 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1610
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1611 var br = this.browser;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1612 var tbar = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1613 var strLabel = this.STR_SPIN_LABEL;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1614 if (this._titlebar && this._titlebar.firstChild) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1615 tbar = this._titlebar.firstChild;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1616 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1617
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1618 var _intUp = function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1619 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1620 if (!_button.get('disabled') && (ev.keyCode != 9)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1621 var value = parseInt(_button.get('label'), 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1622 value++;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1623 value = cleanVal(value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1624 _button.set('label', ''+value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1625 var label = YAHOO.lang.substitute(strLabel, { VALUE: _button.get('label') });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1626 _button.set('title', label);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1627 if (!br.webkit && tbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1628 //tbar.focus(); //We do this for accessibility, on the re-focus of the element, a screen reader will re-read the title that was just changed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1629 //_button.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1630 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1631 self._buttonClick(ev, oButton);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1632 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1633 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1634
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1635 var _intDown = function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1636 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1637 if (!_button.get('disabled') && (ev.keyCode != 9)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1638 var value = parseInt(_button.get('label'), 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1639 value--;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1640 value = cleanVal(value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1641
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1642 _button.set('label', ''+value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1643 var label = YAHOO.lang.substitute(strLabel, { VALUE: _button.get('label') });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1644 _button.set('title', label);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1645 if (!br.webkit && tbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1646 //tbar.focus(); //We do this for accessibility, on the re-focus of the element, a screen reader will re-read the title that was just changed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1647 //_button.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1648 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1649 self._buttonClick(ev, oButton);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1650 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1651 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1652
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1653 var _intKeyUp = function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1654 if (ev.keyCode == 38) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1655 _intUp(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1656 } else if (ev.keyCode == 40) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1657 _intDown(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1658 } else if (ev.keyCode == 107 && ev.shiftKey) { //Plus Key
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1659 _intUp(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1660 } else if (ev.keyCode == 109 && ev.shiftKey) { //Minus Key
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1661 _intDown(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1662 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1663 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1664
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1665 //Handle arrow keys..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1666 _button.on('keydown', _intKeyUp, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1667
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1668 //Listen for the click on the up button and act on it
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1669 //Listen for the click on the down button and act on it
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1670 Event.on(_b1, 'mousedown',function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1671 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1672 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1673 Event.on(_b2, 'mousedown', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1674 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1675 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1676 Event.on(_b1, 'click', _intUp, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1677 Event.on(_b2, 'click', _intDown, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1678 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1679 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1680 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1681 * @method _buttonClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1682 * @description Click handler for all buttons in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1683 * @param {String} ev The event that was passed in.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1684 * @param {Object} info Object literal of information about the button that was clicked.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1685 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1686 _buttonClick: function(ev, info) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1687 var doEvent = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1688
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1689 if (ev && ev.type == 'keypress') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1690 if (ev.keyCode == 9) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1691 doEvent = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1692 } else if ((ev.keyCode === 13) || (ev.keyCode === 0) || (ev.keyCode === 32)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1693 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1694 doEvent = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1695 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1696 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1697
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1698 if (doEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1699 var fireNextEvent = true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1700 retValue = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1701
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1702 info.isSelected = this.isSelected(info.id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1703
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1704 if (info.value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1705 YAHOO.log('fireEvent::' + info.value + 'Click', 'info', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1706 retValue = this.fireEvent(info.value + 'Click', { type: info.value + 'Click', target: this.get('element'), button: info });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1707 if (retValue === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1708 fireNextEvent = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1709 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1710 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1711
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1712 if (info.menucmd && fireNextEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1713 YAHOO.log('fireEvent::' + info.menucmd + 'Click', 'info', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1714 retValue = this.fireEvent(info.menucmd + 'Click', { type: info.menucmd + 'Click', target: this.get('element'), button: info });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1715 if (retValue === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1716 fireNextEvent = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1717 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1718 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1719 if (fireNextEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1720 YAHOO.log('fireEvent::buttonClick', 'info', 'Toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1721 this.fireEvent('buttonClick', { type: 'buttonClick', target: this.get('element'), button: info });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1722 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1723
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1724 if (info.type == 'select') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1725 var button = this.getButtonById(info.id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1726 if (button.buttonType == 'rich') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1727 var txt = info.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1728 for (var i = 0; i < info.menu.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1729 if (info.menu[i].value == info.value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1730 txt = info.menu[i].text;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1731 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1732 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1733 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1734 button.set('label', '<span class="yui-toolbar-' + info.menucmd + '-' + (info.value).replace(/ /g, '-').toLowerCase() + '">' + txt + '</span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1735 var _items = button.getMenu().getItems();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1736 for (var m = 0; m < _items.length; m++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1737 if (_items[m].value.toLowerCase() == info.value.toLowerCase()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1738 _items[m].cfg.setProperty('checked', true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1739 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1740 _items[m].cfg.setProperty('checked', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1741 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1742 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1743 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1744 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1745 if (ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1746 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1747 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1748 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1749 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1750 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1751 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1752 * @property _keyNav
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1753 * @description Flag to determine if the arrow nav listeners have been attached
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1754 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1755 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1756 _keyNav: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1757 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1758 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1759 * @property _navCounter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1760 * @description Internal counter for walking the buttons in the toolbar with the arrow keys
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1761 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1762 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1763 _navCounter: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1764 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1765 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1766 * @method _navigateButtons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1767 * @description Handles the navigation/focus of toolbar buttons with the Arrow Keys
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1768 * @param {Event} ev The Key Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1769 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1770 _navigateButtons: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1771 switch (ev.keyCode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1772 case 37:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1773 case 39:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1774 if (ev.keyCode == 37) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1775 this._navCounter--;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1776 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1777 this._navCounter++;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1778 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1779 if (this._navCounter > (this._buttonList.length - 1)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1780 this._navCounter = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1781 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1782 if (this._navCounter < 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1783 this._navCounter = (this._buttonList.length - 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1784 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1785 if (this._buttonList[this._navCounter]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1786 var el = this._buttonList[this._navCounter].get('element');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1787 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1788 el = this._buttonList[this._navCounter].get('element').getElementsByTagName('a')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1789 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1790 if (this._buttonList[this._navCounter].get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1791 this._navigateButtons(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1792 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1793 el.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1794 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1795 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1796 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1797 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1798 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1799 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1800 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1801 * @method _handleFocus
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1802 * @description Sets up the listeners for the arrow key navigation
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1803 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1804 _handleFocus: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1805 if (!this._keyNav) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1806 var ev = 'keypress';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1807 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1808 ev = 'keydown';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1809 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1810 Event.on(this.get('element'), ev, this._navigateButtons, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1811 this._keyNav = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1812 this._navCounter = -1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1813 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1814 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1815 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1816 * @method getButtonById
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1817 * @description Gets a button instance from the toolbar by is Dom id.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1818 * @param {String} id The Dom id to query for.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1819 * @return {<a href="YAHOO.widget.ToolbarButton.html">YAHOO.widget.ToolbarButton</a>}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1820 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1821 getButtonById: function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1822 var len = this._buttonList.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1823 for (var i = 0; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1824 if (this._buttonList[i] && this._buttonList[i].get('id') == id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1825 return this._buttonList[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1826 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1827 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1828 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1829 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1830 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1831 * @method getButtonByValue
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1832 * @description Gets a button instance or a menuitem instance from the toolbar by it's value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1833 * @param {String} value The button value to query for.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1834 * @return {<a href="YAHOO.widget.ToolbarButton.html">YAHOO.widget.ToolbarButton</a> or <a href="YAHOO.widget.MenuItem.html">YAHOO.widget.MenuItem</a>}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1835 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1836 getButtonByValue: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1837 var _buttons = this.get('buttons');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1838 if (!_buttons) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1839 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1840 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1841 var len = _buttons.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1842 for (var i = 0; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1843 if (_buttons[i].group !== undefined) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1844 for (var m = 0; m < _buttons[i].buttons.length; m++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1845 if ((_buttons[i].buttons[m].value == value) || (_buttons[i].buttons[m].menucmd == value)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1846 return this.getButtonById(_buttons[i].buttons[m].id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1847 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1848 if (_buttons[i].buttons[m].menu) { //Menu Button, loop through the values
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1849 for (var s = 0; s < _buttons[i].buttons[m].menu.length; s++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1850 if (_buttons[i].buttons[m].menu[s].value == value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1851 return this.getButtonById(_buttons[i].buttons[m].id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1852 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1853 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1854 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1855 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1856 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1857 if ((_buttons[i].value == value) || (_buttons[i].menucmd == value)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1858 return this.getButtonById(_buttons[i].id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1859 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1860 if (_buttons[i].menu) { //Menu Button, loop through the values
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1861 for (var j = 0; j < _buttons[i].menu.length; j++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1862 if (_buttons[i].menu[j].value == value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1863 return this.getButtonById(_buttons[i].id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1864 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1865 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1866 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1867 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1868 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1869 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1870 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1871 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1872 * @method getButtonByIndex
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1873 * @description Gets a button instance from the toolbar by is index in _buttonList.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1874 * @param {Number} index The index of the button in _buttonList.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1875 * @return {<a href="YAHOO.widget.ToolbarButton.html">YAHOO.widget.ToolbarButton</a>}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1876 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1877 getButtonByIndex: function(index) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1878 if (this._buttonList[index]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1879 return this._buttonList[index];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1880 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1881 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1882 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1883 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1884 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1885 * @method getButtons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1886 * @description Returns an array of buttons in the current toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1887 * @return {Array}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1888 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1889 getButtons: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1890 return this._buttonList;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1891 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1892 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1893 * @method disableButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1894 * @description Disables a button in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1895 * @param {String/Number} id Disable a button by it's id, index or value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1896 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1897 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1898 disableButton: function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1899 var button = getButton.call(this, id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1900 if (button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1901 button.set('disabled', true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1902 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1903 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1904 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1905 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1906 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1907 * @method enableButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1908 * @description Enables a button in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1909 * @param {String/Number} id Enable a button by it's id, index or value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1910 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1911 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1912 enableButton: function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1913 if (this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1914 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1915 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1916 var button = getButton.call(this, id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1917 if (button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1918 if (button.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1919 button.set('disabled', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1920 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1921 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1922 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1923 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1924 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1925 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1926 * @method isSelected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1927 * @description Tells if a button is selected or not.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1928 * @param {String/Number} id A button by it's id, index or value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1929 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1930 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1931 isSelected: function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1932 var button = getButton.call(this, id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1933 if (button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1934 return button._selected;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1935 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1936 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1937 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1938 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1939 * @method selectButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1940 * @description Selects a button in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1941 * @param {String/Number} id Select a button by it's id, index or value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1942 * @param {String} value If this is a Menu Button, check this item in the menu
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1943 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1944 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1945 selectButton: function(id, value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1946 var button = getButton.call(this, id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1947 if (button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1948 button.addClass('yui-button-selected');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1949 button.addClass('yui-button-' + button.get('value') + '-selected');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1950 button._selected = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1951 if (value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1952 if (button.buttonType == 'rich') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1953 var _items = button.getMenu().getItems();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1954 for (var m = 0; m < _items.length; m++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1955 if (_items[m].value == value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1956 _items[m].cfg.setProperty('checked', true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1957 button.set('label', '<span class="yui-toolbar-' + button.get('value') + '-' + (value).replace(/ /g, '-').toLowerCase() + '">' + _items[m]._oText.nodeValue + '</span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1958 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1959 _items[m].cfg.setProperty('checked', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1960 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1961 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1962 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1963 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1964 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1965 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1966 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1967 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1968 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1969 * @method deselectButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1970 * @description Deselects a button in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1971 * @param {String/Number} id Deselect a button by it's id, index or value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1972 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1973 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1974 deselectButton: function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1975 var button = getButton.call(this, id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1976 if (button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1977 button.removeClass('yui-button-selected');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1978 button.removeClass('yui-button-' + button.get('value') + '-selected');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1979 button.removeClass('yui-button-hover');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1980 button._selected = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1981 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1982 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1983 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1984 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1985 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1986 * @method deselectAllButtons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1987 * @description Deselects all buttons in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1988 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1989 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1990 deselectAllButtons: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1991 var len = this._buttonList.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1992 for (var i = 0; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1993 this.deselectButton(this._buttonList[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1994 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1995 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1996 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1997 * @method disableAllButtons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1998 * @description Disables all buttons in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1999 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2000 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2001 disableAllButtons: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2002 if (this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2003 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2004 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2005 var len = this._buttonList.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2006 for (var i = 0; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2007 this.disableButton(this._buttonList[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2008 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2009 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2010 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2011 * @method enableAllButtons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2012 * @description Enables all buttons in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2013 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2014 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2015 enableAllButtons: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2016 if (this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2017 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2018 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2019 var len = this._buttonList.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2020 for (var i = 0; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2021 this.enableButton(this._buttonList[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2022 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2023 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2024 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2025 * @method resetAllButtons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2026 * @description Resets all buttons to their initial state.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2027 * @param {Object} _ex Except these buttons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2028 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2029 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2030 resetAllButtons: function(_ex) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2031 if (!Lang.isObject(_ex)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2032 _ex = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2033 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2034 if (this.get('disabled') || !this._buttonList) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2035 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2036 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2037 var len = this._buttonList.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2038 for (var i = 0; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2039 var _button = this._buttonList[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2040 if (_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2041 var disabled = _button._configs.disabled._initialConfig.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2042 if (_ex[_button.get('id')]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2043 this.enableButton(_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2044 this.selectButton(_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2045 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2046 if (disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2047 this.disableButton(_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2048 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2049 this.enableButton(_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2050 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2051 this.deselectButton(_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2052 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2053 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2054 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2055 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2056 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2057 * @method destroyButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2058 * @description Destroy a button in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2059 * @param {String/Number} id Destroy a button by it's id or index.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2060 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2061 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2062 destroyButton: function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2063 var button = getButton.call(this, id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2064 if (button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2065 var thisID = button.get('id'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2066 new_list = [], i = 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2067 len = this._buttonList.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2068
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2069 button.destroy();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2070
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2071 for (i = 0; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2072 if (this._buttonList[i].get('id') != thisID) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2073 new_list[new_list.length]= this._buttonList[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2074 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2075 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2076
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2077 this._buttonList = new_list;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2078 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2079 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2080 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2081 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2082 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2083 * @method destroy
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2084 * @description Destroys the toolbar, all of it's elements and objects.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2085 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2086 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2087 destroy: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2088 var len = this._configuredButtons.length, j, i;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2089 for(b = 0; b < len; b++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2090 this.destroyButton(this._configuredButtons[b]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2091 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2092
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2093 this._configuredButtons = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2094
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2095 this.get('element').innerHTML = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2096 this.get('element').className = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2097 //Brutal Object Destroy
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2098 for (i in this) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2099 if (Lang.hasOwnProperty(this, i)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2100 this[i] = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2101 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2102 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2103 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2104 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2105 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2106 * @method collapse
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2107 * @description Programatically collapse the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2108 * @param {Boolean} collapse True to collapse, false to expand.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2109 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2110 collapse: function(collapse) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2111 var el = Dom.getElementsByClassName('collapse', 'span', this._titlebar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2112 if (collapse === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2113 Dom.removeClass(this.get('cont').parentNode, 'yui-toolbar-container-collapsed');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2114 if (el[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2115 Dom.removeClass(el[0], 'collapsed');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2116 el[0].title = this.STR_COLLAPSE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2117 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2118 this.fireEvent('toolbarExpanded', { type: 'toolbarExpanded', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2119 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2120 if (el[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2121 Dom.addClass(el[0], 'collapsed');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2122 el[0].title = this.STR_EXPAND;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2123 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2124 Dom.addClass(this.get('cont').parentNode, 'yui-toolbar-container-collapsed');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2125 this.fireEvent('toolbarCollapsed', { type: 'toolbarCollapsed', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2126 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2127 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2128 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2129 * @method toString
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2130 * @description Returns a string representing the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2131 * @return {String}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2132 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2133 toString: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2134 return 'Toolbar (#' + this.get('element').id + ') with ' + this._buttonList.length + ' buttons.';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2135 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2136 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2137 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2138 * @event buttonClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2139 * @param {Object} o The object passed to this handler is the button config used to create the button.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2140 * @description Fires when any botton receives a click event. Passes back a single object representing the buttons config object. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2141 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2142 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2143 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2144 * @event valueClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2145 * @param {Object} o The object passed to this handler is the button config used to create the button.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2146 * @description This is a special dynamic event that is created and dispatched based on the value property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2147 * of the button config. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2148 * Example:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2149 * <code><pre>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2150 * buttons : [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2151 * { type: 'button', value: 'test', value: 'testButton' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2152 * ]</pre>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2153 * </code>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2154 * With the valueClick event you could subscribe to this buttons click event with this:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2155 * tbar.in('testButtonClick', function() { alert('test button clicked'); })
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2156 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2157 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2158 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2159 * @event toolbarExpanded
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2160 * @description Fires when the toolbar is expanded via the collapse button. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2161 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2162 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2163 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2164 * @event toolbarCollapsed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2165 * @description Fires when the toolbar is collapsed via the collapse button. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2166 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2167 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2168 })();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2169 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2170 * @module editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2171 * @description <p>The Rich Text Editor is a UI control that replaces a standard HTML textarea; it allows for the rich formatting of text content, including common structural treatments like lists, formatting treatments like bold and italic text, and drag-and-drop inclusion and sizing of images. The Rich Text Editor's toolbar is extensible via a plugin architecture so that advanced implementations can achieve a high degree of customization.</p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2172 * @namespace YAHOO.widget
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2173 * @requires yahoo, dom, element, event, toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2174 * @optional animation, container_core, resize, dragdrop
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2175 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2176
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2177 (function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2178 var Dom = YAHOO.util.Dom,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2179 Event = YAHOO.util.Event,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2180 Lang = YAHOO.lang,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2181 Toolbar = YAHOO.widget.Toolbar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2182
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2183 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2184 * The Rich Text Editor is a UI control that replaces a standard HTML textarea; it allows for the rich formatting of text content, including common structural treatments like lists, formatting treatments like bold and italic text, and drag-and-drop inclusion and sizing of images. The Rich Text Editor's toolbar is extensible via a plugin architecture so that advanced implementations can achieve a high degree of customization.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2185 * @constructor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2186 * @class SimpleEditor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2187 * @extends YAHOO.util.Element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2188 * @param {String/HTMLElement} el The textarea element to turn into an editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2189 * @param {Object} attrs Object liternal containing configuration parameters.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2190 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2191
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2192 YAHOO.widget.SimpleEditor = function(el, attrs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2193 YAHOO.log('SimpleEditor Initalizing', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2194
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2195 var o = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2196 if (Lang.isObject(el) && (!el.tagName) && !attrs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2197 Lang.augmentObject(o, el); //Break the config reference
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2198 el = document.createElement('textarea');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2199 this.DOMReady = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2200 if (o.container) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2201 var c = Dom.get(o.container);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2202 c.appendChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2203 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2204 document.body.appendChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2205 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2206 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2207 if (attrs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2208 Lang.augmentObject(o, attrs); //Break the config reference
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2209 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2210 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2211
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2212 var oConfig = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2213 element: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2214 attributes: o
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2215 }, id = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2216
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2217 if (Lang.isString(el)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2218 id = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2219 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2220 if (oConfig.attributes.id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2221 id = oConfig.attributes.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2222 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2223 this.DOMReady = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2224 id = Dom.generateId(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2225 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2226 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2227 oConfig.element = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2228
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2229 var element_cont = document.createElement('DIV');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2230 oConfig.attributes.element_cont = new YAHOO.util.Element(element_cont, {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2231 id: id + '_container'
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2232 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2233 var div = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2234 Dom.addClass(div, 'first-child');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2235 oConfig.attributes.element_cont.appendChild(div);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2236
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2237 if (!oConfig.attributes.toolbar_cont) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2238 oConfig.attributes.toolbar_cont = document.createElement('DIV');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2239 oConfig.attributes.toolbar_cont.id = id + '_toolbar';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2240 div.appendChild(oConfig.attributes.toolbar_cont);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2241 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2242 var editorWrapper = document.createElement('DIV');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2243 div.appendChild(editorWrapper);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2244 oConfig.attributes.editor_wrapper = editorWrapper;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2245
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2246 YAHOO.widget.SimpleEditor.superclass.constructor.call(this, oConfig.element, oConfig.attributes);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2247 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2248
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2249
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2250 YAHOO.extend(YAHOO.widget.SimpleEditor, YAHOO.util.Element, {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2251 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2252 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2253 * @property _resizeConfig
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2254 * @description The default config for the Resize Utility
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2255 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2256 _resizeConfig: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2257 handles: ['br'],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2258 autoRatio: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2259 status: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2260 proxy: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2261 useShim: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2262 setSize: false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2263 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2264 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2265 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2266 * @method _setupResize
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2267 * @description Creates the Resize instance and binds its events.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2268 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2269 _setupResize: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2270 if (!YAHOO.util.DD || !YAHOO.util.Resize) { return false; }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2271 if (this.get('resize')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2272 var config = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2273 Lang.augmentObject(config, this._resizeConfig); //Break the config reference
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2274 this.resize = new YAHOO.util.Resize(this.get('element_cont').get('element'), config);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2275 this.resize.on('resize', function(args) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2276 var anim = this.get('animate');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2277 this.set('animate', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2278 this.set('width', args.width + 'px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2279 var h = args.height,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2280 th = (this.toolbar.get('element').clientHeight + 2),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2281 dh = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2282 if (this.dompath) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2283 dh = (this.dompath.clientHeight + 1); //It has a 1px top border..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2284 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2285 var newH = (h - th - dh);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2286 this.set('height', newH + 'px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2287 this.get('element_cont').setStyle('height', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2288 this.set('animate', anim);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2289 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2290 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2291 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2292 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2293 * @property resize
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2294 * @description A reference to the Resize object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2295 * @type YAHOO.util.Resize
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2296 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2297 resize: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2298 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2299 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2300 * @method _setupDD
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2301 * @description Sets up the DD instance used from the 'drag' config option.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2302 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2303 _setupDD: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2304 if (!YAHOO.util.DD) { return false; }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2305 if (this.get('drag')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2306 YAHOO.log('Attaching DD instance to Editor', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2307 var d = this.get('drag'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2308 dd = YAHOO.util.DD;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2309 if (d === 'proxy') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2310 dd = YAHOO.util.DDProxy;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2311 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2312
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2313 this.dd = new dd(this.get('element_cont').get('element'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2314 this.toolbar.addClass('draggable');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2315 this.dd.setHandleElId(this.toolbar._titlebar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2316 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2317 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2318 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2319 * @property dd
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2320 * @description A reference to the DragDrop object.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2321 * @type YAHOO.util.DD/YAHOO.util.DDProxy
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2322 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2323 dd: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2324 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2325 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2326 * @property _lastCommand
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2327 * @description A cache of the last execCommand (used for Undo/Redo so they don't mark an undo level)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2328 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2329 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2330 _lastCommand: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2331 _undoNodeChange: function() {},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2332 _storeUndo: function() {},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2333 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2334 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2335 * @method _checkKey
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2336 * @description Checks a keyMap entry against a key event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2337 * @param {Object} k The _keyMap object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2338 * @param {Event} e The Mouse Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2339 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2340 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2341 _checkKey: function(k, e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2342 var ret = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2343 if ((e.keyCode === k.key)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2344 if (k.mods && (k.mods.length > 0)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2345 var val = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2346 for (var i = 0; i < k.mods.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2347 if (this.browser.mac) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2348 if (k.mods[i] == 'ctrl') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2349 k.mods[i] = 'meta';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2350 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2351 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2352 if (e[k.mods[i] + 'Key'] === true) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2353 val++;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2354 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2355 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2356 if (val === k.mods.length) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2357 ret = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2358 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2359 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2360 ret = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2361 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2362 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2363 //YAHOO.log('Shortcut Key Check: (' + k.key + ') return: ' + ret, 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2364 return ret;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2365 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2366 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2367 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2368 * @property _keyMap
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2369 * @description Named key maps for various actions in the Editor. Example: <code>CLOSE_WINDOW: { key: 87, mods: ['shift', 'ctrl'] }</code>.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2370 * This entry shows that when key 87 (W) is found with the modifiers of shift and control, the window will close. You can customize this object to tweak keyboard shortcuts.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2371 * @type {Object/Mixed}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2372 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2373 _keyMap: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2374 SELECT_ALL: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2375 key: 65, //A key
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2376 mods: ['ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2377 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2378 CLOSE_WINDOW: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2379 key: 87, //W key
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2380 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2381 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2382 FOCUS_TOOLBAR: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2383 key: 27,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2384 mods: ['shift']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2385 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2386 FOCUS_AFTER: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2387 key: 27
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2388 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2389 FONT_SIZE_UP: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2390 key: 38,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2391 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2392 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2393 FONT_SIZE_DOWN: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2394 key: 40,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2395 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2396 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2397 CREATE_LINK: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2398 key: 76,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2399 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2400 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2401 BOLD: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2402 key: 66,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2403 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2404 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2405 ITALIC: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2406 key: 73,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2407 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2408 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2409 UNDERLINE: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2410 key: 85,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2411 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2412 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2413 UNDO: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2414 key: 90,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2415 mods: ['ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2416 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2417 REDO: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2418 key: 90,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2419 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2420 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2421 JUSTIFY_LEFT: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2422 key: 219,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2423 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2424 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2425 JUSTIFY_CENTER: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2426 key: 220,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2427 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2428 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2429 JUSTIFY_RIGHT: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2430 key: 221,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2431 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2432 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2433 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2434 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2435 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2436 * @method _cleanClassName
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2437 * @description Makes a useable classname from dynamic data, by dropping it to lowercase and replacing spaces with -'s.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2438 * @param {String} str The classname to clean up
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2439 * @return {String}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2440 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2441 _cleanClassName: function(str) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2442 return str.replace(/ /g, '-').toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2443 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2444 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2445 * @property _textarea
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2446 * @description Flag to determine if we are using a textarea or an HTML Node.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2447 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2448 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2449 _textarea: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2450 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2451 * @property _docType
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2452 * @description The DOCTYPE to use in the editable container.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2453 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2454 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2455 _docType: '<!DOCTYPE HTML PUBLIC "-/'+'/W3C/'+'/DTD HTML 4.01/'+'/EN" "http:/'+'/www.w3.org/TR/html4/strict.dtd">',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2456 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2457 * @property editorDirty
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2458 * @description This flag will be set when certain things in the Editor happen. It is to be used by the developer to check to see if content has changed.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2459 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2460 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2461 editorDirty: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2462 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2463 * @property _defaultCSS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2464 * @description The default CSS used in the config for 'css'. This way you can add to the config like this: { css: YAHOO.widget.SimpleEditor.prototype._defaultCSS + 'ADD MYY CSS HERE' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2465 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2466 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2467 _defaultCSS: 'html { height: 95%; } body { padding: 7px; background-color: #fff; font: 13px/1.22 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small; } a, a:visited, a:hover { color: blue !important; text-decoration: underline !important; cursor: text !important; } .warning-localfile { border-bottom: 1px dashed red !important; } .yui-busy { cursor: wait !important; } img.selected { border: 2px dotted #808080; } img { cursor: pointer !important; border: none; } body.ptags.webkit div.yui-wk-p { margin: 11px 0; } body.ptags.webkit div.yui-wk-div { margin: 0; }',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2468 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2469 * @property _defaultToolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2470 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2471 * @description Default toolbar config.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2472 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2473 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2474 _defaultToolbar: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2475 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2476 * @property _lastButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2477 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2478 * @description The last button pressed, so we don't disable it.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2479 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2480 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2481 _lastButton: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2482 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2483 * @property _baseHREF
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2484 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2485 * @description The base location of the editable page (this page) so that relative paths for image work.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2486 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2487 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2488 _baseHREF: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2489 var href = document.location.href;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2490 if (href.indexOf('?') !== -1) { //Remove the query string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2491 href = href.substring(0, href.indexOf('?'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2492 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2493 href = href.substring(0, href.lastIndexOf('/')) + '/';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2494 return href;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2495 }(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2496 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2497 * @property _lastImage
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2498 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2499 * @description Safari reference for the last image selected (for styling as selected).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2500 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2501 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2502 _lastImage: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2503 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2504 * @property _blankImageLoaded
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2505 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2506 * @description Don't load the blank image more than once..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2507 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2508 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2509 _blankImageLoaded: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2510 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2511 * @property _fixNodesTimer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2512 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2513 * @description Holder for the fixNodes timer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2514 * @type Date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2515 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2516 _fixNodesTimer: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2517 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2518 * @property _nodeChangeTimer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2519 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2520 * @description Holds a reference to the nodeChange setTimeout call
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2521 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2522 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2523 _nodeChangeTimer: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2524 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2525 * @property _nodeChangeDelayTimer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2526 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2527 * @description Holds a reference to the nodeChangeDelay setTimeout call
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2528 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2529 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2530 _nodeChangeDelayTimer: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2531 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2532 * @property _lastNodeChangeEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2533 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2534 * @description Flag to determine the last event that fired a node change
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2535 * @type Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2536 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2537 _lastNodeChangeEvent: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2538 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2539 * @property _lastNodeChange
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2540 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2541 * @description Flag to determine when the last node change was fired
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2542 * @type Date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2543 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2544 _lastNodeChange: 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2545 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2546 * @property _rendered
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2547 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2548 * @description Flag to determine if editor has been rendered or not
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2549 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2550 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2551 _rendered: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2552 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2553 * @property DOMReady
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2554 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2555 * @description Flag to determine if DOM is ready or not
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2556 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2557 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2558 DOMReady: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2559 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2560 * @property _selection
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2561 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2562 * @description Holder for caching iframe selections
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2563 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2564 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2565 _selection: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2566 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2567 * @property _mask
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2568 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2569 * @description DOM Element holder for the editor Mask when disabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2570 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2571 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2572 _mask: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2573 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2574 * @property _showingHiddenElements
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2575 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2576 * @description Status of the hidden elements button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2577 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2578 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2579 _showingHiddenElements: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2580 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2581 * @property currentWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2582 * @description A reference to the currently open EditorWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2583 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2584 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2585 currentWindow: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2586 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2587 * @property currentEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2588 * @description A reference to the current editor event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2589 * @type Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2590 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2591 currentEvent: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2592 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2593 * @property operaEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2594 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2595 * @description setTimeout holder for Opera and Image DoubleClick event..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2596 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2597 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2598 operaEvent: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2599 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2600 * @property currentFont
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2601 * @description A reference to the last font selected from the Toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2602 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2603 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2604 currentFont: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2605 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2606 * @property currentElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2607 * @description A reference to the current working element in the editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2608 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2609 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2610 currentElement: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2611 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2612 * @property dompath
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2613 * @description A reference to the dompath container for writing the current working dom path to.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2614 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2615 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2616 dompath: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2617 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2618 * @property beforeElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2619 * @description A reference to the H2 placed before the editor for Accessibilty.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2620 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2621 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2622 beforeElement: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2623 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2624 * @property afterElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2625 * @description A reference to the H2 placed after the editor for Accessibilty.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2626 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2627 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2628 afterElement: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2629 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2630 * @property invalidHTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2631 * @description Contains a list of HTML elements that are invalid inside the editor. They will be removed when they are found. If you set the value of a key to "{ keepContents: true }", then the element will be replaced with a yui-non span to be filtered out when cleanHTML is called. The only tag that is ignored here is the span tag as it will force the Editor into a loop and freeze the browser. However.. all of these tags will be removed in the cleanHTML routine.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2632 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2633 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2634 invalidHTML: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2635 form: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2636 input: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2637 button: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2638 select: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2639 link: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2640 html: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2641 body: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2642 iframe: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2643 script: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2644 style: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2645 textarea: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2646 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2647 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2648 * @property toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2649 * @description Local property containing the <a href="YAHOO.widget.Toolbar.html">YAHOO.widget.Toolbar</a> instance
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2650 * @type <a href="YAHOO.widget.Toolbar.html">YAHOO.widget.Toolbar</a>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2651 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2652 toolbar: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2653 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2654 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2655 * @property _contentTimer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2656 * @description setTimeout holder for documentReady check
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2657 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2658 _contentTimer: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2659 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2660 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2661 * @property _contentTimerMax
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2662 * @description The number of times the loaded content should be checked before giving up. Default: 500
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2663 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2664 _contentTimerMax: 500,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2665 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2666 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2667 * @property _contentTimerCounter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2668 * @description Counter to check the number of times the body is polled for before giving up
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2669 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2670 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2671 _contentTimerCounter: 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2672 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2673 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2674 * @property _disabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2675 * @description The Toolbar items that should be disabled if there is no selection present in the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2676 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2677 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2678 _disabled: [ 'createlink', 'fontname', 'fontsize', 'forecolor', 'backcolor' ],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2679 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2680 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2681 * @property _alwaysDisabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2682 * @description The Toolbar items that should ALWAYS be disabled event if there is a selection present in the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2683 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2684 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2685 _alwaysDisabled: { undo: true, redo: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2686 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2687 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2688 * @property _alwaysEnabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2689 * @description The Toolbar items that should ALWAYS be enabled event if there isn't a selection present in the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2690 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2691 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2692 _alwaysEnabled: { },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2693 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2694 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2695 * @property _semantic
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2696 * @description The Toolbar commands that we should attempt to make tags out of instead of using styles.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2697 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2698 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2699 _semantic: { 'bold': true, 'italic' : true, 'underline' : true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2700 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2701 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2702 * @property _tag2cmd
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2703 * @description A tag map of HTML tags to convert to the different types of commands so we can select the proper toolbar button.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2704 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2705 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2706 _tag2cmd: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2707 'b': 'bold',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2708 'strong': 'bold',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2709 'i': 'italic',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2710 'em': 'italic',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2711 'u': 'underline',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2712 'sup': 'superscript',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2713 'sub': 'subscript',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2714 'img': 'insertimage',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2715 'a' : 'createlink',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2716 'ul' : 'insertunorderedlist',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2717 'ol' : 'insertorderedlist'
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2718 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2719
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2720 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2721 * @private _createIframe
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2722 * @description Creates the DOM and YUI Element for the iFrame editor area.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2723 * @param {String} id The string ID to prefix the iframe with
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2724 * @return {Object} iFrame object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2725 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2726 _createIframe: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2727 var ifrmDom = document.createElement('iframe');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2728 ifrmDom.id = this.get('id') + '_editor';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2729 var config = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2730 border: '0',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2731 frameBorder: '0',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2732 marginWidth: '0',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2733 marginHeight: '0',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2734 leftMargin: '0',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2735 topMargin: '0',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2736 allowTransparency: 'true',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2737 width: '100%'
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2738 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2739 if (this.get('autoHeight')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2740 config.scrolling = 'no';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2741 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2742 for (var i in config) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2743 if (Lang.hasOwnProperty(config, i)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2744 ifrmDom.setAttribute(i, config[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2745 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2746 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2747 var isrc = 'javascript:;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2748 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2749 //isrc = 'about:blank';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2750 //TODO - Check this, I have changed it before..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2751 isrc = 'javascript:false;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2752 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2753 ifrmDom.setAttribute('src', isrc);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2754 var ifrm = new YAHOO.util.Element(ifrmDom);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2755 ifrm.setStyle('visibility', 'hidden');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2756 return ifrm;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2757 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2758 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2759 * @private _isElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2760 * @description Checks to see if an Element reference is a valid one and has a certain tag type
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2761 * @param {HTMLElement} el The element to check
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2762 * @param {String} tag The tag that the element needs to be
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2763 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2764 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2765 _isElement: function(el, tag) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2766 if (el && el.tagName && (el.tagName.toLowerCase() == tag)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2767 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2768 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2769 if (el && el.getAttribute && (el.getAttribute('tag') == tag)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2770 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2771 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2772 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2773 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2774 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2775 * @private _hasParent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2776 * @description Checks to see if an Element reference or one of it's parents is a valid one and has a certain tag type
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2777 * @param {HTMLElement} el The element to check
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2778 * @param {String} tag The tag that the element needs to be
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2779 * @return HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2780 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2781 _hasParent: function(el, tag) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2782 if (!el || !el.parentNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2783 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2784 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2785
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2786 while (el.parentNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2787 if (this._isElement(el, tag)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2788 return el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2789 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2790 if (el.parentNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2791 el = el.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2792 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2793 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2794 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2795 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2796 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2797 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2798 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2799 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2800 * @method _getDoc
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2801 * @description Get the Document of the IFRAME
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2802 * @return {Object}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2803 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2804 _getDoc: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2805 var value = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2806 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2807 if (this.get('iframe').get('element').contentWindow.document) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2808 value = this.get('iframe').get('element').contentWindow.document;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2809 return value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2810 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2811 } catch (e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2812 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2813 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2814 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2815 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2816 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2817 * @method _getWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2818 * @description Get the Window of the IFRAME
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2819 * @return {Object}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2820 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2821 _getWindow: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2822 return this.get('iframe').get('element').contentWindow;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2823 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2824 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2825 * @method focus
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2826 * @description Attempt to set the focus of the iframes window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2827 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2828 focus: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2829 this._getWindow().focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2830 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2831 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2832 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2833 * @depreciated - This should not be used, moved to this.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2834 * @method _focusWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2835 * @description Attempt to set the focus of the iframes window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2836 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2837 _focusWindow: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2838 YAHOO.log('_focusWindow: depreciated in favor of this.focus()', 'warn', 'Editor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2839 this.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2840 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2841 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2842 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2843 * @method _hasSelection
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2844 * @description Determines if there is a selection in the editor document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2845 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2846 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2847 _hasSelection: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2848 var sel = this._getSelection();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2849 var range = this._getRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2850 var hasSel = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2851
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2852 if (!sel || !range) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2853 return hasSel;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2854 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2855
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2856 //Internet Explorer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2857 if (this.browser.ie || this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2858 if (range.text) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2859 hasSel = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2860 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2861 if (range.html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2862 hasSel = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2863 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2864 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2865 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2866 if (sel+'' !== '') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2867 hasSel = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2868 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2869 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2870 if (sel && (sel.toString() !== '') && (sel !== undefined)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2871 hasSel = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2872 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2873 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2874 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2875 return hasSel;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2876 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2877 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2878 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2879 * @method _getSelection
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2880 * @description Handles the different selection objects across the A-Grade list.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2881 * @return {Object} Selection Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2882 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2883 _getSelection: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2884 var _sel = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2885 if (this._getDoc() && this._getWindow()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2886 if (this._getDoc().selection) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2887 _sel = this._getDoc().selection;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2888 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2889 _sel = this._getWindow().getSelection();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2890 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2891 //Handle Safari's lack of Selection Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2892 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2893 if (_sel.baseNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2894 this._selection = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2895 this._selection.baseNode = _sel.baseNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2896 this._selection.baseOffset = _sel.baseOffset;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2897 this._selection.extentNode = _sel.extentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2898 this._selection.extentOffset = _sel.extentOffset;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2899 } else if (this._selection !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2900 _sel = this._getWindow().getSelection();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2901 _sel.setBaseAndExtent(
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2902 this._selection.baseNode,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2903 this._selection.baseOffset,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2904 this._selection.extentNode,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2905 this._selection.extentOffset);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2906 this._selection = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2907 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2908 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2909 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2910 return _sel;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2911 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2912 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2913 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2914 * @method _selectNode
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2915 * @description Places the highlight around a given node
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2916 * @param {HTMLElement} node The node to select
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2917 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2918 _selectNode: function(node, collapse) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2919 if (!node) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2920 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2921 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2922 var sel = this._getSelection(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2923 range = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2924
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2925 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2926 try { //IE freaks out here sometimes..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2927 range = this._getDoc().body.createTextRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2928 range.moveToElementText(node);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2929 range.select();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2930 } catch (e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2931 YAHOO.log('IE failed to select element: ' + node.tagName, 'warn', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2932 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2933 } else if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2934 if (collapse) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2935 sel.setBaseAndExtent(node, 1, node, node.innerText.length);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2936 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2937 sel.setBaseAndExtent(node, 0, node, node.innerText.length);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2938 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2939 } else if (this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2940 sel = this._getWindow().getSelection();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2941 range = this._getDoc().createRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2942 range.selectNode(node);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2943 sel.removeAllRanges();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2944 sel.addRange(range);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2945 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2946 range = this._getDoc().createRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2947 range.selectNodeContents(node);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2948 sel.removeAllRanges();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2949 sel.addRange(range);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2950 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2951 //TODO - Check Performance
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2952 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2953 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2954 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2955 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2956 * @method _getRange
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2957 * @description Handles the different range objects across the A-Grade list.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2958 * @return {Object} Range Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2959 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2960 _getRange: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2961 var sel = this._getSelection();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2962
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2963 if (sel === null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2964 return null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2965 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2966
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2967 if (this.browser.webkit && !sel.getRangeAt) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2968 var _range = this._getDoc().createRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2969 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2970 _range.setStart(sel.anchorNode, sel.anchorOffset);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2971 _range.setEnd(sel.focusNode, sel.focusOffset);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2972 } catch (e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2973 _range = this._getWindow().getSelection()+'';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2974 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2975 return _range;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2976 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2977
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2978 if (this.browser.ie || this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2979 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2980 return sel.createRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2981 } catch (e2) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2982 return null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2983 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2984 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2985
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2986 if (sel.rangeCount > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2987 return sel.getRangeAt(0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2988 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2989 return null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2990 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2991 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2992 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2993 * @method _setDesignMode
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2994 * @description Sets the designMode property of the iFrame document's body.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2995 * @param {String} state This should be either on or off
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2996 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2997 _setDesignMode: function(state) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2998 if (this.get('setDesignMode')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2999 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3000 this._getDoc().designMode = ((state.toLowerCase() == 'off') ? 'off' : 'on');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3001 } catch(e) { }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3002 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3003 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3004 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3005 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3006 * @method _toggleDesignMode
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3007 * @description Toggles the designMode property of the iFrame document on and off.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3008 * @return {String} The state that it was set to.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3009 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3010 _toggleDesignMode: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3011 YAHOO.log('It is not recommended to use this method and it will be depreciated.', 'warn', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3012 var _dMode = this._getDoc().designMode,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3013 _state = ((_dMode.toLowerCase() == 'on') ? 'off' : 'on');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3014 this._setDesignMode(_state);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3015 return _state;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3016 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3017 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3018 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3019 * @property _focused
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3020 * @description Holder for trapping focus/blur state and prevent double events
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3021 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3022 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3023 _focused: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3024 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3025 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3026 * @method _handleFocus
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3027 * @description Handles the focus of the iframe. Note, this is window focus event, not an Editor focus event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3028 * @param {Event} e The DOM Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3029 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3030 _handleFocus: function(e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3031 if (!this._focused) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3032 //YAHOO.log('Editor Window Focused', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3033 this._focused = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3034 this.fireEvent('editorWindowFocus', { type: 'editorWindowFocus', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3035 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3036 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3037 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3038 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3039 * @method _handleBlur
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3040 * @description Handles the blur of the iframe. Note, this is window blur event, not an Editor blur event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3041 * @param {Event} e The DOM Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3042 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3043 _handleBlur: function(e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3044 if (this._focused) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3045 //YAHOO.log('Editor Window Blurred', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3046 this._focused = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3047 this.fireEvent('editorWindowBlur', { type: 'editorWindowBlur', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3048 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3049 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3050 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3051 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3052 * @method _initEditorEvents
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3053 * @description This method sets up the listeners on the Editors document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3054 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3055 _initEditorEvents: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3056 //Setup Listeners on iFrame
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3057 var doc = this._getDoc(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3058 win = this._getWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3059
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3060 Event.on(doc, 'mouseup', this._handleMouseUp, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3061 Event.on(doc, 'mousedown', this._handleMouseDown, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3062 Event.on(doc, 'click', this._handleClick, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3063 Event.on(doc, 'dblclick', this._handleDoubleClick, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3064 Event.on(doc, 'keypress', this._handleKeyPress, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3065 Event.on(doc, 'keyup', this._handleKeyUp, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3066 Event.on(doc, 'keydown', this._handleKeyDown, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3067 /* TODO -- Everyone but Opera works here..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3068 Event.on(doc, 'paste', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3069 YAHOO.log('PASTE', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3070 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3071 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3072
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3073 //Focus and blur..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3074 Event.on(win, 'focus', this._handleFocus, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3075 Event.on(win, 'blur', this._handleBlur, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3076 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3077 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3078 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3079 * @method _removeEditorEvents
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3080 * @description This method removes the listeners on the Editors document (for disabling).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3081 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3082 _removeEditorEvents: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3083 //Remove Listeners on iFrame
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3084 var doc = this._getDoc(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3085 win = this._getWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3086
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3087 Event.removeListener(doc, 'mouseup', this._handleMouseUp, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3088 Event.removeListener(doc, 'mousedown', this._handleMouseDown, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3089 Event.removeListener(doc, 'click', this._handleClick, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3090 Event.removeListener(doc, 'dblclick', this._handleDoubleClick, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3091 Event.removeListener(doc, 'keypress', this._handleKeyPress, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3092 Event.removeListener(doc, 'keyup', this._handleKeyUp, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3093 Event.removeListener(doc, 'keydown', this._handleKeyDown, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3094
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3095 //Focus and blur..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3096 Event.removeListener(win, 'focus', this._handleFocus, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3097 Event.removeListener(win, 'blur', this._handleBlur, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3098 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3099 _fixWebkitDivs: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3100 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3101 var divs = this._getDoc().body.getElementsByTagName('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3102 Dom.addClass(divs, 'yui-wk-div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3103 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3104 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3105 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3106 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3107 * @method _initEditor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3108 * @param {Boolean} raw Don't add events.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3109 * @description This method is fired from _checkLoaded when the document is ready. It turns on designMode and set's up the listeners.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3110 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3111 _initEditor: function(raw) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3112 if (this._editorInit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3113 return;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3114 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3115 this._editorInit = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3116 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3117 this._getDoc().body.style.margin = '0';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3118 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3119 if (!this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3120 this._setDesignMode('on');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3121 this._contentTimerCounter = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3122 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3123 if (!this._getDoc().body) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3124 YAHOO.log('Body is null, check again', 'error', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3125 this._contentTimerCounter = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3126 this._editorInit = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3127 this._checkLoaded();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3128 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3129 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3130
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3131 YAHOO.log('editorLoaded', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3132 if (!raw) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3133 this.toolbar.on('buttonClick', this._handleToolbarClick, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3134 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3135 if (!this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3136 this._initEditorEvents();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3137 this.toolbar.set('disabled', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3138 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3139
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3140 if (raw) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3141 this.fireEvent('editorContentReloaded', { type: 'editorreloaded', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3142 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3143 this.fireEvent('editorContentLoaded', { type: 'editorLoaded', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3144 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3145 this._fixWebkitDivs();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3146 if (this.get('dompath')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3147 YAHOO.log('Delayed DomPath write', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3148 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3149 setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3150 self._writeDomPath.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3151 self._setupResize.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3152 }, 150);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3153 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3154 var br = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3155 for (var i in this.browser) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3156 if (this.browser[i]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3157 br.push(i);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3158 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3159 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3160 if (this.get('ptags')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3161 br.push('ptags');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3162 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3163 Dom.addClass(this._getDoc().body, br.join(' '));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3164 this.nodeChange(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3165 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3166 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3167 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3168 * @method _checkLoaded
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3169 * @param {Boolean} raw Don't add events.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3170 * @description Called from a setTimeout loop to check if the iframes body.onload event has fired, then it will init the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3171 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3172 _checkLoaded: function(raw) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3173 this._editorInit = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3174 this._contentTimerCounter++;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3175 if (this._contentTimer) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3176 clearTimeout(this._contentTimer);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3177 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3178 if (this._contentTimerCounter > this._contentTimerMax) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3179 YAHOO.log('ERROR: Body Did Not load', 'error', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3180 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3181 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3182 var init = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3183 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3184 if (this._getDoc() && this._getDoc().body) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3185 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3186 if (this._getDoc().body.readyState == 'complete') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3187 init = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3188 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3189 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3190 if (this._getDoc().body._rteLoaded === true) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3191 init = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3192 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3193 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3194 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3195 } catch (e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3196 init = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3197 YAHOO.log('checking body (e)' + e, 'error', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3198 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3199
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3200 if (init === true) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3201 //The onload event has fired, clean up after ourselves and fire the _initEditor method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3202 YAHOO.log('Firing _initEditor', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3203 this._initEditor(raw);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3204 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3205 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3206 this._contentTimer = setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3207 self._checkLoaded.call(self, raw);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3208 }, 20);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3209 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3210 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3211 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3212 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3213 * @method _setInitialContent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3214 * @param {Boolean} raw Don't add events.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3215 * @description This method will open the iframes content document and write the textareas value into it, then start the body.onload checking.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3216 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3217 _setInitialContent: function(raw) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3218 YAHOO.log('Populating editor body with contents of the text area', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3219
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3220 var value = ((this._textarea) ? this.get('element').value : this.get('element').innerHTML),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3221 doc = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3222
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3223 if (value === '') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3224 value = '<br>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3225 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3226
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3227 var html = Lang.substitute(this.get('html'), {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3228 TITLE: this.STR_TITLE,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3229 CONTENT: this._cleanIncomingHTML(value),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3230 CSS: this.get('css'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3231 HIDDEN_CSS: ((this.get('hiddencss')) ? this.get('hiddencss') : '/* No Hidden CSS */'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3232 EXTRA_CSS: ((this.get('extracss')) ? this.get('extracss') : '/* No Extra CSS */')
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3233 }),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3234 check = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3235
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3236 html = html.replace(/RIGHT_BRACKET/gi, '{');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3237 html = html.replace(/LEFT_BRACKET/gi, '}');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3238
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3239 if (document.compatMode != 'BackCompat') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3240 YAHOO.log('Adding Doctype to editable area', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3241 html = this._docType + "\n" + html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3242 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3243 YAHOO.log('DocType skipped because we are in BackCompat Mode.', 'warn', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3244 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3245
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3246 if (this.browser.ie || this.browser.webkit || this.browser.opera || (navigator.userAgent.indexOf('Firefox/1.5') != -1)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3247 //Firefox 1.5 doesn't like setting designMode on an document created with a data url
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3248 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3249 //Adobe AIR Code
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3250 if (this.browser.air) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3251 doc = this._getDoc().implementation.createHTMLDocument();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3252 var origDoc = this._getDoc();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3253 origDoc.open();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3254 origDoc.close();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3255 doc.open();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3256 doc.write(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3257 doc.close();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3258 var node = origDoc.importNode(doc.getElementsByTagName("html")[0], true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3259 origDoc.replaceChild(node, origDoc.getElementsByTagName("html")[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3260 origDoc.body._rteLoaded = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3261 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3262 doc = this._getDoc();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3263 doc.open();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3264 doc.write(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3265 doc.close();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3266 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3267 } catch (e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3268 YAHOO.log('Setting doc failed.. (_setInitialContent)', 'error', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3269 //Safari will only be here if we are hidden
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3270 check = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3271 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3272 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3273 //This keeps Firefox 2 from writing the iframe to history preserving the back buttons functionality
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3274 this.get('iframe').get('element').src = 'data:text/html;charset=utf-8,' + encodeURIComponent(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3275 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3276 this.get('iframe').setStyle('visibility', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3277 if (check) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3278 this._checkLoaded(raw);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3279 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3280 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3281 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3282 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3283 * @method _setMarkupType
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3284 * @param {String} action The action to take. Possible values are: css, default or semantic
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3285 * @description This method will turn on/off the useCSS execCommand.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3286 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3287 _setMarkupType: function(action) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3288 switch (this.get('markup')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3289 case 'css':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3290 this._setEditorStyle(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3291 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3292 case 'default':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3293 this._setEditorStyle(false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3294 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3295 case 'semantic':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3296 case 'xhtml':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3297 if (this._semantic[action]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3298 this._setEditorStyle(false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3299 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3300 this._setEditorStyle(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3301 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3302 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3303 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3304 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3305 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3306 * Set the editor to use CSS instead of HTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3307 * @param {Booleen} stat True/False
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3308 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3309 _setEditorStyle: function(stat) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3310 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3311 this._getDoc().execCommand('useCSS', false, !stat);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3312 } catch (ex) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3313 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3314 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3315 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3316 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3317 * @method _getSelectedElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3318 * @description This method will attempt to locate the element that was last interacted with, either via selection, location or event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3319 * @return {HTMLElement} The currently selected element.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3320 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3321 _getSelectedElement: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3322 var doc = this._getDoc(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3323 range = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3324 sel = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3325 elm = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3326 check = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3327
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3328 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3329 this.currentEvent = this._getWindow().event; //Event utility assumes window.event, so we need to reset it to this._getWindow().event;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3330 range = this._getRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3331 if (range) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3332 elm = range.item ? range.item(0) : range.parentElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3333 if (this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3334 //TODO
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3335 //WTF.. Why can't I get an element reference here?!??!
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3336 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3337 if (elm === doc.body) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3338 elm = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3339 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3340 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3341 if ((this.currentEvent !== null) && (this.currentEvent.keyCode === 0)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3342 elm = Event.getTarget(this.currentEvent);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3343 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3344 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3345 sel = this._getSelection();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3346 range = this._getRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3347
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3348 if (!sel || !range) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3349 return null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3350 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3351 //TODO
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3352 if (!this._hasSelection() && this.browser.webkit3) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3353 //check = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3354 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3355 if (this.browser.gecko) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3356 //Added in 2.6.0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3357 if (range.startContainer) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3358 if (range.startContainer.nodeType === 3) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3359 elm = range.startContainer.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3360 } else if (range.startContainer.nodeType === 1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3361 elm = range.startContainer;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3362 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3363 //Added in 2.7.0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3364 if (this.currentEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3365 var tar = Event.getTarget(this.currentEvent);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3366 if (!this._isElement(tar, 'html')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3367 if (elm !== tar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3368 elm = tar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3369 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3370 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3371 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3372 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3373 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3374
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3375 if (check) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3376 if (sel.anchorNode && (sel.anchorNode.nodeType == 3)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3377 if (sel.anchorNode.parentNode) { //next check parentNode
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3378 elm = sel.anchorNode.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3379 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3380 if (sel.anchorNode.nextSibling != sel.focusNode.nextSibling) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3381 elm = sel.anchorNode.nextSibling;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3382 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3383 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3384 if (this._isElement(elm, 'br')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3385 elm = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3386 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3387 if (!elm) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3388 elm = range.commonAncestorContainer;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3389 if (!range.collapsed) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3390 if (range.startContainer == range.endContainer) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3391 if (range.startOffset - range.endOffset < 2) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3392 if (range.startContainer.hasChildNodes()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3393 elm = range.startContainer.childNodes[range.startOffset];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3394 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3395 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3396 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3397 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3398 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3399 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3400 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3401
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3402 if (this.currentEvent !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3403 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3404 switch (this.currentEvent.type) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3405 case 'click':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3406 case 'mousedown':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3407 case 'mouseup':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3408 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3409 elm = Event.getTarget(this.currentEvent);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3410 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3411 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3412 default:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3413 //Do nothing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3414 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3415 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3416 } catch (e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3417 YAHOO.log('Firefox 1.5 errors here: ' + e, 'error', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3418 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3419 } else if ((this.currentElement && this.currentElement[0]) && (!this.browser.ie)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3420 //TODO is this still needed?
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3421 //elm = this.currentElement[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3422 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3423
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3424
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3425 if (this.browser.opera || this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3426 if (this.currentEvent && !elm) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3427 elm = YAHOO.util.Event.getTarget(this.currentEvent);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3428 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3429 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3430 if (!elm || !elm.tagName) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3431 elm = doc.body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3432 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3433 if (this._isElement(elm, 'html')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3434 //Safari sometimes gives us the HTML node back..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3435 elm = doc.body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3436 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3437 if (this._isElement(elm, 'body')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3438 //make sure that body means this body not the parent..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3439 elm = doc.body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3440 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3441 if (elm && !elm.parentNode) { //Not in document
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3442 elm = doc.body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3443 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3444 if (elm === undefined) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3445 elm = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3446 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3447 return elm;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3448 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3449 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3450 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3451 * @method _getDomPath
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3452 * @description This method will attempt to build the DOM path from the currently selected element.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3453 * @param HTMLElement el The element to start with, if not provided _getSelectedElement is used
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3454 * @return {Array} An array of node references that will create the DOM Path.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3455 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3456 _getDomPath: function(el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3457 if (!el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3458 el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3459 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3460 var domPath = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3461 while (el !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3462 if (el.ownerDocument != this._getDoc()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3463 el = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3464 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3465 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3466 //Check to see if we get el.nodeName and nodeType
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3467 if (el.nodeName && el.nodeType && (el.nodeType == 1)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3468 domPath[domPath.length] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3469 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3470
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3471 if (this._isElement(el, 'body')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3472 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3473 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3474
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3475 el = el.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3476 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3477 if (domPath.length === 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3478 if (this._getDoc() && this._getDoc().body) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3479 domPath[0] = this._getDoc().body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3480 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3481 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3482 return domPath.reverse();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3483 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3484 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3485 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3486 * @method _writeDomPath
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3487 * @description Write the current DOM path out to the dompath container below the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3488 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3489 _writeDomPath: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3490 var path = this._getDomPath(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3491 pathArr = [],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3492 classPath = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3493 pathStr = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3494
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3495 for (var i = 0; i < path.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3496 var tag = path[i].tagName.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3497 if ((tag == 'ol') && (path[i].type)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3498 tag += ':' + path[i].type;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3499 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3500 if (Dom.hasClass(path[i], 'yui-tag')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3501 tag = path[i].getAttribute('tag');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3502 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3503 if ((this.get('markup') == 'semantic') || (this.get('markup') == 'xhtml')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3504 switch (tag) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3505 case 'b': tag = 'strong'; break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3506 case 'i': tag = 'em'; break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3507 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3508 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3509 if (!Dom.hasClass(path[i], 'yui-non')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3510 if (Dom.hasClass(path[i], 'yui-tag')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3511 pathStr = tag;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3512 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3513 classPath = ((path[i].className !== '') ? '.' + path[i].className.replace(/ /g, '.') : '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3514 if ((classPath.indexOf('yui') != -1) || (classPath.toLowerCase().indexOf('apple-style-span') != -1)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3515 classPath = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3516 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3517 pathStr = tag + ((path[i].id) ? '#' + path[i].id : '') + classPath;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3518 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3519 switch (tag) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3520 case 'body':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3521 pathStr = 'body';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3522 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3523 case 'a':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3524 if (path[i].getAttribute('href', 2)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3525 pathStr += ':' + path[i].getAttribute('href', 2).replace('mailto:', '').replace('http:/'+'/', '').replace('https:/'+'/', ''); //May need to add others here ftp
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3526 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3527 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3528 case 'img':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3529 var h = path[i].height;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3530 var w = path[i].width;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3531 if (path[i].style.height) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3532 h = parseInt(path[i].style.height, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3533 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3534 if (path[i].style.width) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3535 w = parseInt(path[i].style.width, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3536 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3537 pathStr += '(' + w + 'x' + h + ')';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3538 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3539 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3540
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3541 if (pathStr.length > 10) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3542 pathStr = '<span title="' + pathStr + '">' + pathStr.substring(0, 10) + '...' + '</span>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3543 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3544 pathStr = '<span title="' + pathStr + '">' + pathStr + '</span>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3545 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3546 pathArr[pathArr.length] = pathStr;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3547 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3548 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3549 var str = pathArr.join(' ' + this.SEP_DOMPATH + ' ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3550 //Prevent flickering
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3551 if (this.dompath.innerHTML != str) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3552 this.dompath.innerHTML = str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3553 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3554 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3555 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3556 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3557 * @method _fixNodes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3558 * @description Fix href and imgs as well as remove invalid HTML.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3559 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3560 _fixNodes: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3561 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3562 var doc = this._getDoc(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3563 els = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3564
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3565 for (var v in this.invalidHTML) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3566 if (YAHOO.lang.hasOwnProperty(this.invalidHTML, v)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3567 if (v.toLowerCase() != 'span') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3568 var tags = doc.body.getElementsByTagName(v);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3569 if (tags.length) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3570 for (var i = 0; i < tags.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3571 els.push(tags[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3572 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3573 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3574 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3575 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3576 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3577 for (var h = 0; h < els.length; h++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3578 if (els[h].parentNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3579 if (Lang.isObject(this.invalidHTML[els[h].tagName.toLowerCase()]) && this.invalidHTML[els[h].tagName.toLowerCase()].keepContents) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3580 this._swapEl(els[h], 'span', function(el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3581 el.className = 'yui-non';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3582 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3583 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3584 els[h].parentNode.removeChild(els[h]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3585 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3586 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3587 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3588 var imgs = this._getDoc().getElementsByTagName('img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3589 Dom.addClass(imgs, 'yui-img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3590 } catch(e) {}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3591 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3592 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3593 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3594 * @method _isNonEditable
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3595 * @param Event ev The Dom event being checked
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3596 * @description Method is called at the beginning of all event handlers to check if this element or a parent element has the class yui-noedit (this.CLASS_NOEDIT) applied.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3597 * If it does, then this method will stop the event and return true. The event handlers will then return false and stop the nodeChange from occuring. This method will also
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3598 * disable and enable the Editor's toolbar based on the noedit state.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3599 * @return Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3600 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3601 _isNonEditable: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3602 if (this.get('allowNoEdit')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3603 var el = Event.getTarget(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3604 if (this._isElement(el, 'html')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3605 el = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3606 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3607 var path = this._getDomPath(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3608 for (var i = (path.length - 1); i > -1; i--) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3609 if (Dom.hasClass(path[i], this.CLASS_NOEDIT)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3610 //if (this.toolbar.get('disabled') === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3611 // this.toolbar.set('disabled', true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3612 //}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3613 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3614 this._getDoc().execCommand('enableObjectResizing', false, 'false');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3615 } catch (e) {}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3616 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3617 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3618 YAHOO.log('CLASS_NOEDIT found in DOM Path, stopping event', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3619 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3620 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3621 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3622 //if (this.toolbar.get('disabled') === true) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3623 //Should only happen once..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3624 //this.toolbar.set('disabled', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3625 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3626 this._getDoc().execCommand('enableObjectResizing', false, 'true');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3627 } catch (e2) {}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3628 //}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3629 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3630 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3631 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3632 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3633 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3634 * @method _setCurrentEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3635 * @param {Event} ev The event to cache
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3636 * @description Sets the current event property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3637 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3638 _setCurrentEvent: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3639 this.currentEvent = ev;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3640 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3641 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3642 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3643 * @method _handleClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3644 * @param {Event} ev The event we are working on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3645 * @description Handles all click events inside the iFrame document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3646 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3647 _handleClick: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3648 var ret = this.fireEvent('beforeEditorClick', { type: 'beforeEditorClick', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3649 if (ret === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3650 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3651 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3652 if (this._isNonEditable(ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3653 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3654 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3655 this._setCurrentEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3656 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3657 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3658 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3659 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3660 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3661 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3662 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3663 var tar =Event.getTarget(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3664 if (this._isElement(tar, 'a') || this._isElement(tar.parentNode, 'a')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3665 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3666 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3667 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3668 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3669 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3670 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3671 this.fireEvent('editorClick', { type: 'editorClick', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3672 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3673 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3674 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3675 * @method _handleMouseUp
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3676 * @param {Event} ev The event we are working on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3677 * @description Handles all mouseup events inside the iFrame document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3678 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3679 _handleMouseUp: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3680 var ret = this.fireEvent('beforeEditorMouseUp', { type: 'beforeEditorMouseUp', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3681 if (ret === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3682 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3683 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3684 if (this._isNonEditable(ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3685 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3686 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3687 //Don't set current event for mouseup.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3688 //It get's fired after a menu is closed and gives up a bogus event to work with
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3689 //this._setCurrentEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3690 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3691 if (this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3692 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3693 * @knownissue Opera appears to stop the MouseDown, Click and DoubleClick events on an image inside of a document with designMode on..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3694 * @browser Opera
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3695 * @description This work around traps the MouseUp event and sets a timer to check if another MouseUp event fires in so many seconds. If another event is fired, they we internally fire the DoubleClick event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3696 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3697 var sel = Event.getTarget(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3698 if (this._isElement(sel, 'img')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3699 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3700 if (this.operaEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3701 clearTimeout(this.operaEvent);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3702 this.operaEvent = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3703 this._handleDoubleClick(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3704 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3705 this.operaEvent = window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3706 self.operaEvent = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3707 }, 700);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3708 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3709 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3710 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3711 //This will stop Safari from selecting the entire document if you select all the text in the editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3712 if (this.browser.webkit || this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3713 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3714 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3715 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3716 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3717 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3718 this.fireEvent('editorMouseUp', { type: 'editorMouseUp', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3719 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3720 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3721 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3722 * @method _handleMouseDown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3723 * @param {Event} ev The event we are working on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3724 * @description Handles all mousedown events inside the iFrame document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3725 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3726 _handleMouseDown: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3727 var ret = this.fireEvent('beforeEditorMouseDown', { type: 'beforeEditorMouseDown', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3728 if (ret === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3729 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3730 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3731 if (this._isNonEditable(ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3732 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3733 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3734 this._setCurrentEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3735 var sel = Event.getTarget(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3736 if (this.browser.webkit && this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3737 var _sel = this._getSelection();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3738 if (!this.browser.webkit3) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3739 _sel.collapse(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3740 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3741 _sel.collapseToStart();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3742 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3743 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3744 if (this.browser.webkit && this._lastImage) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3745 Dom.removeClass(this._lastImage, 'selected');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3746 this._lastImage = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3747 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3748 if (this._isElement(sel, 'img') || this._isElement(sel, 'a')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3749 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3750 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3751 if (this._isElement(sel, 'img')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3752 Dom.addClass(sel, 'selected');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3753 this._lastImage = sel;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3754 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3755 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3756 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3757 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3758 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3759 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3760 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3761 this.fireEvent('editorMouseDown', { type: 'editorMouseDown', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3762 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3763 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3764 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3765 * @method _handleDoubleClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3766 * @param {Event} ev The event we are working on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3767 * @description Handles all doubleclick events inside the iFrame document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3768 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3769 _handleDoubleClick: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3770 var ret = this.fireEvent('beforeEditorDoubleClick', { type: 'beforeEditorDoubleClick', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3771 if (ret === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3772 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3773 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3774 if (this._isNonEditable(ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3775 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3776 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3777 this._setCurrentEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3778 var sel = Event.getTarget(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3779 if (this._isElement(sel, 'img')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3780 this.currentElement[0] = sel;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3781 this.toolbar.fireEvent('insertimageClick', { type: 'insertimageClick', target: this.toolbar });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3782 this.fireEvent('afterExecCommand', { type: 'afterExecCommand', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3783 } else if (this._hasParent(sel, 'a')) { //Handle elements inside an a
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3784 this.currentElement[0] = this._hasParent(sel, 'a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3785 this.toolbar.fireEvent('createlinkClick', { type: 'createlinkClick', target: this.toolbar });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3786 this.fireEvent('afterExecCommand', { type: 'afterExecCommand', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3787 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3788 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3789 this.fireEvent('editorDoubleClick', { type: 'editorDoubleClick', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3790 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3791 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3792 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3793 * @method _handleKeyUp
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3794 * @param {Event} ev The event we are working on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3795 * @description Handles all keyup events inside the iFrame document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3796 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3797 _handleKeyUp: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3798 var ret = this.fireEvent('beforeEditorKeyUp', { type: 'beforeEditorKeyUp', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3799 if (ret === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3800 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3801 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3802 if (this._isNonEditable(ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3803 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3804 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3805 this._storeUndo();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3806 this._setCurrentEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3807 switch (ev.keyCode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3808 case this._keyMap.SELECT_ALL.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3809 if (this._checkKey(this._keyMap.SELECT_ALL, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3810 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3811 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3812 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3813 case 32: //Space Bar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3814 case 35: //End
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3815 case 36: //Home
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3816 case 37: //Left Arrow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3817 case 38: //Up Arrow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3818 case 39: //Right Arrow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3819 case 40: //Down Arrow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3820 case 46: //Forward Delete
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3821 case 8: //Delete
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3822 case this._keyMap.CLOSE_WINDOW.key: //W key if window is open
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3823 if ((ev.keyCode == this._keyMap.CLOSE_WINDOW.key) && this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3824 if (this._checkKey(this._keyMap.CLOSE_WINDOW, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3825 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3826 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3827 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3828 if (!this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3829 if (this._nodeChangeTimer) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3830 clearTimeout(this._nodeChangeTimer);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3831 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3832 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3833 this._nodeChangeTimer = setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3834 self._nodeChangeTimer = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3835 self.nodeChange.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3836 }, 100);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3837 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3838 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3839 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3840 this.editorDirty = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3841 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3842 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3843 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3844 this.fireEvent('editorKeyUp', { type: 'editorKeyUp', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3845 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3846 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3847 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3848 * @method _handleKeyPress
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3849 * @param {Event} ev The event we are working on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3850 * @description Handles all keypress events inside the iFrame document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3851 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3852 _handleKeyPress: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3853 var ret = this.fireEvent('beforeEditorKeyPress', { type: 'beforeEditorKeyPress', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3854 if (ret === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3855 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3856 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3857
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3858 if (this.get('allowNoEdit')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3859 //if (ev && ev.keyCode && ((ev.keyCode == 46) || ev.keyCode == 63272)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3860 if (ev && ev.keyCode && (ev.keyCode == 63272)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3861 //Forward delete key
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3862 YAHOO.log('allowNoEdit is set, forward delete key has been disabled', 'warn', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3863 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3864 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3865 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3866 if (this._isNonEditable(ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3867 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3868 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3869 this._setCurrentEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3870 this._storeUndo();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3871 if (this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3872 if (ev.keyCode === 13) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3873 var tar = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3874 if (!this._isElement(tar, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3875 this.execCommand('inserthtml', '<br>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3876 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3877 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3878 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3879 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3880 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3881 if (!this.browser.webkit3) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3882 if (ev.keyCode && (ev.keyCode == 122) && (ev.metaKey)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3883 //This is CMD + z (for undo)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3884 if (this._hasParent(this._getSelectedElement(), 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3885 YAHOO.log('We are in an LI and we found CMD + z, stopping the event', 'warn', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3886 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3887 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3888 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3889 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3890 this._listFix(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3891 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3892 this._fixListDupIds();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3893 this.fireEvent('editorKeyPress', { type: 'editorKeyPress', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3894 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3895 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3896 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3897 * @method _handleKeyDown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3898 * @param {Event} ev The event we are working on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3899 * @description Handles all keydown events inside the iFrame document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3900 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3901 _handleKeyDown: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3902 var ret = this.fireEvent('beforeEditorKeyDown', { type: 'beforeEditorKeyDown', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3903 if (ret === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3904 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3905 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3906 var tar = null, _range = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3907 if (this._isNonEditable(ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3908 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3909 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3910 this._setCurrentEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3911 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3912 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3913 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3914 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3915 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3916 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3917 var doExec = false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3918 action = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3919 value = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3920 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3921
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3922 //YAHOO.log('keyCode: ' + ev.keyCode, 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3923
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3924 switch (ev.keyCode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3925 case this._keyMap.FOCUS_TOOLBAR.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3926 if (this._checkKey(this._keyMap.FOCUS_TOOLBAR, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3927 var h = this.toolbar.getElementsByTagName('h2')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3928 if (h && h.firstChild) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3929 h.firstChild.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3930 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3931 } else if (this._checkKey(this._keyMap.FOCUS_AFTER, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3932 //Focus After Element - Esc
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3933 this.afterElement.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3934 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3935 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3936 doExec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3937 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3938 //case 76: //L
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3939 case this._keyMap.CREATE_LINK.key: //L
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3940 if (this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3941 if (this._checkKey(this._keyMap.CREATE_LINK, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3942 var makeLink = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3943 if (this.get('limitCommands')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3944 if (!this.toolbar.getButtonByValue('createlink')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3945 YAHOO.log('Toolbar Button for (createlink) was not found, skipping exec.', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3946 makeLink = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3947 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3948 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3949 if (makeLink) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3950 this.execCommand('createlink', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3951 this.toolbar.fireEvent('createlinkClick', { type: 'createlinkClick', target: this.toolbar });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3952 this.fireEvent('afterExecCommand', { type: 'afterExecCommand', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3953 doExec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3954 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3955 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3956 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3957 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3958 //case 90: //Z
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3959 case this._keyMap.UNDO.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3960 case this._keyMap.REDO.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3961 if (this._checkKey(this._keyMap.REDO, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3962 action = 'redo';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3963 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3964 } else if (this._checkKey(this._keyMap.UNDO, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3965 action = 'undo';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3966 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3967 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3968 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3969 //case 66: //B
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3970 case this._keyMap.BOLD.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3971 if (this._checkKey(this._keyMap.BOLD, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3972 action = 'bold';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3973 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3974 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3975 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3976 case this._keyMap.FONT_SIZE_UP.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3977 case this._keyMap.FONT_SIZE_DOWN.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3978 var uk = false, dk = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3979 if (this._checkKey(this._keyMap.FONT_SIZE_UP, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3980 uk = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3981 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3982 if (this._checkKey(this._keyMap.FONT_SIZE_DOWN, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3983 dk = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3984 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3985 if (uk || dk) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3986 var fs_button = this.toolbar.getButtonByValue('fontsize'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3987 label = parseInt(fs_button.get('label'), 10),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3988 newValue = (label + 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3989
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3990 if (dk) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3991 newValue = (label - 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3992 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3993
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3994 action = 'fontsize';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3995 value = newValue + 'px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3996 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3997 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3998 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3999 //case 73: //I
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4000 case this._keyMap.ITALIC.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4001 if (this._checkKey(this._keyMap.ITALIC, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4002 action = 'italic';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4003 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4004 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4005 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4006 //case 85: //U
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4007 case this._keyMap.UNDERLINE.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4008 if (this._checkKey(this._keyMap.UNDERLINE, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4009 action = 'underline';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4010 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4011 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4012 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4013 case 9:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4014 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4015 //Insert a tab in Internet Explorer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4016 _range = this._getRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4017 tar = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4018 if (!this._isElement(tar, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4019 if (_range) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4020 _range.pasteHTML('&nbsp;&nbsp;&nbsp;&nbsp;');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4021 _range.collapse(false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4022 _range.select();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4023 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4024 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4025 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4026 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4027 //Firefox 3 code
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4028 if (this.browser.gecko > 1.8) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4029 tar = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4030 if (this._isElement(tar, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4031 if (ev.shiftKey) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4032 this._getDoc().execCommand('outdent', null, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4033 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4034 this._getDoc().execCommand('indent', null, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4035 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4036
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4037 } else if (!this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4038 this.execCommand('inserthtml', '&nbsp;&nbsp;&nbsp;&nbsp;');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4039 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4040 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4041 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4042 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4043 case 13:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4044 var p = null, i = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4045 if (this.get('ptags') && !ev.shiftKey) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4046 if (this.browser.gecko) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4047 tar = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4048 if (!this._hasParent(tar, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4049 if (this._hasParent(tar, 'p')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4050 p = this._getDoc().createElement('p');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4051 p.innerHTML = '&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4052 Dom.insertAfter(p, tar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4053 this._selectNode(p.firstChild);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4054 } else if (this._isElement(tar, 'body')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4055 this.execCommand('insertparagraph', null);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4056 var ps = this._getDoc().body.getElementsByTagName('p');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4057 for (i = 0; i < ps.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4058 if (ps[i].getAttribute('_moz_dirty') !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4059 p = this._getDoc().createElement('p');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4060 p.innerHTML = '&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4061 Dom.insertAfter(p, ps[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4062 this._selectNode(p.firstChild);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4063 ps[i].removeAttribute('_moz_dirty');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4064 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4065 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4066 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4067 YAHOO.log('Something went wrong with paragraphs, please file a bug!!', 'error', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4068 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4069 action = 'insertparagraph';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4070 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4071 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4072 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4073 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4074 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4075 tar = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4076 if (!this._hasParent(tar, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4077 this.execCommand('insertparagraph', null);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4078 var divs = this._getDoc().body.getElementsByTagName('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4079 for (i = 0; i < divs.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4080 if (!Dom.hasClass(divs[i], 'yui-wk-div')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4081 Dom.addClass(divs[i], 'yui-wk-p');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4082 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4083 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4084 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4085 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4086 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4087 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4088 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4089 tar = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4090 if (!this._hasParent(tar, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4091 if (this.browser.webkit4) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4092 this.execCommand('insertlinebreak');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4093 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4094 this.execCommand('inserthtml', '<var id="yui-br"></var>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4095 var holder = this._getDoc().getElementById('yui-br'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4096 br = this._getDoc().createElement('br'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4097 caret = this._getDoc().createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4098
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4099 holder.parentNode.replaceChild(br, holder);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4100 caret.className = 'yui-non';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4101 caret.innerHTML = '&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4102 Dom.insertAfter(caret, br);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4103 this._selectNode(caret);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4104 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4105 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4106 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4107 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4108 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4109 YAHOO.log('Stopping P tags', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4110 //Insert a <br> instead of a <p></p> in Internet Explorer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4111 _range = this._getRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4112 tar = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4113 if (!this._isElement(tar, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4114 if (_range) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4115 _range.pasteHTML('<br>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4116 _range.collapse(false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4117 _range.select();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4118 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4119 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4120 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4121 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4122 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4123 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4124 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4125 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4126 this._listFix(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4127 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4128 if (doExec && action) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4129 this.execCommand(action, value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4130 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4131 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4132 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4133 this._storeUndo();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4134 this.fireEvent('editorKeyDown', { type: 'editorKeyDown', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4135 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4136 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4137 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4138 * @property _fixListRunning
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4139 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4140 * @description Keeps more than one _fixListDupIds from running at the same time.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4141 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4142 _fixListRunning: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4143 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4144 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4145 * @method _fixListDupIds
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4146 * @description Some browsers will duplicate the id of an LI when created in designMode.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4147 * This method will fix the duplicate id issue. However it will only preserve the first element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4148 * in the document list with the unique id.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4149 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4150 _fixListDupIds: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4151 if (this._fixListRunning) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4152 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4153 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4154 if (this._getDoc()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4155 this._fixListRunning = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4156 var lis = this._getDoc().body.getElementsByTagName('li'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4157 i = 0, ids = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4158 for (i = 0; i < lis.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4159 if (lis[i].id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4160 if (ids[lis[i].id]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4161 lis[i].id = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4162 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4163 ids[lis[i].id] = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4164 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4165 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4166 this._fixListRunning = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4167 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4168 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4169 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4170 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4171 * @method _listFix
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4172 * @param {Event} ev The event we are working on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4173 * @description Handles the Enter key, Tab Key and Shift + Tab keys for List Items.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4174 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4175 _listFix: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4176 //YAHOO.log('Lists Fix (' + ev.keyCode + ')', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4177 var testLi = null, par = null, preContent = false, range = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4178 //Enter Key
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4179 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4180 if (ev.keyCode && (ev.keyCode == 13)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4181 if (this._hasParent(this._getSelectedElement(), 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4182 var tar = this._hasParent(this._getSelectedElement(), 'li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4183 if (tar.previousSibling) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4184 if (tar.firstChild && (tar.firstChild.length == 1)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4185 this._selectNode(tar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4186 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4187 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4188 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4189 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4190 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4191 //Shift + Tab Key
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4192 if (ev.keyCode && ((!this.browser.webkit3 && (ev.keyCode == 25)) || ((this.browser.webkit3 || !this.browser.webkit) && ((ev.keyCode == 9) && ev.shiftKey)))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4193 testLi = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4194 if (this._hasParent(testLi, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4195 testLi = this._hasParent(testLi, 'li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4196 YAHOO.log('We have a SHIFT tab in an LI, reverse it..', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4197 if (this._hasParent(testLi, 'ul') || this._hasParent(testLi, 'ol')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4198 YAHOO.log('We have a double parent, move up a level', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4199 par = this._hasParent(testLi, 'ul');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4200 if (!par) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4201 par = this._hasParent(testLi, 'ol');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4202 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4203 //YAHOO.log(par.previousSibling + ' :: ' + par.previousSibling.innerHTML);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4204 if (this._isElement(par.previousSibling, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4205 par.removeChild(testLi);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4206 par.parentNode.insertBefore(testLi, par.nextSibling);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4207 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4208 range = this._getDoc().body.createTextRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4209 range.moveToElementText(testLi);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4210 range.collapse(false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4211 range.select();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4212 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4213 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4214 this._selectNode(testLi.firstChild);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4215 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4216 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4217 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4218 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4219 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4220 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4221 //Tab Key
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4222 if (ev.keyCode && ((ev.keyCode == 9) && (!ev.shiftKey))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4223 YAHOO.log('List Fix - Tab', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4224 var preLi = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4225 if (this._hasParent(preLi, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4226 preContent = this._hasParent(preLi, 'li').innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4227 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4228 //YAHOO.log('preLI: ' + preLi.tagName + ' :: ' + preLi.innerHTML);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4229 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4230 this._getDoc().execCommand('inserttext', false, '\t');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4231 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4232 testLi = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4233 if (this._hasParent(testLi, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4234 YAHOO.log('We have a tab in an LI', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4235 par = this._hasParent(testLi, 'li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4236 YAHOO.log('parLI: ' + par.tagName + ' :: ' + par.innerHTML);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4237 var newUl = this._getDoc().createElement(par.parentNode.tagName.toLowerCase());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4238 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4239 var span = Dom.getElementsByClassName('Apple-tab-span', 'span', par);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4240 //Remove the span element that Safari puts in
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4241 if (span[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4242 par.removeChild(span[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4243 par.innerHTML = Lang.trim(par.innerHTML);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4244 //Put the HTML from the LI into this new LI
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4245 if (preContent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4246 par.innerHTML = '<span class="yui-non">' + preContent + '</span>&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4247 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4248 par.innerHTML = '<span class="yui-non">&nbsp;</span>&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4249 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4250 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4251 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4252 if (preContent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4253 par.innerHTML = preContent + '&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4254 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4255 par.innerHTML = '&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4256 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4257 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4258
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4259 par.parentNode.replaceChild(newUl, par);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4260 newUl.appendChild(par);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4261 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4262 this._getSelection().setBaseAndExtent(par.firstChild, 1, par.firstChild, par.firstChild.innerText.length);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4263 if (!this.browser.webkit3) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4264 par.parentNode.parentNode.style.display = 'list-item';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4265 setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4266 par.parentNode.parentNode.style.display = 'block';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4267 }, 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4268 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4269 } else if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4270 range = this._getDoc().body.createTextRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4271 range.moveToElementText(par);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4272 range.collapse(false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4273 range.select();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4274 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4275 this._selectNode(par);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4276 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4277 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4278 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4279 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4280 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4281 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4282 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4283 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4284 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4285 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4286 * @method nodeChange
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4287 * @param {Boolean} force Optional paramenter to skip the threshold counter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4288 * @description Handles setting up the toolbar buttons, getting the Dom path, fixing nodes.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4289 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4290 nodeChange: function(force) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4291 var NCself = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4292 this._storeUndo();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4293 if (this.get('nodeChangeDelay')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4294 this._nodeChangeDelayTimer = window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4295 NCself._nodeChangeDelayTimer = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4296 NCself._nodeChange.apply(NCself, arguments);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4297 }, 0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4298 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4299 this._nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4300 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4301 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4302 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4303 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4304 * @method _nodeChange
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4305 * @param {Boolean} force Optional paramenter to skip the threshold counter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4306 * @description Fired from nodeChange in a setTimeout.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4307 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4308 _nodeChange: function(force) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4309 var threshold = parseInt(this.get('nodeChangeThreshold'), 10),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4310 thisNodeChange = Math.round(new Date().getTime() / 1000),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4311 self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4312
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4313 if (force === true) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4314 this._lastNodeChange = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4315 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4316
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4317 if ((this._lastNodeChange + threshold) < thisNodeChange) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4318 if (this._fixNodesTimer === null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4319 this._fixNodesTimer = window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4320 self._fixNodes.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4321 self._fixNodesTimer = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4322 }, 0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4323 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4324 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4325 this._lastNodeChange = thisNodeChange;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4326 if (this.currentEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4327 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4328 this._lastNodeChangeEvent = this.currentEvent.type;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4329 } catch (e) {}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4330 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4331
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4332 var beforeNodeChange = this.fireEvent('beforeNodeChange', { type: 'beforeNodeChange', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4333 if (beforeNodeChange === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4334 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4335 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4336 if (this.get('dompath')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4337 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4338 self._writeDomPath.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4339 }, 0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4340 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4341 //Check to see if we are disabled before continuing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4342 if (!this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4343 if (this.STOP_NODE_CHANGE) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4344 //Reset this var for next action
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4345 this.STOP_NODE_CHANGE = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4346 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4347 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4348 var sel = this._getSelection(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4349 range = this._getRange(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4350 el = this._getSelectedElement(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4351 fn_button = this.toolbar.getButtonByValue('fontname'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4352 fs_button = this.toolbar.getButtonByValue('fontsize'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4353 undo_button = this.toolbar.getButtonByValue('undo'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4354 redo_button = this.toolbar.getButtonByValue('redo');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4355
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4356 //Handle updating the toolbar with active buttons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4357 var _ex = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4358 if (this._lastButton) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4359 _ex[this._lastButton.id] = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4360 //this._lastButton = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4361 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4362 if (!this._isElement(el, 'body')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4363 if (fn_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4364 _ex[fn_button.get('id')] = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4365 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4366 if (fs_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4367 _ex[fs_button.get('id')] = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4368 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4369 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4370 if (redo_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4371 delete _ex[redo_button.get('id')];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4372 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4373 this.toolbar.resetAllButtons(_ex);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4374
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4375 //Handle disabled buttons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4376 for (var d = 0; d < this._disabled.length; d++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4377 var _button = this.toolbar.getButtonByValue(this._disabled[d]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4378 if (_button && _button.get) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4379 if (this._lastButton && (_button.get('id') === this._lastButton.id)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4380 //Skip
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4381 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4382 if (!this._hasSelection() && !this.get('insert')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4383 switch (this._disabled[d]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4384 case 'fontname':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4385 case 'fontsize':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4386 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4387 default:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4388 //No Selection - disable
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4389 this.toolbar.disableButton(_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4390 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4391 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4392 if (!this._alwaysDisabled[this._disabled[d]]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4393 this.toolbar.enableButton(_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4394 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4395 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4396 if (!this._alwaysEnabled[this._disabled[d]]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4397 this.toolbar.deselectButton(_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4398 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4399 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4400 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4401 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4402 var path = this._getDomPath();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4403 var tag = null, cmd = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4404 for (var i = 0; i < path.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4405 tag = path[i].tagName.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4406 if (path[i].getAttribute('tag')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4407 tag = path[i].getAttribute('tag').toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4408 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4409 cmd = this._tag2cmd[tag];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4410 if (cmd === undefined) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4411 cmd = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4412 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4413 if (!Lang.isArray(cmd)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4414 cmd = [cmd];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4415 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4416
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4417 //Bold and Italic styles
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4418 if (path[i].style.fontWeight.toLowerCase() == 'bold') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4419 cmd[cmd.length] = 'bold';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4420 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4421 if (path[i].style.fontStyle.toLowerCase() == 'italic') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4422 cmd[cmd.length] = 'italic';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4423 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4424 if (path[i].style.textDecoration.toLowerCase() == 'underline') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4425 cmd[cmd.length] = 'underline';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4426 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4427 if (path[i].style.textDecoration.toLowerCase() == 'line-through') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4428 cmd[cmd.length] = 'strikethrough';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4429 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4430 if (cmd.length > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4431 for (var j = 0; j < cmd.length; j++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4432 this.toolbar.selectButton(cmd[j]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4433 this.toolbar.enableButton(cmd[j]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4434 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4435 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4436 //Handle Alignment
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4437 switch (path[i].style.textAlign.toLowerCase()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4438 case 'left':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4439 case 'right':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4440 case 'center':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4441 case 'justify':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4442 var alignType = path[i].style.textAlign.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4443 if (path[i].style.textAlign.toLowerCase() == 'justify') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4444 alignType = 'full';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4445 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4446 this.toolbar.selectButton('justify' + alignType);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4447 this.toolbar.enableButton('justify' + alignType);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4448 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4449 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4450 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4451 //After for loop
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4452
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4453 //Reset Font Family and Size to the inital configs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4454 if (fn_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4455 var family = fn_button._configs.label._initialConfig.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4456 fn_button.set('label', '<span class="yui-toolbar-fontname-' + this._cleanClassName(family) + '">' + family + '</span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4457 this._updateMenuChecked('fontname', family);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4458 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4459
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4460 if (fs_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4461 fs_button.set('label', fs_button._configs.label._initialConfig.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4462 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4463
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4464 var hd_button = this.toolbar.getButtonByValue('heading');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4465 if (hd_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4466 hd_button.set('label', hd_button._configs.label._initialConfig.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4467 this._updateMenuChecked('heading', 'none');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4468 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4469 var img_button = this.toolbar.getButtonByValue('insertimage');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4470 if (img_button && this.currentWindow && (this.currentWindow.name == 'insertimage')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4471 this.toolbar.disableButton(img_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4472 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4473 if (this._lastButton && this._lastButton.isSelected) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4474 this.toolbar.deselectButton(this._lastButton.id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4475 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4476 this._undoNodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4477 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4478 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4479
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4480 this.fireEvent('afterNodeChange', { type: 'afterNodeChange', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4481 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4482 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4483 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4484 * @method _updateMenuChecked
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4485 * @param {Object} button The command identifier of the button you want to check
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4486 * @param {String} value The value of the menu item you want to check
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4487 * @param {<a href="YAHOO.widget.Toolbar.html">YAHOO.widget.Toolbar</a>} The Toolbar instance the button belongs to (defaults to this.toolbar)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4488 * @description Gets the menu from a button instance, if the menu is not rendered it will render it. It will then search the menu for the specified value, unchecking all other items and checking the specified on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4489 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4490 _updateMenuChecked: function(button, value, tbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4491 if (!tbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4492 tbar = this.toolbar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4493 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4494 var _button = tbar.getButtonByValue(button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4495 _button.checkValue(value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4496 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4497 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4498 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4499 * @method _handleToolbarClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4500 * @param {Event} ev The event that triggered the button click
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4501 * @description This is an event handler attached to the Toolbar's buttonClick event. It will fire execCommand with the command identifier from the Toolbar Button.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4502 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4503 _handleToolbarClick: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4504 var value = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4505 var str = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4506 var cmd = ev.button.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4507 if (ev.button.menucmd) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4508 value = cmd;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4509 cmd = ev.button.menucmd;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4510 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4511 this._lastButton = ev.button;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4512 if (this.STOP_EXEC_COMMAND) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4513 YAHOO.log('execCommand skipped because we found the STOP_EXEC_COMMAND flag set to true', 'warn', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4514 YAHOO.log('NOEXEC::execCommand::(' + cmd + '), (' + value + ')', 'warn', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4515 this.STOP_EXEC_COMMAND = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4516 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4517 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4518 this.execCommand(cmd, value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4519 if (!this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4520 var Fself = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4521 setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4522 Fself.focus.call(Fself);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4523 }, 5);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4524 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4525 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4526 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4527 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4528 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4529 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4530 * @method _setupAfterElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4531 * @description Creates the accessibility h2 header and places it after the iframe in the Dom for navigation.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4532 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4533 _setupAfterElement: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4534 if (!this.beforeElement) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4535 this.beforeElement = document.createElement('h2');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4536 this.beforeElement.className = 'yui-editor-skipheader';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4537 this.beforeElement.tabIndex = '-1';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4538 this.beforeElement.innerHTML = this.STR_BEFORE_EDITOR;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4539 this.get('element_cont').get('firstChild').insertBefore(this.beforeElement, this.toolbar.get('nextSibling'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4540 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4541 if (!this.afterElement) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4542 this.afterElement = document.createElement('h2');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4543 this.afterElement.className = 'yui-editor-skipheader';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4544 this.afterElement.tabIndex = '-1';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4545 this.afterElement.innerHTML = this.STR_LEAVE_EDITOR;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4546 this.get('element_cont').get('firstChild').appendChild(this.afterElement);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4547 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4548 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4549 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4550 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4551 * @method _disableEditor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4552 * @param {Boolean} disabled Pass true to disable, false to enable
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4553 * @description Creates a mask to place over the Editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4554 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4555 _disableEditor: function(disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4556 var iframe, par, html, height;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4557 if (!this.get('disabled_iframe')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4558 iframe = this._createIframe();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4559 iframe.set('id', 'disabled_' + this.get('iframe').get('id'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4560 iframe.setStyle('height', '100%');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4561 iframe.setStyle('display', 'none');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4562 iframe.setStyle('visibility', 'visible');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4563 this.set('disabled_iframe', iframe);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4564 par = this.get('iframe').get('parentNode');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4565 par.appendChild(iframe.get('element'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4566 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4567 if (!iframe) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4568 iframe = this.get('disabled_iframe');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4569 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4570 if (disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4571 this._orgIframe = this.get('iframe');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4572
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4573 if (this.toolbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4574 this.toolbar.set('disabled', true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4575 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4576
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4577 html = this.getEditorHTML();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4578 height = this.get('iframe').get('offsetHeight');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4579 iframe.setStyle('visibility', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4580 iframe.setStyle('position', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4581 iframe.setStyle('top', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4582 iframe.setStyle('left', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4583 this._orgIframe.setStyle('visibility', 'hidden');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4584 this._orgIframe.setStyle('position', 'absolute');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4585 this._orgIframe.setStyle('top', '-99999px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4586 this._orgIframe.setStyle('left', '-99999px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4587 this.set('iframe', iframe);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4588 this._setInitialContent(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4589
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4590 if (!this._mask) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4591 this._mask = document.createElement('DIV');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4592 Dom.addClass(this._mask, 'yui-editor-masked');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4593 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4594 this._mask.style.height = height + 'px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4595 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4596 this.get('iframe').get('parentNode').appendChild(this._mask);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4597 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4598 this.on('editorContentReloaded', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4599 this._getDoc().body._rteLoaded = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4600 this.setEditorHTML(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4601 iframe.setStyle('display', 'block');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4602 this.unsubscribeAll('editorContentReloaded');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4603 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4604 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4605 if (this._mask) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4606 this._mask.parentNode.removeChild(this._mask);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4607 this._mask = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4608 if (this.toolbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4609 this.toolbar.set('disabled', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4610 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4611 iframe.setStyle('visibility', 'hidden');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4612 iframe.setStyle('position', 'absolute');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4613 iframe.setStyle('top', '-99999px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4614 iframe.setStyle('left', '-99999px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4615 this._orgIframe.setStyle('visibility', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4616 this._orgIframe.setStyle('position', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4617 this._orgIframe.setStyle('top', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4618 this._orgIframe.setStyle('left', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4619 this.set('iframe', this._orgIframe);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4620
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4621 this.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4622 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4623 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4624 self.nodeChange.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4625 }, 100);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4626 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4627 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4628 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4629 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4630 * @property SEP_DOMPATH
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4631 * @description The value to place in between the Dom path items
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4632 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4633 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4634 SEP_DOMPATH: '<',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4635 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4636 * @property STR_LEAVE_EDITOR
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4637 * @description The accessibility string for the element after the iFrame
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4638 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4639 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4640 STR_LEAVE_EDITOR: 'You have left the Rich Text Editor.',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4641 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4642 * @property STR_BEFORE_EDITOR
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4643 * @description The accessibility string for the element before the iFrame
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4644 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4645 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4646 STR_BEFORE_EDITOR: 'This text field can contain stylized text and graphics. To cycle through all formatting options, use the keyboard shortcut Shift + Escape to place focus on the toolbar and navigate between options with your arrow keys. To exit this text editor use the Escape key and continue tabbing. <h4>Common formatting keyboard shortcuts:</h4><ul><li>Control Shift B sets text to bold</li> <li>Control Shift I sets text to italic</li> <li>Control Shift U underlines text</li> <li>Control Shift L adds an HTML link</li></ul>',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4647 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4648 * @property STR_TITLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4649 * @description The Title of the HTML document that is created in the iFrame
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4650 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4651 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4652 STR_TITLE: 'Rich Text Area.',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4653 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4654 * @property STR_IMAGE_HERE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4655 * @description The text to place in the URL textbox when using the blankimage.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4656 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4657 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4658 STR_IMAGE_HERE: 'Image URL Here',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4659 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4660 * @property STR_IMAGE_URL
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4661 * @description The label string for Image URL
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4662 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4663 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4664 STR_IMAGE_URL: 'Image URL',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4665 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4666 * @property STR_LINK_URL
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4667 * @description The label string for the Link URL.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4668 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4669 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4670 STR_LINK_URL: 'Link URL',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4671 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4672 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4673 * @property STOP_EXEC_COMMAND
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4674 * @description Set to true when you want the default execCommand function to not process anything
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4675 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4676 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4677 STOP_EXEC_COMMAND: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4678 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4679 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4680 * @property STOP_NODE_CHANGE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4681 * @description Set to true when you want the default nodeChange function to not process anything
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4682 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4683 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4684 STOP_NODE_CHANGE: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4685 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4686 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4687 * @property CLASS_NOEDIT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4688 * @description CSS class applied to elements that are not editable.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4689 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4690 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4691 CLASS_NOEDIT: 'yui-noedit',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4692 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4693 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4694 * @property CLASS_CONTAINER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4695 * @description Default CSS class to apply to the editors container element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4696 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4697 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4698 CLASS_CONTAINER: 'yui-editor-container',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4699 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4700 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4701 * @property CLASS_EDITABLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4702 * @description Default CSS class to apply to the editors iframe element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4703 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4704 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4705 CLASS_EDITABLE: 'yui-editor-editable',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4706 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4707 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4708 * @property CLASS_EDITABLE_CONT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4709 * @description Default CSS class to apply to the editors iframe's parent element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4710 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4711 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4712 CLASS_EDITABLE_CONT: 'yui-editor-editable-container',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4713 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4714 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4715 * @property CLASS_PREFIX
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4716 * @description Default prefix for dynamically created class names
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4717 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4718 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4719 CLASS_PREFIX: 'yui-editor',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4720 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4721 * @property browser
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4722 * @description Standard browser detection
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4723 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4724 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4725 browser: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4726 var br = YAHOO.env.ua;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4727 //Check for webkit3
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4728 if (br.webkit >= 420) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4729 br.webkit3 = br.webkit;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4730 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4731 br.webkit3 = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4732 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4733 if (br.webkit >= 530) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4734 br.webkit4 = br.webkit;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4735 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4736 br.webkit4 = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4737 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4738 br.mac = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4739 //Check for Mac
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4740 if (navigator.userAgent.indexOf('Macintosh') !== -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4741 br.mac = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4742 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4743
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4744 return br;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4745 }(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4746 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4747 * @method init
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4748 * @description The Editor class' initialization method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4749 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4750 init: function(p_oElement, p_oAttributes) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4751 YAHOO.log('init', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4752
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4753 if (!this._defaultToolbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4754 this._defaultToolbar = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4755 collapse: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4756 titlebar: 'Text Editing Tools',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4757 draggable: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4758 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4759 { group: 'fontstyle', label: 'Font Name and Size',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4760 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4761 { type: 'select', label: 'Arial', value: 'fontname', disabled: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4762 menu: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4763 { text: 'Arial', checked: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4764 { text: 'Arial Black' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4765 { text: 'Comic Sans MS' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4766 { text: 'Courier New' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4767 { text: 'Lucida Console' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4768 { text: 'Tahoma' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4769 { text: 'Times New Roman' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4770 { text: 'Trebuchet MS' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4771 { text: 'Verdana' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4772 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4773 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4774 { type: 'spin', label: '13', value: 'fontsize', range: [ 9, 75 ], disabled: true }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4775 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4776 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4777 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4778 { group: 'textstyle', label: 'Font Style',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4779 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4780 { type: 'push', label: 'Bold CTRL + SHIFT + B', value: 'bold' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4781 { type: 'push', label: 'Italic CTRL + SHIFT + I', value: 'italic' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4782 { type: 'push', label: 'Underline CTRL + SHIFT + U', value: 'underline' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4783 { type: 'push', label: 'Strike Through', value: 'strikethrough' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4784 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4785 { type: 'color', label: 'Font Color', value: 'forecolor', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4786 { type: 'color', label: 'Background Color', value: 'backcolor', disabled: true }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4787
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4788 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4789 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4790 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4791 { group: 'indentlist', label: 'Lists',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4792 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4793 { type: 'push', label: 'Create an Unordered List', value: 'insertunorderedlist' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4794 { type: 'push', label: 'Create an Ordered List', value: 'insertorderedlist' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4795 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4796 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4797 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4798 { group: 'insertitem', label: 'Insert Item',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4799 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4800 { type: 'push', label: 'HTML Link CTRL + SHIFT + L', value: 'createlink', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4801 { type: 'push', label: 'Insert Image', value: 'insertimage' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4802 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4803 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4804 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4805 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4806 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4807
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4808 YAHOO.widget.SimpleEditor.superclass.init.call(this, p_oElement, p_oAttributes);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4809 YAHOO.widget.EditorInfo._instances[this.get('id')] = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4810
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4811
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4812 this.currentElement = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4813 this.on('contentReady', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4814 this.DOMReady = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4815 this.fireQueue();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4816 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4817
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4818 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4819 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4820 * @method initAttributes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4821 * @description Initializes all of the configuration attributes used to create
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4822 * the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4823 * @param {Object} attr Object literal specifying a set of
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4824 * configuration attributes used to create the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4825 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4826 initAttributes: function(attr) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4827 YAHOO.widget.SimpleEditor.superclass.initAttributes.call(this, attr);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4828 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4829
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4830 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4831 * @config setDesignMode
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4832 * @description Should the Editor set designMode on the document. Default: true.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4833 * @default true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4834 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4835 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4836 this.setAttributeConfig('setDesignMode', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4837 value: ((attr.setDesignMode === false) ? false : true)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4838 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4839 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4840 * @config nodeChangeDelay
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4841 * @description Do we wrap the nodeChange method in a timeout for performance. Default: true.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4842 * @default true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4843 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4844 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4845 this.setAttributeConfig('nodeChangeDelay', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4846 value: ((attr.nodeChangeDelay === false) ? false : true)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4847 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4848 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4849 * @config maxUndo
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4850 * @description The max number of undo levels to store.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4851 * @default 30
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4852 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4853 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4854 this.setAttributeConfig('maxUndo', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4855 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4856 value: attr.maxUndo || 30
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4857 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4858
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4859 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4860 * @config ptags
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4861 * @description If true, the editor uses &lt;P&gt; tags instead of &lt;br&gt; tags. (Use Shift + Enter to get a &lt;br&gt;)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4862 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4863 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4864 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4865 this.setAttributeConfig('ptags', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4866 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4867 value: attr.ptags || false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4868 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4869 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4870 * @config insert
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4871 * @description If true, selection is not required for: fontname, fontsize, forecolor, backcolor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4872 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4873 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4874 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4875 this.setAttributeConfig('insert', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4876 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4877 value: attr.insert || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4878 method: function(insert) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4879 if (insert) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4880 var buttons = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4881 fontname: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4882 fontsize: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4883 forecolor: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4884 backcolor: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4885 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4886 var tmp = this._defaultToolbar.buttons;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4887 for (var i = 0; i < tmp.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4888 if (tmp[i].buttons) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4889 for (var a = 0; a < tmp[i].buttons.length; a++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4890 if (tmp[i].buttons[a].value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4891 if (buttons[tmp[i].buttons[a].value]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4892 delete tmp[i].buttons[a].disabled;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4893 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4894 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4895 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4896 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4897 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4898 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4899 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4900 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4901 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4902 * @config container
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4903 * @description Used when dynamically creating the Editor from Javascript with no default textarea.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4904 * We will create one and place it in this container. If no container is passed we will append to document.body.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4905 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4906 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4907 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4908 this.setAttributeConfig('container', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4909 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4910 value: attr.container || false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4911 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4912 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4913 * @config plainText
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4914 * @description Process the inital textarea data as if it was plain text. Accounting for spaces, tabs and line feeds.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4915 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4916 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4917 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4918 this.setAttributeConfig('plainText', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4919 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4920 value: attr.plainText || false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4921 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4922 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4923 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4924 * @config iframe
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4925 * @description Internal config for holding the iframe element.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4926 * @default null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4927 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4928 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4929 this.setAttributeConfig('iframe', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4930 value: null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4931 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4932 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4933 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4934 * @config disabled_iframe
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4935 * @description Internal config for holding the iframe element used when disabling the Editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4936 * @default null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4937 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4938 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4939 this.setAttributeConfig('disabled_iframe', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4940 value: null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4941 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4942 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4943 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4944 * @depreciated - No longer used, should use this.get('element')
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4945 * @config textarea
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4946 * @description Internal config for holding the textarea element (replaced with element).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4947 * @default null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4948 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4949 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4950 this.setAttributeConfig('textarea', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4951 value: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4952 writeOnce: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4953 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4954 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4955 * @config nodeChangeThreshold
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4956 * @description The number of seconds that need to be in between nodeChange processing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4957 * @default 3
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4958 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4959 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4960 this.setAttributeConfig('nodeChangeThreshold', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4961 value: attr.nodeChangeThreshold || 3,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4962 validator: YAHOO.lang.isNumber
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4963 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4964 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4965 * @config allowNoEdit
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4966 * @description Should the editor check for non-edit fields. It should be noted that this technique is not perfect. If the user does the right things, they will still be able to make changes.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4967 * Such as highlighting an element below and above the content and hitting a toolbar button or a shortcut key.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4968 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4969 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4970 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4971 this.setAttributeConfig('allowNoEdit', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4972 value: attr.allowNoEdit || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4973 validator: YAHOO.lang.isBoolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4974 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4975 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4976 * @config limitCommands
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4977 * @description Should the Editor limit the allowed execCommands to the ones available in the toolbar. If true, then execCommand and keyboard shortcuts will fail if they are not defined in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4978 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4979 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4980 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4981 this.setAttributeConfig('limitCommands', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4982 value: attr.limitCommands || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4983 validator: YAHOO.lang.isBoolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4984 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4985 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4986 * @config element_cont
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4987 * @description Internal config for the editors container
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4988 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4989 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4990 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4991 this.setAttributeConfig('element_cont', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4992 value: attr.element_cont
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4993 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4994 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4995 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4996 * @config editor_wrapper
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4997 * @description The outter wrapper for the entire editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4998 * @default null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4999 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5000 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5001 this.setAttributeConfig('editor_wrapper', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5002 value: attr.editor_wrapper || null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5003 writeOnce: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5004 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5005 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5006 * @attribute height
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5007 * @description The height of the editor iframe container, not including the toolbar..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5008 * @default Best guessed size of the textarea, for best results use CSS to style the height of the textarea or pass it in as an argument
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5009 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5010 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5011 this.setAttributeConfig('height', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5012 value: attr.height || Dom.getStyle(self.get('element'), 'height'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5013 method: function(height) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5014 if (this._rendered) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5015 //We have been rendered, change the height
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5016 if (this.get('animate')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5017 var anim = new YAHOO.util.Anim(this.get('iframe').get('parentNode'), {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5018 height: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5019 to: parseInt(height, 10)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5020 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5021 }, 0.5);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5022 anim.animate();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5023 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5024 Dom.setStyle(this.get('iframe').get('parentNode'), 'height', height);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5025 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5026 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5027 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5028 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5029 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5030 * @config autoHeight
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5031 * @description Remove the scrollbars from the edit area and resize it to fit the content. It will not go any lower than the current config height.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5032 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5033 * @type Boolean || Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5034 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5035 this.setAttributeConfig('autoHeight', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5036 value: attr.autoHeight || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5037 method: function(a) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5038 if (a) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5039 if (this.get('iframe')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5040 this.get('iframe').get('element').setAttribute('scrolling', 'no');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5041 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5042 this.on('afterNodeChange', this._handleAutoHeight, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5043 this.on('editorKeyDown', this._handleAutoHeight, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5044 this.on('editorKeyPress', this._handleAutoHeight, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5045 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5046 if (this.get('iframe')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5047 this.get('iframe').get('element').setAttribute('scrolling', 'auto');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5048 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5049 this.unsubscribe('afterNodeChange', this._handleAutoHeight);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5050 this.unsubscribe('editorKeyDown', this._handleAutoHeight);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5051 this.unsubscribe('editorKeyPress', this._handleAutoHeight);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5052 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5053 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5054 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5055 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5056 * @attribute width
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5057 * @description The width of the editor container.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5058 * @default Best guessed size of the textarea, for best results use CSS to style the width of the textarea or pass it in as an argument
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5059 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5060 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5061 this.setAttributeConfig('width', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5062 value: attr.width || Dom.getStyle(this.get('element'), 'width'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5063 method: function(width) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5064 if (this._rendered) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5065 //We have been rendered, change the width
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5066 if (this.get('animate')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5067 var anim = new YAHOO.util.Anim(this.get('element_cont').get('element'), {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5068 width: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5069 to: parseInt(width, 10)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5070 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5071 }, 0.5);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5072 anim.animate();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5073 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5074 this.get('element_cont').setStyle('width', width);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5075 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5076 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5077 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5078 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5079
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5080 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5081 * @attribute blankimage
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5082 * @description The URL for the image placeholder to put in when inserting an image.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5083 * @default The yahooapis.com address for the current release + 'assets/blankimage.png'
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5084 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5085 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5086 this.setAttributeConfig('blankimage', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5087 value: attr.blankimage || this._getBlankImage()
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5088 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5089 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5090 * @attribute css
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5091 * @description The Base CSS used to format the content of the editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5092 * @default <code><pre>html {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5093 height: 95%;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5094 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5095 body {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5096 height: 100%;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5097 padding: 7px; background-color: #fff; font:13px/1.22 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5098 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5099 a {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5100 color: blue;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5101 text-decoration: underline;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5102 cursor: pointer;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5103 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5104 .warning-localfile {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5105 border-bottom: 1px dashed red !important;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5106 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5107 .yui-busy {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5108 cursor: wait !important;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5109 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5110 img.selected { //Safari image selection
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5111 border: 2px dotted #808080;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5112 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5113 img {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5114 cursor: pointer !important;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5115 border: none;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5116 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5117 </pre></code>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5118 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5119 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5120 this.setAttributeConfig('css', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5121 value: attr.css || this._defaultCSS,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5122 writeOnce: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5123 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5124 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5125 * @attribute html
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5126 * @description The default HTML to be written to the iframe document before the contents are loaded (Note that the DOCTYPE attr will be added at render item)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5127 * @default This HTML requires a few things if you are to override:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5128 <p><code>{TITLE}, {CSS}, {HIDDEN_CSS}, {EXTRA_CSS}</code> and <code>{CONTENT}</code> need to be there, they are passed to YAHOO.lang.substitute to be replace with other strings.<p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5129 <p><code>onload="document.body._rteLoaded = true;"</code> : the onload statement must be there or the editor will not finish loading.</p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5130 <code>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5131 <pre>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5132 &lt;html&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5133 &lt;head&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5134 &lt;title&gt;{TITLE}&lt;/title&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5135 &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5136 &lt;style&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5137 {CSS}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5138 &lt;/style&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5139 &lt;style&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5140 {HIDDEN_CSS}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5141 &lt;/style&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5142 &lt;style&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5143 {EXTRA_CSS}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5144 &lt;/style&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5145 &lt;/head&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5146 &lt;body onload="document.body._rteLoaded = true;"&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5147 {CONTENT}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5148 &lt;/body&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5149 &lt;/html&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5150 </pre>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5151 </code>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5152 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5153 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5154 this.setAttributeConfig('html', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5155 value: attr.html || '<html><head><title>{TITLE}</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><base href="' + this._baseHREF + '"><style>{CSS}</style><style>{HIDDEN_CSS}</style><style>{EXTRA_CSS}</style></head><body onload="document.body._rteLoaded = true;">{CONTENT}</body></html>',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5156 writeOnce: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5157 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5158
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5159 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5160 * @attribute extracss
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5161 * @description Extra user defined css to load after the default SimpleEditor CSS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5162 * @default ''
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5163 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5164 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5165 this.setAttributeConfig('extracss', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5166 value: attr.extracss || '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5167 writeOnce: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5168 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5169
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5170 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5171 * @attribute handleSubmit
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5172 * @description Config handles if the editor will attach itself to the textareas parent form's submit handler.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5173 If it is set to true, the editor will attempt to attach a submit listener to the textareas parent form.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5174 Then it will trigger the editors save handler and place the new content back into the text area before the form is submitted.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5175 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5176 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5177 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5178 this.setAttributeConfig('handleSubmit', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5179 value: attr.handleSubmit || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5180 method: function(exec) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5181 if (this.get('element').form) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5182 if (!this._formButtons) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5183 this._formButtons = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5184 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5185 if (exec) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5186 Event.on(this.get('element').form, 'submit', this._handleFormSubmit, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5187 var i = this.get('element').form.getElementsByTagName('input');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5188 for (var s = 0; s < i.length; s++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5189 var type = i[s].getAttribute('type');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5190 if (type && (type.toLowerCase() == 'submit')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5191 Event.on(i[s], 'click', this._handleFormButtonClick, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5192 this._formButtons[this._formButtons.length] = i[s];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5193 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5194 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5195 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5196 Event.removeListener(this.get('element').form, 'submit', this._handleFormSubmit);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5197 if (this._formButtons) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5198 Event.removeListener(this._formButtons, 'click', this._handleFormButtonClick);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5199 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5200 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5201 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5202 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5203 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5204 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5205 * @attribute disabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5206 * @description This will toggle the editor's disabled state. When the editor is disabled, designMode is turned off and a mask is placed over the iframe so no interaction can take place.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5207 All Toolbar buttons are also disabled so they cannot be used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5208 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5209 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5210 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5211
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5212 this.setAttributeConfig('disabled', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5213 value: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5214 method: function(disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5215 if (this._rendered) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5216 this._disableEditor(disabled);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5217 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5218 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5219 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5220 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5221 * @config saveEl
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5222 * @description When save HTML is called, this element will be updated as well as the source of data.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5223 * @default element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5224 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5225 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5226 this.setAttributeConfig('saveEl', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5227 value: this.get('element')
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5228 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5229 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5230 * @config toolbar_cont
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5231 * @description Internal config for the toolbars container
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5232 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5233 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5234 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5235 this.setAttributeConfig('toolbar_cont', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5236 value: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5237 writeOnce: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5238 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5239 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5240 * @attribute toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5241 * @description The default toolbar config.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5242 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5243 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5244 this.setAttributeConfig('toolbar', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5245 value: attr.toolbar || this._defaultToolbar,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5246 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5247 method: function(toolbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5248 if (!toolbar.buttonType) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5249 toolbar.buttonType = this._defaultToolbar.buttonType;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5250 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5251 this._defaultToolbar = toolbar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5252 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5253 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5254 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5255 * @attribute animate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5256 * @description Should the editor animate window movements
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5257 * @default false unless Animation is found, then true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5258 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5259 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5260 this.setAttributeConfig('animate', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5261 value: ((attr.animate) ? ((YAHOO.util.Anim) ? true : false) : false),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5262 validator: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5263 var ret = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5264 if (!YAHOO.util.Anim) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5265 ret = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5266 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5267 return ret;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5268 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5269 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5270 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5271 * @config panel
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5272 * @description A reference to the panel we are using for windows.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5273 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5274 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5275 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5276 this.setAttributeConfig('panel', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5277 value: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5278 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5279 validator: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5280 var ret = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5281 if (!YAHOO.widget.Overlay) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5282 ret = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5283 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5284 return ret;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5285 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5286 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5287 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5288 * @attribute focusAtStart
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5289 * @description Should we focus the window when the content is ready?
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5290 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5291 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5292 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5293 this.setAttributeConfig('focusAtStart', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5294 value: attr.focusAtStart || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5295 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5296 method: function(fs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5297 if (fs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5298 this.on('editorContentLoaded', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5299 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5300 setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5301 self.focus.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5302 self.editorDirty = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5303 }, 400);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5304 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5305 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5306 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5307 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5308 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5309 * @attribute dompath
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5310 * @description Toggle the display of the current Dom path below the editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5311 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5312 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5313 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5314 this.setAttributeConfig('dompath', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5315 value: attr.dompath || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5316 method: function(dompath) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5317 if (dompath && !this.dompath) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5318 this.dompath = document.createElement('DIV');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5319 this.dompath.id = this.get('id') + '_dompath';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5320 Dom.addClass(this.dompath, 'dompath');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5321 this.get('element_cont').get('firstChild').appendChild(this.dompath);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5322 if (this.get('iframe')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5323 this._writeDomPath();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5324 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5325 } else if (!dompath && this.dompath) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5326 this.dompath.parentNode.removeChild(this.dompath);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5327 this.dompath = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5328 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5329 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5330 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5331 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5332 * @attribute markup
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5333 * @description Should we try to adjust the markup for the following types: semantic, css, default or xhtml
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5334 * @default "semantic"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5335 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5336 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5337 this.setAttributeConfig('markup', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5338 value: attr.markup || 'semantic',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5339 validator: function(markup) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5340 switch (markup.toLowerCase()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5341 case 'semantic':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5342 case 'css':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5343 case 'default':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5344 case 'xhtml':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5345 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5346 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5347 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5348 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5349 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5350 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5351 * @attribute removeLineBreaks
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5352 * @description Should we remove linebreaks and extra spaces on cleanup
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5353 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5354 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5355 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5356 this.setAttributeConfig('removeLineBreaks', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5357 value: attr.removeLineBreaks || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5358 validator: YAHOO.lang.isBoolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5359 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5360
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5361 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5362 * @config drag
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5363 * @description Set this config to make the Editor draggable, pass 'proxy' to make use YAHOO.util.DDProxy.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5364 * @type {Boolean/String}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5365 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5366 this.setAttributeConfig('drag', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5367 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5368 value: attr.drag || false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5369 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5370
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5371 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5372 * @config resize
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5373 * @description Set this to true to make the Editor Resizable with YAHOO.util.Resize. The default config is available: myEditor._resizeConfig
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5374 * Animation will be ignored while performing this resize to allow for the dynamic change in size of the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5375 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5376 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5377 this.setAttributeConfig('resize', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5378 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5379 value: attr.resize || false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5380 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5381
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5382 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5383 * @config filterWord
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5384 * @description Attempt to filter out MS Word HTML from the Editor's output.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5385 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5386 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5387 this.setAttributeConfig('filterWord', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5388 value: attr.filterWord || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5389 validator: YAHOO.lang.isBoolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5390 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5391
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5392 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5393 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5394 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5395 * @method _getBlankImage
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5396 * @description Retrieves the full url of the image to use as the blank image.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5397 * @return {String} The URL to the blank image
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5398 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5399 _getBlankImage: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5400 if (!this.DOMReady) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5401 this._queue[this._queue.length] = ['_getBlankImage', arguments];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5402 return '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5403 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5404 var img = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5405 if (!this._blankImageLoaded) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5406 if (YAHOO.widget.EditorInfo.blankImage) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5407 this.set('blankimage', YAHOO.widget.EditorInfo.blankImage);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5408 this._blankImageLoaded = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5409 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5410 var div = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5411 div.style.position = 'absolute';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5412 div.style.top = '-9999px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5413 div.style.left = '-9999px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5414 div.className = this.CLASS_PREFIX + '-blankimage';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5415 document.body.appendChild(div);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5416 img = YAHOO.util.Dom.getStyle(div, 'background-image');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5417 img = img.replace('url(', '').replace(')', '').replace(/"/g, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5418 //Adobe AIR Code
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5419 img = img.replace('app:/', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5420 this.set('blankimage', img);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5421 this._blankImageLoaded = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5422 div.parentNode.removeChild(div);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5423 YAHOO.widget.EditorInfo.blankImage = img;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5424 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5425 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5426 img = this.get('blankimage');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5427 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5428 return img;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5429 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5430 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5431 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5432 * @method _handleAutoHeight
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5433 * @description Handles resizing the editor's height based on the content
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5434 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5435 _handleAutoHeight: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5436 var doc = this._getDoc(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5437 body = doc.body,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5438 docEl = doc.documentElement;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5439
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5440 var height = parseInt(Dom.getStyle(this.get('editor_wrapper'), 'height'), 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5441 var newHeight = body.scrollHeight;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5442 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5443 newHeight = docEl.scrollHeight;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5444 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5445 if (newHeight < parseInt(this.get('height'), 10)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5446 newHeight = parseInt(this.get('height'), 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5447 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5448 if ((height != newHeight) && (newHeight >= parseInt(this.get('height'), 10))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5449 var anim = this.get('animate');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5450 this.set('animate', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5451 this.set('height', newHeight + 'px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5452 this.set('animate', anim);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5453 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5454 //Internet Explorer needs this
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5455 this.get('iframe').setStyle('height', '99%');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5456 this.get('iframe').setStyle('zoom', '1');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5457 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5458 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5459 self.get('iframe').setStyle('height', '100%');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5460 }, 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5461 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5462 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5463 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5464 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5465 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5466 * @property _formButtons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5467 * @description Array of buttons that are in the Editor's parent form (for handleSubmit)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5468 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5469 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5470 _formButtons: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5471 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5472 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5473 * @property _formButtonClicked
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5474 * @description The form button that was clicked to submit the form.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5475 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5476 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5477 _formButtonClicked: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5478 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5479 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5480 * @method _handleFormButtonClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5481 * @description The click listener assigned to each submit button in the Editor's parent form.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5482 * @param {Event} ev The click event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5483 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5484 _handleFormButtonClick: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5485 var tar = Event.getTarget(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5486 this._formButtonClicked = tar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5487 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5488 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5489 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5490 * @method _handleFormSubmit
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5491 * @description Handles the form submission.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5492 * @param {Object} ev The Form Submit Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5493 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5494 _handleFormSubmit: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5495 this.saveHTML();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5496
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5497 var form = this.get('element').form,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5498 tar = this._formButtonClicked || false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5499
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5500 Event.removeListener(form, 'submit', this._handleFormSubmit);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5501 if (YAHOO.env.ua.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5502 //form.fireEvent("onsubmit");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5503 if (tar && !tar.disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5504 tar.click();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5505 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5506 } else { // Gecko, Opera, and Safari
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5507 if (tar && !tar.disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5508 tar.click();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5509 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5510 var oEvent = document.createEvent("HTMLEvents");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5511 oEvent.initEvent("submit", true, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5512 form.dispatchEvent(oEvent);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5513 if (YAHOO.env.ua.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5514 if (YAHOO.lang.isFunction(form.submit)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5515 form.submit();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5516 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5517 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5518 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5519 //2.6.0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5520 //Removed this, not need since removing Safari 2.x
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5521 //Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5522 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5523 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5524 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5525 * @method _handleFontSize
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5526 * @description Handles the font size button in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5527 * @param {Object} o Object returned from Toolbar's buttonClick Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5528 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5529 _handleFontSize: function(o) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5530 var button = this.toolbar.getButtonById(o.button.id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5531 var value = button.get('label') + 'px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5532 this.execCommand('fontsize', value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5533 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5534 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5535 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5536 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5537 * @description Handles the colorpicker buttons in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5538 * @param {Object} o Object returned from Toolbar's buttonClick Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5539 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5540 _handleColorPicker: function(o) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5541 var cmd = o.button;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5542 var value = '#' + o.color;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5543 if ((cmd == 'forecolor') || (cmd == 'backcolor')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5544 this.execCommand(cmd, value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5545 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5546 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5547 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5548 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5549 * @method _handleAlign
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5550 * @description Handles the alignment buttons in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5551 * @param {Object} o Object returned from Toolbar's buttonClick Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5552 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5553 _handleAlign: function(o) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5554 var cmd = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5555 for (var i = 0; i < o.button.menu.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5556 if (o.button.menu[i].value == o.button.value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5557 cmd = o.button.menu[i].value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5558 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5559 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5560 var value = this._getSelection();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5561
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5562 this.execCommand(cmd, value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5563 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5564 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5565 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5566 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5567 * @method _handleAfterNodeChange
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5568 * @description Fires after a nodeChange happens to setup the things that where reset on the node change (button state).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5569 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5570 _handleAfterNodeChange: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5571 var path = this._getDomPath(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5572 elm = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5573 family = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5574 fontsize = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5575 validFont = false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5576 fn_button = this.toolbar.getButtonByValue('fontname'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5577 fs_button = this.toolbar.getButtonByValue('fontsize'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5578 hd_button = this.toolbar.getButtonByValue('heading');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5579
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5580 for (var i = 0; i < path.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5581 elm = path[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5582
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5583 var tag = elm.tagName.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5584
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5585
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5586 if (elm.getAttribute('tag')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5587 tag = elm.getAttribute('tag');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5588 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5589
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5590 family = elm.getAttribute('face');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5591 if (Dom.getStyle(elm, 'font-family')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5592 family = Dom.getStyle(elm, 'font-family');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5593 //Adobe AIR Code
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5594 family = family.replace(/'/g, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5595 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5596
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5597 if (tag.substring(0, 1) == 'h') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5598 if (hd_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5599 for (var h = 0; h < hd_button._configs.menu.value.length; h++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5600 if (hd_button._configs.menu.value[h].value.toLowerCase() == tag) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5601 hd_button.set('label', hd_button._configs.menu.value[h].text);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5602 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5603 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5604 this._updateMenuChecked('heading', tag);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5605 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5606 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5607 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5608
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5609 if (fn_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5610 for (var b = 0; b < fn_button._configs.menu.value.length; b++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5611 if (family && fn_button._configs.menu.value[b].text.toLowerCase() == family.toLowerCase()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5612 validFont = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5613 family = fn_button._configs.menu.value[b].text; //Put the proper menu name in the button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5614 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5615 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5616 if (!validFont) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5617 family = fn_button._configs.label._initialConfig.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5618 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5619 var familyLabel = '<span class="yui-toolbar-fontname-' + this._cleanClassName(family) + '">' + family + '</span>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5620 if (fn_button.get('label') != familyLabel) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5621 fn_button.set('label', familyLabel);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5622 this._updateMenuChecked('fontname', family);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5623 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5624 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5625
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5626 if (fs_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5627 fontsize = parseInt(Dom.getStyle(elm, 'fontSize'), 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5628 if ((fontsize === null) || isNaN(fontsize)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5629 fontsize = fs_button._configs.label._initialConfig.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5630 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5631 fs_button.set('label', ''+fontsize);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5632 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5633
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5634 if (!this._isElement(elm, 'body') && !this._isElement(elm, 'img')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5635 this.toolbar.enableButton(fn_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5636 this.toolbar.enableButton(fs_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5637 this.toolbar.enableButton('forecolor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5638 this.toolbar.enableButton('backcolor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5639 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5640 if (this._isElement(elm, 'img')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5641 if (YAHOO.widget.Overlay) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5642 this.toolbar.enableButton('createlink');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5643 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5644 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5645 if (this._hasParent(elm, 'blockquote')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5646 this.toolbar.selectButton('indent');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5647 this.toolbar.disableButton('indent');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5648 this.toolbar.enableButton('outdent');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5649 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5650 if (this._hasParent(elm, 'ol') || this._hasParent(elm, 'ul')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5651 this.toolbar.disableButton('indent');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5652 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5653 this._lastButton = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5654
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5655 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5656 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5657 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5658 * @method _handleInsertImageClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5659 * @description Opens the Image Properties Window when the insert Image button is clicked or an Image is Double Clicked.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5660 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5661 _handleInsertImageClick: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5662 if (this.get('limitCommands')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5663 if (!this.toolbar.getButtonByValue('insertimage')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5664 YAHOO.log('Toolbar Button for (insertimage) was not found, skipping exec.', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5665 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5666 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5667 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5668
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5669 this.toolbar.set('disabled', true); //Disable the toolbar when the prompt is showing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5670 var _handleAEC = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5671 var el = this.currentElement[0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5672 src = 'http://';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5673 if (!el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5674 el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5675 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5676 if (el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5677 if (el.getAttribute('src')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5678 src = el.getAttribute('src', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5679 if (src.indexOf(this.get('blankimage')) != -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5680 src = this.STR_IMAGE_HERE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5681 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5682 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5683 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5684 var str = prompt(this.STR_IMAGE_URL + ': ', src);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5685 if ((str !== '') && (str !== null)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5686 el.setAttribute('src', str);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5687 } else if (str === '') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5688 el.parentNode.removeChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5689 this.currentElement = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5690 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5691 } else if ((str === null)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5692 src = el.getAttribute('src', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5693 if (src.indexOf(this.get('blankimage')) != -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5694 el.parentNode.removeChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5695 this.currentElement = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5696 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5697 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5698 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5699 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5700 this.toolbar.set('disabled', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5701 this.unsubscribe('afterExecCommand', _handleAEC, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5702 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5703 this.on('afterExecCommand', _handleAEC, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5704 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5705 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5706 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5707 * @method _handleInsertImageWindowClose
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5708 * @description Handles the closing of the Image Properties Window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5709 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5710 _handleInsertImageWindowClose: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5711 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5712 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5713 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5714 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5715 * @method _isLocalFile
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5716 * @param {String} url THe url/string to check
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5717 * @description Checks to see if a string (href or img src) is possibly a local file reference..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5718 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5719 _isLocalFile: function(url) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5720 if ((url) && (url !== '') && ((url.indexOf('file:/') != -1) || (url.indexOf(':\\') != -1))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5721 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5722 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5723 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5724 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5725 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5726 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5727 * @method _handleCreateLinkClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5728 * @description Handles the opening of the Link Properties Window when the Create Link button is clicked or an href is doubleclicked.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5729 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5730 _handleCreateLinkClick: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5731 if (this.get('limitCommands')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5732 if (!this.toolbar.getButtonByValue('createlink')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5733 YAHOO.log('Toolbar Button for (createlink) was not found, skipping exec.', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5734 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5735 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5736 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5737
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5738 this.toolbar.set('disabled', true); //Disable the toolbar when the prompt is showing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5739
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5740 var _handleAEC = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5741 var el = this.currentElement[0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5742 url = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5743
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5744 if (el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5745 if (el.getAttribute('href', 2) !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5746 url = el.getAttribute('href', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5747 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5748 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5749 var str = prompt(this.STR_LINK_URL + ': ', url);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5750 if ((str !== '') && (str !== null)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5751 var urlValue = str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5752 if ((urlValue.indexOf(':/'+'/') == -1) && (urlValue.substring(0,1) != '/') && (urlValue.substring(0, 6).toLowerCase() != 'mailto')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5753 if ((urlValue.indexOf('@') != -1) && (urlValue.substring(0, 6).toLowerCase() != 'mailto')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5754 //Found an @ sign, prefix with mailto:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5755 urlValue = 'mailto:' + urlValue;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5756 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5757 /* :// not found adding */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5758 if (urlValue.substring(0, 1) != '#') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5759 //urlValue = 'http:/'+'/' + urlValue;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5760 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5761 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5762 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5763 el.setAttribute('href', urlValue);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5764 } else if (str !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5765 var _span = this._getDoc().createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5766 _span.innerHTML = el.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5767 Dom.addClass(_span, 'yui-non');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5768 el.parentNode.replaceChild(_span, el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5769 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5770 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5771 this.toolbar.set('disabled', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5772 this.unsubscribe('afterExecCommand', _handleAEC, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5773 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5774 this.on('afterExecCommand', _handleAEC, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5775
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5776 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5777 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5778 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5779 * @method _handleCreateLinkWindowClose
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5780 * @description Handles the closing of the Link Properties Window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5781 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5782 _handleCreateLinkWindowClose: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5783 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5784 this.currentElement = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5785 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5786 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5787 * @method render
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5788 * @description Calls the private method _render in a setTimeout to allow for other things on the page to continue to load.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5789 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5790 render: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5791 if (this._rendered) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5792 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5793 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5794 YAHOO.log('Render', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5795 if (!this.DOMReady) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5796 YAHOO.log('!DOMReady', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5797 this._queue[this._queue.length] = ['render', arguments];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5798 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5799 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5800 if (this.get('element')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5801 if (this.get('element').tagName) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5802 this._textarea = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5803 if (this.get('element').tagName.toLowerCase() !== 'textarea') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5804 this._textarea = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5805 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5806 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5807 YAHOO.log('No Valid Element', 'error', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5808 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5809 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5810 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5811 YAHOO.log('No Element', 'error', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5812 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5813 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5814 this._rendered = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5815 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5816 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5817 self._render.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5818 }, 4);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5819 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5820 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5821 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5822 * @method _render
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5823 * @description Causes the toolbar and the editor to render and replace the textarea.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5824 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5825 _render: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5826 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5827 this.set('textarea', this.get('element'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5828
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5829 this.get('element_cont').setStyle('display', 'none');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5830 this.get('element_cont').addClass(this.CLASS_CONTAINER);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5831
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5832 this.set('iframe', this._createIframe());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5833
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5834 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5835 self._setInitialContent.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5836 }, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5837
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5838 this.get('editor_wrapper').appendChild(this.get('iframe').get('element'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5839
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5840 if (this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5841 this._disableEditor(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5842 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5843
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5844 var tbarConf = this.get('toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5845 //Create Toolbar instance
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5846 if (tbarConf instanceof Toolbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5847 this.toolbar = tbarConf;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5848 //Set the toolbar to disabled until content is loaded
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5849 this.toolbar.set('disabled', true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5850 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5851 //Set the toolbar to disabled until content is loaded
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5852 tbarConf.disabled = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5853 this.toolbar = new Toolbar(this.get('toolbar_cont'), tbarConf);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5854 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5855
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5856 YAHOO.log('fireEvent::toolbarLoaded', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5857 this.fireEvent('toolbarLoaded', { type: 'toolbarLoaded', target: this.toolbar });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5858
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5859
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5860 this.toolbar.on('toolbarCollapsed', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5861 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5862 this.moveWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5863 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5864 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5865 this.toolbar.on('toolbarExpanded', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5866 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5867 this.moveWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5868 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5869 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5870 this.toolbar.on('fontsizeClick', this._handleFontSize, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5871
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5872 this.toolbar.on('colorPickerClicked', function(o) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5873 this._handleColorPicker(o);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5874 return false; //Stop the buttonClick event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5875 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5876
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5877 this.toolbar.on('alignClick', this._handleAlign, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5878 this.on('afterNodeChange', this._handleAfterNodeChange, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5879 this.toolbar.on('insertimageClick', this._handleInsertImageClick, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5880 this.on('windowinsertimageClose', this._handleInsertImageWindowClose, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5881 this.toolbar.on('createlinkClick', this._handleCreateLinkClick, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5882 this.on('windowcreatelinkClose', this._handleCreateLinkWindowClose, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5883
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5884
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5885 //Replace Textarea with editable area
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5886 this.get('parentNode').replaceChild(this.get('element_cont').get('element'), this.get('element'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5887
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5888
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5889 this.setStyle('visibility', 'hidden');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5890 this.setStyle('position', 'absolute');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5891 this.setStyle('top', '-9999px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5892 this.setStyle('left', '-9999px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5893 this.get('element_cont').appendChild(this.get('element'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5894 this.get('element_cont').setStyle('display', 'block');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5895
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5896
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5897 Dom.addClass(this.get('iframe').get('parentNode'), this.CLASS_EDITABLE_CONT);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5898 this.get('iframe').addClass(this.CLASS_EDITABLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5899
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5900 //Set height and width of editor container
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5901 this.get('element_cont').setStyle('width', this.get('width'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5902 Dom.setStyle(this.get('iframe').get('parentNode'), 'height', this.get('height'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5903
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5904 this.get('iframe').setStyle('width', '100%'); //WIDTH
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5905 this.get('iframe').setStyle('height', '100%');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5906
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5907 this._setupDD();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5908
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5909 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5910 self._setupAfterElement.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5911 }, 0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5912 this.fireEvent('afterRender', { type: 'afterRender', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5913 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5914 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5915 * @method execCommand
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5916 * @param {String} action The "execCommand" action to try to execute (Example: bold, insertimage, inserthtml)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5917 * @param {String} value (optional) The value for a given action such as action: fontname value: 'Verdana'
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5918 * @description This method attempts to try and level the differences in the various browsers and their support for execCommand actions
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5919 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5920 execCommand: function(action, value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5921 var beforeExec = this.fireEvent('beforeExecCommand', { type: 'beforeExecCommand', target: this, args: arguments });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5922 if ((beforeExec === false) || (this.STOP_EXEC_COMMAND)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5923 this.STOP_EXEC_COMMAND = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5924 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5925 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5926 this._lastCommand = action;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5927 this._setMarkupType(action);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5928 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5929 this._getWindow().focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5930 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5931 var exec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5932
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5933 if (this.get('limitCommands')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5934 if (!this.toolbar.getButtonByValue(action)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5935 YAHOO.log('Toolbar Button for (' + action + ') was not found, skipping exec.', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5936 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5937 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5938 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5939
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5940 this.editorDirty = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5941
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5942 if ((typeof this['cmd_' + action.toLowerCase()] == 'function') && exec) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5943 YAHOO.log('Found execCommand override method: (cmd_' + action.toLowerCase() + ')', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5944 var retValue = this['cmd_' + action.toLowerCase()](value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5945 exec = retValue[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5946 if (retValue[1]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5947 action = retValue[1];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5948 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5949 if (retValue[2]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5950 value = retValue[2];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5951 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5952 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5953 if (exec) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5954 YAHOO.log('execCommand::(' + action + '), (' + value + ')', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5955 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5956 this._getDoc().execCommand(action, false, value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5957 } catch(e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5958 YAHOO.log('execCommand Failed', 'error', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5959 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5960 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5961 YAHOO.log('OVERRIDE::execCommand::(' + action + '),(' + value + ') skipped', 'warn', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5962 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5963 this.on('afterExecCommand', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5964 this.unsubscribeAll('afterExecCommand');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5965 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5966 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5967 this.fireEvent('afterExecCommand', { type: 'afterExecCommand', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5968
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5969 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5970 /* {{{ Command Overrides */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5971
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5972 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5973 * @method cmd_bold
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5974 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5975 * @description This is an execCommand override method. It is called from execCommand when the execCommand('bold') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5976 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5977 cmd_bold: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5978 if (!this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5979 var el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5980 if (el && this._isElement(el, 'span') && this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5981 if (el.style.fontWeight == 'bold') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5982 el.style.fontWeight = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5983 var b = this._getDoc().createElement('b'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5984 par = el.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5985 par.replaceChild(b, el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5986 b.appendChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5987 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5988 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5989 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5990 return [true];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5991 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5992 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5993 * @method cmd_italic
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5994 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5995 * @description This is an execCommand override method. It is called from execCommand when the execCommand('italic') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5996 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5997
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5998 cmd_italic: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5999 if (!this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6000 var el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6001 if (el && this._isElement(el, 'span') && this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6002 if (el.style.fontStyle == 'italic') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6003 el.style.fontStyle = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6004 var i = this._getDoc().createElement('i'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6005 par = el.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6006 par.replaceChild(i, el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6007 i.appendChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6008 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6009 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6010 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6011 return [true];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6012 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6013
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6014
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6015 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6016 * @method cmd_underline
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6017 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6018 * @description This is an execCommand override method. It is called from execCommand when the execCommand('underline') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6019 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6020 cmd_underline: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6021 if (!this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6022 var el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6023 if (el && this._isElement(el, 'span')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6024 if (el.style.textDecoration == 'underline') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6025 el.style.textDecoration = 'none';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6026 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6027 el.style.textDecoration = 'underline';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6028 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6029 return [false];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6030 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6031 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6032 return [true];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6033 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6034 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6035 * @method cmd_backcolor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6036 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6037 * @description This is an execCommand override method. It is called from execCommand when the execCommand('backcolor') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6038 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6039 cmd_backcolor: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6040 var exec = true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6041 el = this._getSelectedElement(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6042 action = 'backcolor';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6043
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6044 if (this.browser.gecko || this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6045 this._setEditorStyle(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6046 action = 'hilitecolor';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6047 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6048
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6049 if (!this._isElement(el, 'body') && !this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6050 el.style.backgroundColor = value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6051 this._selectNode(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6052 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6053 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6054 if (this.get('insert')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6055 el = this._createInsertElement({ backgroundColor: value });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6056 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6057 this._createCurrentElement('span', { backgroundColor: value, color: el.style.color, fontSize: el.style.fontSize, fontFamily: el.style.fontFamily });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6058 this._selectNode(this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6059 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6060 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6061 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6062
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6063 return [exec, action];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6064 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6065 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6066 * @method cmd_forecolor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6067 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6068 * @description This is an execCommand override method. It is called from execCommand when the execCommand('forecolor') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6069 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6070 cmd_forecolor: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6071 var exec = true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6072 el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6073
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6074 if (!this._isElement(el, 'body') && !this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6075 Dom.setStyle(el, 'color', value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6076 this._selectNode(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6077 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6078 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6079 if (this.get('insert')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6080 el = this._createInsertElement({ color: value });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6081 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6082 this._createCurrentElement('span', { color: value, fontSize: el.style.fontSize, fontFamily: el.style.fontFamily, backgroundColor: el.style.backgroundColor });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6083 this._selectNode(this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6084 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6085 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6086 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6087 return [exec];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6088 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6089 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6090 * @method cmd_unlink
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6091 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6092 * @description This is an execCommand override method. It is called from execCommand when the execCommand('unlink') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6093 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6094 cmd_unlink: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6095 this._swapEl(this.currentElement[0], 'span', function(el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6096 el.className = 'yui-non';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6097 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6098 return [false];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6099 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6100 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6101 * @method cmd_createlink
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6102 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6103 * @description This is an execCommand override method. It is called from execCommand when the execCommand('createlink') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6104 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6105 cmd_createlink: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6106 var el = this._getSelectedElement(), _a = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6107 if (this._hasParent(el, 'a')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6108 this.currentElement[0] = this._hasParent(el, 'a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6109 } else if (this._isElement(el, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6110 _a = this._getDoc().createElement('a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6111 _a.innerHTML = el.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6112 el.innerHTML = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6113 el.appendChild(_a);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6114 this.currentElement[0] = _a;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6115 } else if (!this._isElement(el, 'a')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6116 this._createCurrentElement('a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6117 _a = this._swapEl(this.currentElement[0], 'a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6118 this.currentElement[0] = _a;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6119 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6120 this.currentElement[0] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6121 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6122 return [false];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6123 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6124 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6125 * @method cmd_insertimage
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6126 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6127 * @description This is an execCommand override method. It is called from execCommand when the execCommand('insertimage') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6128 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6129 cmd_insertimage: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6130 var exec = true, _img = null, action = 'insertimage',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6131 el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6132
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6133 if (value === '') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6134 value = this.get('blankimage');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6135 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6136
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6137 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6138 * @knownissue Safari Cursor Position
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6139 * @browser Safari 2.x
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6140 * @description The issue here is that we have no way of knowing where the cursor position is
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6141 * inside of the iframe, so we have to place the newly inserted data in the best place that we can.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6142 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6143
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6144 YAHOO.log('InsertImage: ' + el.tagName, 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6145 if (this._isElement(el, 'img')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6146 this.currentElement[0] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6147 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6148 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6149 if (this._getDoc().queryCommandEnabled(action)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6150 this._getDoc().execCommand(action, false, value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6151 var imgs = this._getDoc().getElementsByTagName('img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6152 for (var i = 0; i < imgs.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6153 if (!YAHOO.util.Dom.hasClass(imgs[i], 'yui-img')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6154 YAHOO.util.Dom.addClass(imgs[i], 'yui-img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6155 this.currentElement[0] = imgs[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6156 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6157 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6158 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6159 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6160 if (el == this._getDoc().body) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6161 _img = this._getDoc().createElement('img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6162 _img.setAttribute('src', value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6163 YAHOO.util.Dom.addClass(_img, 'yui-img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6164 this._getDoc().body.appendChild(_img);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6165 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6166 this._createCurrentElement('img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6167 _img = this._getDoc().createElement('img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6168 _img.setAttribute('src', value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6169 YAHOO.util.Dom.addClass(_img, 'yui-img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6170 this.currentElement[0].parentNode.replaceChild(_img, this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6171 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6172 this.currentElement[0] = _img;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6173 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6174 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6175 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6176 return [exec];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6177 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6178 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6179 * @method cmd_inserthtml
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6180 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6181 * @description This is an execCommand override method. It is called from execCommand when the execCommand('inserthtml') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6182 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6183 cmd_inserthtml: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6184 var exec = true, action = 'inserthtml', _span = null, _range = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6185 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6186 * @knownissue Safari cursor position
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6187 * @browser Safari 2.x
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6188 * @description The issue here is that we have no way of knowing where the cursor position is
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6189 * inside of the iframe, so we have to place the newly inserted data in the best place that we can.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6190 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6191 if (this.browser.webkit && !this._getDoc().queryCommandEnabled(action)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6192 YAHOO.log('More Safari DOM tricks (inserthtml)', 'info', 'EditorSafari');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6193 this._createCurrentElement('img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6194 _span = this._getDoc().createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6195 _span.innerHTML = value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6196 this.currentElement[0].parentNode.replaceChild(_span, this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6197 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6198 } else if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6199 _range = this._getRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6200 if (_range.item) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6201 _range.item(0).outerHTML = value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6202 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6203 _range.pasteHTML(value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6204 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6205 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6206 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6207 return [exec];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6208 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6209 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6210 * @method cmd_list
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6211 * @param tag The tag of the list you want to create (eg, ul or ol)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6212 * @description This is a combined execCommand override method. It is called from the cmd_insertorderedlist and cmd_insertunorderedlist methods.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6213 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6214 cmd_list: function(tag) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6215 var exec = true, list = null, li = 0, el = null, str = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6216 selEl = this._getSelectedElement(), action = 'insertorderedlist';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6217 if (tag == 'ul') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6218 action = 'insertunorderedlist';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6219 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6220 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6221 * @knownissue Safari 2.+ doesn't support ordered and unordered lists
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6222 * @browser Safari 2.x
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6223 * The issue with this workaround is that when applied to a set of text
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6224 * that has BR's in it, Safari may or may not pick up the individual items as
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6225 * list items. This is fixed in WebKit (Safari 3)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6226 * 2.6.0: Seems there are still some issues with List Creation and Safari 3, reverting to previously working Safari 2.x code
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6227 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6228 //if ((this.browser.webkit && !this._getDoc().queryCommandEnabled(action))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6229 if ((this.browser.webkit && !this.browser.webkit4) || (this.browser.opera)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6230 if (this._isElement(selEl, 'li') && this._isElement(selEl.parentNode, tag)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6231 YAHOO.log('We already have a list, undo it', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6232 el = selEl.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6233 list = this._getDoc().createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6234 YAHOO.util.Dom.addClass(list, 'yui-non');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6235 str = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6236 var lis = el.getElementsByTagName('li'), p_tag = ((this.browser.opera && this.get('ptags')) ? 'p' : 'div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6237 for (li = 0; li < lis.length; li++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6238 str += '<' + p_tag + '>' + lis[li].innerHTML + '</' + p_tag + '>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6239 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6240 list.innerHTML = str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6241 this.currentElement[0] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6242 this.currentElement[0].parentNode.replaceChild(list, this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6243 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6244 YAHOO.log('Create list item', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6245 this._createCurrentElement(tag.toLowerCase());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6246 list = this._getDoc().createElement(tag);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6247 for (li = 0; li < this.currentElement.length; li++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6248 var newli = this._getDoc().createElement('li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6249 newli.innerHTML = this.currentElement[li].innerHTML + '<span class="yui-non">&nbsp;</span>&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6250 list.appendChild(newli);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6251 if (li > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6252 this.currentElement[li].parentNode.removeChild(this.currentElement[li]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6253 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6254 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6255 var b_tag = ((this.browser.opera) ? '<BR>' : '<br>'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6256 items = list.firstChild.innerHTML.split(b_tag), i, item;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6257 if (items.length > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6258 list.innerHTML = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6259 for (i = 0; i < items.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6260 item = this._getDoc().createElement('li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6261 item.innerHTML = items[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6262 list.appendChild(item);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6263 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6264 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6265
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6266 this.currentElement[0].parentNode.replaceChild(list, this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6267 this.currentElement[0] = list;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6268 var _h = this.currentElement[0].firstChild;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6269 _h = Dom.getElementsByClassName('yui-non', 'span', _h)[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6270 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6271 this._getSelection().setBaseAndExtent(_h, 1, _h, _h.innerText.length);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6272 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6273 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6274 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6275 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6276 el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6277 YAHOO.log(el.tagName);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6278 if (this._isElement(el, 'li') && this._isElement(el.parentNode, tag) || (this.browser.ie && this._isElement(this._getRange().parentElement, 'li')) || (this.browser.ie && this._isElement(el, 'ul')) || (this.browser.ie && this._isElement(el, 'ol'))) { //we are in a list..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6279 YAHOO.log('We already have a list, undo it', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6280 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6281 if ((this.browser.ie && this._isElement(el, 'ul')) || (this.browser.ie && this._isElement(el, 'ol'))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6282 el = el.getElementsByTagName('li')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6283 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6284 YAHOO.log('Undo IE', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6285 str = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6286 var lis2 = el.parentNode.getElementsByTagName('li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6287 for (var j = 0; j < lis2.length; j++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6288 str += lis2[j].innerHTML + '<br>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6289 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6290 var newEl = this._getDoc().createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6291 newEl.innerHTML = str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6292 el.parentNode.parentNode.replaceChild(newEl, el.parentNode);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6293 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6294 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6295 this._getDoc().execCommand(action, '', el.parentNode);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6296 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6297 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6298 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6299 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6300 if (this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6301 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6302 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6303 var liso = self._getDoc().getElementsByTagName('li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6304 for (var i = 0; i < liso.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6305 if (liso[i].innerHTML.toLowerCase() == '<br>') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6306 liso[i].parentNode.parentNode.removeChild(liso[i].parentNode);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6307 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6308 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6309 },30);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6310 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6311 if (this.browser.ie && exec) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6312 var html = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6313 if (this._getRange().html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6314 html = '<li>' + this._getRange().html+ '</li>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6315 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6316 var t = this._getRange().text.split('\n');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6317 if (t.length > 1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6318 html = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6319 for (var ie = 0; ie < t.length; ie++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6320 html += '<li>' + t[ie] + '</li>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6321 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6322 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6323 var txt = this._getRange().text;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6324 if (txt === '') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6325 html = '<li id="new_list_item">' + txt + '</li>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6326 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6327 html = '<li>' + txt + '</li>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6328 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6329 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6330 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6331 this._getRange().pasteHTML('<' + tag + '>' + html + '</' + tag + '>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6332 var new_item = this._getDoc().getElementById('new_list_item');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6333 if (new_item) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6334 var range = this._getDoc().body.createTextRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6335 range.moveToElementText(new_item);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6336 range.collapse(false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6337 range.select();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6338 new_item.id = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6339 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6340 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6341 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6342 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6343 return exec;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6344 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6345 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6346 * @method cmd_insertorderedlist
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6347 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6348 * @description This is an execCommand override method. It is called from execCommand when the execCommand('insertorderedlist ') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6349 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6350 cmd_insertorderedlist: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6351 return [this.cmd_list('ol')];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6352 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6353 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6354 * @method cmd_insertunorderedlist
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6355 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6356 * @description This is an execCommand override method. It is called from execCommand when the execCommand('insertunorderedlist') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6357 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6358 cmd_insertunorderedlist: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6359 return [this.cmd_list('ul')];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6360 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6361 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6362 * @method cmd_fontname
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6363 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6364 * @description This is an execCommand override method. It is called from execCommand when the execCommand('fontname') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6365 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6366 cmd_fontname: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6367 var exec = true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6368 selEl = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6369
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6370 this.currentFont = value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6371 if (selEl && selEl.tagName && !this._hasSelection() && !this._isElement(selEl, 'body') && !this.get('insert')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6372 YAHOO.util.Dom.setStyle(selEl, 'font-family', value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6373 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6374 } else if (this.get('insert') && !this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6375 YAHOO.log('No selection and no selected element and we are in insert mode', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6376 var el = this._createInsertElement({ fontFamily: value });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6377 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6378 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6379 return [exec];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6380 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6381 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6382 * @method cmd_fontsize
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6383 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6384 * @description This is an execCommand override method. It is called from execCommand when the execCommand('fontsize') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6385 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6386 cmd_fontsize: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6387 var el = null, go = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6388 el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6389 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6390 if (this.currentElement[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6391 if (el == this.currentElement[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6392 go = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6393 YAHOO.util.Dom.setStyle(el, 'fontSize', value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6394 this._selectNode(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6395 this.currentElement[0] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6396 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6397 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6398 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6399 if (go) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6400 if (!this._isElement(this._getSelectedElement(), 'body') && (!this._hasSelection())) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6401 el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6402 YAHOO.util.Dom.setStyle(el, 'fontSize', value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6403 if (this.get('insert') && this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6404 var r = this._getRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6405 r.collapse(false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6406 r.select();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6407 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6408 this._selectNode(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6409 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6410 } else if (this.currentElement && (this.currentElement.length > 0) && (!this._hasSelection()) && (!this.get('insert'))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6411 YAHOO.util.Dom.setStyle(this.currentElement, 'fontSize', value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6412 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6413 if (this.get('insert') && !this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6414 el = this._createInsertElement({ fontSize: value });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6415 this.currentElement[0] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6416 this._selectNode(this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6417 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6418 this._createCurrentElement('span', {'fontSize': value, fontFamily: el.style.fontFamily, color: el.style.color, backgroundColor: el.style.backgroundColor });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6419 this._selectNode(this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6420 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6421 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6422 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6423 return [false];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6424 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6425 /* }}} */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6426 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6427 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6428 * @method _swapEl
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6429 * @param {HTMLElement} el The element to swap with
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6430 * @param {String} tagName The tagname of the element that you wish to create
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6431 * @param {Function} callback (optional) A function to run on the element after it is created, but before it is replaced. An element reference is passed to this function.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6432 * @description This function will create a new element in the DOM and populate it with the contents of another element. Then it will assume it's place.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6433 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6434 _swapEl: function(el, tagName, callback) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6435 var _el = this._getDoc().createElement(tagName);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6436 if (el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6437 _el.innerHTML = el.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6438 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6439 if (typeof callback == 'function') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6440 callback.call(this, _el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6441 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6442 if (el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6443 el.parentNode.replaceChild(_el, el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6444 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6445 return _el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6446 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6447 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6448 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6449 * @method _createInsertElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6450 * @description Creates a new "currentElement" then adds some text (and other things) to make it selectable and stylable. Then the user can continue typing.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6451 * @param {Object} css (optional) Object literal containing styles to apply to the new element.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6452 * @return {HTMLElement}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6453 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6454 _createInsertElement: function(css) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6455 this._createCurrentElement('span', css);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6456 var el = this.currentElement[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6457 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6458 //Little Safari Hackery here..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6459 el.innerHTML = '<span class="yui-non">&nbsp;</span>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6460 el = el.firstChild;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6461 this._getSelection().setBaseAndExtent(el, 1, el, el.innerText.length);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6462 } else if (this.browser.ie || this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6463 el.innerHTML = '&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6464 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6465 this.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6466 this._selectNode(el, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6467 return el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6468 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6469 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6470 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6471 * @method _createCurrentElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6472 * @param {String} tagName (optional defaults to a) The tagname of the element that you wish to create
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6473 * @param {Object} tagStyle (optional) Object literal containing styles to apply to the new element.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6474 * @description This is a work around for the various browser issues with execCommand. This method will run <code>execCommand('fontname', false, 'yui-tmp')</code> on the given selection.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6475 * It will then search the document for an element with the font-family set to <strong>yui-tmp</strong> and replace that with another span that has other information in it, then assign the new span to the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6476 * <code>this.currentElement</code> array, so we now have element references to the elements that were just modified. At this point we can use standard DOM manipulation to change them as we see fit.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6477 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6478 _createCurrentElement: function(tagName, tagStyle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6479 tagName = ((tagName) ? tagName : 'a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6480 var tar = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6481 el = [],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6482 _doc = this._getDoc();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6483
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6484 if (this.currentFont) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6485 if (!tagStyle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6486 tagStyle = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6487 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6488 tagStyle.fontFamily = this.currentFont;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6489 this.currentFont = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6490 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6491 this.currentElement = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6492
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6493 var _elCreate = function(tagName, tagStyle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6494 var el = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6495 tagName = ((tagName) ? tagName : 'span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6496 tagName = tagName.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6497 switch (tagName) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6498 case 'h1':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6499 case 'h2':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6500 case 'h3':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6501 case 'h4':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6502 case 'h5':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6503 case 'h6':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6504 el = _doc.createElement(tagName);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6505 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6506 default:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6507 el = _doc.createElement(tagName);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6508 if (tagName === 'span') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6509 YAHOO.util.Dom.addClass(el, 'yui-tag-' + tagName);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6510 YAHOO.util.Dom.addClass(el, 'yui-tag');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6511 el.setAttribute('tag', tagName);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6512 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6513
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6514 for (var k in tagStyle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6515 if (YAHOO.lang.hasOwnProperty(tagStyle, k)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6516 el.style[k] = tagStyle[k];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6517 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6518 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6519 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6520 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6521 return el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6522 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6523
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6524 if (!this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6525 if (this._getDoc().queryCommandEnabled('insertimage')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6526 this._getDoc().execCommand('insertimage', false, 'yui-tmp-img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6527 var imgs = this._getDoc().getElementsByTagName('img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6528 for (var j = 0; j < imgs.length; j++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6529 if (imgs[j].getAttribute('src', 2) == 'yui-tmp-img') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6530 el = _elCreate(tagName, tagStyle);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6531 imgs[j].parentNode.replaceChild(el, imgs[j]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6532 this.currentElement[this.currentElement.length] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6533 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6534 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6535 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6536 if (this.currentEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6537 tar = YAHOO.util.Event.getTarget(this.currentEvent);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6538 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6539 //For Safari..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6540 tar = this._getDoc().body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6541 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6542 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6543 if (tar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6544 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6545 * @knownissue Safari Cursor Position
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6546 * @browser Safari 2.x
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6547 * @description The issue here is that we have no way of knowing where the cursor position is
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6548 * inside of the iframe, so we have to place the newly inserted data in the best place that we can.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6549 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6550 el = _elCreate(tagName, tagStyle);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6551 if (this._isElement(tar, 'body') || this._isElement(tar, 'html')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6552 if (this._isElement(tar, 'html')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6553 tar = this._getDoc().body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6554 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6555 tar.appendChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6556 } else if (tar.nextSibling) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6557 tar.parentNode.insertBefore(el, tar.nextSibling);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6558 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6559 tar.parentNode.appendChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6560 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6561 //this.currentElement = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6562 this.currentElement[this.currentElement.length] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6563 this.currentEvent = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6564 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6565 //Force Safari to focus the new element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6566 this._getSelection().setBaseAndExtent(el, 0, el, 0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6567 if (this.browser.webkit3) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6568 this._getSelection().collapseToStart();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6569 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6570 this._getSelection().collapse(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6571 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6572 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6573 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6574 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6575 //Force CSS Styling for this action...
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6576 this._setEditorStyle(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6577 this._getDoc().execCommand('fontname', false, 'yui-tmp');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6578 var _tmp = [], __tmp, __els = ['font', 'span', 'i', 'b', 'u'];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6579
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6580 if (!this._isElement(this._getSelectedElement(), 'body')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6581 __els[__els.length] = this._getDoc().getElementsByTagName(this._getSelectedElement().tagName);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6582 __els[__els.length] = this._getDoc().getElementsByTagName(this._getSelectedElement().parentNode.tagName);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6583 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6584 for (var _els = 0; _els < __els.length; _els++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6585 var _tmp1 = this._getDoc().getElementsByTagName(__els[_els]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6586 for (var e = 0; e < _tmp1.length; e++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6587 _tmp[_tmp.length] = _tmp1[e];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6588 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6589 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6590
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6591
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6592 for (var i = 0; i < _tmp.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6593 if ((YAHOO.util.Dom.getStyle(_tmp[i], 'font-family') == 'yui-tmp') || (_tmp[i].face && (_tmp[i].face == 'yui-tmp'))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6594 if (tagName !== 'span') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6595 el = _elCreate(tagName, tagStyle);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6596 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6597 el = _elCreate(_tmp[i].tagName, tagStyle);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6598 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6599 el.innerHTML = _tmp[i].innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6600 if (this._isElement(_tmp[i], 'ol') || (this._isElement(_tmp[i], 'ul'))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6601 var fc = _tmp[i].getElementsByTagName('li')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6602 _tmp[i].style.fontFamily = 'inherit';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6603 fc.style.fontFamily = 'inherit';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6604 el.innerHTML = fc.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6605 fc.innerHTML = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6606 fc.appendChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6607 this.currentElement[this.currentElement.length] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6608 } else if (this._isElement(_tmp[i], 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6609 _tmp[i].innerHTML = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6610 _tmp[i].appendChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6611 _tmp[i].style.fontFamily = 'inherit';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6612 this.currentElement[this.currentElement.length] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6613 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6614 if (_tmp[i].parentNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6615 _tmp[i].parentNode.replaceChild(el, _tmp[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6616 this.currentElement[this.currentElement.length] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6617 this.currentEvent = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6618 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6619 //Force Safari to focus the new element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6620 this._getSelection().setBaseAndExtent(el, 0, el, 0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6621 if (this.browser.webkit3) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6622 this._getSelection().collapseToStart();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6623 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6624 this._getSelection().collapse(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6625 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6626 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6627 if (this.browser.ie && tagStyle && tagStyle.fontSize) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6628 this._getSelection().empty();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6629 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6630 if (this.browser.gecko) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6631 this._getSelection().collapseToStart();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6632 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6633 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6634 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6635 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6636 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6637 var len = this.currentElement.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6638 for (var o = 0; o < len; o++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6639 if ((o + 1) != len) { //Skip the last one in the list
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6640 if (this.currentElement[o] && this.currentElement[o].nextSibling) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6641 if (this._isElement(this.currentElement[o], 'br')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6642 this.currentElement[this.currentElement.length] = this.currentElement[o].nextSibling;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6643 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6644 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6645 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6646 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6647 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6648 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6649 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6650 * @method saveHTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6651 * @description Cleans the HTML with the cleanHTML method then places that string back into the textarea.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6652 * @return String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6653 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6654 saveHTML: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6655 var html = this.cleanHTML();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6656 if (this._textarea) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6657 this.get('element').value = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6658 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6659 this.get('element').innerHTML = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6660 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6661 if (this.get('saveEl') !== this.get('element')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6662 var out = this.get('saveEl');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6663 if (Lang.isString(out)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6664 out = Dom.get(out);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6665 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6666 if (out) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6667 if (out.tagName.toLowerCase() === 'textarea') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6668 out.value = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6669 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6670 out.innerHTML = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6671 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6672 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6673 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6674 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6675 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6676 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6677 * @method setEditorHTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6678 * @param {String} incomingHTML The html content to load into the editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6679 * @description Loads HTML into the editors body
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6680 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6681 setEditorHTML: function(incomingHTML) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6682 var html = this._cleanIncomingHTML(incomingHTML);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6683 html = html.replace(/RIGHT_BRACKET/gi, '{');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6684 html = html.replace(/LEFT_BRACKET/gi, '}');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6685 this._getDoc().body.innerHTML = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6686 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6687 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6688 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6689 * @method getEditorHTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6690 * @description Gets the unprocessed/unfiltered HTML from the editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6691 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6692 getEditorHTML: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6693 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6694 var b = this._getDoc().body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6695 if (b === null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6696 YAHOO.log('Body is null, returning null.', 'error', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6697 return null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6698 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6699 return this._getDoc().body.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6700 } catch (e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6701 return '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6702 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6703 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6704 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6705 * @method show
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6706 * @description This method needs to be called if the Editor was hidden (like in a TabView or Panel). It is used to reset the editor after being in a container that was set to display none.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6707 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6708 show: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6709 if (this.browser.gecko) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6710 this._setDesignMode('on');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6711 this.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6712 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6713 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6714 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6715 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6716 self._setInitialContent.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6717 }, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6718 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6719 //Adding this will close all other Editor window's when showing this one.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6720 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6721 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6722 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6723 //Put the iframe back in place
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6724 this.get('iframe').setStyle('position', 'static');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6725 this.get('iframe').setStyle('left', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6726 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6727 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6728 * @method hide
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6729 * @description This method needs to be called if the Editor is to be hidden (like in a TabView or Panel). It should be called to clear timeouts and close open editor windows.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6730 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6731 hide: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6732 //Adding this will close all other Editor window's.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6733 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6734 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6735 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6736 if (this._fixNodesTimer) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6737 clearTimeout(this._fixNodesTimer);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6738 this._fixNodesTimer = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6739 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6740 if (this._nodeChangeTimer) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6741 clearTimeout(this._nodeChangeTimer);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6742 this._nodeChangeTimer = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6743 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6744 this._lastNodeChange = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6745 //Move the iframe off of the screen, so that in containers with visiblity hidden, IE will not cover other elements.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6746 this.get('iframe').setStyle('position', 'absolute');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6747 this.get('iframe').setStyle('left', '-9999px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6748 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6749 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6750 * @method _cleanIncomingHTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6751 * @param {String} html The unfiltered HTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6752 * @description Process the HTML with a few regexes to clean it up and stabilize the input
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6753 * @return {String} The filtered HTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6754 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6755 _cleanIncomingHTML: function(html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6756 html = html.replace(/{/gi, 'RIGHT_BRACKET');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6757 html = html.replace(/}/gi, 'LEFT_BRACKET');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6758
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6759 html = html.replace(/<strong([^>]*)>/gi, '<b$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6760 html = html.replace(/<\/strong>/gi, '</b>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6761
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6762 //replace embed before em check
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6763 html = html.replace(/<embed([^>]*)>/gi, '<YUI_EMBED$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6764 html = html.replace(/<\/embed>/gi, '</YUI_EMBED>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6765
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6766 html = html.replace(/<em([^>]*)>/gi, '<i$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6767 html = html.replace(/<\/em>/gi, '</i>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6768 html = html.replace(/_moz_dirty=""/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6769
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6770 //Put embed tags back in..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6771 html = html.replace(/<YUI_EMBED([^>]*)>/gi, '<embed$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6772 html = html.replace(/<\/YUI_EMBED>/gi, '</embed>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6773 if (this.get('plainText')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6774 YAHOO.log('Filtering as plain text', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6775 html = html.replace(/\n/g, '<br>').replace(/\r/g, '<br>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6776 html = html.replace(/ /gi, '&nbsp;&nbsp;'); //Replace all double spaces
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6777 html = html.replace(/\t/gi, '&nbsp;&nbsp;&nbsp;&nbsp;'); //Replace all tabs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6778 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6779 //Removing Script Tags from the Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6780 html = html.replace(/<script([^>]*)>/gi, '<bad>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6781 html = html.replace(/<\/script([^>]*)>/gi, '</bad>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6782 html = html.replace(/&lt;script([^>]*)&gt;/gi, '<bad>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6783 html = html.replace(/&lt;\/script([^>]*)&gt;/gi, '</bad>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6784 //Replace the line feeds
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6785 html = html.replace(/\r\n/g, '<YUI_LF>').replace(/\n/g, '<YUI_LF>').replace(/\r/g, '<YUI_LF>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6786
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6787 //Remove Bad HTML elements (used to be script nodes)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6788 html = html.replace(new RegExp('<bad([^>]*)>(.*?)<\/bad>', 'gi'), '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6789 //Replace the lines feeds
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6790 html = html.replace(/<YUI_LF>/g, '\n');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6791 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6792 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6793 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6794 * @method cleanHTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6795 * @param {String} html The unfiltered HTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6796 * @description Process the HTML with a few regexes to clean it up and stabilize the output
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6797 * @return {String} The filtered HTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6798 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6799 cleanHTML: function(html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6800 //Start Filtering Output
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6801 //Begin RegExs..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6802 if (!html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6803 html = this.getEditorHTML();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6804 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6805 var markup = this.get('markup');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6806 //Make some backups...
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6807 html = this.pre_filter_linebreaks(html, markup);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6808
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6809 //Filter MS Word
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6810 html = this.filter_msword(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6811
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6812 html = html.replace(/<img([^>]*)\/>/gi, '<YUI_IMG$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6813 html = html.replace(/<img([^>]*)>/gi, '<YUI_IMG$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6814
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6815 html = html.replace(/<input([^>]*)\/>/gi, '<YUI_INPUT$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6816 html = html.replace(/<input([^>]*)>/gi, '<YUI_INPUT$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6817
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6818 html = html.replace(/<ul([^>]*)>/gi, '<YUI_UL$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6819 html = html.replace(/<\/ul>/gi, '<\/YUI_UL>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6820 html = html.replace(/<blockquote([^>]*)>/gi, '<YUI_BQ$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6821 html = html.replace(/<\/blockquote>/gi, '<\/YUI_BQ>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6822
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6823 html = html.replace(/<embed([^>]*)>/gi, '<YUI_EMBED$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6824 html = html.replace(/<\/embed>/gi, '<\/YUI_EMBED>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6825
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6826 //Convert b and i tags to strong and em tags
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6827 if ((markup == 'semantic') || (markup == 'xhtml')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6828 html = html.replace(/<i(\s+[^>]*)?>/gi, '<em$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6829 html = html.replace(/<\/i>/gi, '</em>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6830 html = html.replace(/<b(\s+[^>]*)?>/gi, '<strong$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6831 html = html.replace(/<\/b>/gi, '</strong>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6832 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6833
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6834 html = html.replace(/_moz_dirty=""/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6835
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6836 //normalize strikethrough
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6837 html = html.replace(/<strike/gi, '<span style="text-decoration: line-through;"');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6838 html = html.replace(/\/strike>/gi, '/span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6839
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6840
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6841 //Case Changing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6842 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6843 html = html.replace(/text-decoration/gi, 'text-decoration');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6844 html = html.replace(/font-weight/gi, 'font-weight');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6845 html = html.replace(/_width="([^>]*)"/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6846 html = html.replace(/_height="([^>]*)"/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6847 //Cleanup Image URL's
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6848 var url = this._baseHREF.replace(/\//gi, '\\/'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6849 re = new RegExp('src="' + url, 'gi');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6850 html = html.replace(re, 'src="');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6851 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6852 html = html.replace(/<font/gi, '<font');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6853 html = html.replace(/<\/font>/gi, '</font>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6854 html = html.replace(/<span/gi, '<span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6855 html = html.replace(/<\/span>/gi, '</span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6856 if ((markup == 'semantic') || (markup == 'xhtml') || (markup == 'css')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6857 html = html.replace(new RegExp('<font([^>]*)face="([^>]*)">(.*?)<\/font>', 'gi'), '<span $1 style="font-family: $2;">$3</span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6858 html = html.replace(/<u/gi, '<span style="text-decoration: underline;"');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6859 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6860 html = html.replace(new RegExp('<span class="Apple-style-span" style="font-weight: bold;">([^>]*)<\/span>', 'gi'), '<strong>$1</strong>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6861 html = html.replace(new RegExp('<span class="Apple-style-span" style="font-style: italic;">([^>]*)<\/span>', 'gi'), '<em>$1</em>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6862 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6863 html = html.replace(/\/u>/gi, '/span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6864 if (markup == 'css') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6865 html = html.replace(/<em([^>]*)>/gi, '<i$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6866 html = html.replace(/<\/em>/gi, '</i>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6867 html = html.replace(/<strong([^>]*)>/gi, '<b$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6868 html = html.replace(/<\/strong>/gi, '</b>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6869 html = html.replace(/<b/gi, '<span style="font-weight: bold;"');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6870 html = html.replace(/\/b>/gi, '/span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6871 html = html.replace(/<i/gi, '<span style="font-style: italic;"');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6872 html = html.replace(/\/i>/gi, '/span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6873 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6874 html = html.replace(/ /gi, ' '); //Replace all double spaces and replace with a single
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6875 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6876 html = html.replace(/<u/gi, '<u');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6877 html = html.replace(/\/u>/gi, '/u>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6878 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6879 html = html.replace(/<ol([^>]*)>/gi, '<ol$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6880 html = html.replace(/\/ol>/gi, '/ol>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6881 html = html.replace(/<li/gi, '<li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6882 html = html.replace(/\/li>/gi, '/li>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6883 html = this.filter_safari(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6884
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6885 html = this.filter_internals(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6886
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6887 html = this.filter_all_rgb(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6888
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6889 //Replace our backups with the real thing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6890 html = this.post_filter_linebreaks(html, markup);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6891
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6892 if (markup == 'xhtml') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6893 html = html.replace(/<YUI_IMG([^>]*)>/g, '<img $1 />');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6894 html = html.replace(/<YUI_INPUT([^>]*)>/g, '<input $1 />');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6895 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6896 html = html.replace(/<YUI_IMG([^>]*)>/g, '<img $1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6897 html = html.replace(/<YUI_INPUT([^>]*)>/g, '<input $1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6898 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6899 html = html.replace(/<YUI_UL([^>]*)>/g, '<ul$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6900 html = html.replace(/<\/YUI_UL>/g, '<\/ul>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6901
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6902 html = this.filter_invalid_lists(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6903
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6904 html = html.replace(/<YUI_BQ([^>]*)>/g, '<blockquote$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6905 html = html.replace(/<\/YUI_BQ>/g, '<\/blockquote>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6906
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6907 html = html.replace(/<YUI_EMBED([^>]*)>/g, '<embed$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6908 html = html.replace(/<\/YUI_EMBED>/g, '<\/embed>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6909
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6910 //This should fix &amp;'s in URL's
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6911 html = html.replace(/ &amp; /gi, ' YUI_AMP ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6912 html = html.replace(/ &amp;/gi, ' YUI_AMP_F ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6913 html = html.replace(/&amp; /gi, ' YUI_AMP_R ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6914 html = html.replace(/&amp;/gi, '&');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6915 html = html.replace(/ YUI_AMP /gi, ' &amp; ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6916 html = html.replace(/ YUI_AMP_F /gi, ' &amp;');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6917 html = html.replace(/ YUI_AMP_R /gi, '&amp; ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6918
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6919 //Trim the output, removing whitespace from the beginning and end
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6920 html = YAHOO.lang.trim(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6921
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6922 if (this.get('removeLineBreaks')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6923 html = html.replace(/\n/g, '').replace(/\r/g, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6924 html = html.replace(/ /gi, ' '); //Replace all double spaces and replace with a single
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6925 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6926
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6927 for (var v in this.invalidHTML) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6928 if (YAHOO.lang.hasOwnProperty(this.invalidHTML, v)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6929 if (Lang.isObject(v) && v.keepContents) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6930 html = html.replace(new RegExp('<' + v + '([^>]*)>(.*?)<\/' + v + '>', 'gi'), '$1');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6931 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6932 html = html.replace(new RegExp('<' + v + '([^>]*)>(.*?)<\/' + v + '>', 'gi'), '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6933 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6934 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6935 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6936
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6937 /* LATER -- Add DOM manipulation
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6938 console.log(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6939 var frag = document.createDocumentFragment();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6940 frag.innerHTML = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6941
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6942 var ps = frag.getElementsByTagName('p'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6943 len = ps.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6944 for (var i = 0; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6945 var ps2 = ps[i].getElementsByTagName('p');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6946 if (ps2.length) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6947
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6948 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6949
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6950 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6951 html = frag.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6952 console.log(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6953 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6954
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6955 this.fireEvent('cleanHTML', { type: 'cleanHTML', target: this, html: html });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6956
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6957 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6958 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6959 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6960 * @method filter_msword
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6961 * @param String html The HTML string to filter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6962 * @description Filters out msword html attributes and other junk. Activate with filterWord: true in config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6963 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6964 filter_msword: function(html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6965 if (!this.get('filterWord')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6966 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6967 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6968 //Remove the ms o: tags
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6969 html = html.replace(/<o:p>\s*<\/o:p>/g, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6970 html = html.replace(/<o:p>[\s\S]*?<\/o:p>/g, '&nbsp;');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6971
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6972 //Remove the ms w: tags
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6973 html = html.replace( /<w:[^>]*>[\s\S]*?<\/w:[^>]*>/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6974
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6975 //Remove mso-? styles.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6976 html = html.replace( /\s*mso-[^:]+:[^;"]+;?/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6977
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6978 //Remove more bogus MS styles.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6979 html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*;/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6980 html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6981 html = html.replace( /\s*TEXT-INDENT: 0cm\s*;/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6982 html = html.replace( /\s*TEXT-INDENT: 0cm\s*"/gi, "\"");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6983 html = html.replace( /\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6984 html = html.replace( /\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"" );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6985 html = html.replace( /\s*tab-stops:[^;"]*;?/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6986 html = html.replace( /\s*tab-stops:[^"]*/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6987
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6988 //Remove XML declarations
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6989 html = html.replace(/<\\?\?xml[^>]*>/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6990
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6991 //Remove lang
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6992 html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6993
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6994 //Remove language tags
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6995 html = html.replace( /<(\w[^>]*) language=([^ |>]*)([^>]*)/gi, "<$1$3");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6996
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6997 //Remove onmouseover and onmouseout events (from MS Word comments effect)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6998 html = html.replace( /<(\w[^>]*) onmouseover="([^\"]*)"([^>]*)/gi, "<$1$3");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6999 html = html.replace( /<(\w[^>]*) onmouseout="([^\"]*)"([^>]*)/gi, "<$1$3");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7000
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7001 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7002 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7003 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7004 * @method filter_invalid_lists
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7005 * @param String html The HTML string to filter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7006 * @description Filters invalid ol and ul list markup, converts this: <li></li><ol>..</ol> to this: <li></li><li><ol>..</ol></li>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7007 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7008 filter_invalid_lists: function(html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7009 html = html.replace(/<\/li>\n/gi, '</li>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7010
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7011 html = html.replace(/<\/li><ol>/gi, '</li><li><ol>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7012 html = html.replace(/<\/ol>/gi, '</ol></li>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7013 html = html.replace(/<\/ol><\/li>\n/gi, "</ol>");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7014
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7015 html = html.replace(/<\/li><ul>/gi, '</li><li><ul>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7016 html = html.replace(/<\/ul>/gi, '</ul></li>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7017 html = html.replace(/<\/ul><\/li>\n?/gi, "</ul>");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7018
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7019 html = html.replace(/<\/li>/gi, "</li>");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7020 html = html.replace(/<\/ol>/gi, "</ol>");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7021 html = html.replace(/<ol>/gi, "<ol>");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7022 html = html.replace(/<ul>/gi, "<ul>");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7023 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7024 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7025 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7026 * @method filter_safari
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7027 * @param String html The HTML string to filter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7028 * @description Filters strings specific to Safari
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7029 * @return String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7030 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7031 filter_safari: function(html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7032 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7033 //<span class="Apple-tab-span" style="white-space:pre"> </span>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7034 html = html.replace(/<span class="Apple-tab-span" style="white-space:pre">([^>])<\/span>/gi, '&nbsp;&nbsp;&nbsp;&nbsp;');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7035 html = html.replace(/Apple-style-span/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7036 html = html.replace(/style="line-height: normal;"/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7037 html = html.replace(/yui-wk-div/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7038 html = html.replace(/yui-wk-p/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7039
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7040
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7041 //Remove bogus LI's
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7042 html = html.replace(/<li><\/li>/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7043 html = html.replace(/<li> <\/li>/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7044 html = html.replace(/<li> <\/li>/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7045 //Remove bogus DIV's - updated from just removing the div's to replacing /div with a break
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7046 if (this.get('ptags')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7047 html = html.replace(/<div([^>]*)>/g, '<p$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7048 html = html.replace(/<\/div>/gi, '</p>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7049 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7050 //html = html.replace(/<div>/gi, '<br>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7051 html = html.replace(/<div([^>]*)>([ tnr]*)<\/div>/gi, '<br>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7052 html = html.replace(/<\/div>/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7053 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7054 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7055 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7056 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7057 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7058 * @method filter_internals
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7059 * @param String html The HTML string to filter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7060 * @description Filters internal RTE strings and bogus attrs we don't want
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7061 * @return String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7062 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7063 filter_internals: function(html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7064 html = html.replace(/\r/g, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7065 //Fix stuff we don't want
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7066 html = html.replace(/<\/?(body|head|html)[^>]*>/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7067 //Fix last BR in LI
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7068 html = html.replace(/<YUI_BR><\/li>/gi, '</li>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7069
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7070 html = html.replace(/yui-tag-span/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7071 html = html.replace(/yui-tag/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7072 html = html.replace(/yui-non/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7073 html = html.replace(/yui-img/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7074 html = html.replace(/ tag="span"/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7075 html = html.replace(/ class=""/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7076 html = html.replace(/ style=""/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7077 html = html.replace(/ class=" "/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7078 html = html.replace(/ class=" "/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7079 html = html.replace(/ target=""/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7080 html = html.replace(/ title=""/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7081
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7082 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7083 html = html.replace(/ class= /gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7084 html = html.replace(/ class= >/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7085 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7086
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7087 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7088 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7089 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7090 * @method filter_all_rgb
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7091 * @param String str The HTML string to filter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7092 * @description Converts all RGB color strings found in passed string to a hex color, example: style="color: rgb(0, 255, 0)" converts to style="color: #00ff00"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7093 * @return String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7094 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7095 filter_all_rgb: function(str) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7096 var exp = new RegExp("rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)", "gi");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7097 var arr = str.match(exp);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7098 if (Lang.isArray(arr)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7099 for (var i = 0; i < arr.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7100 var color = this.filter_rgb(arr[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7101 str = str.replace(arr[i].toString(), color);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7102 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7103 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7104
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7105 return str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7106 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7107 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7108 * @method filter_rgb
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7109 * @param String css The CSS string containing rgb(#,#,#);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7110 * @description Converts an RGB color string to a hex color, example: rgb(0, 255, 0) converts to #00ff00
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7111 * @return String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7112 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7113 filter_rgb: function(css) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7114 if (css.toLowerCase().indexOf('rgb') != -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7115 var exp = new RegExp("(.*?)rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)(.*?)", "gi");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7116 var rgb = css.replace(exp, "$1,$2,$3,$4,$5").split(',');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7117
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7118 if (rgb.length == 5) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7119 var r = parseInt(rgb[1], 10).toString(16);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7120 var g = parseInt(rgb[2], 10).toString(16);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7121 var b = parseInt(rgb[3], 10).toString(16);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7122
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7123 r = r.length == 1 ? '0' + r : r;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7124 g = g.length == 1 ? '0' + g : g;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7125 b = b.length == 1 ? '0' + b : b;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7126
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7127 css = "#" + r + g + b;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7128 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7129 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7130 return css;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7131 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7132 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7133 * @method pre_filter_linebreaks
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7134 * @param String html The HTML to filter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7135 * @param String markup The markup type to filter to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7136 * @description HTML Pre Filter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7137 * @return String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7138 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7139 pre_filter_linebreaks: function(html, markup) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7140 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7141 html = html.replace(/<br class="khtml-block-placeholder">/gi, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7142 html = html.replace(/<br class="webkit-block-placeholder">/gi, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7143 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7144 html = html.replace(/<br>/gi, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7145 html = html.replace(/<br (.*?)>/gi, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7146 html = html.replace(/<br\/>/gi, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7147 html = html.replace(/<br \/>/gi, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7148 html = html.replace(/<div><YUI_BR><\/div>/gi, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7149 html = html.replace(/<p>(&nbsp;|&#160;)<\/p>/g, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7150 html = html.replace(/<p><br>&nbsp;<\/p>/gi, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7151 html = html.replace(/<p>&nbsp;<\/p>/gi, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7152 //Fix last BR
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7153 html = html.replace(/<YUI_BR>$/, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7154 //Fix last BR in P
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7155 html = html.replace(/<YUI_BR><\/p>/g, '</p>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7156 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7157 html = html.replace(/&nbsp;&nbsp;&nbsp;&nbsp;/g, '\t');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7158 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7159 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7160 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7161 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7162 * @method post_filter_linebreaks
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7163 * @param String html The HTML to filter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7164 * @param String markup The markup type to filter to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7165 * @description HTML Pre Filter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7166 * @return String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7167 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7168 post_filter_linebreaks: function(html, markup) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7169 if (markup == 'xhtml') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7170 html = html.replace(/<YUI_BR>/g, '<br />');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7171 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7172 html = html.replace(/<YUI_BR>/g, '<br>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7173 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7174 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7175 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7176 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7177 * @method clearEditorDoc
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7178 * @description Clear the doc of the Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7179 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7180 clearEditorDoc: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7181 this._getDoc().body.innerHTML = '&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7182 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7183 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7184 * @method openWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7185 * @description Override Method for Advanced Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7186 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7187 openWindow: function(win) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7188 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7189 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7190 * @method moveWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7191 * @description Override Method for Advanced Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7192 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7193 moveWindow: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7194 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7195 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7196 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7197 * @method _closeWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7198 * @description Override Method for Advanced Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7199 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7200 _closeWindow: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7201 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7202 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7203 * @method closeWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7204 * @description Override Method for Advanced Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7205 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7206 closeWindow: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7207 //this.unsubscribeAll('afterExecCommand');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7208 this.toolbar.resetAllButtons();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7209 this.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7210 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7211 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7212 * @method destroy
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7213 * @description Destroys the editor, all of it's elements and objects.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7214 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7215 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7216 destroy: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7217 if (this._nodeChangeDelayTimer) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7218 clearTimeout(this._nodeChangeDelayTimer);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7219 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7220 this.hide();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7221
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7222 YAHOO.log('Destroying Editor', 'warn', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7223 if (this.resize) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7224 YAHOO.log('Destroying Resize', 'warn', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7225 this.resize.destroy();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7226 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7227 if (this.dd) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7228 YAHOO.log('Unreg DragDrop Instance', 'warn', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7229 this.dd.unreg();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7230 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7231 if (this.get('panel')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7232 YAHOO.log('Destroying Editor Panel', 'warn', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7233 this.get('panel').destroy();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7234 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7235 this.saveHTML();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7236 this.toolbar.destroy();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7237 YAHOO.log('Restoring TextArea', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7238 this.setStyle('visibility', 'visible');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7239 this.setStyle('position', 'static');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7240 this.setStyle('top', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7241 this.setStyle('left', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7242 var textArea = this.get('element');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7243 this.get('element_cont').get('parentNode').replaceChild(textArea, this.get('element_cont').get('element'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7244 this.get('element_cont').get('element').innerHTML = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7245 this.set('handleSubmit', false); //Remove the submit handler
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7246 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7247 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7248 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7249 * @method toString
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7250 * @description Returns a string representing the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7251 * @return {String}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7252 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7253 toString: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7254 var str = 'SimpleEditor';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7255 if (this.get && this.get('element_cont')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7256 str = 'SimpleEditor (#' + this.get('element_cont').get('id') + ')' + ((this.get('disabled') ? ' Disabled' : ''));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7257 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7258 return str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7259 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7260 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7261
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7262 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7263 * @event toolbarLoaded
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7264 * @description Event is fired during the render process directly after the Toolbar is loaded. Allowing you to attach events to the toolbar. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7265 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7266 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7267 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7268 * @event cleanHTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7269 * @description Event is fired after the cleanHTML method is called.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7270 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7271 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7272 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7273 * @event afterRender
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7274 * @description Event is fired after the render process finishes. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7275 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7276 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7277 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7278 * @event editorContentLoaded
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7279 * @description Event is fired after the editor iframe's document fully loads and fires it's onload event. From here you can start injecting your own things into the document. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7280 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7281 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7282 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7283 * @event beforeNodeChange
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7284 * @description Event fires at the beginning of the nodeChange process. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7285 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7286 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7287 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7288 * @event afterNodeChange
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7289 * @description Event fires at the end of the nodeChange process. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7290 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7291 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7292 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7293 * @event beforeExecCommand
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7294 * @description Event fires at the beginning of the execCommand process. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7295 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7296 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7297 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7298 * @event afterExecCommand
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7299 * @description Event fires at the end of the execCommand process. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7300 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7301 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7302 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7303 * @event editorMouseUp
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7304 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7305 * @description Passed through HTML Event. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7306 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7307 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7308 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7309 * @event editorMouseDown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7310 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7311 * @description Passed through HTML Event. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7312 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7313 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7314 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7315 * @event editorDoubleClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7316 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7317 * @description Passed through HTML Event. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7318 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7319 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7320 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7321 * @event editorClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7322 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7323 * @description Passed through HTML Event. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7324 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7325 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7326 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7327 * @event editorKeyUp
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7328 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7329 * @description Passed through HTML Event. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7330 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7331 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7332 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7333 * @event editorKeyPress
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7334 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7335 * @description Passed through HTML Event. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7336 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7337 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7338 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7339 * @event editorKeyDown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7340 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7341 * @description Passed through HTML Event. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7342 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7343 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7344 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7345 * @event beforeEditorMouseUp
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7346 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7347 * @description Fires before editor event, returning false will stop the internal processing.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7348 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7349 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7350 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7351 * @event beforeEditorMouseDown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7352 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7353 * @description Fires before editor event, returning false will stop the internal processing.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7354 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7355 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7356 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7357 * @event beforeEditorDoubleClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7358 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7359 * @description Fires before editor event, returning false will stop the internal processing.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7360 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7361 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7362 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7363 * @event beforeEditorClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7364 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7365 * @description Fires before editor event, returning false will stop the internal processing.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7366 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7367 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7368 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7369 * @event beforeEditorKeyUp
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7370 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7371 * @description Fires before editor event, returning false will stop the internal processing.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7372 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7373 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7374 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7375 * @event beforeEditorKeyPress
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7376 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7377 * @description Fires before editor event, returning false will stop the internal processing.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7378 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7379 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7380 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7381 * @event beforeEditorKeyDown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7382 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7383 * @description Fires before editor event, returning false will stop the internal processing.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7384 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7385 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7386
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7387 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7388 * @event editorWindowFocus
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7389 * @description Fires when the iframe is focused. Note, this is window focus event, not an Editor focus event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7390 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7391 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7392 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7393 * @event editorWindowBlur
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7394 * @description Fires when the iframe is blurred. Note, this is window blur event, not an Editor blur event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7395 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7396 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7397
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7398
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7399 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7400 * @description Singleton object used to track the open window objects and panels across the various open editors
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7401 * @class EditorInfo
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7402 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7403 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7404 YAHOO.widget.EditorInfo = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7405 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7406 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7407 * @property _instances
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7408 * @description A reference to all editors on the page.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7409 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7410 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7411 _instances: {},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7412 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7413 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7414 * @property blankImage
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7415 * @description A reference to the blankImage url
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7416 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7417 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7418 blankImage: '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7419 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7420 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7421 * @property window
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7422 * @description A reference to the currently open window object in any editor on the page.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7423 * @type Object <a href="YAHOO.widget.EditorWindow.html">YAHOO.widget.EditorWindow</a>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7424 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7425 window: {},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7426 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7427 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7428 * @property panel
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7429 * @description A reference to the currently open panel in any editor on the page.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7430 * @type Object <a href="YAHOO.widget.Overlay.html">YAHOO.widget.Overlay</a>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7431 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7432 panel: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7433 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7434 * @method getEditorById
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7435 * @description Returns a reference to the Editor object associated with the given textarea
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7436 * @param {String/HTMLElement} id The id or reference of the textarea to return the Editor instance of
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7437 * @return Object <a href="YAHOO.widget.Editor.html">YAHOO.widget.Editor</a>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7438 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7439 getEditorById: function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7440 if (!YAHOO.lang.isString(id)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7441 //Not a string, assume a node Reference
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7442 id = id.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7443 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7444 if (this._instances[id]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7445 return this._instances[id];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7446 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7447 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7448 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7449 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7450 * @method saveAll
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7451 * @description Saves all Editor instances on the page. If a form reference is passed, only Editor's bound to this form will be saved.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7452 * @param {HTMLElement} form The form to check if this Editor instance belongs to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7453 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7454 saveAll: function(form) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7455 var i, e, items = YAHOO.widget.EditorInfo._instances;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7456 if (form) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7457 for (i in items) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7458 if (Lang.hasOwnProperty(items, i)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7459 e = items[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7460 if (e.get('element').form && (e.get('element').form == form)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7461 e.saveHTML();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7462 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7463 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7464 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7465 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7466 for (i in items) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7467 if (Lang.hasOwnProperty(items, i)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7468 items[i].saveHTML();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7469 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7470 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7471 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7472 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7473 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7474 * @method toString
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7475 * @description Returns a string representing the EditorInfo.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7476 * @return {String}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7477 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7478 toString: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7479 var len = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7480 for (var i in this._instances) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7481 if (Lang.hasOwnProperty(this._instances, i)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7482 len++;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7483 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7484 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7485 return 'Editor Info (' + len + ' registered intance' + ((len > 1) ? 's' : '') + ')';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7486 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7487 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7488
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7489
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7490
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7491
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7492 })();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7493 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7494 * @module editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7495 * @description <p>The Rich Text Editor is a UI control that replaces a standard HTML textarea; it allows for the rich formatting of text content, including common structural treatments like lists, formatting treatments like bold and italic text, and drag-and-drop inclusion and sizing of images. The Rich Text Editor's toolbar is extensible via a plugin architecture so that advanced implementations can achieve a high degree of customization.</p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7496 * @namespace YAHOO.widget
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7497 * @requires yahoo, dom, element, event, container_core, simpleeditor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7498 * @optional dragdrop, animation, menu, button, resize
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7499 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7500
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7501 (function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7502 var Dom = YAHOO.util.Dom,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7503 Event = YAHOO.util.Event,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7504 Lang = YAHOO.lang,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7505 Toolbar = YAHOO.widget.Toolbar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7506
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7507 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7508 * The Rich Text Editor is a UI control that replaces a standard HTML textarea; it allows for the rich formatting of text content, including common structural treatments like lists, formatting treatments like bold and italic text, and drag-and-drop inclusion and sizing of images. The Rich Text Editor's toolbar is extensible via a plugin architecture so that advanced implementations can achieve a high degree of customization.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7509 * @constructor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7510 * @class Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7511 * @extends YAHOO.widget.SimpleEditor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7512 * @param {String/HTMLElement} el The textarea element to turn into an editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7513 * @param {Object} attrs Object liternal containing configuration parameters.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7514 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7515
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7516 YAHOO.widget.Editor = function(el, attrs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7517 YAHOO.log('Editor Initalizing', 'info', 'Editor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7518 YAHOO.widget.Editor.superclass.constructor.call(this, el, attrs);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7519 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7520
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7521 YAHOO.extend(YAHOO.widget.Editor, YAHOO.widget.SimpleEditor, {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7522 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7523 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7524 * @property _undoCache
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7525 * @description An Array hash of the Undo Levels.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7526 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7527 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7528 _undoCache: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7529 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7530 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7531 * @property _undoLevel
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7532 * @description The index of the current undo state.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7533 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7534 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7535 _undoLevel: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7536 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7537 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7538 * @method _hasUndoLevel
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7539 * @description Checks to see if we have an undo level available
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7540 * @return Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7541 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7542 _hasUndoLevel: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7543 return ((this._undoCache.length > 1) && this._undoLevel);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7544 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7545 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7546 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7547 * @method _undoNodeChange
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7548 * @description nodeChange listener for undo processing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7549 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7550 _undoNodeChange: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7551 var undo_button = this.toolbar.getButtonByValue('undo'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7552 redo_button = this.toolbar.getButtonByValue('redo');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7553 if (undo_button && redo_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7554 if (this._hasUndoLevel()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7555 this.toolbar.enableButton(undo_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7556 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7557 if (this._undoLevel < this._undoCache.length) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7558 this.toolbar.enableButton(redo_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7559 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7560 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7561 this._lastCommand = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7562 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7563 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7564 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7565 * @method _checkUndo
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7566 * @description Prunes the undo cache when it reaches the maxUndo config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7567 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7568 _checkUndo: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7569 var len = this._undoCache.length,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7570 tmp = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7571 if (len >= this.get('maxUndo')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7572 //YAHOO.log('Undo cache too large (' + len + '), pruning..', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7573 for (var i = (len - this.get('maxUndo')); i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7574 tmp.push(this._undoCache[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7575 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7576 this._undoCache = tmp;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7577 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7578 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7579 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7580 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7581 * @method _putUndo
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7582 * @description Puts the content of the Editor into the _undoCache.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7583 * //TODO Convert the hash to a series of TEXTAREAS to store state in.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7584 * @param {String} str The content of the Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7585 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7586 _putUndo: function(str) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7587 if (this._undoLevel === this._undoCache.length) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7588 this._undoCache.push(str);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7589 this._undoLevel = this._undoCache.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7590 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7591 var str = this.getEditorHTML();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7592 var last = this._undoCache[this._undoLevel];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7593 if (last) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7594 if (str !== last) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7595 this._undoCache = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7596 this._undoLevel = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7597 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7598 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7599 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7600 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7601 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7602 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7603 * @method _getUndo
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7604 * @description Get's a level from the undo cache.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7605 * @param {Number} index The index of the undo level we want to get.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7606 * @return {String}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7607 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7608 _getUndo: function(index) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7609 this._undoLevel = index;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7610 return this._undoCache[index];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7611 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7612 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7613 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7614 * @method _storeUndo
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7615 * @description Method to call when you want to store an undo state. Currently called from nodeChange and _handleKeyUp
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7616 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7617 _storeUndo: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7618 if (this._lastCommand === 'undo' || this._lastCommand === 'redo') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7619 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7620 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7621 if (!this._undoCache) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7622 this._undoCache = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7623 this._undoLevel = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7624 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7625 this._checkUndo();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7626 var str = this.getEditorHTML();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7627 //var last = this._undoCache[this._undoCache.length - 1];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7628 var last = this._undoCache[this._undoLevel - 1];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7629 if (last) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7630 if (str !== last) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7631 //YAHOO.log('Storing Undo', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7632 this._putUndo(str);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7633 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7634 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7635 //YAHOO.log('Storing Undo', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7636 this._putUndo(str);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7637 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7638 this._undoNodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7639 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7640 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7641 * @property STR_BEFORE_EDITOR
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7642 * @description The accessibility string for the element before the iFrame
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7643 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7644 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7645 STR_BEFORE_EDITOR: 'This text field can contain stylized text and graphics. To cycle through all formatting options, use the keyboard shortcut Control + Shift + T to place focus on the toolbar and navigate between option heading names. <h4>Common formatting keyboard shortcuts:</h4><ul><li>Control Shift B sets text to bold</li> <li>Control Shift I sets text to italic</li> <li>Control Shift U underlines text</li> <li>Control Shift [ aligns text left</li> <li>Control Shift | centers text</li> <li>Control Shift ] aligns text right</li> <li>Control Shift L adds an HTML link</li> <li>To exit this text editor use the keyboard shortcut Control + Shift + ESC.</li></ul>',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7646 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7647 * @property STR_CLOSE_WINDOW
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7648 * @description The Title of the close button in the Editor Window
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7649 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7650 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7651 STR_CLOSE_WINDOW: 'Close Window',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7652 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7653 * @property STR_CLOSE_WINDOW_NOTE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7654 * @description A note appearing in the Editor Window to tell the user that the Escape key will close the window
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7655 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7656 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7657 STR_CLOSE_WINDOW_NOTE: 'To close this window use the Control + Shift + W key',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7658 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7659 * @property STR_IMAGE_PROP_TITLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7660 * @description The title for the Image Property Editor Window
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7661 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7662 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7663 STR_IMAGE_PROP_TITLE: 'Image Options',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7664 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7665 * @property STR_IMAGE_TITLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7666 * @description The label string for Image Description
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7667 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7668 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7669 STR_IMAGE_TITLE: 'Description',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7670 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7671 * @property STR_IMAGE_SIZE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7672 * @description The label string for Image Size
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7673 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7674 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7675 STR_IMAGE_SIZE: 'Size',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7676 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7677 * @property STR_IMAGE_ORIG_SIZE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7678 * @description The label string for Original Image Size
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7679 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7680 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7681 STR_IMAGE_ORIG_SIZE: 'Original Size',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7682 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7683 * @property STR_IMAGE_COPY
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7684 * @description The label string for the image copy and paste message for Opera and Safari
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7685 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7686 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7687 STR_IMAGE_COPY: '<span class="tip"><span class="icon icon-info"></span><strong>Note:</strong>To move this image just highlight it, cut, and paste where ever you\'d like.</span>',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7688 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7689 * @property STR_IMAGE_PADDING
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7690 * @description The label string for the image padding.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7691 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7692 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7693 STR_IMAGE_PADDING: 'Padding',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7694 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7695 * @property STR_IMAGE_BORDER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7696 * @description The label string for the image border.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7697 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7698 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7699 STR_IMAGE_BORDER: 'Border',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7700 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7701 * @property STR_IMAGE_BORDER_SIZE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7702 * @description The label string for the image border size.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7703 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7704 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7705 STR_IMAGE_BORDER_SIZE: 'Border Size',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7706 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7707 * @property STR_IMAGE_BORDER_TYPE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7708 * @description The label string for the image border type.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7709 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7710 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7711 STR_IMAGE_BORDER_TYPE: 'Border Type',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7712 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7713 * @property STR_IMAGE_TEXTFLOW
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7714 * @description The label string for the image text flow.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7715 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7716 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7717 STR_IMAGE_TEXTFLOW: 'Text Flow',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7718 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7719 * @property STR_LOCAL_FILE_WARNING
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7720 * @description The label string for the local file warning.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7721 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7722 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7723 STR_LOCAL_FILE_WARNING: '<span class="tip"><span class="icon icon-warn"></span><strong>Note:</strong>This image/link points to a file on your computer and will not be accessible to others on the internet.</span>',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7724 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7725 * @property STR_LINK_PROP_TITLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7726 * @description The label string for the Link Property Editor Window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7727 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7728 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7729 STR_LINK_PROP_TITLE: 'Link Options',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7730 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7731 * @property STR_LINK_PROP_REMOVE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7732 * @description The label string for the Remove link from text link inside the property editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7733 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7734 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7735 STR_LINK_PROP_REMOVE: 'Remove link from text',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7736 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7737 * @property STR_LINK_NEW_WINDOW
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7738 * @description The string for the open in a new window label.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7739 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7740 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7741 STR_LINK_NEW_WINDOW: 'Open in a new window.',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7742 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7743 * @property STR_LINK_TITLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7744 * @description The string for the link description.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7745 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7746 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7747 STR_LINK_TITLE: 'Description',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7748 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7749 * @property STR_NONE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7750 * @description The string for the word none.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7751 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7752 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7753 STR_NONE: 'none',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7754 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7755 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7756 * @property CLASS_LOCAL_FILE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7757 * @description CSS class applied to an element when it's found to have a local url.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7758 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7759 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7760 CLASS_LOCAL_FILE: 'warning-localfile',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7761 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7762 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7763 * @property CLASS_HIDDEN
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7764 * @description CSS class applied to the body when the hiddenelements button is pressed.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7765 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7766 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7767 CLASS_HIDDEN: 'yui-hidden',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7768 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7769 * @method init
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7770 * @description The Editor class' initialization method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7771 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7772 init: function(p_oElement, p_oAttributes) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7773 YAHOO.log('init', 'info', 'Editor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7774
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7775 this._windows = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7776 if (!this._defaultToolbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7777 this._defaultToolbar = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7778 collapse: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7779 titlebar: 'Text Editing Tools',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7780 draggable: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7781 buttonType: 'advanced',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7782 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7783 { group: 'fontstyle', label: 'Font Name and Size',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7784 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7785 { type: 'select', label: 'Arial', value: 'fontname', disabled: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7786 menu: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7787 { text: 'Arial', checked: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7788 { text: 'Arial Black' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7789 { text: 'Comic Sans MS' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7790 { text: 'Courier New' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7791 { text: 'Lucida Console' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7792 { text: 'Tahoma' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7793 { text: 'Times New Roman' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7794 { text: 'Trebuchet MS' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7795 { text: 'Verdana' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7796 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7797 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7798 { type: 'spin', label: '13', value: 'fontsize', range: [ 9, 75 ], disabled: true }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7799 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7800 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7801 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7802 { group: 'textstyle', label: 'Font Style',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7803 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7804 { type: 'push', label: 'Bold CTRL + SHIFT + B', value: 'bold' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7805 { type: 'push', label: 'Italic CTRL + SHIFT + I', value: 'italic' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7806 { type: 'push', label: 'Underline CTRL + SHIFT + U', value: 'underline' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7807 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7808 { type: 'push', label: 'Subscript', value: 'subscript', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7809 { type: 'push', label: 'Superscript', value: 'superscript', disabled: true }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7810 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7811 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7812 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7813 { group: 'textstyle2', label: '&nbsp;',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7814 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7815 { type: 'color', label: 'Font Color', value: 'forecolor', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7816 { type: 'color', label: 'Background Color', value: 'backcolor', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7817 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7818 { type: 'push', label: 'Remove Formatting', value: 'removeformat', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7819 { type: 'push', label: 'Show/Hide Hidden Elements', value: 'hiddenelements' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7820 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7821 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7822 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7823 { group: 'undoredo', label: 'Undo/Redo',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7824 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7825 { type: 'push', label: 'Undo', value: 'undo', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7826 { type: 'push', label: 'Redo', value: 'redo', disabled: true }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7827
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7828 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7829 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7830 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7831 { group: 'alignment', label: 'Alignment',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7832 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7833 { type: 'push', label: 'Align Left CTRL + SHIFT + [', value: 'justifyleft' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7834 { type: 'push', label: 'Align Center CTRL + SHIFT + |', value: 'justifycenter' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7835 { type: 'push', label: 'Align Right CTRL + SHIFT + ]', value: 'justifyright' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7836 { type: 'push', label: 'Justify', value: 'justifyfull' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7837 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7838 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7839 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7840 { group: 'parastyle', label: 'Paragraph Style',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7841 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7842 { type: 'select', label: 'Normal', value: 'heading', disabled: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7843 menu: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7844 { text: 'Normal', value: 'none', checked: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7845 { text: 'Header 1', value: 'h1' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7846 { text: 'Header 2', value: 'h2' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7847 { text: 'Header 3', value: 'h3' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7848 { text: 'Header 4', value: 'h4' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7849 { text: 'Header 5', value: 'h5' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7850 { text: 'Header 6', value: 'h6' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7851 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7852 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7853 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7854 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7855 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7856
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7857 { group: 'indentlist2', label: 'Indenting and Lists',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7858 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7859 { type: 'push', label: 'Indent', value: 'indent', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7860 { type: 'push', label: 'Outdent', value: 'outdent', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7861 { type: 'push', label: 'Create an Unordered List', value: 'insertunorderedlist' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7862 { type: 'push', label: 'Create an Ordered List', value: 'insertorderedlist' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7863 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7864 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7865 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7866 { group: 'insertitem', label: 'Insert Item',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7867 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7868 { type: 'push', label: 'HTML Link CTRL + SHIFT + L', value: 'createlink', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7869 { type: 'push', label: 'Insert Image', value: 'insertimage' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7870 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7871 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7872 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7873 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7874 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7875
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7876 if (!this._defaultImageToolbarConfig) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7877 this._defaultImageToolbarConfig = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7878 buttonType: this._defaultToolbar.buttonType,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7879 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7880 { group: 'textflow', label: this.STR_IMAGE_TEXTFLOW + ':',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7881 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7882 { type: 'push', label: 'Left', value: 'left' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7883 { type: 'push', label: 'Inline', value: 'inline' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7884 { type: 'push', label: 'Block', value: 'block' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7885 { type: 'push', label: 'Right', value: 'right' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7886 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7887 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7888 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7889 { group: 'padding', label: this.STR_IMAGE_PADDING + ':',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7890 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7891 { type: 'spin', label: '0', value: 'padding', range: [0, 50] }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7892 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7893 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7894 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7895 { group: 'border', label: this.STR_IMAGE_BORDER + ':',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7896 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7897 { type: 'select', label: this.STR_IMAGE_BORDER_SIZE, value: 'bordersize',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7898 menu: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7899 { text: 'none', value: '0', checked: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7900 { text: '1px', value: '1' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7901 { text: '2px', value: '2' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7902 { text: '3px', value: '3' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7903 { text: '4px', value: '4' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7904 { text: '5px', value: '5' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7905 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7906 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7907 { type: 'select', label: this.STR_IMAGE_BORDER_TYPE, value: 'bordertype', disabled: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7908 menu: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7909 { text: 'Solid', value: 'solid', checked: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7910 { text: 'Dashed', value: 'dashed' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7911 { text: 'Dotted', value: 'dotted' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7912 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7913 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7914 { type: 'color', label: 'Border Color', value: 'bordercolor', disabled: true }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7915 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7916 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7917 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7918 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7919 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7920
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7921 YAHOO.widget.Editor.superclass.init.call(this, p_oElement, p_oAttributes);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7922 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7923 _render: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7924 YAHOO.widget.Editor.superclass._render.apply(this, arguments);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7925 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7926 //Render the panel in another thread and delay it a little..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7927 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7928 self._renderPanel.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7929 }, 800);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7930 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7931 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7932 * @method initAttributes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7933 * @description Initializes all of the configuration attributes used to create
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7934 * the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7935 * @param {Object} attr Object literal specifying a set of
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7936 * configuration attributes used to create the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7937 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7938 initAttributes: function(attr) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7939 YAHOO.widget.Editor.superclass.initAttributes.call(this, attr);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7940
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7941 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7942 * @attribute localFileWarning
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7943 * @description Should we throw the warning if we detect a file that is local to their machine?
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7944 * @default true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7945 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7946 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7947 this.setAttributeConfig('localFileWarning', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7948 value: attr.locaFileWarning || true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7949 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7950
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7951 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7952 * @attribute hiddencss
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7953 * @description The CSS used to show/hide hidden elements on the page, these rules must be prefixed with the class provided in <code>this.CLASS_HIDDEN</code>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7954 * @default <code><pre>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7955 .yui-hidden font, .yui-hidden strong, .yui-hidden b, .yui-hidden em, .yui-hidden i, .yui-hidden u,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7956 .yui-hidden div, .yui-hidden p, .yui-hidden span, .yui-hidden img, .yui-hidden ul, .yui-hidden ol,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7957 .yui-hidden li, .yui-hidden table {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7958 border: 1px dotted #ccc;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7959 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7960 .yui-hidden .yui-non {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7961 border: none;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7962 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7963 .yui-hidden img {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7964 padding: 2px;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7965 }</pre></code>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7966 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7967 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7968 this.setAttributeConfig('hiddencss', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7969 value: attr.hiddencss || '.yui-hidden font, .yui-hidden strong, .yui-hidden b, .yui-hidden em, .yui-hidden i, .yui-hidden u, .yui-hidden div,.yui-hidden p,.yui-hidden span,.yui-hidden img, .yui-hidden ul, .yui-hidden ol, .yui-hidden li, .yui-hidden table { border: 1px dotted #ccc; } .yui-hidden .yui-non { border: none; } .yui-hidden img { padding: 2px; }',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7970 writeOnce: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7971 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7972
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7973 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7974 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7975 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7976 * @method _windows
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7977 * @description A reference to the HTML elements used for the body of Editor Windows.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7978 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7979 _windows: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7980 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7981 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7982 * @method _defaultImageToolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7983 * @description A reference to the Toolbar Object inside Image Editor Window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7984 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7985 _defaultImageToolbar: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7986 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7987 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7988 * @method _defaultImageToolbarConfig
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7989 * @description Config to be used for the default Image Editor Window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7990 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7991 _defaultImageToolbarConfig: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7992 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7993 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7994 * @method _fixNodes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7995 * @description Fix href and imgs as well as remove invalid HTML.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7996 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7997 _fixNodes: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7998 YAHOO.widget.Editor.superclass._fixNodes.call(this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7999 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8000 var url = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8001
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8002 var imgs = this._getDoc().getElementsByTagName('img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8003 for (var im = 0; im < imgs.length; im++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8004 if (imgs[im].getAttribute('href', 2)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8005 url = imgs[im].getAttribute('src', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8006 if (this._isLocalFile(url)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8007 Dom.addClass(imgs[im], this.CLASS_LOCAL_FILE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8008 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8009 Dom.removeClass(imgs[im], this.CLASS_LOCAL_FILE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8010 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8011 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8012 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8013 var fakeAs = this._getDoc().body.getElementsByTagName('a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8014 for (var a = 0; a < fakeAs.length; a++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8015 if (fakeAs[a].getAttribute('href', 2)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8016 url = fakeAs[a].getAttribute('href', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8017 if (this._isLocalFile(url)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8018 Dom.addClass(fakeAs[a], this.CLASS_LOCAL_FILE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8019 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8020 Dom.removeClass(fakeAs[a], this.CLASS_LOCAL_FILE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8021 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8022 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8023 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8024 } catch(e) {}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8025 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8026 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8027 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8028 * @property _disabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8029 * @description The Toolbar items that should be disabled if there is no selection present in the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8030 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8031 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8032 _disabled: [ 'createlink', 'forecolor', 'backcolor', 'fontname', 'fontsize', 'superscript', 'subscript', 'removeformat', 'heading', 'indent' ],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8033 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8034 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8035 * @property _alwaysDisabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8036 * @description The Toolbar items that should ALWAYS be disabled event if there is a selection present in the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8037 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8038 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8039 _alwaysDisabled: { 'outdent': true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8040 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8041 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8042 * @property _alwaysEnabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8043 * @description The Toolbar items that should ALWAYS be enabled event if there isn't a selection present in the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8044 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8045 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8046 _alwaysEnabled: { hiddenelements: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8047 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8048 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8049 * @method _handleKeyDown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8050 * @param {Event} ev The event we are working on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8051 * @description Override method that handles some new keydown events inside the iFrame document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8052 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8053 _handleKeyDown: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8054 YAHOO.widget.Editor.superclass._handleKeyDown.call(this, ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8055 var doExec = false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8056 action = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8057 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8058
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8059 switch (ev.keyCode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8060 //case 219: //Left
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8061 case this._keyMap.JUSTIFY_LEFT.key: //Left
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8062 if (this._checkKey(this._keyMap.JUSTIFY_LEFT, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8063 action = 'justifyleft';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8064 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8065 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8066 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8067 //case 220: //Center
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8068 case this._keyMap.JUSTIFY_CENTER.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8069 if (this._checkKey(this._keyMap.JUSTIFY_CENTER, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8070 action = 'justifycenter';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8071 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8072 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8073 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8074 case 221: //Right
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8075 case this._keyMap.JUSTIFY_RIGHT.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8076 if (this._checkKey(this._keyMap.JUSTIFY_RIGHT, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8077 action = 'justifyright';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8078 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8079 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8080 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8081 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8082 if (doExec && action) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8083 this.execCommand(action, null);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8084 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8085 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8086 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8087 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8088 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8089 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8090 * @method _renderCreateLinkWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8091 * @description Pre renders the CreateLink window so we get faster window opening.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8092 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8093 _renderCreateLinkWindow: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8094 var str = '<label for="' + this.get('id') + '_createlink_url"><strong>' + this.STR_LINK_URL + ':</strong> <input type="text" name="' + this.get('id') + '_createlink_url" id="' + this.get('id') + '_createlink_url" value=""></label>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8095 str += '<label for="' + this.get('id') + '_createlink_target"><strong>&nbsp;</strong><input type="checkbox" name="' + this.get('id') + '_createlink_target" id="' + this.get('id') + '_createlink_target" value="_blank" class="createlink_target"> ' + this.STR_LINK_NEW_WINDOW + '</label>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8096 str += '<label for="' + this.get('id') + '_createlink_title"><strong>' + this.STR_LINK_TITLE + ':</strong> <input type="text" name="' + this.get('id') + '_createlink_title" id="' + this.get('id') + '_createlink_title" value=""></label>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8097
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8098 var body = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8099 body.innerHTML = str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8100
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8101 var unlinkCont = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8102 unlinkCont.className = 'removeLink';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8103 var unlink = document.createElement('a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8104 unlink.href = '#';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8105 unlink.innerHTML = this.STR_LINK_PROP_REMOVE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8106 unlink.title = this.STR_LINK_PROP_REMOVE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8107 Event.on(unlink, 'click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8108 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8109 this.unsubscribeAll('afterExecCommand');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8110 this.execCommand('unlink');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8111 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8112 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8113 unlinkCont.appendChild(unlink);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8114 body.appendChild(unlinkCont);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8115
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8116 this._windows.createlink = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8117 this._windows.createlink.body = body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8118 //body.style.display = 'none';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8119 Event.on(body, 'keyup', function(e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8120 Event.stopPropagation(e);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8121 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8122 this.get('panel').editor_form.appendChild(body);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8123 this.fireEvent('windowCreateLinkRender', { type: 'windowCreateLinkRender', panel: this.get('panel'), body: body });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8124 return body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8125 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8126 _handleCreateLinkClick: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8127 var el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8128 if (this._isElement(el, 'img')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8129 this.STOP_EXEC_COMMAND = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8130 this.currentElement[0] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8131 this.toolbar.fireEvent('insertimageClick', { type: 'insertimageClick', target: this.toolbar });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8132 this.fireEvent('afterExecCommand', { type: 'afterExecCommand', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8133 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8134 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8135 if (this.get('limitCommands')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8136 if (!this.toolbar.getButtonByValue('createlink')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8137 YAHOO.log('Toolbar Button for (createlink) was not found, skipping exec.', 'info', 'Editor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8138 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8139 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8140 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8141
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8142 this.on('afterExecCommand', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8143 var win = new YAHOO.widget.EditorWindow('createlink', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8144 width: '350px'
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8145 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8146
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8147 var el = this.currentElement[0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8148 url = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8149 title = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8150 target = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8151 localFile = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8152 if (el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8153 win.el = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8154 if (el.getAttribute('href', 2) !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8155 url = el.getAttribute('href', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8156 if (this._isLocalFile(url)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8157 //Local File throw Warning
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8158 YAHOO.log('Local file reference found, show local warning', 'warn', 'Editor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8159 win.setFooter(this.STR_LOCAL_FILE_WARNING);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8160 localFile = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8161 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8162 win.setFooter(' ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8163 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8164 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8165 if (el.getAttribute('title') !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8166 title = el.getAttribute('title');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8167 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8168 if (el.getAttribute('target') !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8169 target = el.getAttribute('target');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8170 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8171 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8172 var body = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8173 if (this._windows.createlink && this._windows.createlink.body) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8174 body = this._windows.createlink.body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8175 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8176 body = this._renderCreateLinkWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8177 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8178
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8179 win.setHeader(this.STR_LINK_PROP_TITLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8180 win.setBody(body);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8181
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8182 Event.purgeElement(this.get('id') + '_createlink_url');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8183
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8184 Dom.get(this.get('id') + '_createlink_url').value = url;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8185 Dom.get(this.get('id') + '_createlink_title').value = title;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8186 Dom.get(this.get('id') + '_createlink_target').checked = ((target) ? true : false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8187
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8188
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8189 Event.onAvailable(this.get('id') + '_createlink_url', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8190 var id = this.get('id');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8191 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8192 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8193 YAHOO.util.Dom.get(id + '_createlink_url').focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8194 } catch (e) {}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8195 }, 50);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8196
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8197 if (this._isLocalFile(url)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8198 //Local File throw Warning
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8199 Dom.addClass(this.get('id') + '_createlink_url', 'warning');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8200 YAHOO.log('Local file reference found, show local warning', 'warn', 'Editor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8201 this.get('panel').setFooter(this.STR_LOCAL_FILE_WARNING);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8202 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8203 Dom.removeClass(this.get('id') + '_createlink_url', 'warning');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8204 this.get('panel').setFooter(' ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8205 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8206 Event.on(this.get('id') + '_createlink_url', 'blur', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8207 var url = Dom.get(this.get('id') + '_createlink_url');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8208 if (this._isLocalFile(url.value)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8209 //Local File throw Warning
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8210 Dom.addClass(url, 'warning');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8211 YAHOO.log('Local file reference found, show local warning', 'warn', 'Editor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8212 this.get('panel').setFooter(this.STR_LOCAL_FILE_WARNING);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8213 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8214 Dom.removeClass(url, 'warning');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8215 this.get('panel').setFooter(' ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8216 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8217 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8218 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8219
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8220 this.openWindow(win);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8221
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8222 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8223 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8224 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8225 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8226 * @method _handleCreateLinkWindowClose
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8227 * @description Handles the closing of the Link Properties Window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8228 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8229 _handleCreateLinkWindowClose: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8230
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8231 var url = Dom.get(this.get('id') + '_createlink_url'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8232 target = Dom.get(this.get('id') + '_createlink_target'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8233 title = Dom.get(this.get('id') + '_createlink_title'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8234 el = arguments[0].win.el,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8235 a = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8236
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8237 if (url && url.value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8238 var urlValue = url.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8239 if ((urlValue.indexOf(':/'+'/') == -1) && (urlValue.substring(0,1) != '/') && (urlValue.substring(0, 6).toLowerCase() != 'mailto')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8240 if ((urlValue.indexOf('@') != -1) && (urlValue.substring(0, 6).toLowerCase() != 'mailto')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8241 //Found an @ sign, prefix with mailto:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8242 urlValue = 'mailto:' + urlValue;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8243 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8244 // :// not found adding
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8245 if (urlValue.substring(0, 1) != '#') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8246 urlValue = 'http:/'+'/' + urlValue;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8247 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8248
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8249 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8250 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8251 el.setAttribute('href', urlValue);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8252 if (target.checked) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8253 el.setAttribute('target', target.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8254 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8255 el.setAttribute('target', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8256 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8257 el.setAttribute('title', ((title.value) ? title.value : ''));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8258
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8259 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8260 var _span = this._getDoc().createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8261 _span.innerHTML = el.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8262 Dom.addClass(_span, 'yui-non');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8263 el.parentNode.replaceChild(_span, el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8264 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8265 Dom.removeClass(url, 'warning');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8266 Dom.get(this.get('id') + '_createlink_url').value = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8267 Dom.get(this.get('id') + '_createlink_title').value = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8268 Dom.get(this.get('id') + '_createlink_target').checked = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8269 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8270 this.currentElement = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8271
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8272 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8273 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8274 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8275 * @method _renderInsertImageWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8276 * @description Pre renders the InsertImage window so we get faster window opening.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8277 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8278 _renderInsertImageWindow: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8279 var el = this.currentElement[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8280 var str = '<label for="' + this.get('id') + '_insertimage_url"><strong>' + this.STR_IMAGE_URL + ':</strong> <input type="text" id="' + this.get('id') + '_insertimage_url" value="" size="40"></label>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8281 var body = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8282 body.innerHTML = str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8283
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8284 var tbarCont = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8285 tbarCont.id = this.get('id') + '_img_toolbar';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8286 body.appendChild(tbarCont);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8287
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8288 var str2 = '<label for="' + this.get('id') + '_insertimage_title"><strong>' + this.STR_IMAGE_TITLE + ':</strong> <input type="text" id="' + this.get('id') + '_insertimage_title" value="" size="40"></label>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8289 str2 += '<label for="' + this.get('id') + '_insertimage_link"><strong>' + this.STR_LINK_URL + ':</strong> <input type="text" name="' + this.get('id') + '_insertimage_link" id="' + this.get('id') + '_insertimage_link" value=""></label>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8290 str2 += '<label for="' + this.get('id') + '_insertimage_target"><strong>&nbsp;</strong><input type="checkbox" name="' + this.get('id') + '_insertimage_target_" id="' + this.get('id') + '_insertimage_target" value="_blank" class="insertimage_target"> ' + this.STR_LINK_NEW_WINDOW + '</label>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8291 var div = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8292 div.innerHTML = str2;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8293 body.appendChild(div);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8294
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8295 var o = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8296 Lang.augmentObject(o, this._defaultImageToolbarConfig); //Break the config reference
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8297
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8298 var tbar = new YAHOO.widget.Toolbar(tbarCont, o);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8299 tbar.editor_el = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8300 this._defaultImageToolbar = tbar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8301
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8302 var cont = tbar.get('cont');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8303 var hw = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8304 hw.className = 'yui-toolbar-group yui-toolbar-group-height-width height-width';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8305 hw.innerHTML = '<h3>' + this.STR_IMAGE_SIZE + ':</h3>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8306 hw.innerHTML += '<span tabIndex="-1"><input type="text" size="3" value="" id="' + this.get('id') + '_insertimage_width"> x <input type="text" size="3" value="" id="' + this.get('id') + '_insertimage_height"></span>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8307 cont.insertBefore(hw, cont.firstChild);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8308
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8309 Event.onAvailable(this.get('id') + '_insertimage_width', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8310 Event.on(this.get('id') + '_insertimage_width', 'blur', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8311 var value = parseInt(Dom.get(this.get('id') + '_insertimage_width').value, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8312 if (value > 5) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8313 this._defaultImageToolbar.editor_el.style.width = value + 'px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8314 //Removed moveWindow call so the window doesn't jump
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8315 //this.moveWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8316 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8317 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8318 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8319 Event.onAvailable(this.get('id') + '_insertimage_height', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8320 Event.on(this.get('id') + '_insertimage_height', 'blur', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8321 var value = parseInt(Dom.get(this.get('id') + '_insertimage_height').value, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8322 if (value > 5) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8323 this._defaultImageToolbar.editor_el.style.height = value + 'px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8324 //Removed moveWindow call so the window doesn't jump
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8325 //this.moveWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8326 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8327 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8328 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8329
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8330
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8331 tbar.on('colorPickerClicked', function(o) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8332 var size = '1', type = 'solid', color = 'black', el = this._defaultImageToolbar.editor_el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8333
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8334 if (el.style.borderLeftWidth) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8335 size = parseInt(el.style.borderLeftWidth, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8336 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8337 if (el.style.borderLeftStyle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8338 type = el.style.borderLeftStyle;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8339 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8340 if (el.style.borderLeftColor) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8341 color = el.style.borderLeftColor;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8342 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8343 var borderString = size + 'px ' + type + ' #' + o.color;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8344 el.style.border = borderString;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8345 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8346
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8347 tbar.on('buttonClick', function(o) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8348 var value = o.button.value,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8349 el = this._defaultImageToolbar.editor_el,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8350 borderString = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8351 if (o.button.menucmd) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8352 value = o.button.menucmd;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8353 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8354 var size = '1', type = 'solid', color = 'black';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8355
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8356 /* All border calcs are done on the left border
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8357 since our default interface only supports
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8358 one border size/type and color */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8359 if (el.style.borderLeftWidth) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8360 size = parseInt(el.style.borderLeftWidth, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8361 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8362 if (el.style.borderLeftStyle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8363 type = el.style.borderLeftStyle;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8364 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8365 if (el.style.borderLeftColor) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8366 color = el.style.borderLeftColor;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8367 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8368 switch(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8369 case 'bordersize':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8370 if (this.browser.webkit && this._lastImage) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8371 Dom.removeClass(this._lastImage, 'selected');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8372 this._lastImage = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8373 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8374
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8375 borderString = parseInt(o.button.value, 10) + 'px ' + type + ' ' + color;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8376 el.style.border = borderString;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8377 if (parseInt(o.button.value, 10) > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8378 tbar.enableButton('bordertype');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8379 tbar.enableButton('bordercolor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8380 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8381 tbar.disableButton('bordertype');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8382 tbar.disableButton('bordercolor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8383 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8384 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8385 case 'bordertype':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8386 if (this.browser.webkit && this._lastImage) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8387 Dom.removeClass(this._lastImage, 'selected');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8388 this._lastImage = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8389 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8390 borderString = size + 'px ' + o.button.value + ' ' + color;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8391 el.style.border = borderString;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8392 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8393 case 'right':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8394 case 'left':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8395 tbar.deselectAllButtons();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8396 el.style.display = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8397 el.align = o.button.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8398 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8399 case 'inline':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8400 tbar.deselectAllButtons();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8401 el.style.display = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8402 el.align = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8403 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8404 case 'block':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8405 tbar.deselectAllButtons();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8406 el.style.display = 'block';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8407 el.align = 'center';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8408 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8409 case 'padding':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8410 var _button = tbar.getButtonById(o.button.id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8411 el.style.margin = _button.get('label') + 'px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8412 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8413 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8414 tbar.selectButton(o.button.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8415 if (value !== 'padding') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8416 this.moveWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8417 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8418 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8419
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8420
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8421
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8422 if (this.get('localFileWarning')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8423 Event.on(this.get('id') + '_insertimage_link', 'blur', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8424 var url = Dom.get(this.get('id') + '_insertimage_link');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8425 if (this._isLocalFile(url.value)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8426 //Local File throw Warning
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8427 Dom.addClass(url, 'warning');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8428 YAHOO.log('Local file reference found, show local warning', 'warn', 'Editor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8429 this.get('panel').setFooter(this.STR_LOCAL_FILE_WARNING);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8430 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8431 Dom.removeClass(url, 'warning');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8432 this.get('panel').setFooter(' ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8433 //Adobe AIR Code
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8434 if ((this.browser.webkit && !this.browser.webkit3 || this.browser.air) || this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8435 this.get('panel').setFooter(this.STR_IMAGE_COPY);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8436 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8437 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8438 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8439 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8440
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8441 Event.on(this.get('id') + '_insertimage_url', 'blur', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8442 var url = Dom.get(this.get('id') + '_insertimage_url'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8443 el = this.currentElement[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8444
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8445 if (url.value && el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8446 if (url.value == el.getAttribute('src', 2)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8447 YAHOO.log('Images are the same, bail on blur handler', 'info', 'Editor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8448 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8449 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8450 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8451 YAHOO.log('Images are different, process blur handler', 'info', 'Editor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8452 if (this._isLocalFile(url.value)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8453 //Local File throw Warning
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8454 Dom.addClass(url, 'warning');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8455 YAHOO.log('Local file reference found, show local warning', 'warn', 'Editor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8456 this.get('panel').setFooter(this.STR_LOCAL_FILE_WARNING);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8457 } else if (this.currentElement[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8458 Dom.removeClass(url, 'warning');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8459 this.get('panel').setFooter(' ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8460 //Adobe AIR Code
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8461 if ((this.browser.webkit && !this.browser.webkit3 || this.browser.air) || this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8462 this.get('panel').setFooter(this.STR_IMAGE_COPY);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8463 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8464
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8465 if (url && url.value && (url.value != this.STR_IMAGE_HERE)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8466 this.currentElement[0].setAttribute('src', url.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8467 var self = this,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8468 img = new Image();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8469
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8470 img.onerror = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8471 url.value = self.STR_IMAGE_HERE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8472 img.setAttribute('src', self.get('blankimage'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8473 self.currentElement[0].setAttribute('src', self.get('blankimage'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8474 YAHOO.util.Dom.get(self.get('id') + '_insertimage_height').value = img.height;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8475 YAHOO.util.Dom.get(self.get('id') + '_insertimage_width').value = img.width;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8476 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8477 var id = this.get('id');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8478 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8479 YAHOO.util.Dom.get(id + '_insertimage_height').value = img.height;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8480 YAHOO.util.Dom.get(id + '_insertimage_width').value = img.width;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8481 if (self.currentElement && self.currentElement[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8482 if (!self.currentElement[0]._height) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8483 self.currentElement[0]._height = img.height;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8484 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8485 if (!self.currentElement[0]._width) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8486 self.currentElement[0]._width = img.width;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8487 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8488 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8489 //Removed moveWindow call so the window doesn't jump
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8490 //self.moveWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8491 }, 800); //Bumped the timeout up to account for larger images..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8492
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8493 if (url.value != this.STR_IMAGE_HERE) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8494 img.src = url.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8495 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8496 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8497 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8498 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8499
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8500
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8501
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8502 this._windows.insertimage = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8503 this._windows.insertimage.body = body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8504 //body.style.display = 'none';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8505 this.get('panel').editor_form.appendChild(body);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8506 this.fireEvent('windowInsertImageRender', { type: 'windowInsertImageRender', panel: this.get('panel'), body: body, toolbar: tbar });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8507 return body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8508 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8509 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8510 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8511 * @method _handleInsertImageClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8512 * @description Opens the Image Properties Window when the insert Image button is clicked or an Image is Double Clicked.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8513 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8514 _handleInsertImageClick: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8515 if (this.get('limitCommands')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8516 if (!this.toolbar.getButtonByValue('insertimage')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8517 YAHOO.log('Toolbar Button for (insertimage) was not found, skipping exec.', 'info', 'Editor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8518 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8519 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8520 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8521 this.on('afterExecCommand', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8522 YAHOO.log('afterExecCommand :: _handleInsertImageClick', 'info', 'Editor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8523 var el = this.currentElement[0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8524 body = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8525 link = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8526 target = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8527 tbar = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8528 title = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8529 src = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8530 align = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8531 height = 75,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8532 width = 75,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8533 padding = 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8534 oheight = 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8535 owidth = 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8536 blankimage = false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8537 win = new YAHOO.widget.EditorWindow('insertimage', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8538 width: '415px'
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8539 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8540
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8541 if (!el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8542 el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8543 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8544 if (el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8545 win.el = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8546 if (el.getAttribute('src')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8547 src = el.getAttribute('src', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8548 if (src.indexOf(this.get('blankimage')) != -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8549 src = this.STR_IMAGE_HERE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8550 blankimage = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8551 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8552 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8553 if (el.getAttribute('alt', 2)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8554 title = el.getAttribute('alt', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8555 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8556 if (el.getAttribute('title', 2)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8557 title = el.getAttribute('title', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8558 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8559
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8560 if (el.parentNode && this._isElement(el.parentNode, 'a')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8561 link = el.parentNode.getAttribute('href', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8562 if (el.parentNode.getAttribute('target') !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8563 target = el.parentNode.getAttribute('target');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8564 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8565 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8566 height = parseInt(el.height, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8567 width = parseInt(el.width, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8568 if (el.style.height) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8569 height = parseInt(el.style.height, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8570 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8571 if (el.style.width) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8572 width = parseInt(el.style.width, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8573 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8574 if (el.style.margin) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8575 padding = parseInt(el.style.margin, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8576 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8577 if (!blankimage) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8578 if (!el._height) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8579 el._height = height;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8580 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8581 if (!el._width) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8582 el._width = width;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8583 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8584 oheight = el._height;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8585 owidth = el._width;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8586 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8587 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8588 if (this._windows.insertimage && this._windows.insertimage.body) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8589 body = this._windows.insertimage.body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8590 this._defaultImageToolbar.resetAllButtons();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8591 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8592 body = this._renderInsertImageWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8593 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8594
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8595 tbar = this._defaultImageToolbar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8596 tbar.editor_el = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8597
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8598
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8599 var bsize = '0',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8600 btype = 'solid';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8601
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8602 if (el.style.borderLeftWidth) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8603 bsize = parseInt(el.style.borderLeftWidth, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8604 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8605 if (el.style.borderLeftStyle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8606 btype = el.style.borderLeftStyle;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8607 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8608 var bs_button = tbar.getButtonByValue('bordersize'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8609 bSizeStr = ((parseInt(bsize, 10) > 0) ? '' : this.STR_NONE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8610 bs_button.set('label', '<span class="yui-toolbar-bordersize-' + bsize + '">' + bSizeStr + '</span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8611 this._updateMenuChecked('bordersize', bsize, tbar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8612
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8613 var bt_button = tbar.getButtonByValue('bordertype');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8614 bt_button.set('label', '<span class="yui-toolbar-bordertype-' + btype + '">asdfa</span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8615 this._updateMenuChecked('bordertype', btype, tbar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8616 if (parseInt(bsize, 10) > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8617 tbar.enableButton(bt_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8618 tbar.enableButton(bs_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8619 tbar.enableButton('bordercolor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8620 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8621
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8622 if ((el.align == 'right') || (el.align == 'left')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8623 tbar.selectButton(el.align);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8624 } else if (el.style.display == 'block') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8625 tbar.selectButton('block');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8626 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8627 tbar.selectButton('inline');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8628 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8629 if (parseInt(el.style.marginLeft, 10) > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8630 tbar.getButtonByValue('padding').set('label', ''+parseInt(el.style.marginLeft, 10));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8631 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8632 if (el.style.borderSize) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8633 tbar.selectButton('bordersize');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8634 tbar.selectButton(parseInt(el.style.borderSize, 10));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8635 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8636 tbar.getButtonByValue('padding').set('label', ''+padding);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8637
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8638
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8639
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8640 win.setHeader(this.STR_IMAGE_PROP_TITLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8641 win.setBody(body);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8642 //Adobe AIR Code
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8643 if ((this.browser.webkit && !this.browser.webkit3 || this.browser.air) || this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8644 win.setFooter(this.STR_IMAGE_COPY);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8645 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8646 this.openWindow(win);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8647 Dom.get(this.get('id') + '_insertimage_url').value = src;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8648 Dom.get(this.get('id') + '_insertimage_title').value = title;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8649 Dom.get(this.get('id') + '_insertimage_link').value = link;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8650 Dom.get(this.get('id') + '_insertimage_target').checked = ((target) ? true : false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8651 Dom.get(this.get('id') + '_insertimage_width').value = width;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8652 Dom.get(this.get('id') + '_insertimage_height').value = height;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8653
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8654
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8655 if (((height != oheight) || (width != owidth)) && (!blankimage)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8656 var s = document.createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8657 s.className = 'info';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8658 s.innerHTML = this.STR_IMAGE_ORIG_SIZE + ': ('+ owidth +' x ' + oheight + ')';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8659 if (Dom.get(this.get('id') + '_insertimage_height').nextSibling) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8660 var old = Dom.get(this.get('id') + '_insertimage_height').nextSibling;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8661 old.parentNode.removeChild(old);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8662 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8663 Dom.get(this.get('id') + '_insertimage_height').parentNode.appendChild(s);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8664 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8665
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8666 this.toolbar.selectButton('insertimage');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8667 var id = this.get('id');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8668 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8669 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8670 YAHOO.util.Dom.get(id + '_insertimage_url').focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8671 if (blankimage) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8672 YAHOO.util.Dom.get(id + '_insertimage_url').select();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8673 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8674 } catch (e) {}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8675 }, 50);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8676
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8677 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8678 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8679 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8680 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8681 * @method _handleInsertImageWindowClose
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8682 * @description Handles the closing of the Image Properties Window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8683 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8684 _handleInsertImageWindowClose: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8685 var url = Dom.get(this.get('id') + '_insertimage_url'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8686 title = Dom.get(this.get('id') + '_insertimage_title'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8687 link = Dom.get(this.get('id') + '_insertimage_link'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8688 target = Dom.get(this.get('id') + '_insertimage_target'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8689 el = arguments[0].win.el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8690
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8691 if (url && url.value && (url.value != this.STR_IMAGE_HERE)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8692 el.setAttribute('src', url.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8693 el.setAttribute('title', title.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8694 el.setAttribute('alt', title.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8695 var par = el.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8696 if (link.value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8697 var urlValue = link.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8698 if ((urlValue.indexOf(':/'+'/') == -1) && (urlValue.substring(0,1) != '/') && (urlValue.substring(0, 6).toLowerCase() != 'mailto')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8699 if ((urlValue.indexOf('@') != -1) && (urlValue.substring(0, 6).toLowerCase() != 'mailto')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8700 //Found an @ sign, prefix with mailto:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8701 urlValue = 'mailto:' + urlValue;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8702 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8703 // :// not found adding
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8704 urlValue = 'http:/'+'/' + urlValue;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8705 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8706 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8707 if (par && this._isElement(par, 'a')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8708 par.setAttribute('href', urlValue);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8709 if (target.checked) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8710 par.setAttribute('target', target.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8711 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8712 par.setAttribute('target', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8713 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8714 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8715 var _a = this._getDoc().createElement('a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8716 _a.setAttribute('href', urlValue);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8717 if (target.checked) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8718 _a.setAttribute('target', target.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8719 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8720 _a.setAttribute('target', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8721 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8722 el.parentNode.replaceChild(_a, el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8723 _a.appendChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8724 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8725 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8726 if (par && this._isElement(par, 'a')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8727 par.parentNode.replaceChild(el, par);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8728 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8729 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8730 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8731 //No url/src given, remove the node from the document
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8732 el.parentNode.removeChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8733 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8734 Dom.get(this.get('id') + '_insertimage_url').value = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8735 Dom.get(this.get('id') + '_insertimage_title').value = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8736 Dom.get(this.get('id') + '_insertimage_link').value = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8737 Dom.get(this.get('id') + '_insertimage_target').checked = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8738 Dom.get(this.get('id') + '_insertimage_width').value = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8739 Dom.get(this.get('id') + '_insertimage_height').value = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8740 this._defaultImageToolbar.resetAllButtons();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8741 this.currentElement = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8742 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8743 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8744 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8745 * @property EDITOR_PANEL_ID
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8746 * @description HTML id to give the properties window in the DOM.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8747 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8748 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8749 EDITOR_PANEL_ID: '-panel',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8750 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8751 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8752 * @method _renderPanel
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8753 * @description Renders the panel used for Editor Windows to the document so we can start using it..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8754 * @return {<a href="YAHOO.widget.Overlay.html">YAHOO.widget.Overlay</a>}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8755 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8756 _renderPanel: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8757 var panelEl = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8758 Dom.addClass(panelEl, 'yui-editor-panel');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8759 panelEl.id = this.get('id') + this.EDITOR_PANEL_ID;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8760 panelEl.style.position = 'absolute';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8761 panelEl.style.top = '-9999px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8762 panelEl.style.left = '-9999px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8763 document.body.appendChild(panelEl);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8764 this.get('element_cont').insertBefore(panelEl, this.get('element_cont').get('firstChild'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8765
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8766
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8767
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8768 var panel = new YAHOO.widget.Overlay(this.get('id') + this.EDITOR_PANEL_ID, {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8769 width: '300px',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8770 iframe: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8771 visible: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8772 underlay: 'none',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8773 draggable: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8774 close: false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8775 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8776 this.set('panel', panel);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8777
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8778 panel.setBody('---');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8779 panel.setHeader(' ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8780 panel.setFooter(' ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8781
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8782
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8783 var body = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8784 body.className = this.CLASS_PREFIX + '-body-cont';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8785 for (var b in this.browser) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8786 if (this.browser[b]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8787 Dom.addClass(body, b);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8788 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8789 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8790 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8791 Dom.addClass(body, ((YAHOO.widget.Button && (this._defaultToolbar.buttonType == 'advanced')) ? 'good-button' : 'no-button'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8792
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8793 var _note = document.createElement('h3');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8794 _note.className = 'yui-editor-skipheader';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8795 _note.innerHTML = this.STR_CLOSE_WINDOW_NOTE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8796 body.appendChild(_note);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8797 var form = document.createElement('fieldset');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8798 panel.editor_form = form;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8799
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8800 body.appendChild(form);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8801 var _close = document.createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8802 _close.innerHTML = 'X';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8803 _close.title = this.STR_CLOSE_WINDOW;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8804 _close.className = 'close';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8805
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8806 Event.on(_close, 'click', this.closeWindow, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8807
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8808 var _knob = document.createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8809 _knob.innerHTML = '^';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8810 _knob.className = 'knob';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8811 panel.editor_knob = _knob;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8812
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8813 var _header = document.createElement('h3');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8814 panel.editor_header = _header;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8815 _header.innerHTML = '<span></span>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8816
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8817 panel.setHeader(' '); //Clear the current header
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8818 panel.appendToHeader(_header);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8819 _header.appendChild(_close);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8820 _header.appendChild(_knob);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8821 panel.setBody(' '); //Clear the current body
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8822 panel.setFooter(' '); //Clear the current footer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8823 panel.appendToBody(body); //Append the new DOM node to it
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8824
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8825 Event.on(panel.element, 'click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8826 Event.stopPropagation(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8827 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8828
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8829 var fireShowEvent = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8830 panel.bringToTop();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8831 YAHOO.util.Dom.setStyle(this.element, 'display', 'block');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8832 this._handleWindowInputs(false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8833 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8834 panel.showEvent.subscribe(fireShowEvent, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8835 panel.hideEvent.subscribe(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8836 this._handleWindowInputs(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8837 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8838 panel.renderEvent.subscribe(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8839 this._renderInsertImageWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8840 this._renderCreateLinkWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8841 this.fireEvent('windowRender', { type: 'windowRender', panel: panel });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8842 this._handleWindowInputs(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8843 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8844
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8845 if (this.DOMReady) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8846 this.get('panel').render();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8847 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8848 Event.onDOMReady(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8849 this.get('panel').render();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8850 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8851 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8852 return this.get('panel');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8853 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8854 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8855 * @method _handleWindowInputs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8856 * @param {Boolean} disable The state to set all inputs in all Editor windows to. Defaults to: false.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8857 * @description Disables/Enables all fields inside Editor windows. Used in show/hide events to keep window fields from submitting when the parent form is submitted.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8858 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8859 _handleWindowInputs: function(disable) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8860 if (!Lang.isBoolean(disable)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8861 disable = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8862 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8863 var inputs = this.get('panel').element.getElementsByTagName('input');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8864 for (var i = 0; i < inputs.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8865 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8866 inputs[i].disabled = disable;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8867 } catch (e) {}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8868 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8869 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8870 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8871 * @method openWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8872 * @param {<a href="YAHOO.widget.EditorWindow.html">YAHOO.widget.EditorWindow</a>} win A <a href="YAHOO.widget.EditorWindow.html">YAHOO.widget.EditorWindow</a> instance
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8873 * @description Opens a new "window/panel"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8874 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8875 openWindow: function(win) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8876
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8877 YAHOO.log('openWindow: ' + win.name, 'info', 'Editor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8878 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8879 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8880 self.toolbar.set('disabled', true); //Disable the toolbar when an editor window is open..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8881 }, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8882 Event.on(document, 'keydown', this._closeWindow, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8883
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8884 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8885 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8886 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8887
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8888 var xy = Dom.getXY(this.currentElement[0]),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8889 elXY = Dom.getXY(this.get('iframe').get('element')),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8890 panel = this.get('panel'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8891 newXY = [(xy[0] + elXY[0] - 20), (xy[1] + elXY[1] + 10)],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8892 wWidth = (parseInt(win.attrs.width, 10) / 2),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8893 align = 'center',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8894 body = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8895
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8896 this.fireEvent('beforeOpenWindow', { type: 'beforeOpenWindow', win: win, panel: panel });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8897
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8898 var form = panel.editor_form;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8899
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8900 var wins = this._windows;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8901 for (var b in wins) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8902 if (Lang.hasOwnProperty(wins, b)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8903 if (wins[b] && wins[b].body) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8904 if (b == win.name) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8905 Dom.setStyle(wins[b].body, 'display', 'block');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8906 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8907 Dom.setStyle(wins[b].body, 'display', 'none');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8908 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8909 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8910 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8911 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8912
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8913 if (this._windows[win.name].body) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8914 Dom.setStyle(this._windows[win.name].body, 'display', 'block');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8915 form.appendChild(this._windows[win.name].body);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8916 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8917 if (Lang.isObject(win.body)) { //Assume it's a reference
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8918 form.appendChild(win.body);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8919 } else { //Assume it's a string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8920 var _tmp = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8921 _tmp.innerHTML = win.body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8922 form.appendChild(_tmp);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8923 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8924 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8925 panel.editor_header.firstChild.innerHTML = win.header;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8926 if (win.footer !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8927 panel.setFooter(win.footer);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8928 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8929 panel.cfg.setProperty('width', win.attrs.width);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8930
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8931 this.currentWindow = win;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8932 this.moveWindow(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8933 panel.show();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8934 this.fireEvent('afterOpenWindow', { type: 'afterOpenWindow', win: win, panel: panel });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8935 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8936 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8937 * @method moveWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8938 * @param {Boolean} force Boolean to tell it to move but not use any animation (Usually done the first time the window is loaded.)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8939 * @description Realign the window with the currentElement and reposition the knob above the panel.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8940 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8941 moveWindow: function(force) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8942 if (!this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8943 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8944 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8945 var win = this.currentWindow,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8946 xy = Dom.getXY(this.currentElement[0]),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8947 elXY = Dom.getXY(this.get('iframe').get('element')),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8948 panel = this.get('panel'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8949 //newXY = [(xy[0] + elXY[0] - 20), (xy[1] + elXY[1] + 10)],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8950 newXY = [(xy[0] + elXY[0]), (xy[1] + elXY[1])],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8951 wWidth = (parseInt(win.attrs.width, 10) / 2),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8952 align = 'center',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8953 orgXY = panel.cfg.getProperty('xy') || [0,0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8954 _knob = panel.editor_knob,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8955 xDiff = 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8956 yDiff = 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8957 anim = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8958
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8959
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8960 newXY[0] = ((newXY[0] - wWidth) + 20);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8961 //Account for the Scroll bars in a scrolled editor window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8962 newXY[0] = newXY[0] - Dom.getDocumentScrollLeft(this._getDoc());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8963 newXY[1] = newXY[1] - Dom.getDocumentScrollTop(this._getDoc());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8964
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8965 if (this._isElement(this.currentElement[0], 'img')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8966 if (this.currentElement[0].src.indexOf(this.get('blankimage')) != -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8967 newXY[0] = (newXY[0] + (75 / 2)); //Placeholder size
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8968 newXY[1] = (newXY[1] + 75); //Placeholder sizea
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8969 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8970 var w = parseInt(this.currentElement[0].width, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8971 var h = parseInt(this.currentElement[0].height, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8972 newXY[0] = (newXY[0] + (w / 2));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8973 newXY[1] = (newXY[1] + h);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8974 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8975 newXY[1] = newXY[1] + 15;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8976 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8977 var fs = Dom.getStyle(this.currentElement[0], 'fontSize');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8978 if (fs && fs.indexOf && fs.indexOf('px') != -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8979 newXY[1] = newXY[1] + parseInt(Dom.getStyle(this.currentElement[0], 'fontSize'), 10) + 5;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8980 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8981 newXY[1] = newXY[1] + 20;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8982 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8983 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8984 if (newXY[0] < elXY[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8985 newXY[0] = elXY[0] + 5;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8986 align = 'left';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8987 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8988
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8989 if ((newXY[0] + (wWidth * 2)) > (elXY[0] + parseInt(this.get('iframe').get('element').clientWidth, 10))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8990 newXY[0] = ((elXY[0] + parseInt(this.get('iframe').get('element').clientWidth, 10)) - (wWidth * 2) - 5);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8991 align = 'right';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8992 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8993
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8994 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8995 xDiff = (newXY[0] - orgXY[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8996 yDiff = (newXY[1] - orgXY[1]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8997 } catch (e) {}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8998
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8999
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9000 var iTop = elXY[1] + parseInt(this.get('height'), 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9001 var iLeft = elXY[0] + parseInt(this.get('width'), 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9002 if (newXY[1] > iTop) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9003 newXY[1] = iTop;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9004 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9005 if (newXY[0] > iLeft) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9006 newXY[0] = (iLeft / 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9007 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9008
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9009 //Convert negative numbers to positive so we can get the difference in distance
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9010 xDiff = ((xDiff < 0) ? (xDiff * -1) : xDiff);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9011 yDiff = ((yDiff < 0) ? (yDiff * -1) : yDiff);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9012
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9013 if (((xDiff > 10) || (yDiff > 10)) || force) { //Only move the window if it's supposed to move more than 10px or force was passed (new window)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9014 var _knobLeft = 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9015 elW = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9016
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9017 if (this.currentElement[0].width) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9018 elW = (parseInt(this.currentElement[0].width, 10) / 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9019 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9020
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9021 var leftOffset = xy[0] + elXY[0] + elW;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9022 _knobLeft = leftOffset - newXY[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9023 //Check to see if the knob will go off either side & reposition it
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9024 if (_knobLeft > (parseInt(win.attrs.width, 10) - 1)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9025 _knobLeft = ((parseInt(win.attrs.width, 10) - 30) - 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9026 } else if (_knobLeft < 40) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9027 _knobLeft = 1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9028 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9029 if (isNaN(_knobLeft)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9030 _knobLeft = 1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9031 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9032 if (force) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9033 if (_knob) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9034 _knob.style.left = _knobLeft + 'px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9035 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9036 //Removed Animation from a forced move..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9037 panel.cfg.setProperty('xy', newXY);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9038 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9039 if (this.get('animate')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9040 anim = new YAHOO.util.Anim(panel.element, {}, 0.5, YAHOO.util.Easing.easeOut);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9041 anim.attributes = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9042 top: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9043 to: newXY[1]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9044 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9045 left: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9046 to: newXY[0]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9047 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9048 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9049 anim.onComplete.subscribe(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9050 panel.cfg.setProperty('xy', newXY);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9051 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9052 //We have to animate the iframe shim at the same time as the panel or we get scrollbar bleed ..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9053 var iframeAnim = new YAHOO.util.Anim(panel.iframe, anim.attributes, 0.5, YAHOO.util.Easing.easeOut);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9054
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9055 var _knobAnim = new YAHOO.util.Anim(_knob, {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9056 left: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9057 to: _knobLeft
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9058 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9059 }, 0.6, YAHOO.util.Easing.easeOut);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9060 anim.animate();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9061 iframeAnim.animate();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9062 _knobAnim.animate();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9063 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9064 _knob.style.left = _knobLeft + 'px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9065 panel.cfg.setProperty('xy', newXY);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9066 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9067 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9068 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9069 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9070 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9071 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9072 * @method _closeWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9073 * @description Close the currently open EditorWindow with the Escape key.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9074 * @param {Event} ev The keypress Event that we are trapping
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9075 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9076 _closeWindow: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9077 //if ((ev.charCode == 87) && ev.shiftKey && ev.ctrlKey) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9078 if (this._checkKey(this._keyMap.CLOSE_WINDOW, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9079 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9080 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9081 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9082 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9083 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9084 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9085 * @method closeWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9086 * @description Close the currently open EditorWindow.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9087 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9088 closeWindow: function(keepOpen) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9089 YAHOO.log('closeWindow: ' + this.currentWindow.name, 'info', 'Editor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9090 this.fireEvent('window' + this.currentWindow.name + 'Close', { type: 'window' + this.currentWindow.name + 'Close', win: this.currentWindow, el: this.currentElement[0] });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9091 this.fireEvent('closeWindow', { type: 'closeWindow', win: this.currentWindow });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9092 this.currentWindow = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9093 this.get('panel').hide();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9094 this.get('panel').cfg.setProperty('xy', [-900,-900]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9095 this.get('panel').syncIframe(); //Needed to move the iframe with the hidden panel
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9096 this.unsubscribeAll('afterExecCommand');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9097 this.toolbar.set('disabled', false); //enable the toolbar now that the window is closed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9098 this.toolbar.resetAllButtons();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9099 this.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9100 Event.removeListener(document, 'keydown', this._closeWindow);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9101 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9102
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9103 /* {{{ Command Overrides - These commands are only over written when we are using the advanced version */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9104
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9105 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9106 * @method cmd_undo
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9107 * @description Pulls an item from the Undo stack and updates the Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9108 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9109 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9110 cmd_undo: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9111 if (this._hasUndoLevel()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9112 var c_html = this.getEditorHTML(), html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9113 if (!this._undoLevel) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9114 this._undoLevel = this._undoCache.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9115 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9116 this._undoLevel = (this._undoLevel - 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9117 if (this._undoCache[this._undoLevel]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9118 html = this._getUndo(this._undoLevel);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9119 if (html != c_html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9120 this.setEditorHTML(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9121 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9122 this._undoLevel = (this._undoLevel - 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9123 html = this._getUndo(this._undoLevel);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9124 if (html != c_html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9125 this.setEditorHTML(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9126 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9127 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9128 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9129 this._undoLevel = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9130 this.toolbar.disableButton('undo');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9131 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9132 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9133 return [false];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9134 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9135
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9136 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9137 * @method cmd_redo
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9138 * @description Pulls an item from the Undo stack and updates the Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9139 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9140 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9141 cmd_redo: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9142 this._undoLevel = this._undoLevel + 1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9143 if (this._undoLevel >= this._undoCache.length) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9144 this._undoLevel = this._undoCache.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9145 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9146 YAHOO.log(this._undoLevel + ' :: ' + this._undoCache.length, 'warn', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9147 if (this._undoCache[this._undoLevel]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9148 var html = this._getUndo(this._undoLevel);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9149 this.setEditorHTML(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9150 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9151 this.toolbar.disableButton('redo');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9152 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9153 return [false];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9154 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9155
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9156 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9157 * @method cmd_heading
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9158 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9159 * @description This is an execCommand override method. It is called from execCommand when the execCommand('heading') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9160 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9161 cmd_heading: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9162 var exec = true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9163 el = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9164 action = 'heading',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9165 _sel = this._getSelection(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9166 _selEl = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9167
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9168 if (_selEl) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9169 _sel = _selEl;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9170 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9171
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9172 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9173 action = 'formatblock';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9174 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9175 if (value == this.STR_NONE) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9176 if ((_sel && _sel.tagName && (_sel.tagName.toLowerCase().substring(0,1) == 'h')) || (_sel && _sel.parentNode && _sel.parentNode.tagName && (_sel.parentNode.tagName.toLowerCase().substring(0,1) == 'h'))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9177 if (_sel.parentNode.tagName.toLowerCase().substring(0,1) == 'h') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9178 _sel = _sel.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9179 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9180 if (this._isElement(_sel, 'html')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9181 return [false];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9182 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9183 el = this._swapEl(_selEl, 'span', function(el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9184 el.className = 'yui-non';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9185 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9186 this._selectNode(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9187 this.currentElement[0] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9188 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9189 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9190 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9191 if (this._isElement(_selEl, 'h1') || this._isElement(_selEl, 'h2') || this._isElement(_selEl, 'h3') || this._isElement(_selEl, 'h4') || this._isElement(_selEl, 'h5') || this._isElement(_selEl, 'h6')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9192 el = this._swapEl(_selEl, value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9193 this._selectNode(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9194 this.currentElement[0] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9195 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9196 this._createCurrentElement(value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9197 this._selectNode(this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9198 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9199 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9200 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9201 return [exec, action];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9202 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9203 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9204 * @method cmd_hiddenelements
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9205 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9206 * @description This is an execCommand override method. It is called from execCommand when the execCommand('hiddenelements') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9207 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9208 cmd_hiddenelements: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9209 if (this._showingHiddenElements) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9210 //Don't auto highlight the hidden button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9211 this._lastButton = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9212 YAHOO.log('Enabling hidden CSS File', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9213 this._showingHiddenElements = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9214 this.toolbar.deselectButton('hiddenelements');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9215 Dom.removeClass(this._getDoc().body, this.CLASS_HIDDEN);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9216 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9217 YAHOO.log('Disabling hidden CSS File', 'info', 'SimpleEditor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9218 this._showingHiddenElements = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9219 Dom.addClass(this._getDoc().body, this.CLASS_HIDDEN);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9220 this.toolbar.selectButton('hiddenelements');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9221 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9222 return [false];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9223 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9224 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9225 * @method cmd_removeformat
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9226 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9227 * @description This is an execCommand override method. It is called from execCommand when the execCommand('removeformat') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9228 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9229 cmd_removeformat: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9230 var exec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9231 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9232 * @knownissue Remove Format issue
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9233 * @browser Safari 2.x
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9234 * @description There is an issue here with Safari, that it may not always remove the format of the item that is selected.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9235 * Due to the way that Safari 2.x handles ranges, it is very difficult to determine what the selection holds.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9236 * So here we are making the best possible guess and acting on it.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9237 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9238 if (this.browser.webkit && !this._getDoc().queryCommandEnabled('removeformat')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9239 var _txt = this._getSelection()+'';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9240 this._createCurrentElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9241 this.currentElement[0].className = 'yui-non';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9242 this.currentElement[0].innerHTML = _txt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9243 for (var i = 1; i < this.currentElement.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9244 this.currentElement[i].parentNode.removeChild(this.currentElement[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9245 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9246
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9247 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9248 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9249 return [exec];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9250 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9251 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9252 * @method cmd_script
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9253 * @param action action passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9254 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9255 * @description This is a combined execCommand override method. It is called from the cmd_superscript and cmd_subscript methods.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9256 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9257 cmd_script: function(action, value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9258 var exec = true, tag = action.toLowerCase().substring(0, 3),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9259 _span = null, _selEl = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9260
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9261 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9262 YAHOO.log('Safari dom fun again (' + action + ')..', 'info', 'EditorSafari');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9263 if (this._isElement(_selEl, tag)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9264 YAHOO.log('we are a child of tag (' + tag + '), reverse process', 'info', 'EditorSafari');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9265 _span = this._swapEl(this.currentElement[0], 'span', function(el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9266 el.className = 'yui-non';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9267 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9268 this._selectNode(_span);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9269 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9270 this._createCurrentElement(tag);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9271 var _sub = this._swapEl(this.currentElement[0], tag);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9272 this._selectNode(_sub);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9273 this.currentElement[0] = _sub;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9274 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9275 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9276 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9277 return exec;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9278 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9279 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9280 * @method cmd_superscript
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9281 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9282 * @description This is an execCommand override method. It is called from execCommand when the execCommand('superscript') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9283 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9284 cmd_superscript: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9285 return [this.cmd_script('superscript', value)];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9286 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9287 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9288 * @method cmd_subscript
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9289 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9290 * @description This is an execCommand override method. It is called from execCommand when the execCommand('subscript') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9291 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9292 cmd_subscript: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9293 return [this.cmd_script('subscript', value)];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9294 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9295 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9296 * @method cmd_indent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9297 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9298 * @description This is an execCommand override method. It is called from execCommand when the execCommand('indent') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9299 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9300 cmd_indent: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9301 var exec = true, selEl = this._getSelectedElement(), _bq = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9302
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9303 //if (this.browser.webkit || this.browser.ie || this.browser.gecko) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9304 //if (this.browser.webkit || this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9305 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9306 if (this._isElement(selEl, 'blockquote')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9307 _bq = this._getDoc().createElement('blockquote');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9308 _bq.innerHTML = selEl.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9309 selEl.innerHTML = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9310 selEl.appendChild(_bq);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9311 this._selectNode(_bq);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9312 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9313 _bq = this._getDoc().createElement('blockquote');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9314 var html = this._getRange().htmlText;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9315 _bq.innerHTML = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9316 this._createCurrentElement('blockquote');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9317 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9318 for (var i = 0; i < this.currentElement.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9319 _bq = this._getDoc().createElement('blockquote');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9320 _bq.innerHTML = this.currentElement[i].innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9321 this.currentElement[i].parentNode.replaceChild(_bq, this.currentElement[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9322 this.currentElement[i] = _bq;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9323 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9324 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9325 this.currentElement[0].parentNode.replaceChild(_bq, this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9326 this.currentElement[0] = _bq;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9327 this._selectNode(this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9328 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9329 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9330 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9331 value = 'blockquote';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9332 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9333 return [exec, 'formatblock', value];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9334 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9335 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9336 * @method cmd_outdent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9337 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9338 * @description This is an execCommand override method. It is called from execCommand when the execCommand('outdent') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9339 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9340 cmd_outdent: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9341 var exec = true, selEl = this._getSelectedElement(), _bq = null, _span = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9342 //if (this.browser.webkit || this.browser.ie || this.browser.gecko) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9343 if (this.browser.webkit || this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9344 //if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9345 selEl = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9346 if (this._isElement(selEl, 'blockquote')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9347 var par = selEl.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9348 if (this._isElement(selEl.parentNode, 'blockquote')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9349 par.innerHTML = selEl.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9350 this._selectNode(par);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9351 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9352 _span = this._getDoc().createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9353 _span.innerHTML = selEl.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9354 YAHOO.util.Dom.addClass(_span, 'yui-non');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9355 par.replaceChild(_span, selEl);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9356 this._selectNode(_span);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9357 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9358 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9359 YAHOO.log('Can not outdent, we are not inside a blockquote', 'warn', 'Editor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9360 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9361 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9362 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9363 value = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9364 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9365 return [exec, 'outdent', value];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9366 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9367 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9368 * @method cmd_justify
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9369 * @param dir The direction to justify
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9370 * @description This is a factory method for the justify family of commands.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9371 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9372 cmd_justify: function(dir) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9373 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9374 if (this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9375 this._createCurrentElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9376 this._swapEl(this.currentElement[0], 'div', function(el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9377 el.style.textAlign = dir;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9378 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9379
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9380 return [false];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9381 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9382 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9383 return [true, 'justify' + dir, ''];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9384 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9385 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9386 * @method cmd_justifycenter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9387 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9388 * @description This is an execCommand override method. It is called from execCommand when the execCommand('justifycenter') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9389 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9390 cmd_justifycenter: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9391 return [this.cmd_justify('center')];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9392 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9393 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9394 * @method cmd_justifyleft
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9395 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9396 * @description This is an execCommand override method. It is called from execCommand when the execCommand('justifyleft') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9397 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9398 cmd_justifyleft: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9399 return [this.cmd_justify('left')];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9400 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9401 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9402 * @method cmd_justifyright
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9403 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9404 * @description This is an execCommand override method. It is called from execCommand when the execCommand('justifyright') is used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9405 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9406 cmd_justifyright: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9407 return [this.cmd_justify('right')];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9408 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9409 /* }}}*/
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9410 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9411 * @method toString
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9412 * @description Returns a string representing the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9413 * @return {String}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9414 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9415 toString: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9416 var str = 'Editor';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9417 if (this.get && this.get('element_cont')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9418 str = 'Editor (#' + this.get('element_cont').get('id') + ')' + ((this.get('disabled') ? ' Disabled' : ''));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9419 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9420 return str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9421 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9422 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9423 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9424 * @event beforeOpenWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9425 * @param {<a href="YAHOO.widget.EditorWindow.html">EditorWindow</a>} win The EditorWindow object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9426 * @param {Overlay} panel The Overlay object that is used to create the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9427 * @description Event fires before an Editor Window is opened. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9428 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9429 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9430 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9431 * @event afterOpenWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9432 * @param {<a href="YAHOO.widget.EditorWindow.html">EditorWindow</a>} win The EditorWindow object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9433 * @param {Overlay} panel The Overlay object that is used to create the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9434 * @description Event fires after an Editor Window is opened. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9435 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9436 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9437 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9438 * @event closeWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9439 * @param {<a href="YAHOO.widget.EditorWindow.html">EditorWindow</a>} win The EditorWindow object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9440 * @description Event fires after an Editor Window is closed. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9441 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9442 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9443 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9444 * @event windowCMDOpen
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9445 * @param {<a href="YAHOO.widget.EditorWindow.html">EditorWindow</a>} win The EditorWindow object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9446 * @param {Overlay} panel The Overlay object that is used to create the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9447 * @description Dynamic event fired when an <a href="YAHOO.widget.EditorWindow.html">EditorWindow</a> is opened.. The dynamic event is based on the name of the window. Example Window: createlink, opening this window would fire the windowcreatelinkOpen event. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9448 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9449 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9450 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9451 * @event windowCMDClose
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9452 * @param {<a href="YAHOO.widget.EditorWindow.html">EditorWindow</a>} win The EditorWindow object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9453 * @param {Overlay} panel The Overlay object that is used to create the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9454 * @description Dynamic event fired when an <a href="YAHOO.widget.EditorWindow.html">EditorWindow</a> is closed.. The dynamic event is based on the name of the window. Example Window: createlink, opening this window would fire the windowcreatelinkClose event. See <a href="YAHOO.util.Element.html#addListener">Element.addListener</a> for more information on listening for this event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9455 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9456 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9457 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9458 * @event windowRender
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9459 * @param {<a href="YAHOO.widget.EditorWindow.html">EditorWindow</a>} win The EditorWindow object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9460 * @param {Overlay} panel The Overlay object that is used to create the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9461 * @description Event fired when the initial Overlay is rendered. Can be used to manipulate the content of the panel.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9462 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9463 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9464 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9465 * @event windowInsertImageRender
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9466 * @param {Overlay} panel The Overlay object that is used to create the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9467 * @param {HTMLElement} body The HTML element used as the body of the window..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9468 * @param {Toolbar} toolbar A reference to the toolbar object used inside this window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9469 * @description Event fired when the pre render of the Insert Image window has finished.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9470 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9471 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9472 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9473 * @event windowCreateLinkRender
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9474 * @param {Overlay} panel The Overlay object that is used to create the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9475 * @param {HTMLElement} body The HTML element used as the body of the window..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9476 * @description Event fired when the pre render of the Create Link window has finished.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9477 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9478 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9479
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9480
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9481
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9482 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9483 * @description Class to hold Window information between uses. We use the same panel to show the windows, so using this will allow you to configure a window before it is shown.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9484 * This is what you pass to Editor.openWindow();. These parameters will not take effect until the openWindow() is called in the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9485 * @class EditorWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9486 * @param {String} name The name of the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9487 * @param {Object} attrs Attributes for the window. Current attributes used are : height and width
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9488 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9489 YAHOO.widget.EditorWindow = function(name, attrs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9490 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9491 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9492 * @property name
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9493 * @description A unique name for the window
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9494 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9495 this.name = name.replace(' ', '_');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9496 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9497 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9498 * @property attrs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9499 * @description The window attributes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9500 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9501 this.attrs = attrs;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9502 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9503
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9504 YAHOO.widget.EditorWindow.prototype = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9505 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9506 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9507 * @property header
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9508 * @description Holder for the header of the window, used in Editor.openWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9509 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9510 header: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9511 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9512 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9513 * @property body
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9514 * @description Holder for the body of the window, used in Editor.openWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9515 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9516 body: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9517 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9518 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9519 * @property footer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9520 * @description Holder for the footer of the window, used in Editor.openWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9521 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9522 footer: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9523 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9524 * @method setHeader
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9525 * @description Sets the header for the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9526 * @param {String/HTMLElement} str The string or DOM reference to be used as the windows header.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9527 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9528 setHeader: function(str) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9529 this.header = str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9530 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9531 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9532 * @method setBody
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9533 * @description Sets the body for the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9534 * @param {String/HTMLElement} str The string or DOM reference to be used as the windows body.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9535 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9536 setBody: function(str) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9537 this.body = str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9538 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9539 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9540 * @method setFooter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9541 * @description Sets the footer for the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9542 * @param {String/HTMLElement} str The string or DOM reference to be used as the windows footer.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9543 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9544 setFooter: function(str) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9545 this.footer = str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9546 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9547 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9548 * @method toString
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9549 * @description Returns a string representing the EditorWindow.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9550 * @return {String}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9551 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9552 toString: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9553 return 'Editor Window (' + this.name + ')';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9554 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9555 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9556 })();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9557 YAHOO.register("editor", YAHOO.widget.Editor, {version: "2.8.0r4", build: "2449"});