annotate rhodecode/public/js/yui/editor/editor.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
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
70 if (Lang.isObject(arguments[0]) && !Dom.get(el).nodeType) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
71 attrs = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
72 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
73 var local_attrs = (attrs || {});
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
74
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
75 var oConfig = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
76 element: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
77 attributes: local_attrs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
78 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
79
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
80 if (!oConfig.attributes.type) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
81 oConfig.attributes.type = 'push';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
82 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
83
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
84 oConfig.element = document.createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
85 oConfig.element.setAttribute('unselectable', 'on');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
86 oConfig.element.className = 'yui-button yui-' + oConfig.attributes.type + '-button';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
87 oConfig.element.innerHTML = '<span class="first-child"><a href="#">LABEL</a></span>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
88 oConfig.element.firstChild.firstChild.tabIndex = '-1';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
89 oConfig.attributes.id = (oConfig.attributes.id || Dom.generateId());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
90 oConfig.element.id = oConfig.attributes.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
91
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
92 YAHOO.widget.ToolbarButton.superclass.constructor.call(this, oConfig.element, oConfig.attributes);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
93 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
94
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
95 YAHOO.extend(YAHOO.widget.ToolbarButton, YAHOO.util.Element, {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
96 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
97 * @property buttonType
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
98 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
99 * @description Tells if the Button is a Rich Button or a Simple Button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
100 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
101 buttonType: 'normal',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
102 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
103 * @method _handleMouseOver
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
104 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
105 * @description Adds classes to the button elements on mouseover (hover)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
106 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
107 _handleMouseOver: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
108 if (!this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
109 this.addClass('yui-button-hover');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
110 this.addClass('yui-' + this.get('type') + '-button-hover');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
111 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
112 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
113 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
114 * @method _handleMouseOut
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
115 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
116 * @description Removes classes from the button elements on mouseout (hover)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
117 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
118 _handleMouseOut: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
119 this.removeClass('yui-button-hover');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
120 this.removeClass('yui-' + this.get('type') + '-button-hover');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
121 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
122 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
123 * @method checkValue
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
124 * @param {String} value The value of the option that we want to mark as selected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
125 * @description Select an option by value
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
126 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
127 checkValue: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
128 if (this.get('type') == 'menu') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
129 var opts = this._button.options;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
130 for (var i = 0; i < opts.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
131 if (opts[i].value == value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
132 opts.selectedIndex = i;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
133 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
134 }
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 * @method init
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
139 * @description The ToolbarButton class's initialization method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
140 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
141 init: function(p_oElement, p_oAttributes) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
142 YAHOO.widget.ToolbarButton.superclass.init.call(this, p_oElement, p_oAttributes);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
143
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
144 this.on('mouseover', this._handleMouseOver, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
145 this.on('mouseout', this._handleMouseOut, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
146 this.on('click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
147 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
148 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
149 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
150 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
151 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
152 * @method initAttributes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
153 * @description Initializes all of the configuration attributes used to create
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
154 * the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
155 * @param {Object} attr Object literal specifying a set of
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
156 * configuration attributes used to create the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
157 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
158 initAttributes: function(attr) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
159 YAHOO.widget.ToolbarButton.superclass.initAttributes.call(this, attr);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
160 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
161 * @attribute value
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
162 * @description The value of the button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
163 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
164 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
165 this.setAttributeConfig('value', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
166 value: attr.value
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
167 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
168 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
169 * @attribute menu
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
170 * @description The menu attribute, see YAHOO.widget.Button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
171 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
172 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
173 this.setAttributeConfig('menu', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
174 value: attr.menu || false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
175 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
176 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
177 * @attribute type
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
178 * @description The type of button to create: push, menu, color, select, spin
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
179 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
180 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
181 this.setAttributeConfig('type', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
182 value: attr.type,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
183 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
184 method: function(type) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
185 var el, opt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
186 if (!this._button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
187 this._button = this.get('element').getElementsByTagName('a')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
188 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
189 switch (type) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
190 case 'select':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
191 case 'menu':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
192 el = document.createElement('select');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
193 el.id = this.get('id');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
194 var menu = this.get('menu');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
195 for (var i = 0; i < menu.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
196 opt = document.createElement('option');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
197 opt.innerHTML = menu[i].text;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
198 opt.value = menu[i].value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
199 if (menu[i].checked) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
200 opt.selected = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
201 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
202 el.appendChild(opt);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
203 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
204 this._button.parentNode.replaceChild(el, this._button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
205 Event.on(el, 'change', this._handleSelect, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
206 this._button = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
207 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
208 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
209 }
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 * @attribute disabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
214 * @description Set the button into a disabled state
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
215 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
216 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
217 this.setAttributeConfig('disabled', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
218 value: attr.disabled || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
219 method: function(disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
220 if (disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
221 this.addClass('yui-button-disabled');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
222 this.addClass('yui-' + this.get('type') + '-button-disabled');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
223 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
224 this.removeClass('yui-button-disabled');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
225 this.removeClass('yui-' + this.get('type') + '-button-disabled');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
226 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
227 if ((this.get('type') == 'menu') || (this.get('type') == 'select')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
228 this._button.disabled = disabled;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
229 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
230 }
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 * @attribute label
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
235 * @description The text label for the button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
236 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
237 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
238 this.setAttributeConfig('label', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
239 value: attr.label,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
240 method: function(label) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
241 if (!this._button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
242 this._button = this.get('element').getElementsByTagName('a')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
243 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
244 if (this.get('type') == 'push') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
245 this._button.innerHTML = label;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
246 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
247 }
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 * @attribute title
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
252 * @description The title of the button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
253 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
254 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
255 this.setAttributeConfig('title', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
256 value: attr.title
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
257 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
258
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
259 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
260 * @config container
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
261 * @description The container that the button is rendered to, handled by Toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
262 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
263 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
264 this.setAttributeConfig('container', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
265 value: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
266 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
267 method: function(cont) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
268 this.appendTo(cont);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
269 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
270 });
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 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
275 * @method _handleSelect
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
276 * @description The event fired when a change event gets fired on a select element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
277 * @param {Event} ev The change event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
278 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
279 _handleSelect: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
280 var tar = Event.getTarget(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
281 var value = tar.options[tar.selectedIndex].value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
282 this.fireEvent('change', {type: 'change', value: value });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
283 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
284 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
285 * @method getMenu
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
286 * @description A stub function to mimic YAHOO.widget.Button's getMenu method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
287 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
288 getMenu: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
289 return this.get('menu');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
290 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
291 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
292 * @method destroy
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
293 * @description Destroy the button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
294 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
295 destroy: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
296 Event.purgeElement(this.get('element'), true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
297 this.get('element').parentNode.removeChild(this.get('element'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
298 //Brutal Object Destroy
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
299 for (var i in this) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
300 if (Lang.hasOwnProperty(this, i)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
301 this[i] = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
302 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
303 }
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 * @method fireEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
307 * @description Overridden fireEvent method to prevent DOM events from firing if the button is disabled.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
308 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
309 fireEvent: function(p_sType, p_aArgs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
310 // Disabled buttons should not respond to DOM events
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
311 if (this.DOM_EVENTS[p_sType] && this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
312 Event.stopEvent(p_aArgs);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
313 return;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
314 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
315
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
316 YAHOO.widget.ToolbarButton.superclass.fireEvent.call(this, p_sType, p_aArgs);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
317 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
318 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
319 * @method toString
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
320 * @description Returns a string representing the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
321 * @return {String}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
322 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
323 toString: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
324 return 'ToolbarButton (' + this.get('id') + ')';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
325 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
326
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 * @module editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
331 * @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
332 * @namespace YAHOO.widget
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
333 * @requires yahoo, dom, element, event, toolbarbutton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
334 * @optional container_core, dragdrop
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
335 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
336 (function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
337 var Dom = YAHOO.util.Dom,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
338 Event = YAHOO.util.Event,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
339 Lang = YAHOO.lang;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
340
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
341 var getButton = function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
342 var button = id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
343 if (Lang.isString(id)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
344 button = this.getButtonById(id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
345 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
346 if (Lang.isNumber(id)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
347 button = this.getButtonByIndex(id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
348 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
349 if ((!(button instanceof YAHOO.widget.ToolbarButton)) && (!(button instanceof YAHOO.widget.ToolbarButtonAdvanced))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
350 button = this.getButtonByValue(id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
351 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
352 if ((button instanceof YAHOO.widget.ToolbarButton) || (button instanceof YAHOO.widget.ToolbarButtonAdvanced)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
353 return button;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
354 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
355 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
356 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
357
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
358 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
359 * Provides a rich toolbar widget based on the button and menu widgets
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
360 * @constructor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
361 * @class Toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
362 * @extends YAHOO.util.Element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
363 * @param {String/HTMLElement} el The element to turn into a toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
364 * @param {Object} attrs Object liternal containing configuration parameters.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
365 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
366 YAHOO.widget.Toolbar = function(el, attrs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
367
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
368 if (Lang.isObject(arguments[0]) && !Dom.get(el).nodeType) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
369 attrs = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
370 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
371 var local_attrs = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
372 if (attrs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
373 Lang.augmentObject(local_attrs, attrs); //Break the config reference
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
374 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
375
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
376
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
377 var oConfig = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
378 element: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
379 attributes: local_attrs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
380 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
381
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
382
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
383 if (Lang.isString(el) && Dom.get(el)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
384 oConfig.element = Dom.get(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
385 } else if (Lang.isObject(el) && Dom.get(el) && Dom.get(el).nodeType) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
386 oConfig.element = Dom.get(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
387 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
388
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
389
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
390 if (!oConfig.element) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
391 oConfig.element = document.createElement('DIV');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
392 oConfig.element.id = Dom.generateId();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
393
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
394 if (local_attrs.container && Dom.get(local_attrs.container)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
395 Dom.get(local_attrs.container).appendChild(oConfig.element);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
396 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
397 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
398
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
399
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
400 if (!oConfig.element.id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
401 oConfig.element.id = ((Lang.isString(el)) ? el : Dom.generateId());
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 var fs = document.createElement('fieldset');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
405 var lg = document.createElement('legend');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
406 lg.innerHTML = 'Toolbar';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
407 fs.appendChild(lg);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
408
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
409 var cont = document.createElement('DIV');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
410 oConfig.attributes.cont = cont;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
411 Dom.addClass(cont, 'yui-toolbar-subcont');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
412 fs.appendChild(cont);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
413 oConfig.element.appendChild(fs);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
414
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
415 oConfig.element.tabIndex = -1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
416
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
417
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
418 oConfig.attributes.element = oConfig.element;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
419 oConfig.attributes.id = oConfig.element.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
420
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
421 this._configuredButtons = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
422
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
423 YAHOO.widget.Toolbar.superclass.constructor.call(this, oConfig.element, oConfig.attributes);
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
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
427 YAHOO.extend(YAHOO.widget.Toolbar, YAHOO.util.Element, {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
428 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
429 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
430 * @property _configuredButtons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
431 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
432 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
433 _configuredButtons: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
434 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
435 * @method _addMenuClasses
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
436 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
437 * @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
438 * @param {String} ev The event that fired.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
439 * @param {Array} na Array of event information.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
440 * @param {Object} o Button config object.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
441 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
442 _addMenuClasses: function(ev, na, o) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
443 Dom.addClass(this.element, 'yui-toolbar-' + o.get('value') + '-menu');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
444 if (Dom.hasClass(o._button.parentNode.parentNode, 'yui-toolbar-select')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
445 Dom.addClass(this.element, 'yui-toolbar-select-menu');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
446 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
447 var items = this.getItems();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
448 for (var i = 0; i < items.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
449 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
450 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
451 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
452 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
453 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
454 * @property buttonType
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
455 * @description The default button to use
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
456 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
457 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
458 buttonType: YAHOO.widget.ToolbarButton,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
459 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
460 * @property dd
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
461 * @description The DragDrop instance associated with the Toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
462 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
463 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
464 dd: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
465 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
466 * @property _colorData
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
467 * @description Object reference containing colors hex and text values.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
468 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
469 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
470 _colorData: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
471 /* {{{ _colorData */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
472 '#111111': 'Obsidian',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
473 '#2D2D2D': 'Dark Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
474 '#434343': 'Shale',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
475 '#5B5B5B': 'Flint',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
476 '#737373': 'Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
477 '#8B8B8B': 'Concrete',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
478 '#A2A2A2': 'Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
479 '#B9B9B9': 'Titanium',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
480 '#000000': 'Black',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
481 '#D0D0D0': 'Light Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
482 '#E6E6E6': 'Silver',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
483 '#FFFFFF': 'White',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
484 '#BFBF00': 'Pumpkin',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
485 '#FFFF00': 'Yellow',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
486 '#FFFF40': 'Banana',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
487 '#FFFF80': 'Pale Yellow',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
488 '#FFFFBF': 'Butter',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
489 '#525330': 'Raw Siena',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
490 '#898A49': 'Mildew',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
491 '#AEA945': 'Olive',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
492 '#7F7F00': 'Paprika',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
493 '#C3BE71': 'Earth',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
494 '#E0DCAA': 'Khaki',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
495 '#FCFAE1': 'Cream',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
496 '#60BF00': 'Cactus',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
497 '#80FF00': 'Chartreuse',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
498 '#A0FF40': 'Green',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
499 '#C0FF80': 'Pale Lime',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
500 '#DFFFBF': 'Light Mint',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
501 '#3B5738': 'Green',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
502 '#668F5A': 'Lime Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
503 '#7F9757': 'Yellow',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
504 '#407F00': 'Clover',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
505 '#8A9B55': 'Pistachio',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
506 '#B7C296': 'Light Jade',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
507 '#E6EBD5': 'Breakwater',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
508 '#00BF00': 'Spring Frost',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
509 '#00FF80': 'Pastel Green',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
510 '#40FFA0': 'Light Emerald',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
511 '#80FFC0': 'Sea Foam',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
512 '#BFFFDF': 'Sea Mist',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
513 '#033D21': 'Dark Forrest',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
514 '#438059': 'Moss',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
515 '#7FA37C': 'Medium Green',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
516 '#007F40': 'Pine',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
517 '#8DAE94': 'Yellow Gray Green',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
518 '#ACC6B5': 'Aqua Lung',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
519 '#DDEBE2': 'Sea Vapor',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
520 '#00BFBF': 'Fog',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
521 '#00FFFF': 'Cyan',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
522 '#40FFFF': 'Turquoise Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
523 '#80FFFF': 'Light Aqua',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
524 '#BFFFFF': 'Pale Cyan',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
525 '#033D3D': 'Dark Teal',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
526 '#347D7E': 'Gray Turquoise',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
527 '#609A9F': 'Green Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
528 '#007F7F': 'Seaweed',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
529 '#96BDC4': 'Green Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
530 '#B5D1D7': 'Soapstone',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
531 '#E2F1F4': 'Light Turquoise',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
532 '#0060BF': 'Summer Sky',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
533 '#0080FF': 'Sky Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
534 '#40A0FF': 'Electric Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
535 '#80C0FF': 'Light Azure',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
536 '#BFDFFF': 'Ice Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
537 '#1B2C48': 'Navy',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
538 '#385376': 'Biscay',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
539 '#57708F': 'Dusty Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
540 '#00407F': 'Sea Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
541 '#7792AC': 'Sky Blue Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
542 '#A8BED1': 'Morning Sky',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
543 '#DEEBF6': 'Vapor',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
544 '#0000BF': 'Deep Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
545 '#0000FF': 'Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
546 '#4040FF': 'Cerulean Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
547 '#8080FF': 'Evening Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
548 '#BFBFFF': 'Light Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
549 '#212143': 'Deep Indigo',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
550 '#373E68': 'Sea Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
551 '#444F75': 'Night Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
552 '#00007F': 'Indigo Blue',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
553 '#585E82': 'Dockside',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
554 '#8687A4': 'Blue Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
555 '#D2D1E1': 'Light Blue Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
556 '#6000BF': 'Neon Violet',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
557 '#8000FF': 'Blue Violet',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
558 '#A040FF': 'Violet Purple',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
559 '#C080FF': 'Violet Dusk',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
560 '#DFBFFF': 'Pale Lavender',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
561 '#302449': 'Cool Shale',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
562 '#54466F': 'Dark Indigo',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
563 '#655A7F': 'Dark Violet',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
564 '#40007F': 'Violet',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
565 '#726284': 'Smoky Violet',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
566 '#9E8FA9': 'Slate Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
567 '#DCD1DF': 'Violet White',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
568 '#BF00BF': 'Royal Violet',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
569 '#FF00FF': 'Fuchsia',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
570 '#FF40FF': 'Magenta',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
571 '#FF80FF': 'Orchid',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
572 '#FFBFFF': 'Pale Magenta',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
573 '#4A234A': 'Dark Purple',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
574 '#794A72': 'Medium Purple',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
575 '#936386': 'Cool Granite',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
576 '#7F007F': 'Purple',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
577 '#9D7292': 'Purple Moon',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
578 '#C0A0B6': 'Pale Purple',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
579 '#ECDAE5': 'Pink Cloud',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
580 '#BF005F': 'Hot Pink',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
581 '#FF007F': 'Deep Pink',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
582 '#FF409F': 'Grape',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
583 '#FF80BF': 'Electric Pink',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
584 '#FFBFDF': 'Pink',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
585 '#451528': 'Purple Red',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
586 '#823857': 'Purple Dino',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
587 '#A94A76': 'Purple Gray',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
588 '#7F003F': 'Rose',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
589 '#BC6F95': 'Antique Mauve',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
590 '#D8A5BB': 'Cool Marble',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
591 '#F7DDE9': 'Pink Granite',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
592 '#C00000': 'Apple',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
593 '#FF0000': 'Fire Truck',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
594 '#FF4040': 'Pale Red',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
595 '#FF8080': 'Salmon',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
596 '#FFC0C0': 'Warm Pink',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
597 '#441415': 'Sepia',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
598 '#82393C': 'Rust',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
599 '#AA4D4E': 'Brick',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
600 '#800000': 'Brick Red',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
601 '#BC6E6E': 'Mauve',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
602 '#D8A3A4': 'Shrimp Pink',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
603 '#F8DDDD': 'Shell Pink',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
604 '#BF5F00': 'Dark Orange',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
605 '#FF7F00': 'Orange',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
606 '#FF9F40': 'Grapefruit',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
607 '#FFBF80': 'Canteloupe',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
608 '#FFDFBF': 'Wax',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
609 '#482C1B': 'Dark Brick',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
610 '#855A40': 'Dirt',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
611 '#B27C51': 'Tan',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
612 '#7F3F00': 'Nutmeg',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
613 '#C49B71': 'Mustard',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
614 '#E1C4A8': 'Pale Tan',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
615 '#FDEEE0': 'Marble'
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
616 /* }}} */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
617 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
618 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
619 * @property _colorPicker
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
620 * @description The HTML Element containing the colorPicker
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
621 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
622 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
623 _colorPicker: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
624 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
625 * @property STR_COLLAPSE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
626 * @description String for Toolbar Collapse Button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
627 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
628 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
629 STR_COLLAPSE: 'Collapse Toolbar',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
630 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
631 * @property STR_EXPAND
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
632 * @description String for Toolbar Collapse Button - Expand
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
633 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
634 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
635 STR_EXPAND: 'Expand Toolbar',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
636 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
637 * @property STR_SPIN_LABEL
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
638 * @description String for spinbutton dynamic label. Note the {VALUE} will be replaced with YAHOO.lang.substitute
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
639 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
640 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
641 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
642 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
643 * @property STR_SPIN_UP
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
644 * @description String for spinbutton up
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
645 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
646 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
647 STR_SPIN_UP: 'Click to increase the value of this input',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
648 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
649 * @property STR_SPIN_DOWN
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
650 * @description String for spinbutton down
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
651 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
652 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
653 STR_SPIN_DOWN: 'Click to decrease the value of this input',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
654 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
655 * @property _titlebar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
656 * @description Object reference to the titlebar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
657 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
658 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
659 _titlebar: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
660 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
661 * @property browser
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
662 * @description Standard browser detection
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
663 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
664 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
665 browser: YAHOO.env.ua,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
666 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
667 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
668 * @property _buttonList
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
669 * @description Internal property list of current buttons in the toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
670 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
671 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
672 _buttonList: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
673 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
674 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
675 * @property _buttonGroupList
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
676 * @description Internal property list of current button groups in the toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
677 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
678 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
679 _buttonGroupList: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
680 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
681 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
682 * @property _sep
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
683 * @description Internal reference to the separator HTML Element for cloning
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
684 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
685 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
686 _sep: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
687 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
688 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
689 * @property _sepCount
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
690 * @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
691 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
692 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
693 _sepCount: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
694 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
695 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
696 * @property draghandle
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
697 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
698 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
699 _dragHandle: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
700 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
701 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
702 * @property _toolbarConfigs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
703 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
704 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
705 _toolbarConfigs: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
706 renderer: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
707 },
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 CLASS_CONTAINER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
711 * @description Default CSS class to apply to the toolbar container element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
712 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
713 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
714 CLASS_CONTAINER: 'yui-toolbar-container',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
715 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
716 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
717 * @property CLASS_DRAGHANDLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
718 * @description Default CSS class to apply to the toolbar's drag handle element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
719 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
720 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
721 CLASS_DRAGHANDLE: 'yui-toolbar-draghandle',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
722 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
723 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
724 * @property CLASS_SEPARATOR
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
725 * @description Default CSS class to apply to all separators in the toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
726 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
727 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
728 CLASS_SEPARATOR: 'yui-toolbar-separator',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
729 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
730 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
731 * @property CLASS_DISABLED
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
732 * @description Default CSS class to apply when the toolbar is disabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
733 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
734 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
735 CLASS_DISABLED: 'yui-toolbar-disabled',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
736 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
737 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
738 * @property CLASS_PREFIX
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
739 * @description Default prefix for dynamically created class names
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
740 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
741 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
742 CLASS_PREFIX: 'yui-toolbar',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
743 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
744 * @method init
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
745 * @description The Toolbar class's initialization method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
746 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
747 init: function(p_oElement, p_oAttributes) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
748 YAHOO.widget.Toolbar.superclass.init.call(this, p_oElement, p_oAttributes);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
749 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
750 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
751 * @method initAttributes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
752 * @description Initializes all of the configuration attributes used to create
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
753 * the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
754 * @param {Object} attr Object literal specifying a set of
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
755 * configuration attributes used to create the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
756 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
757 initAttributes: function(attr) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
758 YAHOO.widget.Toolbar.superclass.initAttributes.call(this, attr);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
759 this.addClass(this.CLASS_CONTAINER);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
760
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
761 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
762 * @attribute buttonType
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
763 * @description The buttonType to use (advanced or basic)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
764 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
765 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
766 this.setAttributeConfig('buttonType', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
767 value: attr.buttonType || 'basic',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
768 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
769 validator: function(type) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
770 switch (type) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
771 case 'advanced':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
772 case 'basic':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
773 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
774 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
775 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
776 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
777 method: function(type) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
778 if (type == 'advanced') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
779 if (YAHOO.widget.Button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
780 this.buttonType = YAHOO.widget.ToolbarButtonAdvanced;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
781 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
782 this.buttonType = YAHOO.widget.ToolbarButton;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
783 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
784 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
785 this.buttonType = YAHOO.widget.ToolbarButton;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
786 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
787 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
788 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
789
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
790
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
791 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
792 * @attribute buttons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
793 * @description Object specifying the buttons to include in the toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
794 * Example:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
795 * <code><pre>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
796 * {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
797 * { id: 'b3', type: 'button', label: 'Underline', value: 'underline' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
798 * { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
799 * { id: 'b4', type: 'menu', label: 'Align', value: 'align',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
800 * menu: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
801 * { text: "Left", value: 'alignleft' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
802 * { text: "Center", value: 'aligncenter' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
803 * { text: "Right", value: 'alignright' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
804 * ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
805 * }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
806 * }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
807 * </pre></code>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
808 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
809 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
810
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
811 this.setAttributeConfig('buttons', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
812 value: [],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
813 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
814 method: function(data) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
815 var i, button, buttons, len, b;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
816 for (i in data) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
817 if (Lang.hasOwnProperty(data, i)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
818 if (data[i].type == 'separator') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
819 this.addSeparator();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
820 } else if (data[i].group !== undefined) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
821 buttons = this.addButtonGroup(data[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
822 if (buttons) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
823 len = buttons.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
824 for(b = 0; b < len; b++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
825 if (buttons[b]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
826 this._configuredButtons[this._configuredButtons.length] = buttons[b].id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
827 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
828 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
829 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
830
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
831 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
832 button = this.addButton(data[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
833 if (button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
834 this._configuredButtons[this._configuredButtons.length] = button.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
835 }
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 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
841
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
842 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
843 * @attribute disabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
844 * @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
845 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
846 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
847 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
848 this.setAttributeConfig('disabled', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
849 value: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
850 method: function(disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
851 if (this.get('disabled') === disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
852 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
853 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
854 if (disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
855 this.addClass(this.CLASS_DISABLED);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
856 this.set('draggable', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
857 this.disableAllButtons();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
858 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
859 this.removeClass(this.CLASS_DISABLED);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
860 if (this._configs.draggable._initialConfig.value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
861 //Draggable by default, set it back
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
862 this.set('draggable', true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
863 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
864 this.resetAllButtons();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
865 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
866 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
867 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
868
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
869 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
870 * @config cont
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
871 * @description The container for the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
872 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
873 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
874 this.setAttributeConfig('cont', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
875 value: attr.cont,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
876 readOnly: true
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
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
880 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
881 * @attribute grouplabels
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
882 * @description Boolean indicating if the toolbar should show the group label's text string.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
883 * @default true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
884 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
885 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
886 this.setAttributeConfig('grouplabels', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
887 value: ((attr.grouplabels === false) ? false : true),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
888 method: function(grouplabels) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
889 if (grouplabels) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
890 Dom.removeClass(this.get('cont'), (this.CLASS_PREFIX + '-nogrouplabels'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
891 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
892 Dom.addClass(this.get('cont'), (this.CLASS_PREFIX + '-nogrouplabels'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
893 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
894 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
895 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
896 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
897 * @attribute titlebar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
898 * @description Boolean indicating if the toolbar should have a titlebar. If
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
899 * passed a string, it will use that as the titlebar text
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
900 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
901 * @type Boolean or String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
902 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
903 this.setAttributeConfig('titlebar', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
904 value: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
905 method: function(titlebar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
906 if (titlebar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
907 if (this._titlebar && this._titlebar.parentNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
908 this._titlebar.parentNode.removeChild(this._titlebar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
909 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
910 this._titlebar = document.createElement('DIV');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
911 this._titlebar.tabIndex = '-1';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
912 Event.on(this._titlebar, 'focus', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
913 this._handleFocus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
914 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
915 Dom.addClass(this._titlebar, this.CLASS_PREFIX + '-titlebar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
916 if (Lang.isString(titlebar)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
917 var h2 = document.createElement('h2');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
918 h2.tabIndex = '-1';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
919 h2.innerHTML = '<a href="#" tabIndex="0">' + titlebar + '</a>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
920 this._titlebar.appendChild(h2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
921 Event.on(h2.firstChild, 'click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
922 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
923 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
924 Event.on([h2, h2.firstChild], 'focus', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
925 this._handleFocus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
926 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
927 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
928 if (this.get('firstChild')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
929 this.insertBefore(this._titlebar, this.get('firstChild'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
930 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
931 this.appendChild(this._titlebar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
932 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
933 if (this.get('collapse')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
934 this.set('collapse', true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
935 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
936 } else if (this._titlebar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
937 if (this._titlebar && this._titlebar.parentNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
938 this._titlebar.parentNode.removeChild(this._titlebar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
939 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
940 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
941 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
942 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
943
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
944
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
945 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
946 * @attribute collapse
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
947 * @description Boolean indicating if the the titlebar should have a collapse button.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
948 * The collapse button will not remove the toolbar, it will minimize it to the titlebar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
949 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
950 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
951 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
952 this.setAttributeConfig('collapse', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
953 value: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
954 method: function(collapse) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
955 if (this._titlebar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
956 var collapseEl = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
957 var el = Dom.getElementsByClassName('collapse', 'span', this._titlebar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
958 if (collapse) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
959 if (el.length > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
960 //There is already a collapse button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
961 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
962 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
963 collapseEl = document.createElement('SPAN');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
964 collapseEl.innerHTML = 'X';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
965 collapseEl.title = this.STR_COLLAPSE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
966
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
967 Dom.addClass(collapseEl, 'collapse');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
968 this._titlebar.appendChild(collapseEl);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
969 Event.addListener(collapseEl, 'click', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
970 if (Dom.hasClass(this.get('cont').parentNode, 'yui-toolbar-container-collapsed')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
971 this.collapse(false); //Expand Toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
972 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
973 this.collapse(); //Collapse Toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
974 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
975 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
976 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
977 collapseEl = Dom.getElementsByClassName('collapse', 'span', this._titlebar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
978 if (collapseEl[0]) {
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 //We are closed, reopen the titlebar..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
981 this.collapse(false); //Expand Toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
982 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
983 collapseEl[0].parentNode.removeChild(collapseEl[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
984 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
985 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
986 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
987 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
988 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
989
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
990 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
991 * @attribute draggable
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
992 * @description Boolean indicating if the toolbar should be draggable.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
993 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
994 * @type Boolean
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 this.setAttributeConfig('draggable', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
998 value: (attr.draggable || false),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
999 method: function(draggable) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1000 if (draggable && !this.get('titlebar')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1001 if (!this._dragHandle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1002 this._dragHandle = document.createElement('SPAN');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1003 this._dragHandle.innerHTML = '|';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1004 this._dragHandle.setAttribute('title', 'Click to drag the toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1005 this._dragHandle.id = this.get('id') + '_draghandle';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1006 Dom.addClass(this._dragHandle, this.CLASS_DRAGHANDLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1007 if (this.get('cont').hasChildNodes()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1008 this.get('cont').insertBefore(this._dragHandle, this.get('cont').firstChild);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1009 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1010 this.get('cont').appendChild(this._dragHandle);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1011 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1012 this.dd = new YAHOO.util.DD(this.get('id'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1013 this.dd.setHandleElId(this._dragHandle.id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1014
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1015 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1016 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1017 if (this._dragHandle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1018 this._dragHandle.parentNode.removeChild(this._dragHandle);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1019 this._dragHandle = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1020 this.dd = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1021 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1022 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1023 if (this._titlebar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1024 if (draggable) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1025 this.dd = new YAHOO.util.DD(this.get('id'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1026 this.dd.setHandleElId(this._titlebar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1027 Dom.addClass(this._titlebar, 'draggable');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1028 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1029 Dom.removeClass(this._titlebar, 'draggable');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1030 if (this.dd) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1031 this.dd.unreg();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1032 this.dd = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1033 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1034 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1035 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1036 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1037 validator: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1038 var ret = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1039 if (!YAHOO.util.DD) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1040 ret = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1041 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1042 return ret;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1043 }
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 * @method addButtonGroup
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1049 * @description Add a new button group to the toolbar. (uses addButton)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1050 * @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
1051 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1052 addButtonGroup: function(oGroup) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1053 if (!this.get('element')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1054 this._queue[this._queue.length] = ['addButtonGroup', arguments];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1055 return false;
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 if (!this.hasClass(this.CLASS_PREFIX + '-grouped')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1059 this.addClass(this.CLASS_PREFIX + '-grouped');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1060 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1061 var div = document.createElement('DIV');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1062 Dom.addClass(div, this.CLASS_PREFIX + '-group');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1063 Dom.addClass(div, this.CLASS_PREFIX + '-group-' + oGroup.group);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1064 if (oGroup.label) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1065 var label = document.createElement('h3');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1066 label.innerHTML = oGroup.label;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1067 div.appendChild(label);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1068 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1069 if (!this.get('grouplabels')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1070 Dom.addClass(this.get('cont'), this.CLASS_PREFIX, '-nogrouplabels');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1071 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1072
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1073 this.get('cont').appendChild(div);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1074
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1075 //For accessibility, let's put all of the group buttons in an Unordered List
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1076 var ul = document.createElement('ul');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1077 div.appendChild(ul);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1078
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1079 if (!this._buttonGroupList) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1080 this._buttonGroupList = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1081 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1082
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1083 this._buttonGroupList[oGroup.group] = ul;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1084
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1085 //An array of the button ids added to this group
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1086 //This is used for destruction later...
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1087 var addedButtons = [],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1088 button;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1089
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1090
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1091 for (var i = 0; i < oGroup.buttons.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1092 var li = document.createElement('li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1093 li.className = this.CLASS_PREFIX + '-groupitem';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1094 ul.appendChild(li);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1095 if ((oGroup.buttons[i].type !== undefined) && oGroup.buttons[i].type == 'separator') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1096 this.addSeparator(li);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1097 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1098 oGroup.buttons[i].container = li;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1099 button = this.addButton(oGroup.buttons[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1100 if (button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1101 addedButtons[addedButtons.length] = button.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1102 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1103 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1104 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1105 return addedButtons;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1106 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1107 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1108 * @method addButtonToGroup
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1109 * @description Add a new button to a toolbar group. Buttons supported:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1110 * push, split, menu, select, color, spin
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1111 * @param {Object} oButton Object literal reference to the Button's Config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1112 * @param {String} group The Group identifier passed into the initial config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1113 * @param {HTMLElement} after Optional HTML element to insert this button after in the DOM.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1114 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1115 addButtonToGroup: function(oButton, group, after) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1116 var groupCont = this._buttonGroupList[group],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1117 li = document.createElement('li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1118
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1119 li.className = this.CLASS_PREFIX + '-groupitem';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1120 oButton.container = li;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1121 this.addButton(oButton, after);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1122 groupCont.appendChild(li);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1123 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1124 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1125 * @method addButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1126 * @description Add a new button to the toolbar. Buttons supported:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1127 * push, split, menu, select, color, spin
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1128 * @param {Object} oButton Object literal reference to the Button's Config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1129 * @param {HTMLElement} after Optional HTML element to insert this button after in the DOM.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1130 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1131 addButton: function(oButton, after) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1132 if (!this.get('element')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1133 this._queue[this._queue.length] = ['addButton', arguments];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1134 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1135 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1136 if (!this._buttonList) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1137 this._buttonList = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1138 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1139 if (!oButton.container) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1140 oButton.container = this.get('cont');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1141 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1142
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1143 if ((oButton.type == 'menu') || (oButton.type == 'split') || (oButton.type == 'select')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1144 if (Lang.isArray(oButton.menu)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1145 for (var i in oButton.menu) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1146 if (Lang.hasOwnProperty(oButton.menu, i)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1147 var funcObject = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1148 fn: function(ev, x, oMenu) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1149 if (!oButton.menucmd) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1150 oButton.menucmd = oButton.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1151 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1152 oButton.value = ((oMenu.value) ? oMenu.value : oMenu._oText.nodeValue);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1153 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1154 scope: this
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1155 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1156 oButton.menu[i].onclick = funcObject;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1157 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1158 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1159 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1160 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1161 var _oButton = {}, skip = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1162 for (var o in oButton) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1163 if (Lang.hasOwnProperty(oButton, o)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1164 if (!this._toolbarConfigs[o]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1165 _oButton[o] = oButton[o];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1166 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1167 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1168 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1169 if (oButton.type == 'select') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1170 _oButton.type = 'menu';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1171 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1172 if (oButton.type == 'spin') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1173 _oButton.type = 'push';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1174 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1175 if (_oButton.type == 'color') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1176 if (YAHOO.widget.Overlay) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1177 _oButton = this._makeColorButton(_oButton);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1178 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1179 skip = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1180 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1181 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1182 if (_oButton.menu) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1183 if ((YAHOO.widget.Overlay) && (oButton.menu instanceof YAHOO.widget.Overlay)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1184 oButton.menu.showEvent.subscribe(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1185 this._button = _oButton;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1186 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1187 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1188 for (var m = 0; m < _oButton.menu.length; m++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1189 if (!_oButton.menu[m].value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1190 _oButton.menu[m].value = _oButton.menu[m].text;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1191 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1192 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1193 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1194 _oButton.focusmenu = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1195 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1196 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1197 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1198 if (skip) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1199 oButton = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1200 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1201 //Add to .get('buttons') manually
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1202 this._configs.buttons.value[this._configs.buttons.value.length] = oButton;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1203
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1204 var tmp = new this.buttonType(_oButton);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1205 tmp.get('element').tabIndex = '-1';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1206 tmp.get('element').setAttribute('role', 'button');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1207 tmp._selected = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1208
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1209 if (this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1210 //Toolbar is disabled, disable the new button too!
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1211 tmp.set('disabled', true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1212 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1213 if (!oButton.id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1214 oButton.id = tmp.get('id');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1215 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1216
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1217 if (after) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1218 var el = tmp.get('element');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1219 var nextSib = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1220 if (after.get) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1221 nextSib = after.get('element').nextSibling;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1222 } else if (after.nextSibling) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1223 nextSib = after.nextSibling;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1224 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1225 if (nextSib) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1226 nextSib.parentNode.insertBefore(el, nextSib);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1227 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1228 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1229 tmp.addClass(this.CLASS_PREFIX + '-' + tmp.get('value'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1230
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1231 var icon = document.createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1232 icon.className = this.CLASS_PREFIX + '-icon';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1233 tmp.get('element').insertBefore(icon, tmp.get('firstChild'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1234 if (tmp._button.tagName.toLowerCase() == 'button') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1235 tmp.get('element').setAttribute('unselectable', 'on');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1236 //Replace the Button HTML Element with an a href if it exists
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1237 var a = document.createElement('a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1238 a.innerHTML = tmp._button.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1239 a.href = '#';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1240 a.tabIndex = '-1';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1241 Event.on(a, 'click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1242 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1243 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1244 tmp._button.parentNode.replaceChild(a, tmp._button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1245 tmp._button = a;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1246 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1247
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1248 if (oButton.type == 'select') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1249 if (tmp._button.tagName.toLowerCase() == 'select') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1250 icon.parentNode.removeChild(icon);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1251 var iel = tmp._button,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1252 parEl = tmp.get('element');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1253 parEl.parentNode.replaceChild(iel, parEl);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1254 //The 'element' value is currently the orphaned element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1255 //In order for "destroy" to execute we need to get('element') to reference the correct node.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1256 //I'm not sure if there is a direct approach to setting this value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1257 tmp._configs.element.value = iel;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1258 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1259 //Don't put a class on it if it's a real select element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1260 tmp.addClass(this.CLASS_PREFIX + '-select');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1261 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1262 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1263 if (oButton.type == 'spin') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1264 if (!Lang.isArray(oButton.range)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1265 oButton.range = [ 10, 100 ];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1266 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1267 this._makeSpinButton(tmp, oButton);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1268 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1269 tmp.get('element').setAttribute('title', tmp.get('label'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1270 if (oButton.type != 'spin') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1271 if ((YAHOO.widget.Overlay) && (_oButton.menu instanceof YAHOO.widget.Overlay)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1272 var showPicker = function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1273 var exec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1274 if (ev.keyCode && (ev.keyCode == 9)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1275 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1276 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1277 if (exec) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1278 if (this._colorPicker) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1279 this._colorPicker._button = oButton.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1280 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1281 var menuEL = tmp.getMenu().element;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1282 if (Dom.getStyle(menuEL, 'visibility') == 'hidden') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1283 tmp.getMenu().show();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1284 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1285 tmp.getMenu().hide();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1286 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1287 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1288 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1289 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1290 tmp.on('mousedown', showPicker, oButton, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1291 tmp.on('keydown', showPicker, oButton, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1292
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1293 } else if ((oButton.type != 'menu') && (oButton.type != 'select')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1294 tmp.on('keypress', this._buttonClick, oButton, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1295 tmp.on('mousedown', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1296 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1297 this._buttonClick(ev, oButton);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1298 }, oButton, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1299 tmp.on('click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1300 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1301 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1302 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1303 //Stop the mousedown event so we can trap the selection in the editor!
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1304 tmp.on('mousedown', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1305 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1306 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1307 tmp.on('click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1308 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1309 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1310 tmp.on('change', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1311 if (!ev.target) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1312 if (!oButton.menucmd) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1313 oButton.menucmd = oButton.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1314 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1315 oButton.value = ev.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1316 this._buttonClick(ev, oButton);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1317 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1318 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1319
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1320 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1321 //Hijack the mousedown event in the menu and make it fire a button click..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1322 tmp.on('appendTo', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1323 var tmp = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1324 if (tmp.getMenu() && tmp.getMenu().mouseDownEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1325 tmp.getMenu().mouseDownEvent.subscribe(function(ev, args) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1326 var oMenu = args[1];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1327 YAHOO.util.Event.stopEvent(args[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1328 tmp._onMenuClick(args[0], tmp);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1329 if (!oButton.menucmd) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1330 oButton.menucmd = oButton.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1331 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1332 oButton.value = ((oMenu.value) ? oMenu.value : oMenu._oText.nodeValue);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1333 self._buttonClick.call(self, args[1], oButton);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1334 tmp._hideMenu();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1335 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1336 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1337 tmp.getMenu().clickEvent.subscribe(function(ev, args) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1338 YAHOO.util.Event.stopEvent(args[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1339 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1340 tmp.getMenu().mouseUpEvent.subscribe(function(ev, args) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1341 YAHOO.util.Event.stopEvent(args[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1342 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1343 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1344 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1345
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1346 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1347 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1348 //Stop the mousedown event so we can trap the selection in the editor!
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1349 tmp.on('mousedown', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1350 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1351 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1352 tmp.on('click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1353 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1354 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1355 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1356 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1357 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1358 //Add a couple of new events for IE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1359 tmp.DOM_EVENTS.focusin = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1360 tmp.DOM_EVENTS.focusout = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1361
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1362 //Stop them so we don't loose focus in the Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1363 tmp.on('focusin', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1364 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1365 }, oButton, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1366
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1367 tmp.on('focusout', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1368 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1369 }, oButton, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1370 tmp.on('click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1371 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1372 }, oButton, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1373 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1374 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1375 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1376 //This will keep the document from gaining focus and the editor from loosing it..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1377 //Forcefully remove the focus calls in button!
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1378 tmp.hasFocus = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1379 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1380 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1381 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1382 this._buttonList[this._buttonList.length] = tmp;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1383 if ((oButton.type == 'menu') || (oButton.type == 'split') || (oButton.type == 'select')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1384 if (Lang.isArray(oButton.menu)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1385 var menu = tmp.getMenu();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1386 if (menu && menu.renderEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1387 menu.renderEvent.subscribe(this._addMenuClasses, tmp);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1388 if (oButton.renderer) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1389 menu.renderEvent.subscribe(oButton.renderer, tmp);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1390 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1391 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1392 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1393 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1394 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1395 return oButton;
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 * @method addSeparator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1399 * @description Add a new button separator to the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1400 * @param {HTMLElement} cont Optional HTML element to insert this button into.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1401 * @param {HTMLElement} after Optional HTML element to insert this button after in the DOM.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1402 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1403 addSeparator: function(cont, after) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1404 if (!this.get('element')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1405 this._queue[this._queue.length] = ['addSeparator', arguments];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1406 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1407 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1408 var sepCont = ((cont) ? cont : this.get('cont'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1409 if (!this.get('element')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1410 this._queue[this._queue.length] = ['addSeparator', arguments];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1411 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1412 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1413 if (this._sepCount === null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1414 this._sepCount = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1415 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1416 if (!this._sep) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1417 this._sep = document.createElement('SPAN');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1418 Dom.addClass(this._sep, this.CLASS_SEPARATOR);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1419 this._sep.innerHTML = '|';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1420 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1421 var _sep = this._sep.cloneNode(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1422 this._sepCount++;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1423 Dom.addClass(_sep, this.CLASS_SEPARATOR + '-' + this._sepCount);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1424 if (after) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1425 var nextSib = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1426 if (after.get) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1427 nextSib = after.get('element').nextSibling;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1428 } else if (after.nextSibling) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1429 nextSib = after.nextSibling;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1430 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1431 nextSib = after;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1432 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1433 if (nextSib) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1434 if (nextSib == after) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1435 nextSib.parentNode.appendChild(_sep);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1436 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1437 nextSib.parentNode.insertBefore(_sep, nextSib);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1438 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1439 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1440 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1441 sepCont.appendChild(_sep);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1442 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1443 return _sep;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1444 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1445 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1446 * @method _createColorPicker
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1447 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1448 * @description Creates the core DOM reference to the color picker menu item.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1449 * @param {String} id the id of the toolbar to prefix this DOM container with.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1450 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1451 _createColorPicker: function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1452 if (Dom.get(id + '_colors')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1453 Dom.get(id + '_colors').parentNode.removeChild(Dom.get(id + '_colors'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1454 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1455 var picker = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1456 picker.className = 'yui-toolbar-colors';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1457 picker.id = id + '_colors';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1458 picker.style.display = 'none';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1459 Event.on(window, 'load', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1460 document.body.appendChild(picker);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1461 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1462
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1463 this._colorPicker = picker;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1464
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1465 var html = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1466 for (var i in this._colorData) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1467 if (Lang.hasOwnProperty(this._colorData, i)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1468 html += '<a style="background-color: ' + i + '" href="#">' + i.replace('#', '') + '</a>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1469 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1470 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1471 html += '<span><em>X</em><strong></strong></span>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1472 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1473 picker.innerHTML = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1474 }, 0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1475
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1476 Event.on(picker, 'mouseover', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1477 var picker = this._colorPicker;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1478 var em = picker.getElementsByTagName('em')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1479 var strong = picker.getElementsByTagName('strong')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1480 var tar = Event.getTarget(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1481 if (tar.tagName.toLowerCase() == 'a') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1482 em.style.backgroundColor = tar.style.backgroundColor;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1483 strong.innerHTML = this._colorData['#' + tar.innerHTML] + '<br>' + tar.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1484 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1485 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1486 Event.on(picker, 'focus', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1487 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1488 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1489 Event.on(picker, 'click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1490 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1491 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1492 Event.on(picker, 'mousedown', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1493 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1494 var tar = Event.getTarget(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1495 if (tar.tagName.toLowerCase() == 'a') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1496 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
1497 if (retVal !== false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1498 var info = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1499 color: tar.innerHTML,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1500 colorName: this._colorData['#' + tar.innerHTML],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1501 value: this._colorPicker._button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1502 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1503
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1504 this.fireEvent('buttonClick', { type: 'buttonClick', target: this.get('element'), button: info });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1505 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1506 this.getButtonByValue(this._colorPicker._button).getMenu().hide();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1507 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1508 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1509 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1510 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1511 * @method _resetColorPicker
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1512 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1513 * @description Clears the currently selected color or mouseover color in the color picker.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1514 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1515 _resetColorPicker: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1516 var em = this._colorPicker.getElementsByTagName('em')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1517 var strong = this._colorPicker.getElementsByTagName('strong')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1518 em.style.backgroundColor = 'transparent';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1519 strong.innerHTML = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1520 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1521 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1522 * @method _makeColorButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1523 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1524 * @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
1525 * @param {Object} _oButton <a href="YAHOO.widget.ToolbarButton.html">YAHOO.widget.ToolbarButton</a> reference
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1526 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1527 _makeColorButton: function(_oButton) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1528 if (!this._colorPicker) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1529 this._createColorPicker(this.get('id'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1530 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1531 _oButton.type = 'color';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1532 _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
1533 _oButton.menu.setBody('');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1534 _oButton.menu.render(this.get('cont'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1535 Dom.addClass(_oButton.menu.element, 'yui-button-menu');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1536 Dom.addClass(_oButton.menu.element, 'yui-color-button-menu');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1537 _oButton.menu.beforeShowEvent.subscribe(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1538 _oButton.menu.cfg.setProperty('zindex', 5); //Re Adjust the overlays zIndex.. not sure why.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1539 _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
1540 //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
1541 this._resetColorPicker();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1542 var _p = this._colorPicker;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1543 if (_p.parentNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1544 _p.parentNode.removeChild(_p);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1545 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1546 _oButton.menu.setBody('');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1547 _oButton.menu.appendToBody(_p);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1548 this._colorPicker.style.display = 'block';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1549 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1550 return _oButton;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1551 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1552 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1553 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1554 * @method _makeSpinButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1555 * @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
1556 * @param {Object} _button <a href="YAHOO.widget.ToolbarButton.html">YAHOO.widget.ToolbarButton</a> reference
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1557 * @param {Object} oButton Object literal containing the buttons initial config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1558 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1559 _makeSpinButton: function(_button, oButton) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1560 _button.addClass(this.CLASS_PREFIX + '-spinbutton');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1561 var self = this,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1562 _par = _button._button.parentNode.parentNode, //parentNode of Button Element for appending child
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1563 range = oButton.range,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1564 _b1 = document.createElement('a'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1565 _b2 = document.createElement('a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1566 _b1.href = '#';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1567 _b2.href = '#';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1568 _b1.tabIndex = '-1';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1569 _b2.tabIndex = '-1';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1570
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1571 //Setup the up and down arrows
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1572 _b1.className = 'up';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1573 _b1.title = this.STR_SPIN_UP;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1574 _b1.innerHTML = this.STR_SPIN_UP;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1575 _b2.className = 'down';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1576 _b2.title = this.STR_SPIN_DOWN;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1577 _b2.innerHTML = this.STR_SPIN_DOWN;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1578
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1579 //Append them to the container
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1580 _par.appendChild(_b1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1581 _par.appendChild(_b2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1582
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1583 var label = YAHOO.lang.substitute(this.STR_SPIN_LABEL, { VALUE: _button.get('label') });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1584 _button.set('title', label);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1585
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1586 var cleanVal = function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1587 value = ((value < range[0]) ? range[0] : value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1588 value = ((value > range[1]) ? range[1] : value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1589 return value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1590 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1591
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1592 var br = this.browser;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1593 var tbar = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1594 var strLabel = this.STR_SPIN_LABEL;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1595 if (this._titlebar && this._titlebar.firstChild) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1596 tbar = this._titlebar.firstChild;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1597 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1598
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1599 var _intUp = function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1600 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1601 if (!_button.get('disabled') && (ev.keyCode != 9)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1602 var value = parseInt(_button.get('label'), 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1603 value++;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1604 value = cleanVal(value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1605 _button.set('label', ''+value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1606 var label = YAHOO.lang.substitute(strLabel, { VALUE: _button.get('label') });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1607 _button.set('title', label);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1608 if (!br.webkit && tbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1609 //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
1610 //_button.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1611 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1612 self._buttonClick(ev, oButton);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1613 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1614 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1615
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1616 var _intDown = function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1617 YAHOO.util.Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1618 if (!_button.get('disabled') && (ev.keyCode != 9)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1619 var value = parseInt(_button.get('label'), 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1620 value--;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1621 value = cleanVal(value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1622
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1623 _button.set('label', ''+value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1624 var label = YAHOO.lang.substitute(strLabel, { VALUE: _button.get('label') });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1625 _button.set('title', label);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1626 if (!br.webkit && tbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1627 //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
1628 //_button.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1629 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1630 self._buttonClick(ev, oButton);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1631 }
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 var _intKeyUp = function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1635 if (ev.keyCode == 38) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1636 _intUp(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1637 } else if (ev.keyCode == 40) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1638 _intDown(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1639 } else if (ev.keyCode == 107 && ev.shiftKey) { //Plus Key
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1640 _intUp(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1641 } else if (ev.keyCode == 109 && ev.shiftKey) { //Minus Key
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1642 _intDown(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1643 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1644 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1645
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1646 //Handle arrow keys..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1647 _button.on('keydown', _intKeyUp, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1648
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1649 //Listen for the click on the up button and act on it
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1650 //Listen for the click on the down button and act on it
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1651 Event.on(_b1, 'mousedown',function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1652 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1653 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1654 Event.on(_b2, 'mousedown', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1655 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1656 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1657 Event.on(_b1, 'click', _intUp, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1658 Event.on(_b2, 'click', _intDown, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1659 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1660 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1661 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1662 * @method _buttonClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1663 * @description Click handler for all buttons in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1664 * @param {String} ev The event that was passed in.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1665 * @param {Object} info Object literal of information about the button that was clicked.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1666 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1667 _buttonClick: function(ev, info) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1668 var doEvent = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1669
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1670 if (ev && ev.type == 'keypress') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1671 if (ev.keyCode == 9) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1672 doEvent = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1673 } else if ((ev.keyCode === 13) || (ev.keyCode === 0) || (ev.keyCode === 32)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1674 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1675 doEvent = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1676 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1677 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1678
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1679 if (doEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1680 var fireNextEvent = true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1681 retValue = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1682
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1683 info.isSelected = this.isSelected(info.id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1684
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1685 if (info.value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1686 retValue = this.fireEvent(info.value + 'Click', { type: info.value + 'Click', target: this.get('element'), button: info });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1687 if (retValue === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1688 fireNextEvent = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1689 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1690 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1691
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1692 if (info.menucmd && fireNextEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1693 retValue = this.fireEvent(info.menucmd + 'Click', { type: info.menucmd + 'Click', target: this.get('element'), button: info });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1694 if (retValue === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1695 fireNextEvent = false;
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 (fireNextEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1699 this.fireEvent('buttonClick', { type: 'buttonClick', target: this.get('element'), button: info });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1700 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1701
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1702 if (info.type == 'select') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1703 var button = this.getButtonById(info.id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1704 if (button.buttonType == 'rich') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1705 var txt = info.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1706 for (var i = 0; i < info.menu.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1707 if (info.menu[i].value == info.value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1708 txt = info.menu[i].text;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1709 break;
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 button.set('label', '<span class="yui-toolbar-' + info.menucmd + '-' + (info.value).replace(/ /g, '-').toLowerCase() + '">' + txt + '</span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1713 var _items = button.getMenu().getItems();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1714 for (var m = 0; m < _items.length; m++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1715 if (_items[m].value.toLowerCase() == info.value.toLowerCase()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1716 _items[m].cfg.setProperty('checked', true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1717 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1718 _items[m].cfg.setProperty('checked', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1719 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1720 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1721 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1722 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1723 if (ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1724 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1725 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1726 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1727 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1728 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1729 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1730 * @property _keyNav
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1731 * @description Flag to determine if the arrow nav listeners have been attached
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1732 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1733 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1734 _keyNav: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1735 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1736 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1737 * @property _navCounter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1738 * @description Internal counter for walking the buttons in the toolbar with the arrow keys
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1739 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1740 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1741 _navCounter: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1742 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1743 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1744 * @method _navigateButtons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1745 * @description Handles the navigation/focus of toolbar buttons with the Arrow Keys
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1746 * @param {Event} ev The Key Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1747 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1748 _navigateButtons: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1749 switch (ev.keyCode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1750 case 37:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1751 case 39:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1752 if (ev.keyCode == 37) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1753 this._navCounter--;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1754 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1755 this._navCounter++;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1756 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1757 if (this._navCounter > (this._buttonList.length - 1)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1758 this._navCounter = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1759 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1760 if (this._navCounter < 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1761 this._navCounter = (this._buttonList.length - 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1762 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1763 if (this._buttonList[this._navCounter]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1764 var el = this._buttonList[this._navCounter].get('element');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1765 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1766 el = this._buttonList[this._navCounter].get('element').getElementsByTagName('a')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1767 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1768 if (this._buttonList[this._navCounter].get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1769 this._navigateButtons(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1770 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1771 el.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1772 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1773 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1774 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1775 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1776 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1777 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1778 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1779 * @method _handleFocus
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1780 * @description Sets up the listeners for the arrow key navigation
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1781 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1782 _handleFocus: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1783 if (!this._keyNav) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1784 var ev = 'keypress';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1785 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1786 ev = 'keydown';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1787 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1788 Event.on(this.get('element'), ev, this._navigateButtons, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1789 this._keyNav = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1790 this._navCounter = -1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1791 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1792 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1793 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1794 * @method getButtonById
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1795 * @description Gets a button instance from the toolbar by is Dom id.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1796 * @param {String} id The Dom id to query for.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1797 * @return {<a href="YAHOO.widget.ToolbarButton.html">YAHOO.widget.ToolbarButton</a>}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1798 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1799 getButtonById: function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1800 var len = this._buttonList.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1801 for (var i = 0; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1802 if (this._buttonList[i] && this._buttonList[i].get('id') == id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1803 return this._buttonList[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1804 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1805 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1806 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1807 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1808 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1809 * @method getButtonByValue
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1810 * @description Gets a button instance or a menuitem instance from the toolbar by it's value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1811 * @param {String} value The button value to query for.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1812 * @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
1813 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1814 getButtonByValue: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1815 var _buttons = this.get('buttons');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1816 if (!_buttons) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1817 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1818 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1819 var len = _buttons.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1820 for (var i = 0; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1821 if (_buttons[i].group !== undefined) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1822 for (var m = 0; m < _buttons[i].buttons.length; m++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1823 if ((_buttons[i].buttons[m].value == value) || (_buttons[i].buttons[m].menucmd == value)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1824 return this.getButtonById(_buttons[i].buttons[m].id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1825 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1826 if (_buttons[i].buttons[m].menu) { //Menu Button, loop through the values
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1827 for (var s = 0; s < _buttons[i].buttons[m].menu.length; s++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1828 if (_buttons[i].buttons[m].menu[s].value == value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1829 return this.getButtonById(_buttons[i].buttons[m].id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1830 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1831 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1832 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1833 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1834 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1835 if ((_buttons[i].value == value) || (_buttons[i].menucmd == value)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1836 return this.getButtonById(_buttons[i].id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1837 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1838 if (_buttons[i].menu) { //Menu Button, loop through the values
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1839 for (var j = 0; j < _buttons[i].menu.length; j++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1840 if (_buttons[i].menu[j].value == value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1841 return this.getButtonById(_buttons[i].id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1842 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1843 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1844 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1845 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1846 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1847 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1848 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1849 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1850 * @method getButtonByIndex
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1851 * @description Gets a button instance from the toolbar by is index in _buttonList.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1852 * @param {Number} index The index of the button in _buttonList.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1853 * @return {<a href="YAHOO.widget.ToolbarButton.html">YAHOO.widget.ToolbarButton</a>}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1854 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1855 getButtonByIndex: function(index) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1856 if (this._buttonList[index]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1857 return this._buttonList[index];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1858 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1859 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1860 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1861 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1862 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1863 * @method getButtons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1864 * @description Returns an array of buttons in the current toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1865 * @return {Array}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1866 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1867 getButtons: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1868 return this._buttonList;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1869 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1870 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1871 * @method disableButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1872 * @description Disables a button in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1873 * @param {String/Number} id Disable a button by it's id, index or value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1874 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1875 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1876 disableButton: function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1877 var button = getButton.call(this, id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1878 if (button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1879 button.set('disabled', true);
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 enableButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1886 * @description Enables a button in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1887 * @param {String/Number} id Enable a button by it's id, index or value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1888 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1889 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1890 enableButton: function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1891 if (this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1892 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1893 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1894 var button = getButton.call(this, id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1895 if (button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1896 if (button.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1897 button.set('disabled', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1898 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1899 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1900 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1901 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1902 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1903 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1904 * @method isSelected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1905 * @description Tells if a button is selected or not.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1906 * @param {String/Number} id A button by it's id, index or value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1907 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1908 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1909 isSelected: function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1910 var button = getButton.call(this, id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1911 if (button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1912 return button._selected;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1913 }
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 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1917 * @method selectButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1918 * @description Selects a button in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1919 * @param {String/Number} id Select a button by it's id, index or value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1920 * @param {String} value If this is a Menu Button, check this item in the menu
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1921 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1922 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1923 selectButton: function(id, value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1924 var button = getButton.call(this, id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1925 if (button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1926 button.addClass('yui-button-selected');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1927 button.addClass('yui-button-' + button.get('value') + '-selected');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1928 button._selected = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1929 if (value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1930 if (button.buttonType == 'rich') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1931 var _items = button.getMenu().getItems();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1932 for (var m = 0; m < _items.length; m++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1933 if (_items[m].value == value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1934 _items[m].cfg.setProperty('checked', true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1935 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
1936 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1937 _items[m].cfg.setProperty('checked', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1938 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1939 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1940 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1941 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1942 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1943 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1944 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1945 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1946 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1947 * @method deselectButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1948 * @description Deselects a button in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1949 * @param {String/Number} id Deselect a button by it's id, index or value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1950 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1951 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1952 deselectButton: function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1953 var button = getButton.call(this, id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1954 if (button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1955 button.removeClass('yui-button-selected');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1956 button.removeClass('yui-button-' + button.get('value') + '-selected');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1957 button.removeClass('yui-button-hover');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1958 button._selected = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1959 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1960 return false;
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 * @method deselectAllButtons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1965 * @description Deselects all buttons in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1966 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1967 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1968 deselectAllButtons: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1969 var len = this._buttonList.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1970 for (var i = 0; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1971 this.deselectButton(this._buttonList[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1972 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1973 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1974 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1975 * @method disableAllButtons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1976 * @description Disables all buttons in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1977 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1978 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1979 disableAllButtons: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1980 if (this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1981 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1982 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1983 var len = this._buttonList.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1984 for (var i = 0; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1985 this.disableButton(this._buttonList[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1986 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1987 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1988 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1989 * @method enableAllButtons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1990 * @description Enables all buttons in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1991 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1992 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1993 enableAllButtons: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1994 if (this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1995 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1996 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1997 var len = this._buttonList.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1998 for (var i = 0; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1999 this.enableButton(this._buttonList[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2000 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2001 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2002 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2003 * @method resetAllButtons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2004 * @description Resets all buttons to their initial state.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2005 * @param {Object} _ex Except these buttons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2006 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2007 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2008 resetAllButtons: function(_ex) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2009 if (!Lang.isObject(_ex)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2010 _ex = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2011 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2012 if (this.get('disabled') || !this._buttonList) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2013 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2014 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2015 var len = this._buttonList.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2016 for (var i = 0; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2017 var _button = this._buttonList[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2018 if (_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2019 var disabled = _button._configs.disabled._initialConfig.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2020 if (_ex[_button.get('id')]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2021 this.enableButton(_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2022 this.selectButton(_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2023 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2024 if (disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2025 this.disableButton(_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2026 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2027 this.enableButton(_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2028 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2029 this.deselectButton(_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2030 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2031 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2032 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2033 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2034 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2035 * @method destroyButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2036 * @description Destroy a button in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2037 * @param {String/Number} id Destroy a button by it's id or index.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2038 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2039 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2040 destroyButton: function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2041 var button = getButton.call(this, id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2042 if (button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2043 var thisID = button.get('id'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2044 new_list = [], i = 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2045 len = this._buttonList.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2046
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2047 button.destroy();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2048
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2049 for (i = 0; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2050 if (this._buttonList[i].get('id') != thisID) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2051 new_list[new_list.length]= this._buttonList[i];
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 this._buttonList = new_list;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2056 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2057 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2058 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2059 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2060 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2061 * @method destroy
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2062 * @description Destroys the toolbar, all of it's elements and objects.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2063 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2064 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2065 destroy: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2066 var len = this._configuredButtons.length, j, i;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2067 for(b = 0; b < len; b++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2068 this.destroyButton(this._configuredButtons[b]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2069 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2070
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2071 this._configuredButtons = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2072
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2073 this.get('element').innerHTML = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2074 this.get('element').className = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2075 //Brutal Object Destroy
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2076 for (i in this) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2077 if (Lang.hasOwnProperty(this, i)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2078 this[i] = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2079 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2080 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2081 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2082 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2083 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2084 * @method collapse
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2085 * @description Programatically collapse the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2086 * @param {Boolean} collapse True to collapse, false to expand.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2087 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2088 collapse: function(collapse) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2089 var el = Dom.getElementsByClassName('collapse', 'span', this._titlebar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2090 if (collapse === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2091 Dom.removeClass(this.get('cont').parentNode, 'yui-toolbar-container-collapsed');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2092 if (el[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2093 Dom.removeClass(el[0], 'collapsed');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2094 el[0].title = this.STR_COLLAPSE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2095 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2096 this.fireEvent('toolbarExpanded', { type: 'toolbarExpanded', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2097 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2098 if (el[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2099 Dom.addClass(el[0], 'collapsed');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2100 el[0].title = this.STR_EXPAND;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2101 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2102 Dom.addClass(this.get('cont').parentNode, 'yui-toolbar-container-collapsed');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2103 this.fireEvent('toolbarCollapsed', { type: 'toolbarCollapsed', target: this });
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 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2107 * @method toString
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2108 * @description Returns a string representing the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2109 * @return {String}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2110 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2111 toString: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2112 return 'Toolbar (#' + this.get('element').id + ') with ' + this._buttonList.length + ' buttons.';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2113 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2114 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2115 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2116 * @event buttonClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2117 * @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
2118 * @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
2119 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2120 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2121 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2122 * @event valueClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2123 * @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
2124 * @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
2125 * 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
2126 * Example:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2127 * <code><pre>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2128 * buttons : [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2129 * { type: 'button', value: 'test', value: 'testButton' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2130 * ]</pre>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2131 * </code>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2132 * With the valueClick event you could subscribe to this buttons click event with this:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2133 * tbar.in('testButtonClick', function() { alert('test button clicked'); })
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2134 * @type YAHOO.util.CustomEvent
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 * @event toolbarExpanded
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2138 * @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
2139 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2140 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2141 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2142 * @event toolbarCollapsed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2143 * @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
2144 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2145 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2146 })();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2147 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2148 * @module editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2149 * @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
2150 * @namespace YAHOO.widget
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2151 * @requires yahoo, dom, element, event, toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2152 * @optional animation, container_core, resize, dragdrop
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2153 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2154
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2155 (function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2156 var Dom = YAHOO.util.Dom,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2157 Event = YAHOO.util.Event,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2158 Lang = YAHOO.lang,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2159 Toolbar = YAHOO.widget.Toolbar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2160
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2161 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2162 * 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
2163 * @constructor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2164 * @class SimpleEditor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2165 * @extends YAHOO.util.Element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2166 * @param {String/HTMLElement} el The textarea element to turn into an editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2167 * @param {Object} attrs Object liternal containing configuration parameters.
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 YAHOO.widget.SimpleEditor = function(el, attrs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2171
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2172 var o = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2173 if (Lang.isObject(el) && (!el.tagName) && !attrs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2174 Lang.augmentObject(o, el); //Break the config reference
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2175 el = document.createElement('textarea');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2176 this.DOMReady = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2177 if (o.container) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2178 var c = Dom.get(o.container);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2179 c.appendChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2180 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2181 document.body.appendChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2182 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2183 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2184 if (attrs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2185 Lang.augmentObject(o, attrs); //Break the config reference
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2186 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2187 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2188
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2189 var oConfig = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2190 element: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2191 attributes: o
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2192 }, id = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2193
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2194 if (Lang.isString(el)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2195 id = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2196 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2197 if (oConfig.attributes.id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2198 id = oConfig.attributes.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2199 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2200 this.DOMReady = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2201 id = Dom.generateId(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2202 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2203 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2204 oConfig.element = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2205
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2206 var element_cont = document.createElement('DIV');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2207 oConfig.attributes.element_cont = new YAHOO.util.Element(element_cont, {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2208 id: id + '_container'
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2209 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2210 var div = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2211 Dom.addClass(div, 'first-child');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2212 oConfig.attributes.element_cont.appendChild(div);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2213
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2214 if (!oConfig.attributes.toolbar_cont) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2215 oConfig.attributes.toolbar_cont = document.createElement('DIV');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2216 oConfig.attributes.toolbar_cont.id = id + '_toolbar';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2217 div.appendChild(oConfig.attributes.toolbar_cont);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2218 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2219 var editorWrapper = document.createElement('DIV');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2220 div.appendChild(editorWrapper);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2221 oConfig.attributes.editor_wrapper = editorWrapper;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2222
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2223 YAHOO.widget.SimpleEditor.superclass.constructor.call(this, oConfig.element, oConfig.attributes);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2224 };
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 YAHOO.extend(YAHOO.widget.SimpleEditor, YAHOO.util.Element, {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2228 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2229 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2230 * @property _resizeConfig
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2231 * @description The default config for the Resize Utility
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2232 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2233 _resizeConfig: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2234 handles: ['br'],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2235 autoRatio: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2236 status: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2237 proxy: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2238 useShim: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2239 setSize: false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2240 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2241 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2242 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2243 * @method _setupResize
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2244 * @description Creates the Resize instance and binds its events.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2245 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2246 _setupResize: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2247 if (!YAHOO.util.DD || !YAHOO.util.Resize) { return false; }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2248 if (this.get('resize')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2249 var config = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2250 Lang.augmentObject(config, this._resizeConfig); //Break the config reference
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2251 this.resize = new YAHOO.util.Resize(this.get('element_cont').get('element'), config);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2252 this.resize.on('resize', function(args) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2253 var anim = this.get('animate');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2254 this.set('animate', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2255 this.set('width', args.width + 'px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2256 var h = args.height,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2257 th = (this.toolbar.get('element').clientHeight + 2),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2258 dh = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2259 if (this.dompath) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2260 dh = (this.dompath.clientHeight + 1); //It has a 1px top border..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2261 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2262 var newH = (h - th - dh);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2263 this.set('height', newH + 'px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2264 this.get('element_cont').setStyle('height', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2265 this.set('animate', anim);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2266 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2267 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2268 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2269 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2270 * @property resize
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2271 * @description A reference to the Resize object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2272 * @type YAHOO.util.Resize
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2273 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2274 resize: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2275 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2276 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2277 * @method _setupDD
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2278 * @description Sets up the DD instance used from the 'drag' config option.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2279 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2280 _setupDD: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2281 if (!YAHOO.util.DD) { return false; }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2282 if (this.get('drag')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2283 var d = this.get('drag'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2284 dd = YAHOO.util.DD;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2285 if (d === 'proxy') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2286 dd = YAHOO.util.DDProxy;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2287 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2288
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2289 this.dd = new dd(this.get('element_cont').get('element'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2290 this.toolbar.addClass('draggable');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2291 this.dd.setHandleElId(this.toolbar._titlebar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2292 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2293 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2294 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2295 * @property dd
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2296 * @description A reference to the DragDrop object.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2297 * @type YAHOO.util.DD/YAHOO.util.DDProxy
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2298 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2299 dd: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2300 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2301 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2302 * @property _lastCommand
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2303 * @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
2304 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2305 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2306 _lastCommand: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2307 _undoNodeChange: function() {},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2308 _storeUndo: function() {},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2309 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2310 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2311 * @method _checkKey
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2312 * @description Checks a keyMap entry against a key event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2313 * @param {Object} k The _keyMap object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2314 * @param {Event} e The Mouse Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2315 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2316 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2317 _checkKey: function(k, e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2318 var ret = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2319 if ((e.keyCode === k.key)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2320 if (k.mods && (k.mods.length > 0)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2321 var val = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2322 for (var i = 0; i < k.mods.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2323 if (this.browser.mac) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2324 if (k.mods[i] == 'ctrl') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2325 k.mods[i] = 'meta';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2326 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2327 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2328 if (e[k.mods[i] + 'Key'] === true) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2329 val++;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2330 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2331 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2332 if (val === k.mods.length) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2333 ret = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2334 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2335 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2336 ret = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2337 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2338 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2339 return ret;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2340 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2341 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2342 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2343 * @property _keyMap
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2344 * @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
2345 * 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
2346 * @type {Object/Mixed}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2347 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2348 _keyMap: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2349 SELECT_ALL: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2350 key: 65, //A key
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2351 mods: ['ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2352 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2353 CLOSE_WINDOW: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2354 key: 87, //W key
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2355 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2356 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2357 FOCUS_TOOLBAR: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2358 key: 27,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2359 mods: ['shift']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2360 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2361 FOCUS_AFTER: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2362 key: 27
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2363 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2364 FONT_SIZE_UP: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2365 key: 38,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2366 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2367 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2368 FONT_SIZE_DOWN: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2369 key: 40,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2370 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2371 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2372 CREATE_LINK: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2373 key: 76,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2374 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2375 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2376 BOLD: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2377 key: 66,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2378 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2379 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2380 ITALIC: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2381 key: 73,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2382 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2383 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2384 UNDERLINE: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2385 key: 85,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2386 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2387 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2388 UNDO: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2389 key: 90,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2390 mods: ['ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2391 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2392 REDO: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2393 key: 90,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2394 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2395 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2396 JUSTIFY_LEFT: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2397 key: 219,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2398 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2399 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2400 JUSTIFY_CENTER: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2401 key: 220,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2402 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2403 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2404 JUSTIFY_RIGHT: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2405 key: 221,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2406 mods: ['shift', 'ctrl']
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2407 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2408 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2409 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2410 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2411 * @method _cleanClassName
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2412 * @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
2413 * @param {String} str The classname to clean up
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2414 * @return {String}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2415 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2416 _cleanClassName: function(str) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2417 return str.replace(/ /g, '-').toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2418 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2419 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2420 * @property _textarea
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2421 * @description Flag to determine if we are using a textarea or an HTML Node.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2422 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2423 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2424 _textarea: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2425 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2426 * @property _docType
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2427 * @description The DOCTYPE to use in the editable container.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2428 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2429 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2430 _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
2431 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2432 * @property editorDirty
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2433 * @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
2434 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2435 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2436 editorDirty: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2437 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2438 * @property _defaultCSS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2439 * @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
2440 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2441 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2442 _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
2443 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2444 * @property _defaultToolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2445 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2446 * @description Default toolbar config.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2447 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2448 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2449 _defaultToolbar: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2450 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2451 * @property _lastButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2452 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2453 * @description The last button pressed, so we don't disable it.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2454 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2455 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2456 _lastButton: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2457 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2458 * @property _baseHREF
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2459 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2460 * @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
2461 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2462 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2463 _baseHREF: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2464 var href = document.location.href;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2465 if (href.indexOf('?') !== -1) { //Remove the query string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2466 href = href.substring(0, href.indexOf('?'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2467 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2468 href = href.substring(0, href.lastIndexOf('/')) + '/';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2469 return href;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2470 }(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2471 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2472 * @property _lastImage
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2473 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2474 * @description Safari reference for the last image selected (for styling as selected).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2475 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2476 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2477 _lastImage: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2478 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2479 * @property _blankImageLoaded
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2480 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2481 * @description Don't load the blank image more than once..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2482 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2483 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2484 _blankImageLoaded: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2485 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2486 * @property _fixNodesTimer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2487 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2488 * @description Holder for the fixNodes timer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2489 * @type Date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2490 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2491 _fixNodesTimer: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2492 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2493 * @property _nodeChangeTimer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2494 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2495 * @description Holds a reference to the nodeChange setTimeout call
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2496 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2497 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2498 _nodeChangeTimer: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2499 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2500 * @property _nodeChangeDelayTimer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2501 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2502 * @description Holds a reference to the nodeChangeDelay setTimeout call
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2503 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2504 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2505 _nodeChangeDelayTimer: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2506 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2507 * @property _lastNodeChangeEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2508 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2509 * @description Flag to determine the last event that fired a node change
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2510 * @type Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2511 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2512 _lastNodeChangeEvent: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2513 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2514 * @property _lastNodeChange
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2515 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2516 * @description Flag to determine when the last node change was fired
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2517 * @type Date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2518 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2519 _lastNodeChange: 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2520 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2521 * @property _rendered
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2522 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2523 * @description Flag to determine if editor has been rendered or not
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2524 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2525 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2526 _rendered: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2527 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2528 * @property DOMReady
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2529 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2530 * @description Flag to determine if DOM is ready or not
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2531 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2532 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2533 DOMReady: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2534 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2535 * @property _selection
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2536 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2537 * @description Holder for caching iframe selections
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2538 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2539 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2540 _selection: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2541 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2542 * @property _mask
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2543 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2544 * @description DOM Element holder for the editor Mask when disabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2545 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2546 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2547 _mask: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2548 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2549 * @property _showingHiddenElements
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2550 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2551 * @description Status of the hidden elements button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2552 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2553 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2554 _showingHiddenElements: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2555 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2556 * @property currentWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2557 * @description A reference to the currently open EditorWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2558 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2559 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2560 currentWindow: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2561 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2562 * @property currentEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2563 * @description A reference to the current editor event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2564 * @type Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2565 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2566 currentEvent: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2567 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2568 * @property operaEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2569 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2570 * @description setTimeout holder for Opera and Image DoubleClick event..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2571 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2572 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2573 operaEvent: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2574 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2575 * @property currentFont
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2576 * @description A reference to the last font selected from the Toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2577 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2578 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2579 currentFont: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2580 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2581 * @property currentElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2582 * @description A reference to the current working element in the editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2583 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2584 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2585 currentElement: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2586 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2587 * @property dompath
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2588 * @description A reference to the dompath container for writing the current working dom path to.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2589 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2590 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2591 dompath: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2592 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2593 * @property beforeElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2594 * @description A reference to the H2 placed before the editor for Accessibilty.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2595 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2596 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2597 beforeElement: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2598 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2599 * @property afterElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2600 * @description A reference to the H2 placed after the editor for Accessibilty.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2601 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2602 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2603 afterElement: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2604 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2605 * @property invalidHTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2606 * @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
2607 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2608 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2609 invalidHTML: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2610 form: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2611 input: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2612 button: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2613 select: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2614 link: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2615 html: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2616 body: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2617 iframe: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2618 script: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2619 style: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2620 textarea: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2621 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2622 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2623 * @property toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2624 * @description Local property containing the <a href="YAHOO.widget.Toolbar.html">YAHOO.widget.Toolbar</a> instance
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2625 * @type <a href="YAHOO.widget.Toolbar.html">YAHOO.widget.Toolbar</a>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2626 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2627 toolbar: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2628 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2629 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2630 * @property _contentTimer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2631 * @description setTimeout holder for documentReady check
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2632 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2633 _contentTimer: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2634 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2635 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2636 * @property _contentTimerMax
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2637 * @description The number of times the loaded content should be checked before giving up. Default: 500
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2638 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2639 _contentTimerMax: 500,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2640 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2641 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2642 * @property _contentTimerCounter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2643 * @description Counter to check the number of times the body is polled for before giving up
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2644 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2645 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2646 _contentTimerCounter: 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2647 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2648 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2649 * @property _disabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2650 * @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
2651 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2652 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2653 _disabled: [ 'createlink', 'fontname', 'fontsize', 'forecolor', 'backcolor' ],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2654 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2655 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2656 * @property _alwaysDisabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2657 * @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
2658 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2659 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2660 _alwaysDisabled: { undo: true, redo: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2661 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2662 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2663 * @property _alwaysEnabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2664 * @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
2665 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2666 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2667 _alwaysEnabled: { },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2668 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2669 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2670 * @property _semantic
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2671 * @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
2672 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2673 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2674 _semantic: { 'bold': true, 'italic' : true, 'underline' : true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2675 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2676 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2677 * @property _tag2cmd
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2678 * @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
2679 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2680 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2681 _tag2cmd: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2682 'b': 'bold',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2683 'strong': 'bold',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2684 'i': 'italic',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2685 'em': 'italic',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2686 'u': 'underline',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2687 'sup': 'superscript',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2688 'sub': 'subscript',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2689 'img': 'insertimage',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2690 'a' : 'createlink',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2691 'ul' : 'insertunorderedlist',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2692 'ol' : 'insertorderedlist'
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2693 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2694
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2695 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2696 * @private _createIframe
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2697 * @description Creates the DOM and YUI Element for the iFrame editor area.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2698 * @param {String} id The string ID to prefix the iframe with
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2699 * @return {Object} iFrame object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2700 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2701 _createIframe: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2702 var ifrmDom = document.createElement('iframe');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2703 ifrmDom.id = this.get('id') + '_editor';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2704 var config = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2705 border: '0',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2706 frameBorder: '0',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2707 marginWidth: '0',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2708 marginHeight: '0',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2709 leftMargin: '0',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2710 topMargin: '0',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2711 allowTransparency: 'true',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2712 width: '100%'
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2713 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2714 if (this.get('autoHeight')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2715 config.scrolling = 'no';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2716 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2717 for (var i in config) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2718 if (Lang.hasOwnProperty(config, i)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2719 ifrmDom.setAttribute(i, config[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2720 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2721 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2722 var isrc = 'javascript:;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2723 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2724 //isrc = 'about:blank';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2725 //TODO - Check this, I have changed it before..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2726 isrc = 'javascript:false;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2727 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2728 ifrmDom.setAttribute('src', isrc);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2729 var ifrm = new YAHOO.util.Element(ifrmDom);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2730 ifrm.setStyle('visibility', 'hidden');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2731 return ifrm;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2732 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2733 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2734 * @private _isElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2735 * @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
2736 * @param {HTMLElement} el The element to check
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2737 * @param {String} tag The tag that the element needs to be
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2738 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2739 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2740 _isElement: function(el, tag) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2741 if (el && el.tagName && (el.tagName.toLowerCase() == tag)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2742 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2743 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2744 if (el && el.getAttribute && (el.getAttribute('tag') == tag)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2745 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2746 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2747 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2748 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2749 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2750 * @private _hasParent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2751 * @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
2752 * @param {HTMLElement} el The element to check
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2753 * @param {String} tag The tag that the element needs to be
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2754 * @return HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2755 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2756 _hasParent: function(el, tag) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2757 if (!el || !el.parentNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2758 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2759 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2760
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2761 while (el.parentNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2762 if (this._isElement(el, tag)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2763 return el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2764 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2765 if (el.parentNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2766 el = el.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2767 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2768 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2769 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2770 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2771 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2772 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2773 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2774 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2775 * @method _getDoc
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2776 * @description Get the Document of the IFRAME
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2777 * @return {Object}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2778 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2779 _getDoc: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2780 var value = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2781 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2782 if (this.get('iframe').get('element').contentWindow.document) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2783 value = this.get('iframe').get('element').contentWindow.document;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2784 return value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2785 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2786 } catch (e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2787 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2788 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2789 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2790 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2791 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2792 * @method _getWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2793 * @description Get the Window of the IFRAME
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2794 * @return {Object}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2795 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2796 _getWindow: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2797 return this.get('iframe').get('element').contentWindow;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2798 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2799 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2800 * @method focus
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2801 * @description Attempt to set the focus of the iframes window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2802 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2803 focus: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2804 this._getWindow().focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2805 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2806 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2807 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2808 * @depreciated - This should not be used, moved to this.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2809 * @method _focusWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2810 * @description Attempt to set the focus of the iframes window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2811 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2812 _focusWindow: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2813 this.focus();
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 _hasSelection
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2818 * @description Determines if there is a selection in the editor document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2819 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2820 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2821 _hasSelection: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2822 var sel = this._getSelection();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2823 var range = this._getRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2824 var hasSel = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2825
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2826 if (!sel || !range) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2827 return hasSel;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2828 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2829
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2830 //Internet Explorer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2831 if (this.browser.ie || this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2832 if (range.text) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2833 hasSel = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2834 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2835 if (range.html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2836 hasSel = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2837 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2838 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2839 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2840 if (sel+'' !== '') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2841 hasSel = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2842 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2843 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2844 if (sel && (sel.toString() !== '') && (sel !== undefined)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2845 hasSel = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2846 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2847 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2848 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2849 return hasSel;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2850 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2851 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2852 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2853 * @method _getSelection
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2854 * @description Handles the different selection objects across the A-Grade list.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2855 * @return {Object} Selection Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2856 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2857 _getSelection: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2858 var _sel = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2859 if (this._getDoc() && this._getWindow()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2860 if (this._getDoc().selection) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2861 _sel = this._getDoc().selection;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2862 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2863 _sel = this._getWindow().getSelection();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2864 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2865 //Handle Safari's lack of Selection Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2866 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2867 if (_sel.baseNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2868 this._selection = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2869 this._selection.baseNode = _sel.baseNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2870 this._selection.baseOffset = _sel.baseOffset;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2871 this._selection.extentNode = _sel.extentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2872 this._selection.extentOffset = _sel.extentOffset;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2873 } else if (this._selection !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2874 _sel = this._getWindow().getSelection();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2875 _sel.setBaseAndExtent(
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2876 this._selection.baseNode,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2877 this._selection.baseOffset,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2878 this._selection.extentNode,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2879 this._selection.extentOffset);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2880 this._selection = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2881 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2882 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2883 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2884 return _sel;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2885 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2886 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2887 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2888 * @method _selectNode
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2889 * @description Places the highlight around a given node
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2890 * @param {HTMLElement} node The node to select
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2891 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2892 _selectNode: function(node, collapse) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2893 if (!node) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2894 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2895 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2896 var sel = this._getSelection(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2897 range = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2898
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2899 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2900 try { //IE freaks out here sometimes..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2901 range = this._getDoc().body.createTextRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2902 range.moveToElementText(node);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2903 range.select();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2904 } catch (e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2905 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2906 } else if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2907 if (collapse) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2908 sel.setBaseAndExtent(node, 1, node, node.innerText.length);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2909 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2910 sel.setBaseAndExtent(node, 0, node, node.innerText.length);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2911 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2912 } else if (this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2913 sel = this._getWindow().getSelection();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2914 range = this._getDoc().createRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2915 range.selectNode(node);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2916 sel.removeAllRanges();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2917 sel.addRange(range);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2918 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2919 range = this._getDoc().createRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2920 range.selectNodeContents(node);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2921 sel.removeAllRanges();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2922 sel.addRange(range);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2923 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2924 //TODO - Check Performance
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2925 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2926 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2927 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2928 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2929 * @method _getRange
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2930 * @description Handles the different range objects across the A-Grade list.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2931 * @return {Object} Range Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2932 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2933 _getRange: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2934 var sel = this._getSelection();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2935
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2936 if (sel === null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2937 return null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2938 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2939
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2940 if (this.browser.webkit && !sel.getRangeAt) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2941 var _range = this._getDoc().createRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2942 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2943 _range.setStart(sel.anchorNode, sel.anchorOffset);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2944 _range.setEnd(sel.focusNode, sel.focusOffset);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2945 } catch (e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2946 _range = this._getWindow().getSelection()+'';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2947 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2948 return _range;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2949 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2950
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2951 if (this.browser.ie || this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2952 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2953 return sel.createRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2954 } catch (e2) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2955 return null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2956 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2957 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2958
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2959 if (sel.rangeCount > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2960 return sel.getRangeAt(0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2961 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2962 return null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2963 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2964 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2965 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2966 * @method _setDesignMode
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2967 * @description Sets the designMode property of the iFrame document's body.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2968 * @param {String} state This should be either on or off
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2969 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2970 _setDesignMode: function(state) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2971 if (this.get('setDesignMode')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2972 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2973 this._getDoc().designMode = ((state.toLowerCase() == 'off') ? 'off' : 'on');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2974 } catch(e) { }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2975 }
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 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2979 * @method _toggleDesignMode
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2980 * @description Toggles the designMode property of the iFrame document on and off.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2981 * @return {String} The state that it was set to.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2982 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2983 _toggleDesignMode: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2984 var _dMode = this._getDoc().designMode,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2985 _state = ((_dMode.toLowerCase() == 'on') ? 'off' : 'on');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2986 this._setDesignMode(_state);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2987 return _state;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2988 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2989 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2990 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2991 * @property _focused
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2992 * @description Holder for trapping focus/blur state and prevent double events
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2993 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2994 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2995 _focused: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2996 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2997 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2998 * @method _handleFocus
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2999 * @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
3000 * @param {Event} e The DOM Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3001 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3002 _handleFocus: function(e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3003 if (!this._focused) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3004 this._focused = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3005 this.fireEvent('editorWindowFocus', { type: 'editorWindowFocus', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3006 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3007 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3008 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3009 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3010 * @method _handleBlur
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3011 * @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
3012 * @param {Event} e The DOM Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3013 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3014 _handleBlur: function(e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3015 if (this._focused) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3016 this._focused = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3017 this.fireEvent('editorWindowBlur', { type: 'editorWindowBlur', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3018 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3019 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3020 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3021 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3022 * @method _initEditorEvents
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3023 * @description This method sets up the listeners on the Editors document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3024 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3025 _initEditorEvents: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3026 //Setup Listeners on iFrame
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3027 var doc = this._getDoc(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3028 win = this._getWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3029
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3030 Event.on(doc, 'mouseup', this._handleMouseUp, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3031 Event.on(doc, 'mousedown', this._handleMouseDown, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3032 Event.on(doc, 'click', this._handleClick, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3033 Event.on(doc, 'dblclick', this._handleDoubleClick, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3034 Event.on(doc, 'keypress', this._handleKeyPress, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3035 Event.on(doc, 'keyup', this._handleKeyUp, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3036 Event.on(doc, 'keydown', this._handleKeyDown, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3037 /* TODO -- Everyone but Opera works here..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3038 Event.on(doc, 'paste', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3039 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3040 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3041
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3042 //Focus and blur..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3043 Event.on(win, 'focus', this._handleFocus, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3044 Event.on(win, 'blur', this._handleBlur, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3045 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3046 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3047 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3048 * @method _removeEditorEvents
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3049 * @description This method removes the listeners on the Editors document (for disabling).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3050 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3051 _removeEditorEvents: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3052 //Remove Listeners on iFrame
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3053 var doc = this._getDoc(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3054 win = this._getWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3055
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3056 Event.removeListener(doc, 'mouseup', this._handleMouseUp, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3057 Event.removeListener(doc, 'mousedown', this._handleMouseDown, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3058 Event.removeListener(doc, 'click', this._handleClick, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3059 Event.removeListener(doc, 'dblclick', this._handleDoubleClick, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3060 Event.removeListener(doc, 'keypress', this._handleKeyPress, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3061 Event.removeListener(doc, 'keyup', this._handleKeyUp, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3062 Event.removeListener(doc, 'keydown', this._handleKeyDown, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3063
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3064 //Focus and blur..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3065 Event.removeListener(win, 'focus', this._handleFocus, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3066 Event.removeListener(win, 'blur', this._handleBlur, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3067 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3068 _fixWebkitDivs: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3069 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3070 var divs = this._getDoc().body.getElementsByTagName('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3071 Dom.addClass(divs, 'yui-wk-div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3072 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3073 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3074 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3075 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3076 * @method _initEditor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3077 * @param {Boolean} raw Don't add events.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3078 * @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
3079 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3080 _initEditor: function(raw) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3081 if (this._editorInit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3082 return;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3083 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3084 this._editorInit = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3085 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3086 this._getDoc().body.style.margin = '0';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3087 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3088 if (!this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3089 this._setDesignMode('on');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3090 this._contentTimerCounter = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3091 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3092 if (!this._getDoc().body) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3093 this._contentTimerCounter = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3094 this._editorInit = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3095 this._checkLoaded();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3096 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3097 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3098
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3099 if (!raw) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3100 this.toolbar.on('buttonClick', this._handleToolbarClick, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3101 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3102 if (!this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3103 this._initEditorEvents();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3104 this.toolbar.set('disabled', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3105 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3106
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3107 if (raw) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3108 this.fireEvent('editorContentReloaded', { type: 'editorreloaded', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3109 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3110 this.fireEvent('editorContentLoaded', { type: 'editorLoaded', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3111 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3112 this._fixWebkitDivs();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3113 if (this.get('dompath')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3114 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3115 setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3116 self._writeDomPath.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3117 self._setupResize.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3118 }, 150);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3119 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3120 var br = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3121 for (var i in this.browser) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3122 if (this.browser[i]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3123 br.push(i);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3124 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3125 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3126 if (this.get('ptags')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3127 br.push('ptags');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3128 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3129 Dom.addClass(this._getDoc().body, br.join(' '));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3130 this.nodeChange(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3131 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3132 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3133 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3134 * @method _checkLoaded
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3135 * @param {Boolean} raw Don't add events.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3136 * @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
3137 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3138 _checkLoaded: function(raw) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3139 this._editorInit = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3140 this._contentTimerCounter++;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3141 if (this._contentTimer) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3142 clearTimeout(this._contentTimer);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3143 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3144 if (this._contentTimerCounter > this._contentTimerMax) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3145 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3146 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3147 var init = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3148 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3149 if (this._getDoc() && this._getDoc().body) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3150 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3151 if (this._getDoc().body.readyState == 'complete') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3152 init = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3153 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3154 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3155 if (this._getDoc().body._rteLoaded === true) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3156 init = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3157 }
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 } catch (e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3161 init = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3162 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3163
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3164 if (init === true) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3165 //The onload event has fired, clean up after ourselves and fire the _initEditor method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3166 this._initEditor(raw);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3167 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3168 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3169 this._contentTimer = setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3170 self._checkLoaded.call(self, raw);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3171 }, 20);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3172 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3173 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3174 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3175 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3176 * @method _setInitialContent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3177 * @param {Boolean} raw Don't add events.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3178 * @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
3179 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3180 _setInitialContent: function(raw) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3181
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3182 var value = ((this._textarea) ? this.get('element').value : this.get('element').innerHTML),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3183 doc = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3184
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3185 if (value === '') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3186 value = '<br>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3187 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3188
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3189 var html = Lang.substitute(this.get('html'), {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3190 TITLE: this.STR_TITLE,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3191 CONTENT: this._cleanIncomingHTML(value),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3192 CSS: this.get('css'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3193 HIDDEN_CSS: ((this.get('hiddencss')) ? this.get('hiddencss') : '/* No Hidden CSS */'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3194 EXTRA_CSS: ((this.get('extracss')) ? this.get('extracss') : '/* No Extra CSS */')
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3195 }),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3196 check = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3197
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3198 html = html.replace(/RIGHT_BRACKET/gi, '{');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3199 html = html.replace(/LEFT_BRACKET/gi, '}');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3200
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3201 if (document.compatMode != 'BackCompat') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3202 html = this._docType + "\n" + html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3203 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3204 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3205
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3206 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
3207 //Firefox 1.5 doesn't like setting designMode on an document created with a data url
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3208 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3209 //Adobe AIR Code
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3210 if (this.browser.air) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3211 doc = this._getDoc().implementation.createHTMLDocument();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3212 var origDoc = this._getDoc();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3213 origDoc.open();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3214 origDoc.close();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3215 doc.open();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3216 doc.write(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3217 doc.close();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3218 var node = origDoc.importNode(doc.getElementsByTagName("html")[0], true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3219 origDoc.replaceChild(node, origDoc.getElementsByTagName("html")[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3220 origDoc.body._rteLoaded = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3221 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3222 doc = this._getDoc();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3223 doc.open();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3224 doc.write(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3225 doc.close();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3226 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3227 } catch (e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3228 //Safari will only be here if we are hidden
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3229 check = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3230 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3231 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3232 //This keeps Firefox 2 from writing the iframe to history preserving the back buttons functionality
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3233 this.get('iframe').get('element').src = 'data:text/html;charset=utf-8,' + encodeURIComponent(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3234 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3235 this.get('iframe').setStyle('visibility', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3236 if (check) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3237 this._checkLoaded(raw);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3238 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3239 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3240 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3241 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3242 * @method _setMarkupType
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3243 * @param {String} action The action to take. Possible values are: css, default or semantic
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3244 * @description This method will turn on/off the useCSS execCommand.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3245 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3246 _setMarkupType: function(action) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3247 switch (this.get('markup')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3248 case 'css':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3249 this._setEditorStyle(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3250 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3251 case 'default':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3252 this._setEditorStyle(false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3253 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3254 case 'semantic':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3255 case 'xhtml':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3256 if (this._semantic[action]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3257 this._setEditorStyle(false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3258 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3259 this._setEditorStyle(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3260 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3261 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3262 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3263 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3264 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3265 * Set the editor to use CSS instead of HTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3266 * @param {Booleen} stat True/False
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3267 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3268 _setEditorStyle: function(stat) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3269 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3270 this._getDoc().execCommand('useCSS', false, !stat);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3271 } catch (ex) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3272 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3273 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3274 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3275 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3276 * @method _getSelectedElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3277 * @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
3278 * @return {HTMLElement} The currently selected element.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3279 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3280 _getSelectedElement: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3281 var doc = this._getDoc(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3282 range = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3283 sel = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3284 elm = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3285 check = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3286
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3287 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3288 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
3289 range = this._getRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3290 if (range) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3291 elm = range.item ? range.item(0) : range.parentElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3292 if (this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3293 //TODO
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3294 //WTF.. Why can't I get an element reference here?!??!
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3295 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3296 if (elm === doc.body) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3297 elm = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3298 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3299 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3300 if ((this.currentEvent !== null) && (this.currentEvent.keyCode === 0)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3301 elm = Event.getTarget(this.currentEvent);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3302 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3303 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3304 sel = this._getSelection();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3305 range = this._getRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3306
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3307 if (!sel || !range) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3308 return null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3309 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3310 //TODO
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3311 if (!this._hasSelection() && this.browser.webkit3) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3312 //check = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3313 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3314 if (this.browser.gecko) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3315 //Added in 2.6.0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3316 if (range.startContainer) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3317 if (range.startContainer.nodeType === 3) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3318 elm = range.startContainer.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3319 } else if (range.startContainer.nodeType === 1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3320 elm = range.startContainer;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3321 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3322 //Added in 2.7.0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3323 if (this.currentEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3324 var tar = Event.getTarget(this.currentEvent);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3325 if (!this._isElement(tar, 'html')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3326 if (elm !== tar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3327 elm = tar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3328 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3329 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3330 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3331 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3332 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3333
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3334 if (check) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3335 if (sel.anchorNode && (sel.anchorNode.nodeType == 3)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3336 if (sel.anchorNode.parentNode) { //next check parentNode
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3337 elm = sel.anchorNode.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3338 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3339 if (sel.anchorNode.nextSibling != sel.focusNode.nextSibling) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3340 elm = sel.anchorNode.nextSibling;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3341 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3342 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3343 if (this._isElement(elm, 'br')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3344 elm = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3345 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3346 if (!elm) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3347 elm = range.commonAncestorContainer;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3348 if (!range.collapsed) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3349 if (range.startContainer == range.endContainer) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3350 if (range.startOffset - range.endOffset < 2) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3351 if (range.startContainer.hasChildNodes()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3352 elm = range.startContainer.childNodes[range.startOffset];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3353 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3354 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3355 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3356 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3357 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3358 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3359 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3360
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3361 if (this.currentEvent !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3362 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3363 switch (this.currentEvent.type) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3364 case 'click':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3365 case 'mousedown':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3366 case 'mouseup':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3367 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3368 elm = Event.getTarget(this.currentEvent);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3369 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3370 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3371 default:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3372 //Do nothing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3373 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3374 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3375 } catch (e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3376 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3377 } else if ((this.currentElement && this.currentElement[0]) && (!this.browser.ie)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3378 //TODO is this still needed?
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3379 //elm = this.currentElement[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3380 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3381
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3382
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3383 if (this.browser.opera || this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3384 if (this.currentEvent && !elm) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3385 elm = YAHOO.util.Event.getTarget(this.currentEvent);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3386 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3387 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3388 if (!elm || !elm.tagName) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3389 elm = doc.body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3390 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3391 if (this._isElement(elm, 'html')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3392 //Safari sometimes gives us the HTML node back..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3393 elm = doc.body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3394 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3395 if (this._isElement(elm, 'body')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3396 //make sure that body means this body not the parent..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3397 elm = doc.body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3398 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3399 if (elm && !elm.parentNode) { //Not in document
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3400 elm = doc.body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3401 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3402 if (elm === undefined) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3403 elm = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3404 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3405 return elm;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3406 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3407 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3408 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3409 * @method _getDomPath
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3410 * @description This method will attempt to build the DOM path from the currently selected element.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3411 * @param HTMLElement el The element to start with, if not provided _getSelectedElement is used
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3412 * @return {Array} An array of node references that will create the DOM Path.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3413 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3414 _getDomPath: function(el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3415 if (!el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3416 el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3417 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3418 var domPath = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3419 while (el !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3420 if (el.ownerDocument != this._getDoc()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3421 el = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3422 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3423 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3424 //Check to see if we get el.nodeName and nodeType
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3425 if (el.nodeName && el.nodeType && (el.nodeType == 1)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3426 domPath[domPath.length] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3427 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3428
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3429 if (this._isElement(el, 'body')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3430 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3431 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3432
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3433 el = el.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3434 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3435 if (domPath.length === 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3436 if (this._getDoc() && this._getDoc().body) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3437 domPath[0] = this._getDoc().body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3438 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3439 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3440 return domPath.reverse();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3441 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3442 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3443 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3444 * @method _writeDomPath
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3445 * @description Write the current DOM path out to the dompath container below the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3446 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3447 _writeDomPath: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3448 var path = this._getDomPath(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3449 pathArr = [],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3450 classPath = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3451 pathStr = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3452
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3453 for (var i = 0; i < path.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3454 var tag = path[i].tagName.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3455 if ((tag == 'ol') && (path[i].type)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3456 tag += ':' + path[i].type;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3457 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3458 if (Dom.hasClass(path[i], 'yui-tag')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3459 tag = path[i].getAttribute('tag');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3460 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3461 if ((this.get('markup') == 'semantic') || (this.get('markup') == 'xhtml')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3462 switch (tag) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3463 case 'b': tag = 'strong'; break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3464 case 'i': tag = 'em'; break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3465 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3466 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3467 if (!Dom.hasClass(path[i], 'yui-non')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3468 if (Dom.hasClass(path[i], 'yui-tag')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3469 pathStr = tag;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3470 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3471 classPath = ((path[i].className !== '') ? '.' + path[i].className.replace(/ /g, '.') : '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3472 if ((classPath.indexOf('yui') != -1) || (classPath.toLowerCase().indexOf('apple-style-span') != -1)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3473 classPath = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3474 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3475 pathStr = tag + ((path[i].id) ? '#' + path[i].id : '') + classPath;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3476 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3477 switch (tag) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3478 case 'body':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3479 pathStr = 'body';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3480 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3481 case 'a':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3482 if (path[i].getAttribute('href', 2)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3483 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
3484 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3485 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3486 case 'img':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3487 var h = path[i].height;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3488 var w = path[i].width;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3489 if (path[i].style.height) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3490 h = parseInt(path[i].style.height, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3491 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3492 if (path[i].style.width) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3493 w = parseInt(path[i].style.width, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3494 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3495 pathStr += '(' + w + 'x' + h + ')';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3496 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3497 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3498
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3499 if (pathStr.length > 10) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3500 pathStr = '<span title="' + pathStr + '">' + pathStr.substring(0, 10) + '...' + '</span>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3501 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3502 pathStr = '<span title="' + pathStr + '">' + pathStr + '</span>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3503 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3504 pathArr[pathArr.length] = pathStr;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3505 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3506 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3507 var str = pathArr.join(' ' + this.SEP_DOMPATH + ' ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3508 //Prevent flickering
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3509 if (this.dompath.innerHTML != str) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3510 this.dompath.innerHTML = str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3511 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3512 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3513 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3514 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3515 * @method _fixNodes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3516 * @description Fix href and imgs as well as remove invalid HTML.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3517 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3518 _fixNodes: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3519 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3520 var doc = this._getDoc(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3521 els = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3522
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3523 for (var v in this.invalidHTML) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3524 if (YAHOO.lang.hasOwnProperty(this.invalidHTML, v)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3525 if (v.toLowerCase() != 'span') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3526 var tags = doc.body.getElementsByTagName(v);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3527 if (tags.length) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3528 for (var i = 0; i < tags.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3529 els.push(tags[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3530 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3531 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3532 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3533 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3534 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3535 for (var h = 0; h < els.length; h++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3536 if (els[h].parentNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3537 if (Lang.isObject(this.invalidHTML[els[h].tagName.toLowerCase()]) && this.invalidHTML[els[h].tagName.toLowerCase()].keepContents) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3538 this._swapEl(els[h], 'span', function(el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3539 el.className = 'yui-non';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3540 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3541 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3542 els[h].parentNode.removeChild(els[h]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3543 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3544 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3545 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3546 var imgs = this._getDoc().getElementsByTagName('img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3547 Dom.addClass(imgs, 'yui-img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3548 } catch(e) {}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3549 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3550 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3551 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3552 * @method _isNonEditable
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3553 * @param Event ev The Dom event being checked
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3554 * @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
3555 * 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
3556 * disable and enable the Editor's toolbar based on the noedit state.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3557 * @return Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3558 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3559 _isNonEditable: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3560 if (this.get('allowNoEdit')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3561 var el = Event.getTarget(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3562 if (this._isElement(el, 'html')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3563 el = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3564 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3565 var path = this._getDomPath(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3566 for (var i = (path.length - 1); i > -1; i--) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3567 if (Dom.hasClass(path[i], this.CLASS_NOEDIT)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3568 //if (this.toolbar.get('disabled') === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3569 // this.toolbar.set('disabled', true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3570 //}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3571 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3572 this._getDoc().execCommand('enableObjectResizing', false, 'false');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3573 } catch (e) {}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3574 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3575 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3576 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3577 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3578 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3579 //if (this.toolbar.get('disabled') === true) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3580 //Should only happen once..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3581 //this.toolbar.set('disabled', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3582 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3583 this._getDoc().execCommand('enableObjectResizing', false, 'true');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3584 } catch (e2) {}
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 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3588 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3589 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3590 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3591 * @method _setCurrentEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3592 * @param {Event} ev The event to cache
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3593 * @description Sets the current event property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3594 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3595 _setCurrentEvent: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3596 this.currentEvent = ev;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3597 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3598 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3599 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3600 * @method _handleClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3601 * @param {Event} ev The event we are working on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3602 * @description Handles all click events inside the iFrame document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3603 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3604 _handleClick: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3605 var ret = this.fireEvent('beforeEditorClick', { type: 'beforeEditorClick', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3606 if (ret === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3607 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3608 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3609 if (this._isNonEditable(ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3610 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3611 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3612 this._setCurrentEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3613 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3614 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3615 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3616 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3617 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3618 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3619 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3620 var tar =Event.getTarget(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3621 if (this._isElement(tar, 'a') || this._isElement(tar.parentNode, 'a')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3622 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3623 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3624 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3625 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3626 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3627 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3628 this.fireEvent('editorClick', { type: 'editorClick', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3629 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3630 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3631 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3632 * @method _handleMouseUp
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3633 * @param {Event} ev The event we are working on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3634 * @description Handles all mouseup events inside the iFrame document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3635 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3636 _handleMouseUp: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3637 var ret = this.fireEvent('beforeEditorMouseUp', { type: 'beforeEditorMouseUp', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3638 if (ret === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3639 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3640 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3641 if (this._isNonEditable(ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3642 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3643 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3644 //Don't set current event for mouseup.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3645 //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
3646 //this._setCurrentEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3647 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3648 if (this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3649 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3650 * @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
3651 * @browser Opera
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3652 * @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
3653 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3654 var sel = Event.getTarget(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3655 if (this._isElement(sel, 'img')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3656 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3657 if (this.operaEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3658 clearTimeout(this.operaEvent);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3659 this.operaEvent = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3660 this._handleDoubleClick(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3661 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3662 this.operaEvent = window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3663 self.operaEvent = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3664 }, 700);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3665 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3666 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3667 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3668 //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
3669 if (this.browser.webkit || this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3670 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3671 Event.stopEvent(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 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3675 this.fireEvent('editorMouseUp', { type: 'editorMouseUp', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3676 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3677 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3678 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3679 * @method _handleMouseDown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3680 * @param {Event} ev The event we are working on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3681 * @description Handles all mousedown events inside the iFrame document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3682 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3683 _handleMouseDown: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3684 var ret = this.fireEvent('beforeEditorMouseDown', { type: 'beforeEditorMouseDown', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3685 if (ret === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3686 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3687 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3688 if (this._isNonEditable(ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3689 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3690 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3691 this._setCurrentEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3692 var sel = Event.getTarget(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3693 if (this.browser.webkit && this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3694 var _sel = this._getSelection();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3695 if (!this.browser.webkit3) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3696 _sel.collapse(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3697 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3698 _sel.collapseToStart();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3699 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3700 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3701 if (this.browser.webkit && this._lastImage) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3702 Dom.removeClass(this._lastImage, 'selected');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3703 this._lastImage = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3704 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3705 if (this._isElement(sel, 'img') || this._isElement(sel, 'a')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3706 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3707 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3708 if (this._isElement(sel, 'img')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3709 Dom.addClass(sel, 'selected');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3710 this._lastImage = sel;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3711 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3712 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3713 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3714 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3715 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3716 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3717 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3718 this.fireEvent('editorMouseDown', { type: 'editorMouseDown', 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 _handleDoubleClick
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 doubleclick events inside the iFrame document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3725 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3726 _handleDoubleClick: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3727 var ret = this.fireEvent('beforeEditorDoubleClick', { type: 'beforeEditorDoubleClick', 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._isElement(sel, 'img')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3737 this.currentElement[0] = sel;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3738 this.toolbar.fireEvent('insertimageClick', { type: 'insertimageClick', target: this.toolbar });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3739 this.fireEvent('afterExecCommand', { type: 'afterExecCommand', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3740 } else if (this._hasParent(sel, 'a')) { //Handle elements inside an a
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3741 this.currentElement[0] = this._hasParent(sel, 'a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3742 this.toolbar.fireEvent('createlinkClick', { type: 'createlinkClick', target: this.toolbar });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3743 this.fireEvent('afterExecCommand', { type: 'afterExecCommand', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3744 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3745 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3746 this.fireEvent('editorDoubleClick', { type: 'editorDoubleClick', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3747 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3748 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3749 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3750 * @method _handleKeyUp
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3751 * @param {Event} ev The event we are working on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3752 * @description Handles all keyup events inside the iFrame document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3753 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3754 _handleKeyUp: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3755 var ret = this.fireEvent('beforeEditorKeyUp', { type: 'beforeEditorKeyUp', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3756 if (ret === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3757 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3758 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3759 if (this._isNonEditable(ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3760 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3761 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3762 this._storeUndo();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3763 this._setCurrentEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3764 switch (ev.keyCode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3765 case this._keyMap.SELECT_ALL.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3766 if (this._checkKey(this._keyMap.SELECT_ALL, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3767 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3768 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3769 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3770 case 32: //Space Bar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3771 case 35: //End
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3772 case 36: //Home
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3773 case 37: //Left Arrow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3774 case 38: //Up Arrow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3775 case 39: //Right Arrow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3776 case 40: //Down Arrow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3777 case 46: //Forward Delete
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3778 case 8: //Delete
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3779 case this._keyMap.CLOSE_WINDOW.key: //W key if window is open
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3780 if ((ev.keyCode == this._keyMap.CLOSE_WINDOW.key) && this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3781 if (this._checkKey(this._keyMap.CLOSE_WINDOW, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3782 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3783 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3784 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3785 if (!this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3786 if (this._nodeChangeTimer) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3787 clearTimeout(this._nodeChangeTimer);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3788 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3789 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3790 this._nodeChangeTimer = setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3791 self._nodeChangeTimer = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3792 self.nodeChange.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3793 }, 100);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3794 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3795 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3796 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3797 this.editorDirty = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3798 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3799 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3800 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3801 this.fireEvent('editorKeyUp', { type: 'editorKeyUp', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3802 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3803 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3804 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3805 * @method _handleKeyPress
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3806 * @param {Event} ev The event we are working on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3807 * @description Handles all keypress events inside the iFrame document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3808 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3809 _handleKeyPress: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3810 var ret = this.fireEvent('beforeEditorKeyPress', { type: 'beforeEditorKeyPress', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3811 if (ret === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3812 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3813 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3814
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3815 if (this.get('allowNoEdit')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3816 //if (ev && ev.keyCode && ((ev.keyCode == 46) || ev.keyCode == 63272)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3817 if (ev && ev.keyCode && (ev.keyCode == 63272)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3818 //Forward delete key
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3819 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3820 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3821 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3822 if (this._isNonEditable(ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3823 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3824 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3825 this._setCurrentEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3826 this._storeUndo();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3827 if (this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3828 if (ev.keyCode === 13) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3829 var tar = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3830 if (!this._isElement(tar, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3831 this.execCommand('inserthtml', '<br>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3832 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3833 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3834 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3835 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3836 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3837 if (!this.browser.webkit3) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3838 if (ev.keyCode && (ev.keyCode == 122) && (ev.metaKey)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3839 //This is CMD + z (for undo)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3840 if (this._hasParent(this._getSelectedElement(), 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3841 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3842 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3843 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3844 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3845 this._listFix(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3846 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3847 this._fixListDupIds();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3848 this.fireEvent('editorKeyPress', { type: 'editorKeyPress', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3849 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3850 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3851 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3852 * @method _handleKeyDown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3853 * @param {Event} ev The event we are working on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3854 * @description Handles all keydown events inside the iFrame document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3855 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3856 _handleKeyDown: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3857 var ret = this.fireEvent('beforeEditorKeyDown', { type: 'beforeEditorKeyDown', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3858 if (ret === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3859 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3860 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3861 var tar = null, _range = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3862 if (this._isNonEditable(ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3863 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3864 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3865 this._setCurrentEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3866 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3867 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3868 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3869 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3870 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3871 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3872 var doExec = false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3873 action = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3874 value = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3875 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3876
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3877
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3878 switch (ev.keyCode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3879 case this._keyMap.FOCUS_TOOLBAR.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3880 if (this._checkKey(this._keyMap.FOCUS_TOOLBAR, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3881 var h = this.toolbar.getElementsByTagName('h2')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3882 if (h && h.firstChild) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3883 h.firstChild.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3884 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3885 } else if (this._checkKey(this._keyMap.FOCUS_AFTER, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3886 //Focus After Element - Esc
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3887 this.afterElement.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3888 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3889 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3890 doExec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3891 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3892 //case 76: //L
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3893 case this._keyMap.CREATE_LINK.key: //L
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3894 if (this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3895 if (this._checkKey(this._keyMap.CREATE_LINK, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3896 var makeLink = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3897 if (this.get('limitCommands')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3898 if (!this.toolbar.getButtonByValue('createlink')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3899 makeLink = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3900 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3901 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3902 if (makeLink) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3903 this.execCommand('createlink', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3904 this.toolbar.fireEvent('createlinkClick', { type: 'createlinkClick', target: this.toolbar });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3905 this.fireEvent('afterExecCommand', { type: 'afterExecCommand', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3906 doExec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3907 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3908 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3909 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3910 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3911 //case 90: //Z
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3912 case this._keyMap.UNDO.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3913 case this._keyMap.REDO.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3914 if (this._checkKey(this._keyMap.REDO, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3915 action = 'redo';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3916 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3917 } else if (this._checkKey(this._keyMap.UNDO, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3918 action = 'undo';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3919 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3920 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3921 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3922 //case 66: //B
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3923 case this._keyMap.BOLD.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3924 if (this._checkKey(this._keyMap.BOLD, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3925 action = 'bold';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3926 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3927 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3928 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3929 case this._keyMap.FONT_SIZE_UP.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3930 case this._keyMap.FONT_SIZE_DOWN.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3931 var uk = false, dk = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3932 if (this._checkKey(this._keyMap.FONT_SIZE_UP, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3933 uk = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3934 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3935 if (this._checkKey(this._keyMap.FONT_SIZE_DOWN, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3936 dk = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3937 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3938 if (uk || dk) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3939 var fs_button = this.toolbar.getButtonByValue('fontsize'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3940 label = parseInt(fs_button.get('label'), 10),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3941 newValue = (label + 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3942
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3943 if (dk) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3944 newValue = (label - 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3945 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3946
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3947 action = 'fontsize';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3948 value = newValue + 'px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3949 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3950 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3951 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3952 //case 73: //I
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3953 case this._keyMap.ITALIC.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3954 if (this._checkKey(this._keyMap.ITALIC, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3955 action = 'italic';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3956 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3957 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3958 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3959 //case 85: //U
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3960 case this._keyMap.UNDERLINE.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3961 if (this._checkKey(this._keyMap.UNDERLINE, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3962 action = 'underline';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3963 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3964 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3965 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3966 case 9:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3967 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3968 //Insert a tab in Internet Explorer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3969 _range = this._getRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3970 tar = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3971 if (!this._isElement(tar, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3972 if (_range) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3973 _range.pasteHTML('&nbsp;&nbsp;&nbsp;&nbsp;');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3974 _range.collapse(false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3975 _range.select();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3976 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3977 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3978 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3979 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3980 //Firefox 3 code
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3981 if (this.browser.gecko > 1.8) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3982 tar = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3983 if (this._isElement(tar, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3984 if (ev.shiftKey) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3985 this._getDoc().execCommand('outdent', null, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3986 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3987 this._getDoc().execCommand('indent', null, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3988 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3989
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3990 } else if (!this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3991 this.execCommand('inserthtml', '&nbsp;&nbsp;&nbsp;&nbsp;');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3992 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3993 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3994 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3995 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3996 case 13:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3997 var p = null, i = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3998 if (this.get('ptags') && !ev.shiftKey) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3999 if (this.browser.gecko) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4000 tar = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4001 if (!this._hasParent(tar, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4002 if (this._hasParent(tar, 'p')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4003 p = this._getDoc().createElement('p');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4004 p.innerHTML = '&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4005 Dom.insertAfter(p, tar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4006 this._selectNode(p.firstChild);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4007 } else if (this._isElement(tar, 'body')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4008 this.execCommand('insertparagraph', null);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4009 var ps = this._getDoc().body.getElementsByTagName('p');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4010 for (i = 0; i < ps.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4011 if (ps[i].getAttribute('_moz_dirty') !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4012 p = this._getDoc().createElement('p');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4013 p.innerHTML = '&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4014 Dom.insertAfter(p, ps[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4015 this._selectNode(p.firstChild);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4016 ps[i].removeAttribute('_moz_dirty');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4017 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4018 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4019 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4020 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4021 action = 'insertparagraph';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4022 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4023 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4024 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4025 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4026 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4027 tar = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4028 if (!this._hasParent(tar, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4029 this.execCommand('insertparagraph', null);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4030 var divs = this._getDoc().body.getElementsByTagName('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4031 for (i = 0; i < divs.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4032 if (!Dom.hasClass(divs[i], 'yui-wk-div')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4033 Dom.addClass(divs[i], 'yui-wk-p');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4034 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4035 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4036 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4037 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4038 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4039 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4040 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4041 tar = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4042 if (!this._hasParent(tar, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4043 if (this.browser.webkit4) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4044 this.execCommand('insertlinebreak');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4045 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4046 this.execCommand('inserthtml', '<var id="yui-br"></var>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4047 var holder = this._getDoc().getElementById('yui-br'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4048 br = this._getDoc().createElement('br'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4049 caret = this._getDoc().createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4050
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4051 holder.parentNode.replaceChild(br, holder);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4052 caret.className = 'yui-non';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4053 caret.innerHTML = '&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4054 Dom.insertAfter(caret, br);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4055 this._selectNode(caret);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4056 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4057 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4058 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4059 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4060 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4061 //Insert a <br> instead of a <p></p> in Internet Explorer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4062 _range = this._getRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4063 tar = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4064 if (!this._isElement(tar, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4065 if (_range) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4066 _range.pasteHTML('<br>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4067 _range.collapse(false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4068 _range.select();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4069 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4070 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4071 }
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 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4075 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4076 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4077 this._listFix(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4078 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4079 if (doExec && action) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4080 this.execCommand(action, value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4081 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4082 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4083 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4084 this._storeUndo();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4085 this.fireEvent('editorKeyDown', { type: 'editorKeyDown', target: this, ev: ev });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4086 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4087 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4088 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4089 * @property _fixListRunning
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4090 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4091 * @description Keeps more than one _fixListDupIds from running at the same time.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4092 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4093 _fixListRunning: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4094 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4095 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4096 * @method _fixListDupIds
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4097 * @description Some browsers will duplicate the id of an LI when created in designMode.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4098 * This method will fix the duplicate id issue. However it will only preserve the first element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4099 * in the document list with the unique id.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4100 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4101 _fixListDupIds: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4102 if (this._fixListRunning) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4103 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4104 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4105 if (this._getDoc()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4106 this._fixListRunning = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4107 var lis = this._getDoc().body.getElementsByTagName('li'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4108 i = 0, ids = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4109 for (i = 0; i < lis.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4110 if (lis[i].id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4111 if (ids[lis[i].id]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4112 lis[i].id = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4113 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4114 ids[lis[i].id] = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4115 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4116 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4117 this._fixListRunning = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4118 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4119 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4120 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4121 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4122 * @method _listFix
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4123 * @param {Event} ev The event we are working on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4124 * @description Handles the Enter key, Tab Key and Shift + Tab keys for List Items.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4125 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4126 _listFix: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4127 var testLi = null, par = null, preContent = false, range = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4128 //Enter Key
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4129 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4130 if (ev.keyCode && (ev.keyCode == 13)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4131 if (this._hasParent(this._getSelectedElement(), 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4132 var tar = this._hasParent(this._getSelectedElement(), 'li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4133 if (tar.previousSibling) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4134 if (tar.firstChild && (tar.firstChild.length == 1)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4135 this._selectNode(tar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4136 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4137 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4138 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4139 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4140 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4141 //Shift + Tab Key
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4142 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
4143 testLi = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4144 if (this._hasParent(testLi, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4145 testLi = this._hasParent(testLi, 'li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4146 if (this._hasParent(testLi, 'ul') || this._hasParent(testLi, 'ol')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4147 par = this._hasParent(testLi, 'ul');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4148 if (!par) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4149 par = this._hasParent(testLi, 'ol');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4150 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4151 if (this._isElement(par.previousSibling, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4152 par.removeChild(testLi);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4153 par.parentNode.insertBefore(testLi, par.nextSibling);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4154 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4155 range = this._getDoc().body.createTextRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4156 range.moveToElementText(testLi);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4157 range.collapse(false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4158 range.select();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4159 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4160 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4161 this._selectNode(testLi.firstChild);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4162 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4163 Event.stopEvent(ev);
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 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4167 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4168 //Tab Key
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4169 if (ev.keyCode && ((ev.keyCode == 9) && (!ev.shiftKey))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4170 var preLi = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4171 if (this._hasParent(preLi, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4172 preContent = this._hasParent(preLi, 'li').innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4173 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4174 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4175 this._getDoc().execCommand('inserttext', false, '\t');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4176 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4177 testLi = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4178 if (this._hasParent(testLi, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4179 par = this._hasParent(testLi, 'li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4180 var newUl = this._getDoc().createElement(par.parentNode.tagName.toLowerCase());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4181 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4182 var span = Dom.getElementsByClassName('Apple-tab-span', 'span', par);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4183 //Remove the span element that Safari puts in
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4184 if (span[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4185 par.removeChild(span[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4186 par.innerHTML = Lang.trim(par.innerHTML);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4187 //Put the HTML from the LI into this new LI
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4188 if (preContent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4189 par.innerHTML = '<span class="yui-non">' + preContent + '</span>&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4190 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4191 par.innerHTML = '<span class="yui-non">&nbsp;</span>&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4192 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4193 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4194 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4195 if (preContent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4196 par.innerHTML = preContent + '&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4197 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4198 par.innerHTML = '&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4199 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4200 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4201
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4202 par.parentNode.replaceChild(newUl, par);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4203 newUl.appendChild(par);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4204 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4205 this._getSelection().setBaseAndExtent(par.firstChild, 1, par.firstChild, par.firstChild.innerText.length);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4206 if (!this.browser.webkit3) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4207 par.parentNode.parentNode.style.display = 'list-item';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4208 setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4209 par.parentNode.parentNode.style.display = 'block';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4210 }, 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4211 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4212 } else if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4213 range = this._getDoc().body.createTextRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4214 range.moveToElementText(par);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4215 range.collapse(false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4216 range.select();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4217 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4218 this._selectNode(par);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4219 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4220 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4221 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4222 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4223 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4224 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4225 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4226 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4227 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4228 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4229 * @method nodeChange
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4230 * @param {Boolean} force Optional paramenter to skip the threshold counter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4231 * @description Handles setting up the toolbar buttons, getting the Dom path, fixing nodes.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4232 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4233 nodeChange: function(force) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4234 var NCself = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4235 this._storeUndo();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4236 if (this.get('nodeChangeDelay')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4237 this._nodeChangeDelayTimer = window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4238 NCself._nodeChangeDelayTimer = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4239 NCself._nodeChange.apply(NCself, arguments);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4240 }, 0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4241 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4242 this._nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4243 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4244 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4245 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4246 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4247 * @method _nodeChange
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4248 * @param {Boolean} force Optional paramenter to skip the threshold counter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4249 * @description Fired from nodeChange in a setTimeout.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4250 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4251 _nodeChange: function(force) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4252 var threshold = parseInt(this.get('nodeChangeThreshold'), 10),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4253 thisNodeChange = Math.round(new Date().getTime() / 1000),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4254 self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4255
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4256 if (force === true) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4257 this._lastNodeChange = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4258 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4259
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4260 if ((this._lastNodeChange + threshold) < thisNodeChange) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4261 if (this._fixNodesTimer === null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4262 this._fixNodesTimer = window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4263 self._fixNodes.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4264 self._fixNodesTimer = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4265 }, 0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4266 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4267 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4268 this._lastNodeChange = thisNodeChange;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4269 if (this.currentEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4270 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4271 this._lastNodeChangeEvent = this.currentEvent.type;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4272 } catch (e) {}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4273 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4274
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4275 var beforeNodeChange = this.fireEvent('beforeNodeChange', { type: 'beforeNodeChange', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4276 if (beforeNodeChange === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4277 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4278 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4279 if (this.get('dompath')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4280 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4281 self._writeDomPath.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4282 }, 0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4283 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4284 //Check to see if we are disabled before continuing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4285 if (!this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4286 if (this.STOP_NODE_CHANGE) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4287 //Reset this var for next action
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4288 this.STOP_NODE_CHANGE = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4289 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4290 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4291 var sel = this._getSelection(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4292 range = this._getRange(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4293 el = this._getSelectedElement(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4294 fn_button = this.toolbar.getButtonByValue('fontname'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4295 fs_button = this.toolbar.getButtonByValue('fontsize'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4296 undo_button = this.toolbar.getButtonByValue('undo'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4297 redo_button = this.toolbar.getButtonByValue('redo');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4298
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4299 //Handle updating the toolbar with active buttons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4300 var _ex = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4301 if (this._lastButton) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4302 _ex[this._lastButton.id] = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4303 //this._lastButton = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4304 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4305 if (!this._isElement(el, 'body')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4306 if (fn_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4307 _ex[fn_button.get('id')] = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4308 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4309 if (fs_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4310 _ex[fs_button.get('id')] = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4311 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4312 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4313 if (redo_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4314 delete _ex[redo_button.get('id')];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4315 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4316 this.toolbar.resetAllButtons(_ex);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4317
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4318 //Handle disabled buttons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4319 for (var d = 0; d < this._disabled.length; d++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4320 var _button = this.toolbar.getButtonByValue(this._disabled[d]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4321 if (_button && _button.get) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4322 if (this._lastButton && (_button.get('id') === this._lastButton.id)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4323 //Skip
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4324 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4325 if (!this._hasSelection() && !this.get('insert')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4326 switch (this._disabled[d]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4327 case 'fontname':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4328 case 'fontsize':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4329 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4330 default:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4331 //No Selection - disable
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4332 this.toolbar.disableButton(_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4333 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4334 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4335 if (!this._alwaysDisabled[this._disabled[d]]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4336 this.toolbar.enableButton(_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4337 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4338 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4339 if (!this._alwaysEnabled[this._disabled[d]]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4340 this.toolbar.deselectButton(_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4341 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4342 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4343 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4344 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4345 var path = this._getDomPath();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4346 var tag = null, cmd = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4347 for (var i = 0; i < path.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4348 tag = path[i].tagName.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4349 if (path[i].getAttribute('tag')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4350 tag = path[i].getAttribute('tag').toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4351 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4352 cmd = this._tag2cmd[tag];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4353 if (cmd === undefined) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4354 cmd = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4355 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4356 if (!Lang.isArray(cmd)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4357 cmd = [cmd];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4358 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4359
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4360 //Bold and Italic styles
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4361 if (path[i].style.fontWeight.toLowerCase() == 'bold') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4362 cmd[cmd.length] = 'bold';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4363 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4364 if (path[i].style.fontStyle.toLowerCase() == 'italic') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4365 cmd[cmd.length] = 'italic';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4366 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4367 if (path[i].style.textDecoration.toLowerCase() == 'underline') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4368 cmd[cmd.length] = 'underline';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4369 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4370 if (path[i].style.textDecoration.toLowerCase() == 'line-through') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4371 cmd[cmd.length] = 'strikethrough';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4372 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4373 if (cmd.length > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4374 for (var j = 0; j < cmd.length; j++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4375 this.toolbar.selectButton(cmd[j]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4376 this.toolbar.enableButton(cmd[j]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4377 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4378 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4379 //Handle Alignment
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4380 switch (path[i].style.textAlign.toLowerCase()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4381 case 'left':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4382 case 'right':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4383 case 'center':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4384 case 'justify':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4385 var alignType = path[i].style.textAlign.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4386 if (path[i].style.textAlign.toLowerCase() == 'justify') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4387 alignType = 'full';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4388 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4389 this.toolbar.selectButton('justify' + alignType);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4390 this.toolbar.enableButton('justify' + alignType);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4391 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4392 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4393 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4394 //After for loop
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4395
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4396 //Reset Font Family and Size to the inital configs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4397 if (fn_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4398 var family = fn_button._configs.label._initialConfig.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4399 fn_button.set('label', '<span class="yui-toolbar-fontname-' + this._cleanClassName(family) + '">' + family + '</span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4400 this._updateMenuChecked('fontname', family);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4401 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4402
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4403 if (fs_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4404 fs_button.set('label', fs_button._configs.label._initialConfig.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4405 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4406
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4407 var hd_button = this.toolbar.getButtonByValue('heading');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4408 if (hd_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4409 hd_button.set('label', hd_button._configs.label._initialConfig.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4410 this._updateMenuChecked('heading', 'none');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4411 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4412 var img_button = this.toolbar.getButtonByValue('insertimage');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4413 if (img_button && this.currentWindow && (this.currentWindow.name == 'insertimage')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4414 this.toolbar.disableButton(img_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4415 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4416 if (this._lastButton && this._lastButton.isSelected) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4417 this.toolbar.deselectButton(this._lastButton.id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4418 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4419 this._undoNodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4420 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4421 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4422
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4423 this.fireEvent('afterNodeChange', { type: 'afterNodeChange', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4424 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4425 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4426 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4427 * @method _updateMenuChecked
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4428 * @param {Object} button The command identifier of the button you want to check
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4429 * @param {String} value The value of the menu item you want to check
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4430 * @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
4431 * @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
4432 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4433 _updateMenuChecked: function(button, value, tbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4434 if (!tbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4435 tbar = this.toolbar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4436 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4437 var _button = tbar.getButtonByValue(button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4438 _button.checkValue(value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4439 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4440 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4441 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4442 * @method _handleToolbarClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4443 * @param {Event} ev The event that triggered the button click
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4444 * @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
4445 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4446 _handleToolbarClick: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4447 var value = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4448 var str = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4449 var cmd = ev.button.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4450 if (ev.button.menucmd) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4451 value = cmd;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4452 cmd = ev.button.menucmd;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4453 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4454 this._lastButton = ev.button;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4455 if (this.STOP_EXEC_COMMAND) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4456 this.STOP_EXEC_COMMAND = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4457 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4458 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4459 this.execCommand(cmd, value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4460 if (!this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4461 var Fself = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4462 setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4463 Fself.focus.call(Fself);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4464 }, 5);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4465 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4466 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4467 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4468 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4469 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4470 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4471 * @method _setupAfterElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4472 * @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
4473 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4474 _setupAfterElement: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4475 if (!this.beforeElement) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4476 this.beforeElement = document.createElement('h2');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4477 this.beforeElement.className = 'yui-editor-skipheader';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4478 this.beforeElement.tabIndex = '-1';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4479 this.beforeElement.innerHTML = this.STR_BEFORE_EDITOR;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4480 this.get('element_cont').get('firstChild').insertBefore(this.beforeElement, this.toolbar.get('nextSibling'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4481 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4482 if (!this.afterElement) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4483 this.afterElement = document.createElement('h2');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4484 this.afterElement.className = 'yui-editor-skipheader';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4485 this.afterElement.tabIndex = '-1';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4486 this.afterElement.innerHTML = this.STR_LEAVE_EDITOR;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4487 this.get('element_cont').get('firstChild').appendChild(this.afterElement);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4488 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4489 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4490 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4491 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4492 * @method _disableEditor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4493 * @param {Boolean} disabled Pass true to disable, false to enable
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4494 * @description Creates a mask to place over the Editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4495 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4496 _disableEditor: function(disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4497 var iframe, par, html, height;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4498 if (!this.get('disabled_iframe')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4499 iframe = this._createIframe();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4500 iframe.set('id', 'disabled_' + this.get('iframe').get('id'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4501 iframe.setStyle('height', '100%');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4502 iframe.setStyle('display', 'none');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4503 iframe.setStyle('visibility', 'visible');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4504 this.set('disabled_iframe', iframe);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4505 par = this.get('iframe').get('parentNode');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4506 par.appendChild(iframe.get('element'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4507 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4508 if (!iframe) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4509 iframe = this.get('disabled_iframe');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4510 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4511 if (disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4512 this._orgIframe = this.get('iframe');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4513
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4514 if (this.toolbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4515 this.toolbar.set('disabled', true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4516 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4517
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4518 html = this.getEditorHTML();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4519 height = this.get('iframe').get('offsetHeight');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4520 iframe.setStyle('visibility', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4521 iframe.setStyle('position', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4522 iframe.setStyle('top', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4523 iframe.setStyle('left', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4524 this._orgIframe.setStyle('visibility', 'hidden');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4525 this._orgIframe.setStyle('position', 'absolute');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4526 this._orgIframe.setStyle('top', '-99999px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4527 this._orgIframe.setStyle('left', '-99999px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4528 this.set('iframe', iframe);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4529 this._setInitialContent(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4530
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4531 if (!this._mask) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4532 this._mask = document.createElement('DIV');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4533 Dom.addClass(this._mask, 'yui-editor-masked');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4534 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4535 this._mask.style.height = height + 'px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4536 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4537 this.get('iframe').get('parentNode').appendChild(this._mask);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4538 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4539 this.on('editorContentReloaded', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4540 this._getDoc().body._rteLoaded = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4541 this.setEditorHTML(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4542 iframe.setStyle('display', 'block');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4543 this.unsubscribeAll('editorContentReloaded');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4544 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4545 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4546 if (this._mask) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4547 this._mask.parentNode.removeChild(this._mask);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4548 this._mask = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4549 if (this.toolbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4550 this.toolbar.set('disabled', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4551 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4552 iframe.setStyle('visibility', 'hidden');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4553 iframe.setStyle('position', 'absolute');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4554 iframe.setStyle('top', '-99999px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4555 iframe.setStyle('left', '-99999px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4556 this._orgIframe.setStyle('visibility', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4557 this._orgIframe.setStyle('position', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4558 this._orgIframe.setStyle('top', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4559 this._orgIframe.setStyle('left', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4560 this.set('iframe', this._orgIframe);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4561
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4562 this.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4563 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4564 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4565 self.nodeChange.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4566 }, 100);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4567 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4568 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4569 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4570 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4571 * @property SEP_DOMPATH
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4572 * @description The value to place in between the Dom path items
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4573 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4574 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4575 SEP_DOMPATH: '<',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4576 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4577 * @property STR_LEAVE_EDITOR
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4578 * @description The accessibility string for the element after the iFrame
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4579 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4580 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4581 STR_LEAVE_EDITOR: 'You have left the Rich Text Editor.',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4582 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4583 * @property STR_BEFORE_EDITOR
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4584 * @description The accessibility string for the element before the iFrame
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4585 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4586 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4587 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
4588 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4589 * @property STR_TITLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4590 * @description The Title of the HTML document that is created in the iFrame
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4591 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4592 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4593 STR_TITLE: 'Rich Text Area.',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4594 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4595 * @property STR_IMAGE_HERE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4596 * @description The text to place in the URL textbox when using the blankimage.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4597 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4598 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4599 STR_IMAGE_HERE: 'Image URL Here',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4600 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4601 * @property STR_IMAGE_URL
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4602 * @description The label string for Image URL
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4603 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4604 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4605 STR_IMAGE_URL: 'Image URL',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4606 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4607 * @property STR_LINK_URL
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4608 * @description The label string for the Link URL.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4609 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4610 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4611 STR_LINK_URL: 'Link URL',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4612 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4613 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4614 * @property STOP_EXEC_COMMAND
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4615 * @description Set to true when you want the default execCommand function to not process anything
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4616 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4617 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4618 STOP_EXEC_COMMAND: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4619 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4620 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4621 * @property STOP_NODE_CHANGE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4622 * @description Set to true when you want the default nodeChange function to not process anything
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4623 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4624 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4625 STOP_NODE_CHANGE: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4626 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4627 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4628 * @property CLASS_NOEDIT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4629 * @description CSS class applied to elements that are not editable.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4630 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4631 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4632 CLASS_NOEDIT: 'yui-noedit',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4633 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4634 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4635 * @property CLASS_CONTAINER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4636 * @description Default CSS class to apply to the editors container element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4637 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4638 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4639 CLASS_CONTAINER: 'yui-editor-container',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4640 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4641 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4642 * @property CLASS_EDITABLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4643 * @description Default CSS class to apply to the editors iframe element
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 CLASS_EDITABLE: 'yui-editor-editable',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4647 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4648 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4649 * @property CLASS_EDITABLE_CONT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4650 * @description Default CSS class to apply to the editors iframe's parent element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4651 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4652 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4653 CLASS_EDITABLE_CONT: 'yui-editor-editable-container',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4654 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4655 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4656 * @property CLASS_PREFIX
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4657 * @description Default prefix for dynamically created class names
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4658 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4659 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4660 CLASS_PREFIX: 'yui-editor',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4661 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4662 * @property browser
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4663 * @description Standard browser detection
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4664 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4665 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4666 browser: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4667 var br = YAHOO.env.ua;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4668 //Check for webkit3
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4669 if (br.webkit >= 420) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4670 br.webkit3 = br.webkit;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4671 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4672 br.webkit3 = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4673 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4674 if (br.webkit >= 530) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4675 br.webkit4 = br.webkit;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4676 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4677 br.webkit4 = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4678 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4679 br.mac = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4680 //Check for Mac
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4681 if (navigator.userAgent.indexOf('Macintosh') !== -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4682 br.mac = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4683 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4684
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4685 return br;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4686 }(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4687 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4688 * @method init
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4689 * @description The Editor class' initialization method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4690 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4691 init: function(p_oElement, p_oAttributes) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4692
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4693 if (!this._defaultToolbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4694 this._defaultToolbar = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4695 collapse: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4696 titlebar: 'Text Editing Tools',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4697 draggable: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4698 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4699 { group: 'fontstyle', label: 'Font Name and Size',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4700 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4701 { type: 'select', label: 'Arial', value: 'fontname', disabled: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4702 menu: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4703 { text: 'Arial', checked: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4704 { text: 'Arial Black' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4705 { text: 'Comic Sans MS' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4706 { text: 'Courier New' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4707 { text: 'Lucida Console' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4708 { text: 'Tahoma' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4709 { text: 'Times New Roman' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4710 { text: 'Trebuchet MS' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4711 { text: 'Verdana' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4712 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4713 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4714 { type: 'spin', label: '13', value: 'fontsize', range: [ 9, 75 ], disabled: true }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4715 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4716 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4717 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4718 { group: 'textstyle', label: 'Font Style',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4719 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4720 { type: 'push', label: 'Bold CTRL + SHIFT + B', value: 'bold' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4721 { type: 'push', label: 'Italic CTRL + SHIFT + I', value: 'italic' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4722 { type: 'push', label: 'Underline CTRL + SHIFT + U', value: 'underline' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4723 { type: 'push', label: 'Strike Through', value: 'strikethrough' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4724 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4725 { type: 'color', label: 'Font Color', value: 'forecolor', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4726 { type: 'color', label: 'Background Color', value: 'backcolor', disabled: true }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4727
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4728 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4729 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4730 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4731 { group: 'indentlist', label: 'Lists',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4732 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4733 { type: 'push', label: 'Create an Unordered List', value: 'insertunorderedlist' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4734 { type: 'push', label: 'Create an Ordered List', value: 'insertorderedlist' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4735 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4736 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4737 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4738 { group: 'insertitem', label: 'Insert Item',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4739 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4740 { type: 'push', label: 'HTML Link CTRL + SHIFT + L', value: 'createlink', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4741 { type: 'push', label: 'Insert Image', value: 'insertimage' }
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 ]
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
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4748 YAHOO.widget.SimpleEditor.superclass.init.call(this, p_oElement, p_oAttributes);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4749 YAHOO.widget.EditorInfo._instances[this.get('id')] = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4750
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4751
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4752 this.currentElement = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4753 this.on('contentReady', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4754 this.DOMReady = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4755 this.fireQueue();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4756 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4757
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4758 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4759 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4760 * @method initAttributes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4761 * @description Initializes all of the configuration attributes used to create
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4762 * the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4763 * @param {Object} attr Object literal specifying a set of
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4764 * configuration attributes used to create the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4765 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4766 initAttributes: function(attr) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4767 YAHOO.widget.SimpleEditor.superclass.initAttributes.call(this, attr);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4768 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4769
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4770 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4771 * @config setDesignMode
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4772 * @description Should the Editor set designMode on the document. Default: true.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4773 * @default true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4774 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4775 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4776 this.setAttributeConfig('setDesignMode', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4777 value: ((attr.setDesignMode === false) ? false : true)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4778 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4779 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4780 * @config nodeChangeDelay
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4781 * @description Do we wrap the nodeChange method in a timeout for performance. Default: true.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4782 * @default true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4783 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4784 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4785 this.setAttributeConfig('nodeChangeDelay', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4786 value: ((attr.nodeChangeDelay === false) ? false : 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 * @config maxUndo
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4790 * @description The max number of undo levels to store.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4791 * @default 30
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4792 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4793 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4794 this.setAttributeConfig('maxUndo', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4795 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4796 value: attr.maxUndo || 30
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4797 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4798
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4799 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4800 * @config ptags
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4801 * @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
4802 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4803 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4804 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4805 this.setAttributeConfig('ptags', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4806 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4807 value: attr.ptags || false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4808 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4809 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4810 * @config insert
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4811 * @description If true, selection is not required for: fontname, fontsize, forecolor, backcolor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4812 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4813 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4814 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4815 this.setAttributeConfig('insert', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4816 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4817 value: attr.insert || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4818 method: function(insert) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4819 if (insert) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4820 var buttons = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4821 fontname: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4822 fontsize: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4823 forecolor: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4824 backcolor: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4825 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4826 var tmp = this._defaultToolbar.buttons;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4827 for (var i = 0; i < tmp.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4828 if (tmp[i].buttons) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4829 for (var a = 0; a < tmp[i].buttons.length; a++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4830 if (tmp[i].buttons[a].value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4831 if (buttons[tmp[i].buttons[a].value]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4832 delete tmp[i].buttons[a].disabled;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4833 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4834 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4835 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4836 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4837 }
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 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4841 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4842 * @config container
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4843 * @description Used when dynamically creating the Editor from Javascript with no default textarea.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4844 * 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
4845 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4846 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4847 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4848 this.setAttributeConfig('container', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4849 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4850 value: attr.container || false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4851 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4852 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4853 * @config plainText
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4854 * @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
4855 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4856 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4857 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4858 this.setAttributeConfig('plainText', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4859 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4860 value: attr.plainText || false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4861 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4862 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4863 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4864 * @config iframe
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4865 * @description Internal config for holding the iframe element.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4866 * @default null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4867 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4868 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4869 this.setAttributeConfig('iframe', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4870 value: null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4871 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4872 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4873 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4874 * @config disabled_iframe
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4875 * @description Internal config for holding the iframe element used when disabling the Editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4876 * @default null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4877 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4878 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4879 this.setAttributeConfig('disabled_iframe', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4880 value: null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4881 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4882 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4883 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4884 * @depreciated - No longer used, should use this.get('element')
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4885 * @config textarea
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4886 * @description Internal config for holding the textarea element (replaced with element).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4887 * @default null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4888 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4889 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4890 this.setAttributeConfig('textarea', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4891 value: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4892 writeOnce: true
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 * @config nodeChangeThreshold
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4896 * @description The number of seconds that need to be in between nodeChange processing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4897 * @default 3
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4898 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4899 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4900 this.setAttributeConfig('nodeChangeThreshold', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4901 value: attr.nodeChangeThreshold || 3,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4902 validator: YAHOO.lang.isNumber
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4903 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4904 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4905 * @config allowNoEdit
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4906 * @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
4907 * 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
4908 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4909 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4910 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4911 this.setAttributeConfig('allowNoEdit', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4912 value: attr.allowNoEdit || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4913 validator: YAHOO.lang.isBoolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4914 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4915 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4916 * @config limitCommands
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4917 * @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
4918 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4919 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4920 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4921 this.setAttributeConfig('limitCommands', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4922 value: attr.limitCommands || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4923 validator: YAHOO.lang.isBoolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4924 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4925 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4926 * @config element_cont
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4927 * @description Internal config for the editors container
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4928 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4929 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4930 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4931 this.setAttributeConfig('element_cont', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4932 value: attr.element_cont
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4933 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4934 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4935 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4936 * @config editor_wrapper
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4937 * @description The outter wrapper for the entire editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4938 * @default null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4939 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4940 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4941 this.setAttributeConfig('editor_wrapper', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4942 value: attr.editor_wrapper || null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4943 writeOnce: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4944 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4945 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4946 * @attribute height
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4947 * @description The height of the editor iframe container, not including the toolbar..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4948 * @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
4949 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4950 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4951 this.setAttributeConfig('height', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4952 value: attr.height || Dom.getStyle(self.get('element'), 'height'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4953 method: function(height) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4954 if (this._rendered) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4955 //We have been rendered, change the height
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4956 if (this.get('animate')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4957 var anim = new YAHOO.util.Anim(this.get('iframe').get('parentNode'), {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4958 height: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4959 to: parseInt(height, 10)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4960 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4961 }, 0.5);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4962 anim.animate();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4963 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4964 Dom.setStyle(this.get('iframe').get('parentNode'), 'height', height);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4965 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4966 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4967 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4968 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4969 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4970 * @config autoHeight
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4971 * @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
4972 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4973 * @type Boolean || Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4974 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4975 this.setAttributeConfig('autoHeight', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4976 value: attr.autoHeight || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4977 method: function(a) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4978 if (a) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4979 if (this.get('iframe')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4980 this.get('iframe').get('element').setAttribute('scrolling', 'no');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4981 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4982 this.on('afterNodeChange', this._handleAutoHeight, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4983 this.on('editorKeyDown', this._handleAutoHeight, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4984 this.on('editorKeyPress', this._handleAutoHeight, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4985 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4986 if (this.get('iframe')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4987 this.get('iframe').get('element').setAttribute('scrolling', 'auto');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4988 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4989 this.unsubscribe('afterNodeChange', this._handleAutoHeight);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4990 this.unsubscribe('editorKeyDown', this._handleAutoHeight);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4991 this.unsubscribe('editorKeyPress', this._handleAutoHeight);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4992 }
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 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4996 * @attribute width
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4997 * @description The width of the editor container.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4998 * @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
4999 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5000 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5001 this.setAttributeConfig('width', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5002 value: attr.width || Dom.getStyle(this.get('element'), 'width'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5003 method: function(width) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5004 if (this._rendered) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5005 //We have been rendered, change the width
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5006 if (this.get('animate')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5007 var anim = new YAHOO.util.Anim(this.get('element_cont').get('element'), {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5008 width: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5009 to: parseInt(width, 10)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5010 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5011 }, 0.5);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5012 anim.animate();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5013 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5014 this.get('element_cont').setStyle('width', width);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5015 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5016 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5017 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5018 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5019
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5020 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5021 * @attribute blankimage
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5022 * @description The URL for the image placeholder to put in when inserting an image.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5023 * @default The yahooapis.com address for the current release + 'assets/blankimage.png'
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5024 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5025 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5026 this.setAttributeConfig('blankimage', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5027 value: attr.blankimage || this._getBlankImage()
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 * @attribute css
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5031 * @description The Base CSS used to format the content of the editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5032 * @default <code><pre>html {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5033 height: 95%;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5034 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5035 body {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5036 height: 100%;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5037 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
5038 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5039 a {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5040 color: blue;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5041 text-decoration: underline;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5042 cursor: pointer;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5043 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5044 .warning-localfile {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5045 border-bottom: 1px dashed red !important;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5046 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5047 .yui-busy {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5048 cursor: wait !important;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5049 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5050 img.selected { //Safari image selection
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5051 border: 2px dotted #808080;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5052 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5053 img {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5054 cursor: pointer !important;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5055 border: none;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5056 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5057 </pre></code>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5058 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5059 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5060 this.setAttributeConfig('css', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5061 value: attr.css || this._defaultCSS,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5062 writeOnce: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5063 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5064 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5065 * @attribute html
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5066 * @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
5067 * @default This HTML requires a few things if you are to override:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5068 <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
5069 <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
5070 <code>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5071 <pre>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5072 &lt;html&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5073 &lt;head&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5074 &lt;title&gt;{TITLE}&lt;/title&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5075 &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5076 &lt;style&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5077 {CSS}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5078 &lt;/style&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5079 &lt;style&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5080 {HIDDEN_CSS}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5081 &lt;/style&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5082 &lt;style&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5083 {EXTRA_CSS}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5084 &lt;/style&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5085 &lt;/head&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5086 &lt;body onload="document.body._rteLoaded = true;"&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5087 {CONTENT}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5088 &lt;/body&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5089 &lt;/html&gt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5090 </pre>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5091 </code>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5092 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5093 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5094 this.setAttributeConfig('html', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5095 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
5096 writeOnce: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5097 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5098
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5099 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5100 * @attribute extracss
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5101 * @description Extra user defined css to load after the default SimpleEditor CSS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5102 * @default ''
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5103 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5104 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5105 this.setAttributeConfig('extracss', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5106 value: attr.extracss || '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5107 writeOnce: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5108 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5109
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5110 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5111 * @attribute handleSubmit
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5112 * @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
5113 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
5114 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
5115 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5116 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5117 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5118 this.setAttributeConfig('handleSubmit', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5119 value: attr.handleSubmit || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5120 method: function(exec) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5121 if (this.get('element').form) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5122 if (!this._formButtons) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5123 this._formButtons = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5124 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5125 if (exec) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5126 Event.on(this.get('element').form, 'submit', this._handleFormSubmit, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5127 var i = this.get('element').form.getElementsByTagName('input');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5128 for (var s = 0; s < i.length; s++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5129 var type = i[s].getAttribute('type');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5130 if (type && (type.toLowerCase() == 'submit')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5131 Event.on(i[s], 'click', this._handleFormButtonClick, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5132 this._formButtons[this._formButtons.length] = i[s];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5133 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5134 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5135 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5136 Event.removeListener(this.get('element').form, 'submit', this._handleFormSubmit);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5137 if (this._formButtons) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5138 Event.removeListener(this._formButtons, 'click', this._handleFormButtonClick);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5139 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5140 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5141 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5142 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5143 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5144 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5145 * @attribute disabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5146 * @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
5147 All Toolbar buttons are also disabled so they cannot be used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5148 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5149 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5150 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5151
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5152 this.setAttributeConfig('disabled', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5153 value: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5154 method: function(disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5155 if (this._rendered) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5156 this._disableEditor(disabled);
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 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5161 * @config saveEl
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5162 * @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
5163 * @default element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5164 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5165 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5166 this.setAttributeConfig('saveEl', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5167 value: this.get('element')
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 * @config toolbar_cont
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5171 * @description Internal config for the toolbars container
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5172 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5173 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5174 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5175 this.setAttributeConfig('toolbar_cont', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5176 value: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5177 writeOnce: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5178 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5179 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5180 * @attribute toolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5181 * @description The default toolbar config.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5182 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5183 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5184 this.setAttributeConfig('toolbar', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5185 value: attr.toolbar || this._defaultToolbar,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5186 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5187 method: function(toolbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5188 if (!toolbar.buttonType) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5189 toolbar.buttonType = this._defaultToolbar.buttonType;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5190 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5191 this._defaultToolbar = toolbar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5192 }
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 * @attribute animate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5196 * @description Should the editor animate window movements
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5197 * @default false unless Animation is found, then true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5198 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5199 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5200 this.setAttributeConfig('animate', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5201 value: ((attr.animate) ? ((YAHOO.util.Anim) ? true : false) : false),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5202 validator: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5203 var ret = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5204 if (!YAHOO.util.Anim) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5205 ret = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5206 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5207 return ret;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5208 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5209 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5210 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5211 * @config panel
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5212 * @description A reference to the panel we are using for windows.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5213 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5214 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5215 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5216 this.setAttributeConfig('panel', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5217 value: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5218 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5219 validator: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5220 var ret = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5221 if (!YAHOO.widget.Overlay) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5222 ret = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5223 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5224 return ret;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5225 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5226 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5227 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5228 * @attribute focusAtStart
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5229 * @description Should we focus the window when the content is ready?
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5230 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5231 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5232 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5233 this.setAttributeConfig('focusAtStart', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5234 value: attr.focusAtStart || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5235 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5236 method: function(fs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5237 if (fs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5238 this.on('editorContentLoaded', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5239 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5240 setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5241 self.focus.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5242 self.editorDirty = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5243 }, 400);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5244 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5245 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5246 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5247 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5248 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5249 * @attribute dompath
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5250 * @description Toggle the display of the current Dom path below the editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5251 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5252 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5253 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5254 this.setAttributeConfig('dompath', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5255 value: attr.dompath || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5256 method: function(dompath) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5257 if (dompath && !this.dompath) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5258 this.dompath = document.createElement('DIV');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5259 this.dompath.id = this.get('id') + '_dompath';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5260 Dom.addClass(this.dompath, 'dompath');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5261 this.get('element_cont').get('firstChild').appendChild(this.dompath);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5262 if (this.get('iframe')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5263 this._writeDomPath();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5264 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5265 } else if (!dompath && this.dompath) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5266 this.dompath.parentNode.removeChild(this.dompath);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5267 this.dompath = null;
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 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5272 * @attribute markup
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5273 * @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
5274 * @default "semantic"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5275 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5276 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5277 this.setAttributeConfig('markup', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5278 value: attr.markup || 'semantic',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5279 validator: function(markup) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5280 switch (markup.toLowerCase()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5281 case 'semantic':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5282 case 'css':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5283 case 'default':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5284 case 'xhtml':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5285 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5286 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5287 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5288 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5289 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5290 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5291 * @attribute removeLineBreaks
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5292 * @description Should we remove linebreaks and extra spaces on cleanup
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5293 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5294 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5295 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5296 this.setAttributeConfig('removeLineBreaks', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5297 value: attr.removeLineBreaks || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5298 validator: YAHOO.lang.isBoolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5299 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5300
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5301 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5302 * @config drag
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5303 * @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
5304 * @type {Boolean/String}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5305 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5306 this.setAttributeConfig('drag', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5307 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5308 value: attr.drag || false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5309 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5310
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5311 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5312 * @config resize
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5313 * @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
5314 * 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
5315 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5316 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5317 this.setAttributeConfig('resize', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5318 writeOnce: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5319 value: attr.resize || false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5320 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5321
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5322 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5323 * @config filterWord
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5324 * @description Attempt to filter out MS Word HTML from the Editor's output.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5325 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5326 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5327 this.setAttributeConfig('filterWord', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5328 value: attr.filterWord || false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5329 validator: YAHOO.lang.isBoolean
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 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5333 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5334 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5335 * @method _getBlankImage
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5336 * @description Retrieves the full url of the image to use as the blank image.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5337 * @return {String} The URL to the blank image
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5338 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5339 _getBlankImage: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5340 if (!this.DOMReady) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5341 this._queue[this._queue.length] = ['_getBlankImage', arguments];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5342 return '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5343 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5344 var img = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5345 if (!this._blankImageLoaded) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5346 if (YAHOO.widget.EditorInfo.blankImage) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5347 this.set('blankimage', YAHOO.widget.EditorInfo.blankImage);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5348 this._blankImageLoaded = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5349 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5350 var div = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5351 div.style.position = 'absolute';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5352 div.style.top = '-9999px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5353 div.style.left = '-9999px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5354 div.className = this.CLASS_PREFIX + '-blankimage';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5355 document.body.appendChild(div);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5356 img = YAHOO.util.Dom.getStyle(div, 'background-image');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5357 img = img.replace('url(', '').replace(')', '').replace(/"/g, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5358 //Adobe AIR Code
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5359 img = img.replace('app:/', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5360 this.set('blankimage', img);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5361 this._blankImageLoaded = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5362 div.parentNode.removeChild(div);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5363 YAHOO.widget.EditorInfo.blankImage = img;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5364 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5365 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5366 img = this.get('blankimage');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5367 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5368 return img;
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 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5372 * @method _handleAutoHeight
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5373 * @description Handles resizing the editor's height based on the content
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5374 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5375 _handleAutoHeight: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5376 var doc = this._getDoc(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5377 body = doc.body,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5378 docEl = doc.documentElement;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5379
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5380 var height = parseInt(Dom.getStyle(this.get('editor_wrapper'), 'height'), 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5381 var newHeight = body.scrollHeight;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5382 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5383 newHeight = docEl.scrollHeight;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5384 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5385 if (newHeight < parseInt(this.get('height'), 10)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5386 newHeight = parseInt(this.get('height'), 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5387 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5388 if ((height != newHeight) && (newHeight >= parseInt(this.get('height'), 10))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5389 var anim = this.get('animate');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5390 this.set('animate', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5391 this.set('height', newHeight + 'px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5392 this.set('animate', anim);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5393 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5394 //Internet Explorer needs this
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5395 this.get('iframe').setStyle('height', '99%');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5396 this.get('iframe').setStyle('zoom', '1');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5397 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5398 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5399 self.get('iframe').setStyle('height', '100%');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5400 }, 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5401 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5402 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5403 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5404 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5405 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5406 * @property _formButtons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5407 * @description Array of buttons that are in the Editor's parent form (for handleSubmit)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5408 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5409 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5410 _formButtons: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5411 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5412 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5413 * @property _formButtonClicked
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5414 * @description The form button that was clicked to submit the form.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5415 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5416 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5417 _formButtonClicked: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5418 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5419 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5420 * @method _handleFormButtonClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5421 * @description The click listener assigned to each submit button in the Editor's parent form.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5422 * @param {Event} ev The click event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5423 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5424 _handleFormButtonClick: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5425 var tar = Event.getTarget(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5426 this._formButtonClicked = tar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5427 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5428 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5429 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5430 * @method _handleFormSubmit
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5431 * @description Handles the form submission.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5432 * @param {Object} ev The Form Submit Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5433 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5434 _handleFormSubmit: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5435 this.saveHTML();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5436
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5437 var form = this.get('element').form,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5438 tar = this._formButtonClicked || false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5439
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5440 Event.removeListener(form, 'submit', this._handleFormSubmit);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5441 if (YAHOO.env.ua.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5442 //form.fireEvent("onsubmit");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5443 if (tar && !tar.disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5444 tar.click();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5445 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5446 } else { // Gecko, Opera, and Safari
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5447 if (tar && !tar.disabled) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5448 tar.click();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5449 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5450 var oEvent = document.createEvent("HTMLEvents");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5451 oEvent.initEvent("submit", true, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5452 form.dispatchEvent(oEvent);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5453 if (YAHOO.env.ua.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5454 if (YAHOO.lang.isFunction(form.submit)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5455 form.submit();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5456 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5457 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5458 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5459 //2.6.0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5460 //Removed this, not need since removing Safari 2.x
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5461 //Event.stopEvent(ev);
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 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5465 * @method _handleFontSize
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5466 * @description Handles the font size button in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5467 * @param {Object} o Object returned from Toolbar's buttonClick Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5468 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5469 _handleFontSize: function(o) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5470 var button = this.toolbar.getButtonById(o.button.id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5471 var value = button.get('label') + 'px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5472 this.execCommand('fontsize', value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5473 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5474 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5475 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5476 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5477 * @description Handles the colorpicker buttons in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5478 * @param {Object} o Object returned from Toolbar's buttonClick Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5479 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5480 _handleColorPicker: function(o) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5481 var cmd = o.button;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5482 var value = '#' + o.color;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5483 if ((cmd == 'forecolor') || (cmd == 'backcolor')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5484 this.execCommand(cmd, value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5485 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5486 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5487 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5488 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5489 * @method _handleAlign
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5490 * @description Handles the alignment buttons in the toolbar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5491 * @param {Object} o Object returned from Toolbar's buttonClick Event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5492 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5493 _handleAlign: function(o) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5494 var cmd = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5495 for (var i = 0; i < o.button.menu.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5496 if (o.button.menu[i].value == o.button.value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5497 cmd = o.button.menu[i].value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5498 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5499 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5500 var value = this._getSelection();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5501
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5502 this.execCommand(cmd, value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5503 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5504 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5505 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5506 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5507 * @method _handleAfterNodeChange
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5508 * @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
5509 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5510 _handleAfterNodeChange: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5511 var path = this._getDomPath(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5512 elm = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5513 family = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5514 fontsize = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5515 validFont = false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5516 fn_button = this.toolbar.getButtonByValue('fontname'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5517 fs_button = this.toolbar.getButtonByValue('fontsize'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5518 hd_button = this.toolbar.getButtonByValue('heading');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5519
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5520 for (var i = 0; i < path.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5521 elm = path[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5522
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5523 var tag = elm.tagName.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5524
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5525
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5526 if (elm.getAttribute('tag')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5527 tag = elm.getAttribute('tag');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5528 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5529
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5530 family = elm.getAttribute('face');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5531 if (Dom.getStyle(elm, 'font-family')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5532 family = Dom.getStyle(elm, 'font-family');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5533 //Adobe AIR Code
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5534 family = family.replace(/'/g, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5535 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5536
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5537 if (tag.substring(0, 1) == 'h') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5538 if (hd_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5539 for (var h = 0; h < hd_button._configs.menu.value.length; h++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5540 if (hd_button._configs.menu.value[h].value.toLowerCase() == tag) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5541 hd_button.set('label', hd_button._configs.menu.value[h].text);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5542 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5543 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5544 this._updateMenuChecked('heading', tag);
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
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5549 if (fn_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5550 for (var b = 0; b < fn_button._configs.menu.value.length; b++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5551 if (family && fn_button._configs.menu.value[b].text.toLowerCase() == family.toLowerCase()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5552 validFont = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5553 family = fn_button._configs.menu.value[b].text; //Put the proper menu name in the button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5554 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5555 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5556 if (!validFont) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5557 family = fn_button._configs.label._initialConfig.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5558 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5559 var familyLabel = '<span class="yui-toolbar-fontname-' + this._cleanClassName(family) + '">' + family + '</span>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5560 if (fn_button.get('label') != familyLabel) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5561 fn_button.set('label', familyLabel);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5562 this._updateMenuChecked('fontname', family);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5563 }
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 if (fs_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5567 fontsize = parseInt(Dom.getStyle(elm, 'fontSize'), 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5568 if ((fontsize === null) || isNaN(fontsize)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5569 fontsize = fs_button._configs.label._initialConfig.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5570 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5571 fs_button.set('label', ''+fontsize);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5572 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5573
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5574 if (!this._isElement(elm, 'body') && !this._isElement(elm, 'img')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5575 this.toolbar.enableButton(fn_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5576 this.toolbar.enableButton(fs_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5577 this.toolbar.enableButton('forecolor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5578 this.toolbar.enableButton('backcolor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5579 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5580 if (this._isElement(elm, 'img')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5581 if (YAHOO.widget.Overlay) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5582 this.toolbar.enableButton('createlink');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5583 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5584 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5585 if (this._hasParent(elm, 'blockquote')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5586 this.toolbar.selectButton('indent');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5587 this.toolbar.disableButton('indent');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5588 this.toolbar.enableButton('outdent');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5589 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5590 if (this._hasParent(elm, 'ol') || this._hasParent(elm, 'ul')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5591 this.toolbar.disableButton('indent');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5592 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5593 this._lastButton = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5594
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 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5598 * @method _handleInsertImageClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5599 * @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
5600 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5601 _handleInsertImageClick: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5602 if (this.get('limitCommands')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5603 if (!this.toolbar.getButtonByValue('insertimage')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5604 return false;
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 this.toolbar.set('disabled', true); //Disable the toolbar when the prompt is showing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5609 var _handleAEC = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5610 var el = this.currentElement[0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5611 src = 'http://';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5612 if (!el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5613 el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5614 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5615 if (el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5616 if (el.getAttribute('src')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5617 src = el.getAttribute('src', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5618 if (src.indexOf(this.get('blankimage')) != -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5619 src = this.STR_IMAGE_HERE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5620 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5621 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5622 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5623 var str = prompt(this.STR_IMAGE_URL + ': ', src);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5624 if ((str !== '') && (str !== null)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5625 el.setAttribute('src', str);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5626 } else if (str === '') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5627 el.parentNode.removeChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5628 this.currentElement = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5629 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5630 } else if ((str === null)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5631 src = el.getAttribute('src', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5632 if (src.indexOf(this.get('blankimage')) != -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5633 el.parentNode.removeChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5634 this.currentElement = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5635 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5636 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5637 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5638 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5639 this.toolbar.set('disabled', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5640 this.unsubscribe('afterExecCommand', _handleAEC, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5641 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5642 this.on('afterExecCommand', _handleAEC, this, true);
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 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5646 * @method _handleInsertImageWindowClose
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5647 * @description Handles the closing of the Image Properties Window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5648 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5649 _handleInsertImageWindowClose: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5650 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5651 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5652 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5653 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5654 * @method _isLocalFile
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5655 * @param {String} url THe url/string to check
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5656 * @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
5657 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5658 _isLocalFile: function(url) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5659 if ((url) && (url !== '') && ((url.indexOf('file:/') != -1) || (url.indexOf(':\\') != -1))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5660 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5661 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5662 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5663 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5664 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5665 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5666 * @method _handleCreateLinkClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5667 * @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
5668 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5669 _handleCreateLinkClick: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5670 if (this.get('limitCommands')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5671 if (!this.toolbar.getButtonByValue('createlink')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5672 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5673 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5674 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5675
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5676 this.toolbar.set('disabled', true); //Disable the toolbar when the prompt is showing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5677
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5678 var _handleAEC = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5679 var el = this.currentElement[0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5680 url = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5681
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5682 if (el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5683 if (el.getAttribute('href', 2) !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5684 url = el.getAttribute('href', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5685 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5686 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5687 var str = prompt(this.STR_LINK_URL + ': ', url);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5688 if ((str !== '') && (str !== null)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5689 var urlValue = str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5690 if ((urlValue.indexOf(':/'+'/') == -1) && (urlValue.substring(0,1) != '/') && (urlValue.substring(0, 6).toLowerCase() != 'mailto')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5691 if ((urlValue.indexOf('@') != -1) && (urlValue.substring(0, 6).toLowerCase() != 'mailto')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5692 //Found an @ sign, prefix with mailto:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5693 urlValue = 'mailto:' + urlValue;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5694 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5695 /* :// not found adding */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5696 if (urlValue.substring(0, 1) != '#') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5697 //urlValue = 'http:/'+'/' + urlValue;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5698 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5699 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5700 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5701 el.setAttribute('href', urlValue);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5702 } else if (str !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5703 var _span = this._getDoc().createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5704 _span.innerHTML = el.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5705 Dom.addClass(_span, 'yui-non');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5706 el.parentNode.replaceChild(_span, el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5707 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5708 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5709 this.toolbar.set('disabled', false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5710 this.unsubscribe('afterExecCommand', _handleAEC, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5711 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5712 this.on('afterExecCommand', _handleAEC, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5713
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5714 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5715 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5716 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5717 * @method _handleCreateLinkWindowClose
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5718 * @description Handles the closing of the Link Properties Window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5719 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5720 _handleCreateLinkWindowClose: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5721 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5722 this.currentElement = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5723 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5724 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5725 * @method render
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5726 * @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
5727 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5728 render: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5729 if (this._rendered) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5730 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5731 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5732 if (!this.DOMReady) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5733 this._queue[this._queue.length] = ['render', arguments];
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 if (this.get('element')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5737 if (this.get('element').tagName) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5738 this._textarea = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5739 if (this.get('element').tagName.toLowerCase() !== 'textarea') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5740 this._textarea = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5741 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5742 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5743 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5744 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5745 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5746 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5747 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5748 this._rendered = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5749 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5750 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5751 self._render.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5752 }, 4);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5753 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5754 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5755 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5756 * @method _render
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5757 * @description Causes the toolbar and the editor to render and replace the textarea.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5758 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5759 _render: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5760 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5761 this.set('textarea', this.get('element'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5762
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5763 this.get('element_cont').setStyle('display', 'none');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5764 this.get('element_cont').addClass(this.CLASS_CONTAINER);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5765
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5766 this.set('iframe', this._createIframe());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5767
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5768 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5769 self._setInitialContent.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5770 }, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5771
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5772 this.get('editor_wrapper').appendChild(this.get('iframe').get('element'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5773
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5774 if (this.get('disabled')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5775 this._disableEditor(true);
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 var tbarConf = this.get('toolbar');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5779 //Create Toolbar instance
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5780 if (tbarConf instanceof Toolbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5781 this.toolbar = tbarConf;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5782 //Set the toolbar to disabled until content is loaded
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5783 this.toolbar.set('disabled', true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5784 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5785 //Set the toolbar to disabled until content is loaded
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5786 tbarConf.disabled = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5787 this.toolbar = new Toolbar(this.get('toolbar_cont'), tbarConf);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5788 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5789
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5790 this.fireEvent('toolbarLoaded', { type: 'toolbarLoaded', target: this.toolbar });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5791
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5792
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5793 this.toolbar.on('toolbarCollapsed', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5794 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5795 this.moveWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5796 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5797 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5798 this.toolbar.on('toolbarExpanded', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5799 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5800 this.moveWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5801 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5802 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5803 this.toolbar.on('fontsizeClick', this._handleFontSize, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5804
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5805 this.toolbar.on('colorPickerClicked', function(o) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5806 this._handleColorPicker(o);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5807 return false; //Stop the buttonClick event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5808 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5809
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5810 this.toolbar.on('alignClick', this._handleAlign, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5811 this.on('afterNodeChange', this._handleAfterNodeChange, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5812 this.toolbar.on('insertimageClick', this._handleInsertImageClick, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5813 this.on('windowinsertimageClose', this._handleInsertImageWindowClose, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5814 this.toolbar.on('createlinkClick', this._handleCreateLinkClick, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5815 this.on('windowcreatelinkClose', this._handleCreateLinkWindowClose, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5816
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5817
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5818 //Replace Textarea with editable area
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5819 this.get('parentNode').replaceChild(this.get('element_cont').get('element'), this.get('element'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5820
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5821
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5822 this.setStyle('visibility', 'hidden');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5823 this.setStyle('position', 'absolute');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5824 this.setStyle('top', '-9999px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5825 this.setStyle('left', '-9999px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5826 this.get('element_cont').appendChild(this.get('element'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5827 this.get('element_cont').setStyle('display', 'block');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5828
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5829
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5830 Dom.addClass(this.get('iframe').get('parentNode'), this.CLASS_EDITABLE_CONT);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5831 this.get('iframe').addClass(this.CLASS_EDITABLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5832
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5833 //Set height and width of editor container
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5834 this.get('element_cont').setStyle('width', this.get('width'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5835 Dom.setStyle(this.get('iframe').get('parentNode'), 'height', this.get('height'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5836
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5837 this.get('iframe').setStyle('width', '100%'); //WIDTH
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5838 this.get('iframe').setStyle('height', '100%');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5839
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5840 this._setupDD();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5841
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5842 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5843 self._setupAfterElement.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5844 }, 0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5845 this.fireEvent('afterRender', { type: 'afterRender', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5846 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5847 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5848 * @method execCommand
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5849 * @param {String} action The "execCommand" action to try to execute (Example: bold, insertimage, inserthtml)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5850 * @param {String} value (optional) The value for a given action such as action: fontname value: 'Verdana'
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5851 * @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
5852 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5853 execCommand: function(action, value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5854 var beforeExec = this.fireEvent('beforeExecCommand', { type: 'beforeExecCommand', target: this, args: arguments });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5855 if ((beforeExec === false) || (this.STOP_EXEC_COMMAND)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5856 this.STOP_EXEC_COMMAND = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5857 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5858 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5859 this._lastCommand = action;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5860 this._setMarkupType(action);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5861 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5862 this._getWindow().focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5863 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5864 var exec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5865
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5866 if (this.get('limitCommands')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5867 if (!this.toolbar.getButtonByValue(action)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5868 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5869 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5870 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5871
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5872 this.editorDirty = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5873
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5874 if ((typeof this['cmd_' + action.toLowerCase()] == 'function') && exec) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5875 var retValue = this['cmd_' + action.toLowerCase()](value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5876 exec = retValue[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5877 if (retValue[1]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5878 action = retValue[1];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5879 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5880 if (retValue[2]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5881 value = retValue[2];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5882 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5883 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5884 if (exec) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5885 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5886 this._getDoc().execCommand(action, false, value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5887 } catch(e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5888 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5889 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5890 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5891 this.on('afterExecCommand', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5892 this.unsubscribeAll('afterExecCommand');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5893 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5894 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5895 this.fireEvent('afterExecCommand', { type: 'afterExecCommand', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5896
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5897 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5898 /* {{{ Command Overrides */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5899
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5900 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5901 * @method cmd_bold
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5902 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5903 * @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
5904 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5905 cmd_bold: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5906 if (!this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5907 var el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5908 if (el && this._isElement(el, 'span') && this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5909 if (el.style.fontWeight == 'bold') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5910 el.style.fontWeight = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5911 var b = this._getDoc().createElement('b'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5912 par = el.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5913 par.replaceChild(b, el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5914 b.appendChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5915 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5916 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5917 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5918 return [true];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5919 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5920 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5921 * @method cmd_italic
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5922 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5923 * @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
5924 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5925
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5926 cmd_italic: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5927 if (!this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5928 var el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5929 if (el && this._isElement(el, 'span') && this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5930 if (el.style.fontStyle == 'italic') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5931 el.style.fontStyle = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5932 var i = this._getDoc().createElement('i'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5933 par = el.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5934 par.replaceChild(i, el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5935 i.appendChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5936 }
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 return [true];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5940 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5941
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5942
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5943 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5944 * @method cmd_underline
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5945 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5946 * @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
5947 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5948 cmd_underline: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5949 if (!this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5950 var el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5951 if (el && this._isElement(el, 'span')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5952 if (el.style.textDecoration == 'underline') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5953 el.style.textDecoration = 'none';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5954 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5955 el.style.textDecoration = 'underline';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5956 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5957 return [false];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5958 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5959 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5960 return [true];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5961 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5962 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5963 * @method cmd_backcolor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5964 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5965 * @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
5966 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5967 cmd_backcolor: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5968 var exec = true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5969 el = this._getSelectedElement(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5970 action = 'backcolor';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5971
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5972 if (this.browser.gecko || this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5973 this._setEditorStyle(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5974 action = 'hilitecolor';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5975 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5976
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5977 if (!this._isElement(el, 'body') && !this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5978 el.style.backgroundColor = value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5979 this._selectNode(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5980 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5981 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5982 if (this.get('insert')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5983 el = this._createInsertElement({ backgroundColor: value });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5984 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5985 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
5986 this._selectNode(this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5987 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5988 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5989 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5990
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5991 return [exec, action];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5992 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5993 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5994 * @method cmd_forecolor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5995 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5996 * @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
5997 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5998 cmd_forecolor: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5999 var exec = true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6000 el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6001
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6002 if (!this._isElement(el, 'body') && !this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6003 Dom.setStyle(el, 'color', value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6004 this._selectNode(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6005 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6006 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6007 if (this.get('insert')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6008 el = this._createInsertElement({ color: value });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6009 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6010 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
6011 this._selectNode(this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6012 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6013 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6014 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6015 return [exec];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6016 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6017 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6018 * @method cmd_unlink
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6019 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6020 * @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
6021 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6022 cmd_unlink: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6023 this._swapEl(this.currentElement[0], 'span', function(el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6024 el.className = 'yui-non';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6025 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6026 return [false];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6027 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6028 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6029 * @method cmd_createlink
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6030 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6031 * @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
6032 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6033 cmd_createlink: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6034 var el = this._getSelectedElement(), _a = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6035 if (this._hasParent(el, 'a')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6036 this.currentElement[0] = this._hasParent(el, 'a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6037 } else if (this._isElement(el, 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6038 _a = this._getDoc().createElement('a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6039 _a.innerHTML = el.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6040 el.innerHTML = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6041 el.appendChild(_a);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6042 this.currentElement[0] = _a;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6043 } else if (!this._isElement(el, 'a')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6044 this._createCurrentElement('a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6045 _a = this._swapEl(this.currentElement[0], 'a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6046 this.currentElement[0] = _a;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6047 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6048 this.currentElement[0] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6049 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6050 return [false];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6051 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6052 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6053 * @method cmd_insertimage
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6054 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6055 * @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
6056 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6057 cmd_insertimage: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6058 var exec = true, _img = null, action = 'insertimage',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6059 el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6060
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6061 if (value === '') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6062 value = this.get('blankimage');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6063 }
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 * @knownissue Safari Cursor Position
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6067 * @browser Safari 2.x
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6068 * @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
6069 * 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
6070 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6071
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6072 if (this._isElement(el, 'img')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6073 this.currentElement[0] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6074 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6075 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6076 if (this._getDoc().queryCommandEnabled(action)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6077 this._getDoc().execCommand(action, false, value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6078 var imgs = this._getDoc().getElementsByTagName('img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6079 for (var i = 0; i < imgs.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6080 if (!YAHOO.util.Dom.hasClass(imgs[i], 'yui-img')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6081 YAHOO.util.Dom.addClass(imgs[i], 'yui-img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6082 this.currentElement[0] = imgs[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6083 }
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 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6087 if (el == this._getDoc().body) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6088 _img = this._getDoc().createElement('img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6089 _img.setAttribute('src', value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6090 YAHOO.util.Dom.addClass(_img, 'yui-img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6091 this._getDoc().body.appendChild(_img);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6092 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6093 this._createCurrentElement('img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6094 _img = this._getDoc().createElement('img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6095 _img.setAttribute('src', value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6096 YAHOO.util.Dom.addClass(_img, 'yui-img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6097 this.currentElement[0].parentNode.replaceChild(_img, this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6098 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6099 this.currentElement[0] = _img;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6100 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6101 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6102 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6103 return [exec];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6104 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6105 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6106 * @method cmd_inserthtml
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6107 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6108 * @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
6109 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6110 cmd_inserthtml: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6111 var exec = true, action = 'inserthtml', _span = null, _range = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6112 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6113 * @knownissue Safari cursor position
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6114 * @browser Safari 2.x
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6115 * @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
6116 * 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
6117 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6118 if (this.browser.webkit && !this._getDoc().queryCommandEnabled(action)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6119 this._createCurrentElement('img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6120 _span = this._getDoc().createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6121 _span.innerHTML = value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6122 this.currentElement[0].parentNode.replaceChild(_span, this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6123 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6124 } else if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6125 _range = this._getRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6126 if (_range.item) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6127 _range.item(0).outerHTML = value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6128 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6129 _range.pasteHTML(value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6130 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6131 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6132 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6133 return [exec];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6134 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6135 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6136 * @method cmd_list
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6137 * @param tag The tag of the list you want to create (eg, ul or ol)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6138 * @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
6139 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6140 cmd_list: function(tag) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6141 var exec = true, list = null, li = 0, el = null, str = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6142 selEl = this._getSelectedElement(), action = 'insertorderedlist';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6143 if (tag == 'ul') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6144 action = 'insertunorderedlist';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6145 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6146 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6147 * @knownissue Safari 2.+ doesn't support ordered and unordered lists
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6148 * @browser Safari 2.x
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6149 * The issue with this workaround is that when applied to a set of text
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6150 * 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
6151 * list items. This is fixed in WebKit (Safari 3)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6152 * 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
6153 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6154 //if ((this.browser.webkit && !this._getDoc().queryCommandEnabled(action))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6155 if ((this.browser.webkit && !this.browser.webkit4) || (this.browser.opera)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6156 if (this._isElement(selEl, 'li') && this._isElement(selEl.parentNode, tag)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6157 el = selEl.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6158 list = this._getDoc().createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6159 YAHOO.util.Dom.addClass(list, 'yui-non');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6160 str = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6161 var lis = el.getElementsByTagName('li'), p_tag = ((this.browser.opera && this.get('ptags')) ? 'p' : 'div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6162 for (li = 0; li < lis.length; li++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6163 str += '<' + p_tag + '>' + lis[li].innerHTML + '</' + p_tag + '>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6164 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6165 list.innerHTML = str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6166 this.currentElement[0] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6167 this.currentElement[0].parentNode.replaceChild(list, this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6168 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6169 this._createCurrentElement(tag.toLowerCase());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6170 list = this._getDoc().createElement(tag);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6171 for (li = 0; li < this.currentElement.length; li++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6172 var newli = this._getDoc().createElement('li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6173 newli.innerHTML = this.currentElement[li].innerHTML + '<span class="yui-non">&nbsp;</span>&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6174 list.appendChild(newli);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6175 if (li > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6176 this.currentElement[li].parentNode.removeChild(this.currentElement[li]);
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 var b_tag = ((this.browser.opera) ? '<BR>' : '<br>'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6180 items = list.firstChild.innerHTML.split(b_tag), i, item;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6181 if (items.length > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6182 list.innerHTML = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6183 for (i = 0; i < items.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6184 item = this._getDoc().createElement('li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6185 item.innerHTML = items[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6186 list.appendChild(item);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6187 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6188 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6189
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6190 this.currentElement[0].parentNode.replaceChild(list, this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6191 this.currentElement[0] = list;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6192 var _h = this.currentElement[0].firstChild;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6193 _h = Dom.getElementsByClassName('yui-non', 'span', _h)[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6194 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6195 this._getSelection().setBaseAndExtent(_h, 1, _h, _h.innerText.length);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6196 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6197 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6198 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6199 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6200 el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6201 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
6202 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6203 if ((this.browser.ie && this._isElement(el, 'ul')) || (this.browser.ie && this._isElement(el, 'ol'))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6204 el = el.getElementsByTagName('li')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6205 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6206 str = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6207 var lis2 = el.parentNode.getElementsByTagName('li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6208 for (var j = 0; j < lis2.length; j++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6209 str += lis2[j].innerHTML + '<br>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6210 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6211 var newEl = this._getDoc().createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6212 newEl.innerHTML = str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6213 el.parentNode.parentNode.replaceChild(newEl, el.parentNode);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6214 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6215 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6216 this._getDoc().execCommand(action, '', el.parentNode);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6217 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6218 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6219 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6220 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6221 if (this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6222 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6223 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6224 var liso = self._getDoc().getElementsByTagName('li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6225 for (var i = 0; i < liso.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6226 if (liso[i].innerHTML.toLowerCase() == '<br>') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6227 liso[i].parentNode.parentNode.removeChild(liso[i].parentNode);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6228 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6229 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6230 },30);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6231 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6232 if (this.browser.ie && exec) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6233 var html = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6234 if (this._getRange().html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6235 html = '<li>' + this._getRange().html+ '</li>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6236 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6237 var t = this._getRange().text.split('\n');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6238 if (t.length > 1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6239 html = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6240 for (var ie = 0; ie < t.length; ie++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6241 html += '<li>' + t[ie] + '</li>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6242 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6243 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6244 var txt = this._getRange().text;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6245 if (txt === '') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6246 html = '<li id="new_list_item">' + txt + '</li>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6247 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6248 html = '<li>' + txt + '</li>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6249 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6250 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6251 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6252 this._getRange().pasteHTML('<' + tag + '>' + html + '</' + tag + '>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6253 var new_item = this._getDoc().getElementById('new_list_item');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6254 if (new_item) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6255 var range = this._getDoc().body.createTextRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6256 range.moveToElementText(new_item);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6257 range.collapse(false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6258 range.select();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6259 new_item.id = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6260 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6261 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6262 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6263 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6264 return exec;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6265 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6266 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6267 * @method cmd_insertorderedlist
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6268 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6269 * @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
6270 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6271 cmd_insertorderedlist: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6272 return [this.cmd_list('ol')];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6273 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6274 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6275 * @method cmd_insertunorderedlist
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6276 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6277 * @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
6278 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6279 cmd_insertunorderedlist: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6280 return [this.cmd_list('ul')];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6281 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6282 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6283 * @method cmd_fontname
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6284 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6285 * @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
6286 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6287 cmd_fontname: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6288 var exec = true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6289 selEl = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6290
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6291 this.currentFont = value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6292 if (selEl && selEl.tagName && !this._hasSelection() && !this._isElement(selEl, 'body') && !this.get('insert')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6293 YAHOO.util.Dom.setStyle(selEl, 'font-family', value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6294 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6295 } else if (this.get('insert') && !this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6296 var el = this._createInsertElement({ fontFamily: value });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6297 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6298 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6299 return [exec];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6300 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6301 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6302 * @method cmd_fontsize
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6303 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6304 * @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
6305 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6306 cmd_fontsize: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6307 var el = null, go = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6308 el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6309 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6310 if (this.currentElement[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6311 if (el == this.currentElement[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6312 go = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6313 YAHOO.util.Dom.setStyle(el, 'fontSize', value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6314 this._selectNode(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6315 this.currentElement[0] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6316 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6317 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6318 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6319 if (go) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6320 if (!this._isElement(this._getSelectedElement(), 'body') && (!this._hasSelection())) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6321 el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6322 YAHOO.util.Dom.setStyle(el, 'fontSize', value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6323 if (this.get('insert') && this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6324 var r = this._getRange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6325 r.collapse(false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6326 r.select();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6327 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6328 this._selectNode(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6329 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6330 } else if (this.currentElement && (this.currentElement.length > 0) && (!this._hasSelection()) && (!this.get('insert'))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6331 YAHOO.util.Dom.setStyle(this.currentElement, 'fontSize', value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6332 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6333 if (this.get('insert') && !this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6334 el = this._createInsertElement({ fontSize: value });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6335 this.currentElement[0] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6336 this._selectNode(this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6337 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6338 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
6339 this._selectNode(this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6340 }
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 [false];
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 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6347 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6348 * @method _swapEl
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6349 * @param {HTMLElement} el The element to swap with
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6350 * @param {String} tagName The tagname of the element that you wish to create
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6351 * @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
6352 * @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
6353 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6354 _swapEl: function(el, tagName, callback) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6355 var _el = this._getDoc().createElement(tagName);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6356 if (el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6357 _el.innerHTML = el.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6358 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6359 if (typeof callback == 'function') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6360 callback.call(this, _el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6361 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6362 if (el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6363 el.parentNode.replaceChild(_el, el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6364 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6365 return _el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6366 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6367 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6368 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6369 * @method _createInsertElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6370 * @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
6371 * @param {Object} css (optional) Object literal containing styles to apply to the new element.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6372 * @return {HTMLElement}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6373 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6374 _createInsertElement: function(css) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6375 this._createCurrentElement('span', css);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6376 var el = this.currentElement[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6377 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6378 //Little Safari Hackery here..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6379 el.innerHTML = '<span class="yui-non">&nbsp;</span>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6380 el = el.firstChild;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6381 this._getSelection().setBaseAndExtent(el, 1, el, el.innerText.length);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6382 } else if (this.browser.ie || this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6383 el.innerHTML = '&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6384 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6385 this.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6386 this._selectNode(el, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6387 return el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6388 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6389 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6390 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6391 * @method _createCurrentElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6392 * @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
6393 * @param {Object} tagStyle (optional) Object literal containing styles to apply to the new element.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6394 * @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
6395 * 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
6396 * <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
6397 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6398 _createCurrentElement: function(tagName, tagStyle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6399 tagName = ((tagName) ? tagName : 'a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6400 var tar = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6401 el = [],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6402 _doc = this._getDoc();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6403
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6404 if (this.currentFont) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6405 if (!tagStyle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6406 tagStyle = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6407 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6408 tagStyle.fontFamily = this.currentFont;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6409 this.currentFont = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6410 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6411 this.currentElement = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6412
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6413 var _elCreate = function(tagName, tagStyle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6414 var el = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6415 tagName = ((tagName) ? tagName : 'span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6416 tagName = tagName.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6417 switch (tagName) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6418 case 'h1':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6419 case 'h2':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6420 case 'h3':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6421 case 'h4':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6422 case 'h5':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6423 case 'h6':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6424 el = _doc.createElement(tagName);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6425 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6426 default:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6427 el = _doc.createElement(tagName);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6428 if (tagName === 'span') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6429 YAHOO.util.Dom.addClass(el, 'yui-tag-' + tagName);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6430 YAHOO.util.Dom.addClass(el, 'yui-tag');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6431 el.setAttribute('tag', tagName);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6432 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6433
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6434 for (var k in tagStyle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6435 if (YAHOO.lang.hasOwnProperty(tagStyle, k)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6436 el.style[k] = tagStyle[k];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6437 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6438 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6439 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6440 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6441 return el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6442 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6443
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6444 if (!this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6445 if (this._getDoc().queryCommandEnabled('insertimage')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6446 this._getDoc().execCommand('insertimage', false, 'yui-tmp-img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6447 var imgs = this._getDoc().getElementsByTagName('img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6448 for (var j = 0; j < imgs.length; j++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6449 if (imgs[j].getAttribute('src', 2) == 'yui-tmp-img') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6450 el = _elCreate(tagName, tagStyle);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6451 imgs[j].parentNode.replaceChild(el, imgs[j]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6452 this.currentElement[this.currentElement.length] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6453 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6454 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6455 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6456 if (this.currentEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6457 tar = YAHOO.util.Event.getTarget(this.currentEvent);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6458 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6459 //For Safari..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6460 tar = this._getDoc().body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6461 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6462 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6463 if (tar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6464 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6465 * @knownissue Safari Cursor Position
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6466 * @browser Safari 2.x
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6467 * @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
6468 * 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
6469 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6470 el = _elCreate(tagName, tagStyle);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6471 if (this._isElement(tar, 'body') || this._isElement(tar, 'html')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6472 if (this._isElement(tar, 'html')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6473 tar = this._getDoc().body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6474 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6475 tar.appendChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6476 } else if (tar.nextSibling) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6477 tar.parentNode.insertBefore(el, tar.nextSibling);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6478 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6479 tar.parentNode.appendChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6480 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6481 //this.currentElement = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6482 this.currentElement[this.currentElement.length] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6483 this.currentEvent = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6484 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6485 //Force Safari to focus the new element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6486 this._getSelection().setBaseAndExtent(el, 0, el, 0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6487 if (this.browser.webkit3) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6488 this._getSelection().collapseToStart();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6489 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6490 this._getSelection().collapse(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6491 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6492 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6493 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6494 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6495 //Force CSS Styling for this action...
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6496 this._setEditorStyle(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6497 this._getDoc().execCommand('fontname', false, 'yui-tmp');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6498 var _tmp = [], __tmp, __els = ['font', 'span', 'i', 'b', 'u'];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6499
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6500 if (!this._isElement(this._getSelectedElement(), 'body')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6501 __els[__els.length] = this._getDoc().getElementsByTagName(this._getSelectedElement().tagName);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6502 __els[__els.length] = this._getDoc().getElementsByTagName(this._getSelectedElement().parentNode.tagName);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6503 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6504 for (var _els = 0; _els < __els.length; _els++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6505 var _tmp1 = this._getDoc().getElementsByTagName(__els[_els]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6506 for (var e = 0; e < _tmp1.length; e++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6507 _tmp[_tmp.length] = _tmp1[e];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6508 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6509 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6510
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6511
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6512 for (var i = 0; i < _tmp.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6513 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
6514 if (tagName !== 'span') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6515 el = _elCreate(tagName, tagStyle);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6516 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6517 el = _elCreate(_tmp[i].tagName, tagStyle);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6518 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6519 el.innerHTML = _tmp[i].innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6520 if (this._isElement(_tmp[i], 'ol') || (this._isElement(_tmp[i], 'ul'))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6521 var fc = _tmp[i].getElementsByTagName('li')[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6522 _tmp[i].style.fontFamily = 'inherit';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6523 fc.style.fontFamily = 'inherit';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6524 el.innerHTML = fc.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6525 fc.innerHTML = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6526 fc.appendChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6527 this.currentElement[this.currentElement.length] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6528 } else if (this._isElement(_tmp[i], 'li')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6529 _tmp[i].innerHTML = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6530 _tmp[i].appendChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6531 _tmp[i].style.fontFamily = 'inherit';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6532 this.currentElement[this.currentElement.length] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6533 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6534 if (_tmp[i].parentNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6535 _tmp[i].parentNode.replaceChild(el, _tmp[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6536 this.currentElement[this.currentElement.length] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6537 this.currentEvent = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6538 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6539 //Force Safari to focus the new element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6540 this._getSelection().setBaseAndExtent(el, 0, el, 0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6541 if (this.browser.webkit3) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6542 this._getSelection().collapseToStart();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6543 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6544 this._getSelection().collapse(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6545 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6546 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6547 if (this.browser.ie && tagStyle && tagStyle.fontSize) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6548 this._getSelection().empty();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6549 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6550 if (this.browser.gecko) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6551 this._getSelection().collapseToStart();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6552 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6553 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6554 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6555 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6556 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6557 var len = this.currentElement.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6558 for (var o = 0; o < len; o++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6559 if ((o + 1) != len) { //Skip the last one in the list
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6560 if (this.currentElement[o] && this.currentElement[o].nextSibling) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6561 if (this._isElement(this.currentElement[o], 'br')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6562 this.currentElement[this.currentElement.length] = this.currentElement[o].nextSibling;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6563 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6564 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6565 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6566 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6567 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6568 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6569 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6570 * @method saveHTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6571 * @description Cleans the HTML with the cleanHTML method then places that string back into the textarea.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6572 * @return String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6573 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6574 saveHTML: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6575 var html = this.cleanHTML();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6576 if (this._textarea) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6577 this.get('element').value = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6578 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6579 this.get('element').innerHTML = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6580 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6581 if (this.get('saveEl') !== this.get('element')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6582 var out = this.get('saveEl');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6583 if (Lang.isString(out)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6584 out = Dom.get(out);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6585 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6586 if (out) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6587 if (out.tagName.toLowerCase() === 'textarea') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6588 out.value = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6589 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6590 out.innerHTML = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6591 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6592 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6593 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6594 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6595 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6596 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6597 * @method setEditorHTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6598 * @param {String} incomingHTML The html content to load into the editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6599 * @description Loads HTML into the editors body
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6600 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6601 setEditorHTML: function(incomingHTML) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6602 var html = this._cleanIncomingHTML(incomingHTML);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6603 html = html.replace(/RIGHT_BRACKET/gi, '{');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6604 html = html.replace(/LEFT_BRACKET/gi, '}');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6605 this._getDoc().body.innerHTML = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6606 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6607 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6608 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6609 * @method getEditorHTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6610 * @description Gets the unprocessed/unfiltered HTML from the editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6611 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6612 getEditorHTML: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6613 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6614 var b = this._getDoc().body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6615 if (b === null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6616 return null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6617 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6618 return this._getDoc().body.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6619 } catch (e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6620 return '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6621 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6622 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6623 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6624 * @method show
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6625 * @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
6626 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6627 show: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6628 if (this.browser.gecko) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6629 this._setDesignMode('on');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6630 this.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6631 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6632 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6633 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6634 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6635 self._setInitialContent.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6636 }, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6637 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6638 //Adding this will close all other Editor window's when showing this one.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6639 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6640 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6641 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6642 //Put the iframe back in place
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6643 this.get('iframe').setStyle('position', 'static');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6644 this.get('iframe').setStyle('left', '');
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 * @method hide
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6648 * @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
6649 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6650 hide: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6651 //Adding this will close all other Editor window's.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6652 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6653 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6654 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6655 if (this._fixNodesTimer) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6656 clearTimeout(this._fixNodesTimer);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6657 this._fixNodesTimer = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6658 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6659 if (this._nodeChangeTimer) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6660 clearTimeout(this._nodeChangeTimer);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6661 this._nodeChangeTimer = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6662 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6663 this._lastNodeChange = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6664 //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
6665 this.get('iframe').setStyle('position', 'absolute');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6666 this.get('iframe').setStyle('left', '-9999px');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6667 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6668 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6669 * @method _cleanIncomingHTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6670 * @param {String} html The unfiltered HTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6671 * @description Process the HTML with a few regexes to clean it up and stabilize the input
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6672 * @return {String} The filtered HTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6673 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6674 _cleanIncomingHTML: function(html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6675 html = html.replace(/{/gi, 'RIGHT_BRACKET');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6676 html = html.replace(/}/gi, 'LEFT_BRACKET');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6677
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6678 html = html.replace(/<strong([^>]*)>/gi, '<b$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6679 html = html.replace(/<\/strong>/gi, '</b>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6680
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6681 //replace embed before em check
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6682 html = html.replace(/<embed([^>]*)>/gi, '<YUI_EMBED$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6683 html = html.replace(/<\/embed>/gi, '</YUI_EMBED>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6684
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6685 html = html.replace(/<em([^>]*)>/gi, '<i$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6686 html = html.replace(/<\/em>/gi, '</i>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6687 html = html.replace(/_moz_dirty=""/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6688
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6689 //Put embed tags back in..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6690 html = html.replace(/<YUI_EMBED([^>]*)>/gi, '<embed$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6691 html = html.replace(/<\/YUI_EMBED>/gi, '</embed>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6692 if (this.get('plainText')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6693 html = html.replace(/\n/g, '<br>').replace(/\r/g, '<br>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6694 html = html.replace(/ /gi, '&nbsp;&nbsp;'); //Replace all double spaces
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6695 html = html.replace(/\t/gi, '&nbsp;&nbsp;&nbsp;&nbsp;'); //Replace all tabs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6696 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6697 //Removing Script Tags from the Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6698 html = html.replace(/<script([^>]*)>/gi, '<bad>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6699 html = html.replace(/<\/script([^>]*)>/gi, '</bad>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6700 html = html.replace(/&lt;script([^>]*)&gt;/gi, '<bad>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6701 html = html.replace(/&lt;\/script([^>]*)&gt;/gi, '</bad>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6702 //Replace the line feeds
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6703 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
6704
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6705 //Remove Bad HTML elements (used to be script nodes)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6706 html = html.replace(new RegExp('<bad([^>]*)>(.*?)<\/bad>', 'gi'), '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6707 //Replace the lines feeds
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6708 html = html.replace(/<YUI_LF>/g, '\n');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6709 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6710 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6711 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6712 * @method cleanHTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6713 * @param {String} html The unfiltered HTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6714 * @description Process the HTML with a few regexes to clean it up and stabilize the output
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6715 * @return {String} The filtered HTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6716 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6717 cleanHTML: function(html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6718 //Start Filtering Output
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6719 //Begin RegExs..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6720 if (!html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6721 html = this.getEditorHTML();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6722 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6723 var markup = this.get('markup');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6724 //Make some backups...
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6725 html = this.pre_filter_linebreaks(html, markup);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6726
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6727 //Filter MS Word
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6728 html = this.filter_msword(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6729
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6730 html = html.replace(/<img([^>]*)\/>/gi, '<YUI_IMG$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6731 html = html.replace(/<img([^>]*)>/gi, '<YUI_IMG$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6732
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6733 html = html.replace(/<input([^>]*)\/>/gi, '<YUI_INPUT$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6734 html = html.replace(/<input([^>]*)>/gi, '<YUI_INPUT$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6735
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6736 html = html.replace(/<ul([^>]*)>/gi, '<YUI_UL$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6737 html = html.replace(/<\/ul>/gi, '<\/YUI_UL>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6738 html = html.replace(/<blockquote([^>]*)>/gi, '<YUI_BQ$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6739 html = html.replace(/<\/blockquote>/gi, '<\/YUI_BQ>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6740
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6741 html = html.replace(/<embed([^>]*)>/gi, '<YUI_EMBED$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6742 html = html.replace(/<\/embed>/gi, '<\/YUI_EMBED>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6743
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6744 //Convert b and i tags to strong and em tags
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6745 if ((markup == 'semantic') || (markup == 'xhtml')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6746 html = html.replace(/<i(\s+[^>]*)?>/gi, '<em$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6747 html = html.replace(/<\/i>/gi, '</em>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6748 html = html.replace(/<b(\s+[^>]*)?>/gi, '<strong$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6749 html = html.replace(/<\/b>/gi, '</strong>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6750 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6751
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6752 html = html.replace(/_moz_dirty=""/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6753
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6754 //normalize strikethrough
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6755 html = html.replace(/<strike/gi, '<span style="text-decoration: line-through;"');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6756 html = html.replace(/\/strike>/gi, '/span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6757
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6758
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6759 //Case Changing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6760 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6761 html = html.replace(/text-decoration/gi, 'text-decoration');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6762 html = html.replace(/font-weight/gi, 'font-weight');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6763 html = html.replace(/_width="([^>]*)"/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6764 html = html.replace(/_height="([^>]*)"/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6765 //Cleanup Image URL's
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6766 var url = this._baseHREF.replace(/\//gi, '\\/'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6767 re = new RegExp('src="' + url, 'gi');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6768 html = html.replace(re, 'src="');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6769 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6770 html = html.replace(/<font/gi, '<font');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6771 html = html.replace(/<\/font>/gi, '</font>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6772 html = html.replace(/<span/gi, '<span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6773 html = html.replace(/<\/span>/gi, '</span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6774 if ((markup == 'semantic') || (markup == 'xhtml') || (markup == 'css')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6775 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
6776 html = html.replace(/<u/gi, '<span style="text-decoration: underline;"');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6777 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6778 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
6779 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
6780 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6781 html = html.replace(/\/u>/gi, '/span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6782 if (markup == 'css') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6783 html = html.replace(/<em([^>]*)>/gi, '<i$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6784 html = html.replace(/<\/em>/gi, '</i>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6785 html = html.replace(/<strong([^>]*)>/gi, '<b$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6786 html = html.replace(/<\/strong>/gi, '</b>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6787 html = html.replace(/<b/gi, '<span style="font-weight: bold;"');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6788 html = html.replace(/\/b>/gi, '/span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6789 html = html.replace(/<i/gi, '<span style="font-style: italic;"');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6790 html = html.replace(/\/i>/gi, '/span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6791 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6792 html = html.replace(/ /gi, ' '); //Replace all double spaces and replace with a single
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6793 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6794 html = html.replace(/<u/gi, '<u');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6795 html = html.replace(/\/u>/gi, '/u>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6796 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6797 html = html.replace(/<ol([^>]*)>/gi, '<ol$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6798 html = html.replace(/\/ol>/gi, '/ol>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6799 html = html.replace(/<li/gi, '<li');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6800 html = html.replace(/\/li>/gi, '/li>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6801 html = this.filter_safari(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6802
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6803 html = this.filter_internals(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6804
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6805 html = this.filter_all_rgb(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6806
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6807 //Replace our backups with the real thing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6808 html = this.post_filter_linebreaks(html, markup);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6809
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6810 if (markup == 'xhtml') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6811 html = html.replace(/<YUI_IMG([^>]*)>/g, '<img $1 />');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6812 html = html.replace(/<YUI_INPUT([^>]*)>/g, '<input $1 />');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6813 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6814 html = html.replace(/<YUI_IMG([^>]*)>/g, '<img $1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6815 html = html.replace(/<YUI_INPUT([^>]*)>/g, '<input $1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6816 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6817 html = html.replace(/<YUI_UL([^>]*)>/g, '<ul$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6818 html = html.replace(/<\/YUI_UL>/g, '<\/ul>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6819
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6820 html = this.filter_invalid_lists(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6821
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6822 html = html.replace(/<YUI_BQ([^>]*)>/g, '<blockquote$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6823 html = html.replace(/<\/YUI_BQ>/g, '<\/blockquote>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6824
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6825 html = html.replace(/<YUI_EMBED([^>]*)>/g, '<embed$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6826 html = html.replace(/<\/YUI_EMBED>/g, '<\/embed>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6827
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6828 //This should fix &amp;'s in URL's
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6829 html = html.replace(/ &amp; /gi, ' YUI_AMP ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6830 html = html.replace(/ &amp;/gi, ' YUI_AMP_F ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6831 html = html.replace(/&amp; /gi, ' YUI_AMP_R ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6832 html = html.replace(/&amp;/gi, '&');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6833 html = html.replace(/ YUI_AMP /gi, ' &amp; ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6834 html = html.replace(/ YUI_AMP_F /gi, ' &amp;');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6835 html = html.replace(/ YUI_AMP_R /gi, '&amp; ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6836
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6837 //Trim the output, removing whitespace from the beginning and end
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6838 html = YAHOO.lang.trim(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6839
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6840 if (this.get('removeLineBreaks')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6841 html = html.replace(/\n/g, '').replace(/\r/g, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6842 html = html.replace(/ /gi, ' '); //Replace all double spaces and replace with a single
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6843 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6844
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6845 for (var v in this.invalidHTML) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6846 if (YAHOO.lang.hasOwnProperty(this.invalidHTML, v)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6847 if (Lang.isObject(v) && v.keepContents) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6848 html = html.replace(new RegExp('<' + v + '([^>]*)>(.*?)<\/' + v + '>', 'gi'), '$1');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6849 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6850 html = html.replace(new RegExp('<' + v + '([^>]*)>(.*?)<\/' + v + '>', 'gi'), '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6851 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6852 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6853 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6854
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6855 /* LATER -- Add DOM manipulation
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6856 console.log(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6857 var frag = document.createDocumentFragment();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6858 frag.innerHTML = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6859
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6860 var ps = frag.getElementsByTagName('p'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6861 len = ps.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6862 for (var i = 0; i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6863 var ps2 = ps[i].getElementsByTagName('p');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6864 if (ps2.length) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6865
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6866 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6867
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6868 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6869 html = frag.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6870 console.log(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6871 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6872
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6873 this.fireEvent('cleanHTML', { type: 'cleanHTML', target: this, html: html });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6874
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6875 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6876 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6877 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6878 * @method filter_msword
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6879 * @param String html The HTML string to filter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6880 * @description Filters out msword html attributes and other junk. Activate with filterWord: true in config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6881 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6882 filter_msword: function(html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6883 if (!this.get('filterWord')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6884 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6885 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6886 //Remove the ms o: tags
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6887 html = html.replace(/<o:p>\s*<\/o:p>/g, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6888 html = html.replace(/<o:p>[\s\S]*?<\/o:p>/g, '&nbsp;');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6889
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6890 //Remove the ms w: tags
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6891 html = html.replace( /<w:[^>]*>[\s\S]*?<\/w:[^>]*>/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6892
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6893 //Remove mso-? styles.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6894 html = html.replace( /\s*mso-[^:]+:[^;"]+;?/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6895
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6896 //Remove more bogus MS styles.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6897 html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*;/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6898 html = html.replace( /\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6899 html = html.replace( /\s*TEXT-INDENT: 0cm\s*;/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6900 html = html.replace( /\s*TEXT-INDENT: 0cm\s*"/gi, "\"");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6901 html = html.replace( /\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6902 html = html.replace( /\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"" );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6903 html = html.replace( /\s*tab-stops:[^;"]*;?/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6904 html = html.replace( /\s*tab-stops:[^"]*/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6905
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6906 //Remove XML declarations
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6907 html = html.replace(/<\\?\?xml[^>]*>/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6908
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6909 //Remove lang
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6910 html = html.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6911
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6912 //Remove language tags
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6913 html = html.replace( /<(\w[^>]*) language=([^ |>]*)([^>]*)/gi, "<$1$3");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6914
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6915 //Remove onmouseover and onmouseout events (from MS Word comments effect)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6916 html = html.replace( /<(\w[^>]*) onmouseover="([^\"]*)"([^>]*)/gi, "<$1$3");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6917 html = html.replace( /<(\w[^>]*) onmouseout="([^\"]*)"([^>]*)/gi, "<$1$3");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6918
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6919 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6920 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6921 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6922 * @method filter_invalid_lists
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6923 * @param String html The HTML string to filter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6924 * @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
6925 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6926 filter_invalid_lists: function(html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6927 html = html.replace(/<\/li>\n/gi, '</li>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6928
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6929 html = html.replace(/<\/li><ol>/gi, '</li><li><ol>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6930 html = html.replace(/<\/ol>/gi, '</ol></li>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6931 html = html.replace(/<\/ol><\/li>\n/gi, "</ol>");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6932
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6933 html = html.replace(/<\/li><ul>/gi, '</li><li><ul>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6934 html = html.replace(/<\/ul>/gi, '</ul></li>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6935 html = html.replace(/<\/ul><\/li>\n?/gi, "</ul>");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6936
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6937 html = html.replace(/<\/li>/gi, "</li>");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6938 html = html.replace(/<\/ol>/gi, "</ol>");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6939 html = html.replace(/<ol>/gi, "<ol>");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6940 html = html.replace(/<ul>/gi, "<ul>");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6941 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6942 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6943 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6944 * @method filter_safari
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6945 * @param String html The HTML string to filter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6946 * @description Filters strings specific to Safari
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6947 * @return String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6948 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6949 filter_safari: function(html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6950 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6951 //<span class="Apple-tab-span" style="white-space:pre"> </span>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6952 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
6953 html = html.replace(/Apple-style-span/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6954 html = html.replace(/style="line-height: normal;"/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6955 html = html.replace(/yui-wk-div/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6956 html = html.replace(/yui-wk-p/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6957
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6958
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6959 //Remove bogus LI's
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6960 html = html.replace(/<li><\/li>/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6961 html = html.replace(/<li> <\/li>/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6962 html = html.replace(/<li> <\/li>/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6963 //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
6964 if (this.get('ptags')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6965 html = html.replace(/<div([^>]*)>/g, '<p$1>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6966 html = html.replace(/<\/div>/gi, '</p>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6967 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6968 //html = html.replace(/<div>/gi, '<br>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6969 html = html.replace(/<div([^>]*)>([ tnr]*)<\/div>/gi, '<br>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6970 html = html.replace(/<\/div>/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6971 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6972 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6973 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6974 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6975 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6976 * @method filter_internals
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6977 * @param String html The HTML string to filter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6978 * @description Filters internal RTE strings and bogus attrs we don't want
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6979 * @return String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6980 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6981 filter_internals: function(html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6982 html = html.replace(/\r/g, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6983 //Fix stuff we don't want
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6984 html = html.replace(/<\/?(body|head|html)[^>]*>/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6985 //Fix last BR in LI
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6986 html = html.replace(/<YUI_BR><\/li>/gi, '</li>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6987
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6988 html = html.replace(/yui-tag-span/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6989 html = html.replace(/yui-tag/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6990 html = html.replace(/yui-non/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6991 html = html.replace(/yui-img/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6992 html = html.replace(/ tag="span"/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6993 html = html.replace(/ class=""/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6994 html = html.replace(/ style=""/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6995 html = html.replace(/ class=" "/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6996 html = html.replace(/ class=" "/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6997 html = html.replace(/ target=""/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6998 html = html.replace(/ title=""/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6999
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7000 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7001 html = html.replace(/ class= /gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7002 html = html.replace(/ class= >/gi, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7003 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7004
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7005 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7006 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7007 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7008 * @method filter_all_rgb
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7009 * @param String str The HTML string to filter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7010 * @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
7011 * @return String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7012 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7013 filter_all_rgb: function(str) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7014 var exp = new RegExp("rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)", "gi");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7015 var arr = str.match(exp);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7016 if (Lang.isArray(arr)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7017 for (var i = 0; i < arr.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7018 var color = this.filter_rgb(arr[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7019 str = str.replace(arr[i].toString(), color);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7020 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7021 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7022
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7023 return str;
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_rgb
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7027 * @param String css The CSS string containing rgb(#,#,#);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7028 * @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
7029 * @return String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7030 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7031 filter_rgb: function(css) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7032 if (css.toLowerCase().indexOf('rgb') != -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7033 var exp = new RegExp("(.*?)rgb\\s*?\\(\\s*?([0-9]+).*?,\\s*?([0-9]+).*?,\\s*?([0-9]+).*?\\)(.*?)", "gi");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7034 var rgb = css.replace(exp, "$1,$2,$3,$4,$5").split(',');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7035
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7036 if (rgb.length == 5) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7037 var r = parseInt(rgb[1], 10).toString(16);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7038 var g = parseInt(rgb[2], 10).toString(16);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7039 var b = parseInt(rgb[3], 10).toString(16);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7040
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7041 r = r.length == 1 ? '0' + r : r;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7042 g = g.length == 1 ? '0' + g : g;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7043 b = b.length == 1 ? '0' + b : b;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7044
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7045 css = "#" + r + g + b;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7046 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7047 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7048 return css;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7049 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7050 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7051 * @method pre_filter_linebreaks
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7052 * @param String html The HTML to filter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7053 * @param String markup The markup type to filter to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7054 * @description HTML Pre Filter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7055 * @return String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7056 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7057 pre_filter_linebreaks: function(html, markup) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7058 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7059 html = html.replace(/<br class="khtml-block-placeholder">/gi, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7060 html = html.replace(/<br class="webkit-block-placeholder">/gi, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7061 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7062 html = html.replace(/<br>/gi, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7063 html = html.replace(/<br (.*?)>/gi, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7064 html = html.replace(/<br\/>/gi, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7065 html = html.replace(/<br \/>/gi, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7066 html = html.replace(/<div><YUI_BR><\/div>/gi, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7067 html = html.replace(/<p>(&nbsp;|&#160;)<\/p>/g, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7068 html = html.replace(/<p><br>&nbsp;<\/p>/gi, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7069 html = html.replace(/<p>&nbsp;<\/p>/gi, '<YUI_BR>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7070 //Fix last BR
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7071 html = html.replace(/<YUI_BR>$/, '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7072 //Fix last BR in P
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7073 html = html.replace(/<YUI_BR><\/p>/g, '</p>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7074 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7075 html = html.replace(/&nbsp;&nbsp;&nbsp;&nbsp;/g, '\t');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7076 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7077 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7078 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7079 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7080 * @method post_filter_linebreaks
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7081 * @param String html The HTML to filter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7082 * @param String markup The markup type to filter to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7083 * @description HTML Pre Filter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7084 * @return String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7085 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7086 post_filter_linebreaks: function(html, markup) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7087 if (markup == 'xhtml') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7088 html = html.replace(/<YUI_BR>/g, '<br />');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7089 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7090 html = html.replace(/<YUI_BR>/g, '<br>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7091 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7092 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7093 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7094 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7095 * @method clearEditorDoc
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7096 * @description Clear the doc of the Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7097 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7098 clearEditorDoc: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7099 this._getDoc().body.innerHTML = '&nbsp;';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7100 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7101 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7102 * @method openWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7103 * @description Override Method for Advanced Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7104 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7105 openWindow: function(win) {
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 moveWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7109 * @description Override Method for Advanced Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7110 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7111 moveWindow: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7112 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7113 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7114 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7115 * @method _closeWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7116 * @description Override Method for Advanced Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7117 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7118 _closeWindow: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7119 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7120 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7121 * @method closeWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7122 * @description Override Method for Advanced Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7123 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7124 closeWindow: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7125 //this.unsubscribeAll('afterExecCommand');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7126 this.toolbar.resetAllButtons();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7127 this.focus();
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 * @method destroy
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7131 * @description Destroys the editor, all of it's elements and objects.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7132 * @return {Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7133 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7134 destroy: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7135 if (this._nodeChangeDelayTimer) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7136 clearTimeout(this._nodeChangeDelayTimer);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7137 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7138 this.hide();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7139
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7140 if (this.resize) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7141 this.resize.destroy();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7142 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7143 if (this.dd) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7144 this.dd.unreg();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7145 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7146 if (this.get('panel')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7147 this.get('panel').destroy();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7148 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7149 this.saveHTML();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7150 this.toolbar.destroy();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7151 this.setStyle('visibility', 'visible');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7152 this.setStyle('position', 'static');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7153 this.setStyle('top', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7154 this.setStyle('left', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7155 var textArea = this.get('element');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7156 this.get('element_cont').get('parentNode').replaceChild(textArea, this.get('element_cont').get('element'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7157 this.get('element_cont').get('element').innerHTML = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7158 this.set('handleSubmit', false); //Remove the submit handler
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7159 return true;
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 toString
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7163 * @description Returns a string representing the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7164 * @return {String}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7165 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7166 toString: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7167 var str = 'SimpleEditor';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7168 if (this.get && this.get('element_cont')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7169 str = 'SimpleEditor (#' + this.get('element_cont').get('id') + ')' + ((this.get('disabled') ? ' Disabled' : ''));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7170 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7171 return str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7172 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7173 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7174
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7175 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7176 * @event toolbarLoaded
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7177 * @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
7178 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7179 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7180 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7181 * @event cleanHTML
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7182 * @description Event is fired after the cleanHTML method is called.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7183 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7184 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7185 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7186 * @event afterRender
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7187 * @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
7188 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7189 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7190 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7191 * @event editorContentLoaded
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7192 * @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
7193 * @type YAHOO.util.CustomEvent
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 * @event beforeNodeChange
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7197 * @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
7198 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7199 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7200 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7201 * @event afterNodeChange
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7202 * @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
7203 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7204 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7205 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7206 * @event beforeExecCommand
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7207 * @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
7208 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7209 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7210 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7211 * @event afterExecCommand
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7212 * @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
7213 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7214 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7215 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7216 * @event editorMouseUp
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7217 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7218 * @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
7219 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7220 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7221 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7222 * @event editorMouseDown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7223 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7224 * @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
7225 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7226 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7227 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7228 * @event editorDoubleClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7229 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7230 * @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
7231 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7232 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7233 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7234 * @event editorClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7235 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7236 * @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
7237 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7238 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7239 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7240 * @event editorKeyUp
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7241 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7242 * @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
7243 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7244 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7245 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7246 * @event editorKeyPress
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7247 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7248 * @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
7249 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7250 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7251 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7252 * @event editorKeyDown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7253 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7254 * @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
7255 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7256 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7257 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7258 * @event beforeEditorMouseUp
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7259 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7260 * @description Fires before editor event, returning false will stop the internal processing.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7261 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7262 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7263 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7264 * @event beforeEditorMouseDown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7265 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7266 * @description Fires before editor event, returning false will stop the internal processing.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7267 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7268 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7269 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7270 * @event beforeEditorDoubleClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7271 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7272 * @description Fires before editor event, returning false will stop the internal processing.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7273 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7274 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7275 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7276 * @event beforeEditorClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7277 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7278 * @description Fires before editor event, returning false will stop the internal processing.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7279 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7280 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7281 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7282 * @event beforeEditorKeyUp
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7283 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7284 * @description Fires before editor event, returning false will stop the internal processing.
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 beforeEditorKeyPress
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7289 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7290 * @description Fires before editor event, returning false will stop the internal processing.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7291 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7292 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7293 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7294 * @event beforeEditorKeyDown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7295 * @param {Event} ev The DOM Event that occured
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7296 * @description Fires before editor event, returning false will stop the internal processing.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7297 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7298 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7299
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7300 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7301 * @event editorWindowFocus
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7302 * @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
7303 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7304 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7305 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7306 * @event editorWindowBlur
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7307 * @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
7308 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7309 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7310
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7311
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7312 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7313 * @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
7314 * @class EditorInfo
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7315 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7316 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7317 YAHOO.widget.EditorInfo = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7318 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7319 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7320 * @property _instances
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7321 * @description A reference to all editors on the page.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7322 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7323 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7324 _instances: {},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7325 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7326 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7327 * @property blankImage
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7328 * @description A reference to the blankImage url
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7329 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7330 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7331 blankImage: '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7332 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7333 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7334 * @property window
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7335 * @description A reference to the currently open window object in any editor on the page.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7336 * @type Object <a href="YAHOO.widget.EditorWindow.html">YAHOO.widget.EditorWindow</a>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7337 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7338 window: {},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7339 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7340 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7341 * @property panel
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7342 * @description A reference to the currently open panel in any editor on the page.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7343 * @type Object <a href="YAHOO.widget.Overlay.html">YAHOO.widget.Overlay</a>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7344 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7345 panel: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7346 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7347 * @method getEditorById
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7348 * @description Returns a reference to the Editor object associated with the given textarea
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7349 * @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
7350 * @return Object <a href="YAHOO.widget.Editor.html">YAHOO.widget.Editor</a>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7351 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7352 getEditorById: function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7353 if (!YAHOO.lang.isString(id)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7354 //Not a string, assume a node Reference
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7355 id = id.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7356 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7357 if (this._instances[id]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7358 return this._instances[id];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7359 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7360 return false;
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 * @method saveAll
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7364 * @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
7365 * @param {HTMLElement} form The form to check if this Editor instance belongs to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7366 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7367 saveAll: function(form) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7368 var i, e, items = YAHOO.widget.EditorInfo._instances;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7369 if (form) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7370 for (i in items) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7371 if (Lang.hasOwnProperty(items, i)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7372 e = items[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7373 if (e.get('element').form && (e.get('element').form == form)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7374 e.saveHTML();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7375 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7376 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7377 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7378 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7379 for (i in items) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7380 if (Lang.hasOwnProperty(items, i)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7381 items[i].saveHTML();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7382 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7383 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7384 }
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 * @method toString
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7388 * @description Returns a string representing the EditorInfo.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7389 * @return {String}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7390 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7391 toString: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7392 var len = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7393 for (var i in this._instances) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7394 if (Lang.hasOwnProperty(this._instances, i)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7395 len++;
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 return 'Editor Info (' + len + ' registered intance' + ((len > 1) ? 's' : '') + ')';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7399 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7400 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7401
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7402
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7403
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7404
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7405 })();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7406 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7407 * @module editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7408 * @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
7409 * @namespace YAHOO.widget
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7410 * @requires yahoo, dom, element, event, container_core, simpleeditor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7411 * @optional dragdrop, animation, menu, button, resize
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7412 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7413
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7414 (function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7415 var Dom = YAHOO.util.Dom,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7416 Event = YAHOO.util.Event,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7417 Lang = YAHOO.lang,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7418 Toolbar = YAHOO.widget.Toolbar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7419
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7420 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7421 * 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
7422 * @constructor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7423 * @class Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7424 * @extends YAHOO.widget.SimpleEditor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7425 * @param {String/HTMLElement} el The textarea element to turn into an editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7426 * @param {Object} attrs Object liternal containing configuration parameters.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7427 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7428
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7429 YAHOO.widget.Editor = function(el, attrs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7430 YAHOO.widget.Editor.superclass.constructor.call(this, el, attrs);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7431 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7432
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7433 YAHOO.extend(YAHOO.widget.Editor, YAHOO.widget.SimpleEditor, {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7434 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7435 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7436 * @property _undoCache
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7437 * @description An Array hash of the Undo Levels.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7438 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7439 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7440 _undoCache: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7441 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7442 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7443 * @property _undoLevel
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7444 * @description The index of the current undo state.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7445 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7446 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7447 _undoLevel: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7448 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7449 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7450 * @method _hasUndoLevel
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7451 * @description Checks to see if we have an undo level available
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7452 * @return Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7453 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7454 _hasUndoLevel: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7455 return ((this._undoCache.length > 1) && this._undoLevel);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7456 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7457 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7458 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7459 * @method _undoNodeChange
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7460 * @description nodeChange listener for undo processing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7461 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7462 _undoNodeChange: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7463 var undo_button = this.toolbar.getButtonByValue('undo'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7464 redo_button = this.toolbar.getButtonByValue('redo');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7465 if (undo_button && redo_button) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7466 if (this._hasUndoLevel()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7467 this.toolbar.enableButton(undo_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7468 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7469 if (this._undoLevel < this._undoCache.length) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7470 this.toolbar.enableButton(redo_button);
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 this._lastCommand = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7474 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7475 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7476 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7477 * @method _checkUndo
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7478 * @description Prunes the undo cache when it reaches the maxUndo config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7479 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7480 _checkUndo: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7481 var len = this._undoCache.length,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7482 tmp = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7483 if (len >= this.get('maxUndo')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7484 for (var i = (len - this.get('maxUndo')); i < len; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7485 tmp.push(this._undoCache[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7486 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7487 this._undoCache = tmp;
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 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7492 * @method _putUndo
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7493 * @description Puts the content of the Editor into the _undoCache.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7494 * //TODO Convert the hash to a series of TEXTAREAS to store state in.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7495 * @param {String} str The content of the Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7496 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7497 _putUndo: function(str) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7498 if (this._undoLevel === this._undoCache.length) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7499 this._undoCache.push(str);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7500 this._undoLevel = this._undoCache.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7501 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7502 var str = this.getEditorHTML();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7503 var last = this._undoCache[this._undoLevel];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7504 if (last) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7505 if (str !== last) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7506 this._undoCache = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7507 this._undoLevel = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7508 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7509 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7510 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7511 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7512 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7513 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7514 * @method _getUndo
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7515 * @description Get's a level from the undo cache.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7516 * @param {Number} index The index of the undo level we want to get.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7517 * @return {String}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7518 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7519 _getUndo: function(index) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7520 this._undoLevel = index;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7521 return this._undoCache[index];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7522 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7523 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7524 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7525 * @method _storeUndo
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7526 * @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
7527 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7528 _storeUndo: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7529 if (this._lastCommand === 'undo' || this._lastCommand === 'redo') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7530 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7531 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7532 if (!this._undoCache) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7533 this._undoCache = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7534 this._undoLevel = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7535 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7536 this._checkUndo();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7537 var str = this.getEditorHTML();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7538 //var last = this._undoCache[this._undoCache.length - 1];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7539 var last = this._undoCache[this._undoLevel - 1];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7540 if (last) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7541 if (str !== last) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7542 this._putUndo(str);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7543 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7544 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7545 this._putUndo(str);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7546 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7547 this._undoNodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7548 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7549 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7550 * @property STR_BEFORE_EDITOR
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7551 * @description The accessibility string for the element before the iFrame
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7552 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7553 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7554 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
7555 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7556 * @property STR_CLOSE_WINDOW
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7557 * @description The Title of the close button in the Editor Window
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7558 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7559 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7560 STR_CLOSE_WINDOW: 'Close Window',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7561 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7562 * @property STR_CLOSE_WINDOW_NOTE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7563 * @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
7564 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7565 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7566 STR_CLOSE_WINDOW_NOTE: 'To close this window use the Control + Shift + W key',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7567 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7568 * @property STR_IMAGE_PROP_TITLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7569 * @description The title for the Image Property Editor Window
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7570 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7571 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7572 STR_IMAGE_PROP_TITLE: 'Image Options',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7573 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7574 * @property STR_IMAGE_TITLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7575 * @description The label string for Image Description
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7576 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7577 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7578 STR_IMAGE_TITLE: 'Description',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7579 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7580 * @property STR_IMAGE_SIZE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7581 * @description The label string for Image Size
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7582 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7583 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7584 STR_IMAGE_SIZE: 'Size',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7585 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7586 * @property STR_IMAGE_ORIG_SIZE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7587 * @description The label string for Original Image Size
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7588 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7589 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7590 STR_IMAGE_ORIG_SIZE: 'Original Size',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7591 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7592 * @property STR_IMAGE_COPY
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7593 * @description The label string for the image copy and paste message for Opera and Safari
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7594 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7595 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7596 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
7597 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7598 * @property STR_IMAGE_PADDING
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7599 * @description The label string for the image padding.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7600 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7601 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7602 STR_IMAGE_PADDING: 'Padding',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7603 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7604 * @property STR_IMAGE_BORDER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7605 * @description The label string for the image border.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7606 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7607 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7608 STR_IMAGE_BORDER: 'Border',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7609 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7610 * @property STR_IMAGE_BORDER_SIZE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7611 * @description The label string for the image border size.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7612 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7613 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7614 STR_IMAGE_BORDER_SIZE: 'Border Size',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7615 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7616 * @property STR_IMAGE_BORDER_TYPE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7617 * @description The label string for the image border type.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7618 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7619 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7620 STR_IMAGE_BORDER_TYPE: 'Border Type',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7621 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7622 * @property STR_IMAGE_TEXTFLOW
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7623 * @description The label string for the image text flow.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7624 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7625 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7626 STR_IMAGE_TEXTFLOW: 'Text Flow',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7627 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7628 * @property STR_LOCAL_FILE_WARNING
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7629 * @description The label string for the local file warning.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7630 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7631 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7632 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
7633 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7634 * @property STR_LINK_PROP_TITLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7635 * @description The label string for the Link Property Editor Window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7636 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7637 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7638 STR_LINK_PROP_TITLE: 'Link Options',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7639 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7640 * @property STR_LINK_PROP_REMOVE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7641 * @description The label string for the Remove link from text link inside the property editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7642 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7643 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7644 STR_LINK_PROP_REMOVE: 'Remove link from text',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7645 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7646 * @property STR_LINK_NEW_WINDOW
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7647 * @description The string for the open in a new window label.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7648 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7649 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7650 STR_LINK_NEW_WINDOW: 'Open in a new window.',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7651 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7652 * @property STR_LINK_TITLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7653 * @description The string for the link description.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7654 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7655 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7656 STR_LINK_TITLE: 'Description',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7657 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7658 * @property STR_NONE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7659 * @description The string for the word none.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7660 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7661 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7662 STR_NONE: 'none',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7663 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7664 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7665 * @property CLASS_LOCAL_FILE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7666 * @description CSS class applied to an element when it's found to have a local url.
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 CLASS_LOCAL_FILE: 'warning-localfile',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7670 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7671 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7672 * @property CLASS_HIDDEN
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7673 * @description CSS class applied to the body when the hiddenelements button is pressed.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7674 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7675 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7676 CLASS_HIDDEN: 'yui-hidden',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7677 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7678 * @method init
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7679 * @description The Editor class' initialization method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7680 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7681 init: function(p_oElement, p_oAttributes) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7682
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7683 this._windows = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7684 if (!this._defaultToolbar) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7685 this._defaultToolbar = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7686 collapse: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7687 titlebar: 'Text Editing Tools',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7688 draggable: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7689 buttonType: 'advanced',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7690 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7691 { group: 'fontstyle', label: 'Font Name and Size',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7692 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7693 { type: 'select', label: 'Arial', value: 'fontname', disabled: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7694 menu: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7695 { text: 'Arial', checked: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7696 { text: 'Arial Black' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7697 { text: 'Comic Sans MS' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7698 { text: 'Courier New' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7699 { text: 'Lucida Console' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7700 { text: 'Tahoma' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7701 { text: 'Times New Roman' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7702 { text: 'Trebuchet MS' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7703 { text: 'Verdana' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7704 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7705 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7706 { type: 'spin', label: '13', value: 'fontsize', range: [ 9, 75 ], disabled: true }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7707 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7708 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7709 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7710 { group: 'textstyle', label: 'Font Style',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7711 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7712 { type: 'push', label: 'Bold CTRL + SHIFT + B', value: 'bold' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7713 { type: 'push', label: 'Italic CTRL + SHIFT + I', value: 'italic' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7714 { type: 'push', label: 'Underline CTRL + SHIFT + U', value: 'underline' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7715 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7716 { type: 'push', label: 'Subscript', value: 'subscript', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7717 { type: 'push', label: 'Superscript', value: 'superscript', disabled: true }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7718 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7719 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7720 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7721 { group: 'textstyle2', label: '&nbsp;',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7722 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7723 { type: 'color', label: 'Font Color', value: 'forecolor', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7724 { type: 'color', label: 'Background Color', value: 'backcolor', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7725 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7726 { type: 'push', label: 'Remove Formatting', value: 'removeformat', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7727 { type: 'push', label: 'Show/Hide Hidden Elements', value: 'hiddenelements' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7728 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7729 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7730 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7731 { group: 'undoredo', label: 'Undo/Redo',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7732 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7733 { type: 'push', label: 'Undo', value: 'undo', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7734 { type: 'push', label: 'Redo', value: 'redo', disabled: true }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7735
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7736 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7737 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7738 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7739 { group: 'alignment', label: 'Alignment',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7740 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7741 { type: 'push', label: 'Align Left CTRL + SHIFT + [', value: 'justifyleft' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7742 { type: 'push', label: 'Align Center CTRL + SHIFT + |', value: 'justifycenter' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7743 { type: 'push', label: 'Align Right CTRL + SHIFT + ]', value: 'justifyright' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7744 { type: 'push', label: 'Justify', value: 'justifyfull' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7745 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7746 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7747 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7748 { group: 'parastyle', label: 'Paragraph Style',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7749 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7750 { type: 'select', label: 'Normal', value: 'heading', disabled: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7751 menu: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7752 { text: 'Normal', value: 'none', checked: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7753 { text: 'Header 1', value: 'h1' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7754 { text: 'Header 2', value: 'h2' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7755 { text: 'Header 3', value: 'h3' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7756 { text: 'Header 4', value: 'h4' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7757 { text: 'Header 5', value: 'h5' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7758 { text: 'Header 6', value: 'h6' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7759 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7760 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7761 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7762 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7763 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7764
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7765 { group: 'indentlist2', label: 'Indenting and Lists',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7766 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7767 { type: 'push', label: 'Indent', value: 'indent', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7768 { type: 'push', label: 'Outdent', value: 'outdent', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7769 { type: 'push', label: 'Create an Unordered List', value: 'insertunorderedlist' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7770 { type: 'push', label: 'Create an Ordered List', value: 'insertorderedlist' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7771 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7772 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7773 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7774 { group: 'insertitem', label: 'Insert Item',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7775 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7776 { type: 'push', label: 'HTML Link CTRL + SHIFT + L', value: 'createlink', disabled: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7777 { type: 'push', label: 'Insert Image', value: 'insertimage' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7778 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7779 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7780 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7781 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7782 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7783
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7784 if (!this._defaultImageToolbarConfig) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7785 this._defaultImageToolbarConfig = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7786 buttonType: this._defaultToolbar.buttonType,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7787 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7788 { group: 'textflow', label: this.STR_IMAGE_TEXTFLOW + ':',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7789 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7790 { type: 'push', label: 'Left', value: 'left' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7791 { type: 'push', label: 'Inline', value: 'inline' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7792 { type: 'push', label: 'Block', value: 'block' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7793 { type: 'push', label: 'Right', value: 'right' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7794 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7795 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7796 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7797 { group: 'padding', label: this.STR_IMAGE_PADDING + ':',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7798 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7799 { type: 'spin', label: '0', value: 'padding', range: [0, 50] }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7800 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7801 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7802 { type: 'separator' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7803 { group: 'border', label: this.STR_IMAGE_BORDER + ':',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7804 buttons: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7805 { type: 'select', label: this.STR_IMAGE_BORDER_SIZE, value: 'bordersize',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7806 menu: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7807 { text: 'none', value: '0', checked: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7808 { text: '1px', value: '1' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7809 { text: '2px', value: '2' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7810 { text: '3px', value: '3' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7811 { text: '4px', value: '4' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7812 { text: '5px', value: '5' }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7813 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7814 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7815 { type: 'select', label: this.STR_IMAGE_BORDER_TYPE, value: 'bordertype', disabled: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7816 menu: [
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7817 { text: 'Solid', value: 'solid', checked: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7818 { text: 'Dashed', value: 'dashed' },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7819 { text: 'Dotted', value: 'dotted' }
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: 'color', label: 'Border Color', value: 'bordercolor', disabled: true }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7823 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7824 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7825 ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7826 };
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 YAHOO.widget.Editor.superclass.init.call(this, p_oElement, p_oAttributes);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7830 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7831 _render: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7832 YAHOO.widget.Editor.superclass._render.apply(this, arguments);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7833 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7834 //Render the panel in another thread and delay it a little..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7835 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7836 self._renderPanel.call(self);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7837 }, 800);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7838 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7839 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7840 * @method initAttributes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7841 * @description Initializes all of the configuration attributes used to create
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7842 * the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7843 * @param {Object} attr Object literal specifying a set of
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7844 * configuration attributes used to create the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7845 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7846 initAttributes: function(attr) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7847 YAHOO.widget.Editor.superclass.initAttributes.call(this, attr);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7848
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7849 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7850 * @attribute localFileWarning
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7851 * @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
7852 * @default true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7853 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7854 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7855 this.setAttributeConfig('localFileWarning', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7856 value: attr.locaFileWarning || true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7857 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7858
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7859 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7860 * @attribute hiddencss
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7861 * @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
7862 * @default <code><pre>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7863 .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
7864 .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
7865 .yui-hidden li, .yui-hidden table {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7866 border: 1px dotted #ccc;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7867 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7868 .yui-hidden .yui-non {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7869 border: none;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7870 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7871 .yui-hidden img {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7872 padding: 2px;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7873 }</pre></code>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7874 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7875 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7876 this.setAttributeConfig('hiddencss', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7877 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
7878 writeOnce: true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7879 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7880
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7881 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7882 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7883 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7884 * @method _windows
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7885 * @description A reference to the HTML elements used for the body of Editor Windows.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7886 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7887 _windows: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7888 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7889 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7890 * @method _defaultImageToolbar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7891 * @description A reference to the Toolbar Object inside Image Editor Window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7892 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7893 _defaultImageToolbar: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7894 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7895 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7896 * @method _defaultImageToolbarConfig
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7897 * @description Config to be used for the default Image Editor Window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7898 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7899 _defaultImageToolbarConfig: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7900 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7901 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7902 * @method _fixNodes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7903 * @description Fix href and imgs as well as remove invalid HTML.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7904 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7905 _fixNodes: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7906 YAHOO.widget.Editor.superclass._fixNodes.call(this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7907 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7908 var url = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7909
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7910 var imgs = this._getDoc().getElementsByTagName('img');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7911 for (var im = 0; im < imgs.length; im++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7912 if (imgs[im].getAttribute('href', 2)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7913 url = imgs[im].getAttribute('src', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7914 if (this._isLocalFile(url)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7915 Dom.addClass(imgs[im], this.CLASS_LOCAL_FILE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7916 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7917 Dom.removeClass(imgs[im], this.CLASS_LOCAL_FILE);
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 var fakeAs = this._getDoc().body.getElementsByTagName('a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7922 for (var a = 0; a < fakeAs.length; a++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7923 if (fakeAs[a].getAttribute('href', 2)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7924 url = fakeAs[a].getAttribute('href', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7925 if (this._isLocalFile(url)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7926 Dom.addClass(fakeAs[a], this.CLASS_LOCAL_FILE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7927 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7928 Dom.removeClass(fakeAs[a], this.CLASS_LOCAL_FILE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7929 }
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 } catch(e) {}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7933 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7934 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7935 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7936 * @property _disabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7937 * @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
7938 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7939 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7940 _disabled: [ 'createlink', 'forecolor', 'backcolor', 'fontname', 'fontsize', 'superscript', 'subscript', 'removeformat', 'heading', 'indent' ],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7941 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7942 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7943 * @property _alwaysDisabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7944 * @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
7945 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7946 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7947 _alwaysDisabled: { 'outdent': true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7948 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7949 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7950 * @property _alwaysEnabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7951 * @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
7952 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7953 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7954 _alwaysEnabled: { hiddenelements: true },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7955 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7956 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7957 * @method _handleKeyDown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7958 * @param {Event} ev The event we are working on.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7959 * @description Override method that handles some new keydown events inside the iFrame document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7960 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7961 _handleKeyDown: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7962 YAHOO.widget.Editor.superclass._handleKeyDown.call(this, ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7963 var doExec = false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7964 action = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7965 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7966
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7967 switch (ev.keyCode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7968 //case 219: //Left
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7969 case this._keyMap.JUSTIFY_LEFT.key: //Left
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7970 if (this._checkKey(this._keyMap.JUSTIFY_LEFT, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7971 action = 'justifyleft';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7972 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7973 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7974 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7975 //case 220: //Center
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7976 case this._keyMap.JUSTIFY_CENTER.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7977 if (this._checkKey(this._keyMap.JUSTIFY_CENTER, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7978 action = 'justifycenter';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7979 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7980 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7981 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7982 case 221: //Right
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7983 case this._keyMap.JUSTIFY_RIGHT.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7984 if (this._checkKey(this._keyMap.JUSTIFY_RIGHT, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7985 action = 'justifyright';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7986 doExec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7987 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7988 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7989 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7990 if (doExec && action) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7991 this.execCommand(action, null);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7992 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7993 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7994 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7995 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7996 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7997 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7998 * @method _renderCreateLinkWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7999 * @description Pre renders the CreateLink window so we get faster window opening.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8000 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8001 _renderCreateLinkWindow: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8002 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
8003 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
8004 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
8005
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8006 var body = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8007 body.innerHTML = str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8008
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8009 var unlinkCont = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8010 unlinkCont.className = 'removeLink';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8011 var unlink = document.createElement('a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8012 unlink.href = '#';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8013 unlink.innerHTML = this.STR_LINK_PROP_REMOVE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8014 unlink.title = this.STR_LINK_PROP_REMOVE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8015 Event.on(unlink, 'click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8016 Event.stopEvent(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8017 this.unsubscribeAll('afterExecCommand');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8018 this.execCommand('unlink');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8019 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8020 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8021 unlinkCont.appendChild(unlink);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8022 body.appendChild(unlinkCont);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8023
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8024 this._windows.createlink = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8025 this._windows.createlink.body = body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8026 //body.style.display = 'none';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8027 Event.on(body, 'keyup', function(e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8028 Event.stopPropagation(e);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8029 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8030 this.get('panel').editor_form.appendChild(body);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8031 this.fireEvent('windowCreateLinkRender', { type: 'windowCreateLinkRender', panel: this.get('panel'), body: body });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8032 return body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8033 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8034 _handleCreateLinkClick: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8035 var el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8036 if (this._isElement(el, 'img')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8037 this.STOP_EXEC_COMMAND = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8038 this.currentElement[0] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8039 this.toolbar.fireEvent('insertimageClick', { type: 'insertimageClick', target: this.toolbar });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8040 this.fireEvent('afterExecCommand', { type: 'afterExecCommand', target: this });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8041 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8042 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8043 if (this.get('limitCommands')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8044 if (!this.toolbar.getButtonByValue('createlink')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8045 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8046 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8047 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8048
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8049 this.on('afterExecCommand', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8050 var win = new YAHOO.widget.EditorWindow('createlink', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8051 width: '350px'
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8052 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8053
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8054 var el = this.currentElement[0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8055 url = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8056 title = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8057 target = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8058 localFile = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8059 if (el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8060 win.el = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8061 if (el.getAttribute('href', 2) !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8062 url = el.getAttribute('href', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8063 if (this._isLocalFile(url)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8064 //Local File throw Warning
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8065 win.setFooter(this.STR_LOCAL_FILE_WARNING);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8066 localFile = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8067 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8068 win.setFooter(' ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8069 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8070 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8071 if (el.getAttribute('title') !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8072 title = el.getAttribute('title');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8073 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8074 if (el.getAttribute('target') !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8075 target = el.getAttribute('target');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8076 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8077 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8078 var body = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8079 if (this._windows.createlink && this._windows.createlink.body) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8080 body = this._windows.createlink.body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8081 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8082 body = this._renderCreateLinkWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8083 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8084
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8085 win.setHeader(this.STR_LINK_PROP_TITLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8086 win.setBody(body);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8087
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8088 Event.purgeElement(this.get('id') + '_createlink_url');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8089
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8090 Dom.get(this.get('id') + '_createlink_url').value = url;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8091 Dom.get(this.get('id') + '_createlink_title').value = title;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8092 Dom.get(this.get('id') + '_createlink_target').checked = ((target) ? true : false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8093
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8094
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8095 Event.onAvailable(this.get('id') + '_createlink_url', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8096 var id = this.get('id');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8097 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8098 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8099 YAHOO.util.Dom.get(id + '_createlink_url').focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8100 } catch (e) {}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8101 }, 50);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8102
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8103 if (this._isLocalFile(url)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8104 //Local File throw Warning
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8105 Dom.addClass(this.get('id') + '_createlink_url', 'warning');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8106 this.get('panel').setFooter(this.STR_LOCAL_FILE_WARNING);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8107 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8108 Dom.removeClass(this.get('id') + '_createlink_url', 'warning');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8109 this.get('panel').setFooter(' ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8110 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8111 Event.on(this.get('id') + '_createlink_url', 'blur', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8112 var url = Dom.get(this.get('id') + '_createlink_url');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8113 if (this._isLocalFile(url.value)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8114 //Local File throw Warning
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8115 Dom.addClass(url, 'warning');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8116 this.get('panel').setFooter(this.STR_LOCAL_FILE_WARNING);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8117 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8118 Dom.removeClass(url, 'warning');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8119 this.get('panel').setFooter(' ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8120 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8121 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8122 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8123
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8124 this.openWindow(win);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8125
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8126 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8127 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8128 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8129 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8130 * @method _handleCreateLinkWindowClose
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8131 * @description Handles the closing of the Link Properties Window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8132 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8133 _handleCreateLinkWindowClose: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8134
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8135 var url = Dom.get(this.get('id') + '_createlink_url'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8136 target = Dom.get(this.get('id') + '_createlink_target'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8137 title = Dom.get(this.get('id') + '_createlink_title'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8138 el = arguments[0].win.el,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8139 a = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8140
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8141 if (url && url.value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8142 var urlValue = url.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8143 if ((urlValue.indexOf(':/'+'/') == -1) && (urlValue.substring(0,1) != '/') && (urlValue.substring(0, 6).toLowerCase() != 'mailto')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8144 if ((urlValue.indexOf('@') != -1) && (urlValue.substring(0, 6).toLowerCase() != 'mailto')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8145 //Found an @ sign, prefix with mailto:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8146 urlValue = 'mailto:' + urlValue;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8147 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8148 // :// not found adding
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8149 if (urlValue.substring(0, 1) != '#') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8150 urlValue = 'http:/'+'/' + urlValue;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8151 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8152
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8153 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8154 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8155 el.setAttribute('href', urlValue);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8156 if (target.checked) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8157 el.setAttribute('target', target.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8158 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8159 el.setAttribute('target', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8160 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8161 el.setAttribute('title', ((title.value) ? title.value : ''));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8162
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8163 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8164 var _span = this._getDoc().createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8165 _span.innerHTML = el.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8166 Dom.addClass(_span, 'yui-non');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8167 el.parentNode.replaceChild(_span, el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8168 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8169 Dom.removeClass(url, 'warning');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8170 Dom.get(this.get('id') + '_createlink_url').value = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8171 Dom.get(this.get('id') + '_createlink_title').value = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8172 Dom.get(this.get('id') + '_createlink_target').checked = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8173 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8174 this.currentElement = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8175
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8176 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8177 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8178 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8179 * @method _renderInsertImageWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8180 * @description Pre renders the InsertImage window so we get faster window opening.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8181 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8182 _renderInsertImageWindow: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8183 var el = this.currentElement[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8184 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
8185 var body = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8186 body.innerHTML = str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8187
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8188 var tbarCont = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8189 tbarCont.id = this.get('id') + '_img_toolbar';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8190 body.appendChild(tbarCont);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8191
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8192 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
8193 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
8194 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
8195 var div = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8196 div.innerHTML = str2;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8197 body.appendChild(div);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8198
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8199 var o = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8200 Lang.augmentObject(o, this._defaultImageToolbarConfig); //Break the config reference
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8201
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8202 var tbar = new YAHOO.widget.Toolbar(tbarCont, o);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8203 tbar.editor_el = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8204 this._defaultImageToolbar = tbar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8205
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8206 var cont = tbar.get('cont');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8207 var hw = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8208 hw.className = 'yui-toolbar-group yui-toolbar-group-height-width height-width';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8209 hw.innerHTML = '<h3>' + this.STR_IMAGE_SIZE + ':</h3>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8210 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
8211 cont.insertBefore(hw, cont.firstChild);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8212
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8213 Event.onAvailable(this.get('id') + '_insertimage_width', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8214 Event.on(this.get('id') + '_insertimage_width', 'blur', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8215 var value = parseInt(Dom.get(this.get('id') + '_insertimage_width').value, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8216 if (value > 5) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8217 this._defaultImageToolbar.editor_el.style.width = value + 'px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8218 //Removed moveWindow call so the window doesn't jump
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8219 //this.moveWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8220 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8221 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8222 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8223 Event.onAvailable(this.get('id') + '_insertimage_height', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8224 Event.on(this.get('id') + '_insertimage_height', 'blur', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8225 var value = parseInt(Dom.get(this.get('id') + '_insertimage_height').value, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8226 if (value > 5) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8227 this._defaultImageToolbar.editor_el.style.height = value + 'px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8228 //Removed moveWindow call so the window doesn't jump
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8229 //this.moveWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8230 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8231 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8232 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8233
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8234
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8235 tbar.on('colorPickerClicked', function(o) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8236 var size = '1', type = 'solid', color = 'black', el = this._defaultImageToolbar.editor_el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8237
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8238 if (el.style.borderLeftWidth) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8239 size = parseInt(el.style.borderLeftWidth, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8240 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8241 if (el.style.borderLeftStyle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8242 type = el.style.borderLeftStyle;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8243 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8244 if (el.style.borderLeftColor) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8245 color = el.style.borderLeftColor;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8246 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8247 var borderString = size + 'px ' + type + ' #' + o.color;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8248 el.style.border = borderString;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8249 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8250
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8251 tbar.on('buttonClick', function(o) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8252 var value = o.button.value,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8253 el = this._defaultImageToolbar.editor_el,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8254 borderString = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8255 if (o.button.menucmd) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8256 value = o.button.menucmd;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8257 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8258 var size = '1', type = 'solid', color = 'black';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8259
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8260 /* All border calcs are done on the left border
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8261 since our default interface only supports
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8262 one border size/type and color */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8263 if (el.style.borderLeftWidth) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8264 size = parseInt(el.style.borderLeftWidth, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8265 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8266 if (el.style.borderLeftStyle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8267 type = el.style.borderLeftStyle;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8268 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8269 if (el.style.borderLeftColor) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8270 color = el.style.borderLeftColor;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8271 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8272 switch(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8273 case 'bordersize':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8274 if (this.browser.webkit && this._lastImage) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8275 Dom.removeClass(this._lastImage, 'selected');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8276 this._lastImage = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8277 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8278
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8279 borderString = parseInt(o.button.value, 10) + 'px ' + type + ' ' + color;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8280 el.style.border = borderString;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8281 if (parseInt(o.button.value, 10) > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8282 tbar.enableButton('bordertype');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8283 tbar.enableButton('bordercolor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8284 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8285 tbar.disableButton('bordertype');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8286 tbar.disableButton('bordercolor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8287 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8288 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8289 case 'bordertype':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8290 if (this.browser.webkit && this._lastImage) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8291 Dom.removeClass(this._lastImage, 'selected');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8292 this._lastImage = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8293 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8294 borderString = size + 'px ' + o.button.value + ' ' + color;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8295 el.style.border = borderString;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8296 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8297 case 'right':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8298 case 'left':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8299 tbar.deselectAllButtons();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8300 el.style.display = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8301 el.align = o.button.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8302 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8303 case 'inline':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8304 tbar.deselectAllButtons();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8305 el.style.display = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8306 el.align = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8307 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8308 case 'block':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8309 tbar.deselectAllButtons();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8310 el.style.display = 'block';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8311 el.align = 'center';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8312 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8313 case 'padding':
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8314 var _button = tbar.getButtonById(o.button.id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8315 el.style.margin = _button.get('label') + 'px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8316 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8317 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8318 tbar.selectButton(o.button.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8319 if (value !== 'padding') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8320 this.moveWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8321 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8322 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8323
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8324
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8325
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8326 if (this.get('localFileWarning')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8327 Event.on(this.get('id') + '_insertimage_link', 'blur', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8328 var url = Dom.get(this.get('id') + '_insertimage_link');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8329 if (this._isLocalFile(url.value)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8330 //Local File throw Warning
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8331 Dom.addClass(url, 'warning');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8332 this.get('panel').setFooter(this.STR_LOCAL_FILE_WARNING);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8333 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8334 Dom.removeClass(url, 'warning');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8335 this.get('panel').setFooter(' ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8336 //Adobe AIR Code
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8337 if ((this.browser.webkit && !this.browser.webkit3 || this.browser.air) || this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8338 this.get('panel').setFooter(this.STR_IMAGE_COPY);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8339 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8340 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8341 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8342 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8343
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8344 Event.on(this.get('id') + '_insertimage_url', 'blur', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8345 var url = Dom.get(this.get('id') + '_insertimage_url'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8346 el = this.currentElement[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8347
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8348 if (url.value && el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8349 if (url.value == el.getAttribute('src', 2)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8350 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8351 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8352 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8353 if (this._isLocalFile(url.value)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8354 //Local File throw Warning
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8355 Dom.addClass(url, 'warning');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8356 this.get('panel').setFooter(this.STR_LOCAL_FILE_WARNING);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8357 } else if (this.currentElement[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8358 Dom.removeClass(url, 'warning');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8359 this.get('panel').setFooter(' ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8360 //Adobe AIR Code
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8361 if ((this.browser.webkit && !this.browser.webkit3 || this.browser.air) || this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8362 this.get('panel').setFooter(this.STR_IMAGE_COPY);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8363 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8364
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8365 if (url && url.value && (url.value != this.STR_IMAGE_HERE)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8366 this.currentElement[0].setAttribute('src', url.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8367 var self = this,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8368 img = new Image();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8369
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8370 img.onerror = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8371 url.value = self.STR_IMAGE_HERE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8372 img.setAttribute('src', self.get('blankimage'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8373 self.currentElement[0].setAttribute('src', self.get('blankimage'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8374 YAHOO.util.Dom.get(self.get('id') + '_insertimage_height').value = img.height;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8375 YAHOO.util.Dom.get(self.get('id') + '_insertimage_width').value = img.width;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8376 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8377 var id = this.get('id');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8378 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8379 YAHOO.util.Dom.get(id + '_insertimage_height').value = img.height;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8380 YAHOO.util.Dom.get(id + '_insertimage_width').value = img.width;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8381 if (self.currentElement && self.currentElement[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8382 if (!self.currentElement[0]._height) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8383 self.currentElement[0]._height = img.height;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8384 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8385 if (!self.currentElement[0]._width) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8386 self.currentElement[0]._width = img.width;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8387 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8388 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8389 //Removed moveWindow call so the window doesn't jump
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8390 //self.moveWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8391 }, 800); //Bumped the timeout up to account for larger images..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8392
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8393 if (url.value != this.STR_IMAGE_HERE) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8394 img.src = url.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8395 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8396 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8397 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8398 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8399
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8400
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8401
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8402 this._windows.insertimage = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8403 this._windows.insertimage.body = body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8404 //body.style.display = 'none';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8405 this.get('panel').editor_form.appendChild(body);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8406 this.fireEvent('windowInsertImageRender', { type: 'windowInsertImageRender', panel: this.get('panel'), body: body, toolbar: tbar });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8407 return body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8408 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8409 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8410 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8411 * @method _handleInsertImageClick
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8412 * @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
8413 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8414 _handleInsertImageClick: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8415 if (this.get('limitCommands')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8416 if (!this.toolbar.getButtonByValue('insertimage')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8417 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8418 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8419 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8420 this.on('afterExecCommand', function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8421 var el = this.currentElement[0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8422 body = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8423 link = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8424 target = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8425 tbar = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8426 title = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8427 src = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8428 align = '',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8429 height = 75,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8430 width = 75,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8431 padding = 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8432 oheight = 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8433 owidth = 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8434 blankimage = false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8435 win = new YAHOO.widget.EditorWindow('insertimage', {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8436 width: '415px'
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8437 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8438
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8439 if (!el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8440 el = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8441 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8442 if (el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8443 win.el = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8444 if (el.getAttribute('src')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8445 src = el.getAttribute('src', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8446 if (src.indexOf(this.get('blankimage')) != -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8447 src = this.STR_IMAGE_HERE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8448 blankimage = true;
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 if (el.getAttribute('alt', 2)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8452 title = el.getAttribute('alt', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8453 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8454 if (el.getAttribute('title', 2)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8455 title = el.getAttribute('title', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8456 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8457
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8458 if (el.parentNode && this._isElement(el.parentNode, 'a')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8459 link = el.parentNode.getAttribute('href', 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8460 if (el.parentNode.getAttribute('target') !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8461 target = el.parentNode.getAttribute('target');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8462 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8463 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8464 height = parseInt(el.height, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8465 width = parseInt(el.width, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8466 if (el.style.height) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8467 height = parseInt(el.style.height, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8468 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8469 if (el.style.width) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8470 width = parseInt(el.style.width, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8471 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8472 if (el.style.margin) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8473 padding = parseInt(el.style.margin, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8474 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8475 if (!blankimage) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8476 if (!el._height) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8477 el._height = height;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8478 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8479 if (!el._width) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8480 el._width = width;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8481 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8482 oheight = el._height;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8483 owidth = el._width;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8484 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8485 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8486 if (this._windows.insertimage && this._windows.insertimage.body) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8487 body = this._windows.insertimage.body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8488 this._defaultImageToolbar.resetAllButtons();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8489 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8490 body = this._renderInsertImageWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8491 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8492
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8493 tbar = this._defaultImageToolbar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8494 tbar.editor_el = el;
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 var bsize = '0',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8498 btype = 'solid';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8499
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8500 if (el.style.borderLeftWidth) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8501 bsize = parseInt(el.style.borderLeftWidth, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8502 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8503 if (el.style.borderLeftStyle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8504 btype = el.style.borderLeftStyle;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8505 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8506 var bs_button = tbar.getButtonByValue('bordersize'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8507 bSizeStr = ((parseInt(bsize, 10) > 0) ? '' : this.STR_NONE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8508 bs_button.set('label', '<span class="yui-toolbar-bordersize-' + bsize + '">' + bSizeStr + '</span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8509 this._updateMenuChecked('bordersize', bsize, tbar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8510
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8511 var bt_button = tbar.getButtonByValue('bordertype');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8512 bt_button.set('label', '<span class="yui-toolbar-bordertype-' + btype + '">asdfa</span>');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8513 this._updateMenuChecked('bordertype', btype, tbar);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8514 if (parseInt(bsize, 10) > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8515 tbar.enableButton(bt_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8516 tbar.enableButton(bs_button);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8517 tbar.enableButton('bordercolor');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8518 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8519
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8520 if ((el.align == 'right') || (el.align == 'left')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8521 tbar.selectButton(el.align);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8522 } else if (el.style.display == 'block') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8523 tbar.selectButton('block');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8524 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8525 tbar.selectButton('inline');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8526 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8527 if (parseInt(el.style.marginLeft, 10) > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8528 tbar.getButtonByValue('padding').set('label', ''+parseInt(el.style.marginLeft, 10));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8529 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8530 if (el.style.borderSize) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8531 tbar.selectButton('bordersize');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8532 tbar.selectButton(parseInt(el.style.borderSize, 10));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8533 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8534 tbar.getButtonByValue('padding').set('label', ''+padding);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8535
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8536
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8537
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8538 win.setHeader(this.STR_IMAGE_PROP_TITLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8539 win.setBody(body);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8540 //Adobe AIR Code
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8541 if ((this.browser.webkit && !this.browser.webkit3 || this.browser.air) || this.browser.opera) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8542 win.setFooter(this.STR_IMAGE_COPY);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8543 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8544 this.openWindow(win);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8545 Dom.get(this.get('id') + '_insertimage_url').value = src;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8546 Dom.get(this.get('id') + '_insertimage_title').value = title;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8547 Dom.get(this.get('id') + '_insertimage_link').value = link;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8548 Dom.get(this.get('id') + '_insertimage_target').checked = ((target) ? true : false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8549 Dom.get(this.get('id') + '_insertimage_width').value = width;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8550 Dom.get(this.get('id') + '_insertimage_height').value = height;
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 (((height != oheight) || (width != owidth)) && (!blankimage)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8554 var s = document.createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8555 s.className = 'info';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8556 s.innerHTML = this.STR_IMAGE_ORIG_SIZE + ': ('+ owidth +' x ' + oheight + ')';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8557 if (Dom.get(this.get('id') + '_insertimage_height').nextSibling) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8558 var old = Dom.get(this.get('id') + '_insertimage_height').nextSibling;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8559 old.parentNode.removeChild(old);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8560 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8561 Dom.get(this.get('id') + '_insertimage_height').parentNode.appendChild(s);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8562 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8563
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8564 this.toolbar.selectButton('insertimage');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8565 var id = this.get('id');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8566 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8567 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8568 YAHOO.util.Dom.get(id + '_insertimage_url').focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8569 if (blankimage) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8570 YAHOO.util.Dom.get(id + '_insertimage_url').select();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8571 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8572 } catch (e) {}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8573 }, 50);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8574
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8575 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8576 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8577 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8578 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8579 * @method _handleInsertImageWindowClose
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8580 * @description Handles the closing of the Image Properties Window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8581 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8582 _handleInsertImageWindowClose: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8583 var url = Dom.get(this.get('id') + '_insertimage_url'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8584 title = Dom.get(this.get('id') + '_insertimage_title'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8585 link = Dom.get(this.get('id') + '_insertimage_link'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8586 target = Dom.get(this.get('id') + '_insertimage_target'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8587 el = arguments[0].win.el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8588
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8589 if (url && url.value && (url.value != this.STR_IMAGE_HERE)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8590 el.setAttribute('src', url.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8591 el.setAttribute('title', title.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8592 el.setAttribute('alt', title.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8593 var par = el.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8594 if (link.value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8595 var urlValue = link.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8596 if ((urlValue.indexOf(':/'+'/') == -1) && (urlValue.substring(0,1) != '/') && (urlValue.substring(0, 6).toLowerCase() != 'mailto')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8597 if ((urlValue.indexOf('@') != -1) && (urlValue.substring(0, 6).toLowerCase() != 'mailto')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8598 //Found an @ sign, prefix with mailto:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8599 urlValue = 'mailto:' + urlValue;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8600 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8601 // :// not found adding
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8602 urlValue = 'http:/'+'/' + urlValue;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8603 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8604 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8605 if (par && this._isElement(par, 'a')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8606 par.setAttribute('href', urlValue);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8607 if (target.checked) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8608 par.setAttribute('target', target.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8609 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8610 par.setAttribute('target', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8611 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8612 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8613 var _a = this._getDoc().createElement('a');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8614 _a.setAttribute('href', urlValue);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8615 if (target.checked) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8616 _a.setAttribute('target', target.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8617 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8618 _a.setAttribute('target', '');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8619 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8620 el.parentNode.replaceChild(_a, el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8621 _a.appendChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8622 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8623 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8624 if (par && this._isElement(par, 'a')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8625 par.parentNode.replaceChild(el, par);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8626 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8627 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8628 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8629 //No url/src given, remove the node from the document
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8630 el.parentNode.removeChild(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8631 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8632 Dom.get(this.get('id') + '_insertimage_url').value = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8633 Dom.get(this.get('id') + '_insertimage_title').value = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8634 Dom.get(this.get('id') + '_insertimage_link').value = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8635 Dom.get(this.get('id') + '_insertimage_target').checked = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8636 Dom.get(this.get('id') + '_insertimage_width').value = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8637 Dom.get(this.get('id') + '_insertimage_height').value = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8638 this._defaultImageToolbar.resetAllButtons();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8639 this.currentElement = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8640 this.nodeChange();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8641 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8642 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8643 * @property EDITOR_PANEL_ID
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8644 * @description HTML id to give the properties window in the DOM.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8645 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8646 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8647 EDITOR_PANEL_ID: '-panel',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8648 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8649 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8650 * @method _renderPanel
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8651 * @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
8652 * @return {<a href="YAHOO.widget.Overlay.html">YAHOO.widget.Overlay</a>}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8653 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8654 _renderPanel: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8655 var panelEl = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8656 Dom.addClass(panelEl, 'yui-editor-panel');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8657 panelEl.id = this.get('id') + this.EDITOR_PANEL_ID;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8658 panelEl.style.position = 'absolute';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8659 panelEl.style.top = '-9999px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8660 panelEl.style.left = '-9999px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8661 document.body.appendChild(panelEl);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8662 this.get('element_cont').insertBefore(panelEl, this.get('element_cont').get('firstChild'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8663
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 var panel = new YAHOO.widget.Overlay(this.get('id') + this.EDITOR_PANEL_ID, {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8667 width: '300px',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8668 iframe: true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8669 visible: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8670 underlay: 'none',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8671 draggable: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8672 close: false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8673 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8674 this.set('panel', panel);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8675
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8676 panel.setBody('---');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8677 panel.setHeader(' ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8678 panel.setFooter(' ');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8679
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8680
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8681 var body = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8682 body.className = this.CLASS_PREFIX + '-body-cont';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8683 for (var b in this.browser) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8684 if (this.browser[b]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8685 Dom.addClass(body, b);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8686 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8687 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8688 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8689 Dom.addClass(body, ((YAHOO.widget.Button && (this._defaultToolbar.buttonType == 'advanced')) ? 'good-button' : 'no-button'));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8690
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8691 var _note = document.createElement('h3');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8692 _note.className = 'yui-editor-skipheader';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8693 _note.innerHTML = this.STR_CLOSE_WINDOW_NOTE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8694 body.appendChild(_note);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8695 var form = document.createElement('fieldset');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8696 panel.editor_form = form;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8697
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8698 body.appendChild(form);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8699 var _close = document.createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8700 _close.innerHTML = 'X';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8701 _close.title = this.STR_CLOSE_WINDOW;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8702 _close.className = 'close';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8703
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8704 Event.on(_close, 'click', this.closeWindow, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8705
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8706 var _knob = document.createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8707 _knob.innerHTML = '^';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8708 _knob.className = 'knob';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8709 panel.editor_knob = _knob;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8710
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8711 var _header = document.createElement('h3');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8712 panel.editor_header = _header;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8713 _header.innerHTML = '<span></span>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8714
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8715 panel.setHeader(' '); //Clear the current header
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8716 panel.appendToHeader(_header);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8717 _header.appendChild(_close);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8718 _header.appendChild(_knob);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8719 panel.setBody(' '); //Clear the current body
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8720 panel.setFooter(' '); //Clear the current footer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8721 panel.appendToBody(body); //Append the new DOM node to it
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8722
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8723 Event.on(panel.element, 'click', function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8724 Event.stopPropagation(ev);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8725 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8726
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8727 var fireShowEvent = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8728 panel.bringToTop();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8729 YAHOO.util.Dom.setStyle(this.element, 'display', 'block');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8730 this._handleWindowInputs(false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8731 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8732 panel.showEvent.subscribe(fireShowEvent, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8733 panel.hideEvent.subscribe(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8734 this._handleWindowInputs(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8735 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8736 panel.renderEvent.subscribe(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8737 this._renderInsertImageWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8738 this._renderCreateLinkWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8739 this.fireEvent('windowRender', { type: 'windowRender', panel: panel });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8740 this._handleWindowInputs(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8741 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8742
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8743 if (this.DOMReady) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8744 this.get('panel').render();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8745 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8746 Event.onDOMReady(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8747 this.get('panel').render();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8748 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8749 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8750 return this.get('panel');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8751 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8752 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8753 * @method _handleWindowInputs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8754 * @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
8755 * @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
8756 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8757 _handleWindowInputs: function(disable) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8758 if (!Lang.isBoolean(disable)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8759 disable = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8760 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8761 var inputs = this.get('panel').element.getElementsByTagName('input');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8762 for (var i = 0; i < inputs.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8763 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8764 inputs[i].disabled = disable;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8765 } catch (e) {}
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 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8769 * @method openWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8770 * @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
8771 * @description Opens a new "window/panel"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8772 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8773 openWindow: function(win) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8774
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8775 var self = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8776 window.setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8777 self.toolbar.set('disabled', true); //Disable the toolbar when an editor window is open..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8778 }, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8779 Event.on(document, 'keydown', this._closeWindow, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8780
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8781 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8782 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8783 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8784
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8785 var xy = Dom.getXY(this.currentElement[0]),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8786 elXY = Dom.getXY(this.get('iframe').get('element')),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8787 panel = this.get('panel'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8788 newXY = [(xy[0] + elXY[0] - 20), (xy[1] + elXY[1] + 10)],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8789 wWidth = (parseInt(win.attrs.width, 10) / 2),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8790 align = 'center',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8791 body = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8792
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8793 this.fireEvent('beforeOpenWindow', { type: 'beforeOpenWindow', win: win, panel: panel });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8794
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8795 var form = panel.editor_form;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8796
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8797 var wins = this._windows;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8798 for (var b in wins) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8799 if (Lang.hasOwnProperty(wins, b)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8800 if (wins[b] && wins[b].body) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8801 if (b == win.name) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8802 Dom.setStyle(wins[b].body, 'display', 'block');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8803 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8804 Dom.setStyle(wins[b].body, 'display', 'none');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8805 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8806 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8807 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8808 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8809
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8810 if (this._windows[win.name].body) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8811 Dom.setStyle(this._windows[win.name].body, 'display', 'block');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8812 form.appendChild(this._windows[win.name].body);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8813 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8814 if (Lang.isObject(win.body)) { //Assume it's a reference
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8815 form.appendChild(win.body);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8816 } else { //Assume it's a string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8817 var _tmp = document.createElement('div');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8818 _tmp.innerHTML = win.body;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8819 form.appendChild(_tmp);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8820 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8821 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8822 panel.editor_header.firstChild.innerHTML = win.header;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8823 if (win.footer !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8824 panel.setFooter(win.footer);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8825 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8826 panel.cfg.setProperty('width', win.attrs.width);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8827
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8828 this.currentWindow = win;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8829 this.moveWindow(true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8830 panel.show();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8831 this.fireEvent('afterOpenWindow', { type: 'afterOpenWindow', win: win, panel: panel });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8832 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8833 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8834 * @method moveWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8835 * @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
8836 * @description Realign the window with the currentElement and reposition the knob above the panel.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8837 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8838 moveWindow: function(force) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8839 if (!this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8840 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8841 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8842 var win = this.currentWindow,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8843 xy = Dom.getXY(this.currentElement[0]),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8844 elXY = Dom.getXY(this.get('iframe').get('element')),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8845 panel = this.get('panel'),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8846 //newXY = [(xy[0] + elXY[0] - 20), (xy[1] + elXY[1] + 10)],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8847 newXY = [(xy[0] + elXY[0]), (xy[1] + elXY[1])],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8848 wWidth = (parseInt(win.attrs.width, 10) / 2),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8849 align = 'center',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8850 orgXY = panel.cfg.getProperty('xy') || [0,0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8851 _knob = panel.editor_knob,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8852 xDiff = 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8853 yDiff = 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8854 anim = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8855
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8856
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8857 newXY[0] = ((newXY[0] - wWidth) + 20);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8858 //Account for the Scroll bars in a scrolled editor window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8859 newXY[0] = newXY[0] - Dom.getDocumentScrollLeft(this._getDoc());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8860 newXY[1] = newXY[1] - Dom.getDocumentScrollTop(this._getDoc());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8861
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8862 if (this._isElement(this.currentElement[0], 'img')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8863 if (this.currentElement[0].src.indexOf(this.get('blankimage')) != -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8864 newXY[0] = (newXY[0] + (75 / 2)); //Placeholder size
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8865 newXY[1] = (newXY[1] + 75); //Placeholder sizea
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8866 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8867 var w = parseInt(this.currentElement[0].width, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8868 var h = parseInt(this.currentElement[0].height, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8869 newXY[0] = (newXY[0] + (w / 2));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8870 newXY[1] = (newXY[1] + h);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8871 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8872 newXY[1] = newXY[1] + 15;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8873 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8874 var fs = Dom.getStyle(this.currentElement[0], 'fontSize');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8875 if (fs && fs.indexOf && fs.indexOf('px') != -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8876 newXY[1] = newXY[1] + parseInt(Dom.getStyle(this.currentElement[0], 'fontSize'), 10) + 5;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8877 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8878 newXY[1] = newXY[1] + 20;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8879 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8880 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8881 if (newXY[0] < elXY[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8882 newXY[0] = elXY[0] + 5;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8883 align = 'left';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8884 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8885
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8886 if ((newXY[0] + (wWidth * 2)) > (elXY[0] + parseInt(this.get('iframe').get('element').clientWidth, 10))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8887 newXY[0] = ((elXY[0] + parseInt(this.get('iframe').get('element').clientWidth, 10)) - (wWidth * 2) - 5);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8888 align = 'right';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8889 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8890
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8891 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8892 xDiff = (newXY[0] - orgXY[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8893 yDiff = (newXY[1] - orgXY[1]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8894 } catch (e) {}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8895
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8896
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8897 var iTop = elXY[1] + parseInt(this.get('height'), 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8898 var iLeft = elXY[0] + parseInt(this.get('width'), 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8899 if (newXY[1] > iTop) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8900 newXY[1] = iTop;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8901 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8902 if (newXY[0] > iLeft) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8903 newXY[0] = (iLeft / 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8904 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8905
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8906 //Convert negative numbers to positive so we can get the difference in distance
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8907 xDiff = ((xDiff < 0) ? (xDiff * -1) : xDiff);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8908 yDiff = ((yDiff < 0) ? (yDiff * -1) : yDiff);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8909
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8910 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
8911 var _knobLeft = 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8912 elW = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8913
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8914 if (this.currentElement[0].width) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8915 elW = (parseInt(this.currentElement[0].width, 10) / 2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8916 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8917
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8918 var leftOffset = xy[0] + elXY[0] + elW;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8919 _knobLeft = leftOffset - newXY[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8920 //Check to see if the knob will go off either side & reposition it
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8921 if (_knobLeft > (parseInt(win.attrs.width, 10) - 1)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8922 _knobLeft = ((parseInt(win.attrs.width, 10) - 30) - 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8923 } else if (_knobLeft < 40) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8924 _knobLeft = 1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8925 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8926 if (isNaN(_knobLeft)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8927 _knobLeft = 1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8928 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8929 if (force) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8930 if (_knob) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8931 _knob.style.left = _knobLeft + 'px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8932 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8933 //Removed Animation from a forced move..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8934 panel.cfg.setProperty('xy', newXY);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8935 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8936 if (this.get('animate')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8937 anim = new YAHOO.util.Anim(panel.element, {}, 0.5, YAHOO.util.Easing.easeOut);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8938 anim.attributes = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8939 top: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8940 to: newXY[1]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8941 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8942 left: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8943 to: newXY[0]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8944 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8945 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8946 anim.onComplete.subscribe(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8947 panel.cfg.setProperty('xy', newXY);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8948 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8949 //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
8950 var iframeAnim = new YAHOO.util.Anim(panel.iframe, anim.attributes, 0.5, YAHOO.util.Easing.easeOut);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8951
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8952 var _knobAnim = new YAHOO.util.Anim(_knob, {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8953 left: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8954 to: _knobLeft
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8955 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8956 }, 0.6, YAHOO.util.Easing.easeOut);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8957 anim.animate();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8958 iframeAnim.animate();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8959 _knobAnim.animate();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8960 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8961 _knob.style.left = _knobLeft + 'px';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8962 panel.cfg.setProperty('xy', newXY);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8963 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8964 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8965 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8966 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8967 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8968 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8969 * @method _closeWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8970 * @description Close the currently open EditorWindow with the Escape key.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8971 * @param {Event} ev The keypress Event that we are trapping
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8972 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8973 _closeWindow: function(ev) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8974 //if ((ev.charCode == 87) && ev.shiftKey && ev.ctrlKey) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8975 if (this._checkKey(this._keyMap.CLOSE_WINDOW, ev)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8976 if (this.currentWindow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8977 this.closeWindow();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8978 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8979 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8980 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8981 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8982 * @method closeWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8983 * @description Close the currently open EditorWindow.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8984 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8985 closeWindow: function(keepOpen) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8986 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
8987 this.fireEvent('closeWindow', { type: 'closeWindow', win: this.currentWindow });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8988 this.currentWindow = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8989 this.get('panel').hide();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8990 this.get('panel').cfg.setProperty('xy', [-900,-900]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8991 this.get('panel').syncIframe(); //Needed to move the iframe with the hidden panel
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8992 this.unsubscribeAll('afterExecCommand');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8993 this.toolbar.set('disabled', false); //enable the toolbar now that the window is closed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8994 this.toolbar.resetAllButtons();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8995 this.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8996 Event.removeListener(document, 'keydown', this._closeWindow);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8997 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8998
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8999 /* {{{ Command Overrides - These commands are only over written when we are using the advanced version */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9000
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9001 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9002 * @method cmd_undo
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9003 * @description Pulls an item from the Undo stack and updates the Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9004 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9005 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9006 cmd_undo: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9007 if (this._hasUndoLevel()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9008 var c_html = this.getEditorHTML(), html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9009 if (!this._undoLevel) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9010 this._undoLevel = this._undoCache.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9011 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9012 this._undoLevel = (this._undoLevel - 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9013 if (this._undoCache[this._undoLevel]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9014 html = this._getUndo(this._undoLevel);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9015 if (html != c_html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9016 this.setEditorHTML(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9017 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9018 this._undoLevel = (this._undoLevel - 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9019 html = this._getUndo(this._undoLevel);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9020 if (html != c_html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9021 this.setEditorHTML(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9022 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9023 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9024 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9025 this._undoLevel = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9026 this.toolbar.disableButton('undo');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9027 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9028 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9029 return [false];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9030 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9031
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9032 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9033 * @method cmd_redo
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9034 * @description Pulls an item from the Undo stack and updates the Editor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9035 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9036 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9037 cmd_redo: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9038 this._undoLevel = this._undoLevel + 1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9039 if (this._undoLevel >= this._undoCache.length) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9040 this._undoLevel = this._undoCache.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9041 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9042 if (this._undoCache[this._undoLevel]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9043 var html = this._getUndo(this._undoLevel);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9044 this.setEditorHTML(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9045 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9046 this.toolbar.disableButton('redo');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9047 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9048 return [false];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9049 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9050
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9051 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9052 * @method cmd_heading
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9053 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9054 * @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
9055 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9056 cmd_heading: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9057 var exec = true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9058 el = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9059 action = 'heading',
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9060 _sel = this._getSelection(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9061 _selEl = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9062
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9063 if (_selEl) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9064 _sel = _selEl;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9065 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9066
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9067 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9068 action = 'formatblock';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9069 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9070 if (value == this.STR_NONE) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9071 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
9072 if (_sel.parentNode.tagName.toLowerCase().substring(0,1) == 'h') {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9073 _sel = _sel.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9074 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9075 if (this._isElement(_sel, 'html')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9076 return [false];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9077 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9078 el = this._swapEl(_selEl, 'span', function(el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9079 el.className = 'yui-non';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9080 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9081 this._selectNode(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9082 this.currentElement[0] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9083 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9084 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9085 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9086 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
9087 el = this._swapEl(_selEl, value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9088 this._selectNode(el);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9089 this.currentElement[0] = el;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9090 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9091 this._createCurrentElement(value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9092 this._selectNode(this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9093 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9094 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9095 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9096 return [exec, action];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9097 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9098 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9099 * @method cmd_hiddenelements
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9100 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9101 * @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
9102 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9103 cmd_hiddenelements: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9104 if (this._showingHiddenElements) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9105 //Don't auto highlight the hidden button
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9106 this._lastButton = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9107 this._showingHiddenElements = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9108 this.toolbar.deselectButton('hiddenelements');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9109 Dom.removeClass(this._getDoc().body, this.CLASS_HIDDEN);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9110 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9111 this._showingHiddenElements = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9112 Dom.addClass(this._getDoc().body, this.CLASS_HIDDEN);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9113 this.toolbar.selectButton('hiddenelements');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9114 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9115 return [false];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9116 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9117 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9118 * @method cmd_removeformat
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9119 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9120 * @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
9121 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9122 cmd_removeformat: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9123 var exec = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9124 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9125 * @knownissue Remove Format issue
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9126 * @browser Safari 2.x
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9127 * @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
9128 * 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
9129 * So here we are making the best possible guess and acting on it.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9130 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9131 if (this.browser.webkit && !this._getDoc().queryCommandEnabled('removeformat')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9132 var _txt = this._getSelection()+'';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9133 this._createCurrentElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9134 this.currentElement[0].className = 'yui-non';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9135 this.currentElement[0].innerHTML = _txt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9136 for (var i = 1; i < this.currentElement.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9137 this.currentElement[i].parentNode.removeChild(this.currentElement[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9138 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9139
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9140 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9141 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9142 return [exec];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9143 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9144 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9145 * @method cmd_script
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9146 * @param action action passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9147 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9148 * @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
9149 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9150 cmd_script: function(action, value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9151 var exec = true, tag = action.toLowerCase().substring(0, 3),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9152 _span = null, _selEl = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9153
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9154 if (this.browser.webkit) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9155 if (this._isElement(_selEl, tag)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9156 _span = this._swapEl(this.currentElement[0], 'span', function(el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9157 el.className = 'yui-non';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9158 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9159 this._selectNode(_span);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9160 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9161 this._createCurrentElement(tag);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9162 var _sub = this._swapEl(this.currentElement[0], tag);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9163 this._selectNode(_sub);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9164 this.currentElement[0] = _sub;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9165 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9166 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9167 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9168 return exec;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9169 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9170 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9171 * @method cmd_superscript
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9172 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9173 * @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
9174 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9175 cmd_superscript: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9176 return [this.cmd_script('superscript', value)];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9177 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9178 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9179 * @method cmd_subscript
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9180 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9181 * @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
9182 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9183 cmd_subscript: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9184 return [this.cmd_script('subscript', value)];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9185 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9186 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9187 * @method cmd_indent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9188 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9189 * @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
9190 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9191 cmd_indent: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9192 var exec = true, selEl = this._getSelectedElement(), _bq = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9193
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9194 //if (this.browser.webkit || this.browser.ie || this.browser.gecko) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9195 //if (this.browser.webkit || this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9196 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9197 if (this._isElement(selEl, 'blockquote')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9198 _bq = this._getDoc().createElement('blockquote');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9199 _bq.innerHTML = selEl.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9200 selEl.innerHTML = '';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9201 selEl.appendChild(_bq);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9202 this._selectNode(_bq);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9203 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9204 _bq = this._getDoc().createElement('blockquote');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9205 var html = this._getRange().htmlText;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9206 _bq.innerHTML = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9207 this._createCurrentElement('blockquote');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9208 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9209 for (var i = 0; i < this.currentElement.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9210 _bq = this._getDoc().createElement('blockquote');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9211 _bq.innerHTML = this.currentElement[i].innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9212 this.currentElement[i].parentNode.replaceChild(_bq, this.currentElement[i]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9213 this.currentElement[i] = _bq;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9214 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9215 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9216 this.currentElement[0].parentNode.replaceChild(_bq, this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9217 this.currentElement[0] = _bq;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9218 this._selectNode(this.currentElement[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9219 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9220 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9221 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9222 value = 'blockquote';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9223 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9224 return [exec, 'formatblock', value];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9225 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9226 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9227 * @method cmd_outdent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9228 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9229 * @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
9230 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9231 cmd_outdent: function(value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9232 var exec = true, selEl = this._getSelectedElement(), _bq = null, _span = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9233 //if (this.browser.webkit || this.browser.ie || this.browser.gecko) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9234 if (this.browser.webkit || this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9235 //if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9236 selEl = this._getSelectedElement();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9237 if (this._isElement(selEl, 'blockquote')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9238 var par = selEl.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9239 if (this._isElement(selEl.parentNode, 'blockquote')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9240 par.innerHTML = selEl.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9241 this._selectNode(par);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9242 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9243 _span = this._getDoc().createElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9244 _span.innerHTML = selEl.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9245 YAHOO.util.Dom.addClass(_span, 'yui-non');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9246 par.replaceChild(_span, selEl);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9247 this._selectNode(_span);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9248 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9249 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9250 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9251 exec = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9252 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9253 value = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9254 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9255 return [exec, 'outdent', value];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9256 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9257 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9258 * @method cmd_justify
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9259 * @param dir The direction to justify
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9260 * @description This is a factory method for the justify family of commands.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9261 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9262 cmd_justify: function(dir) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9263 if (this.browser.ie) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9264 if (this._hasSelection()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9265 this._createCurrentElement('span');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9266 this._swapEl(this.currentElement[0], 'div', function(el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9267 el.style.textAlign = dir;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9268 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9269
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9270 return [false];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9271 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9272 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9273 return [true, 'justify' + dir, ''];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9274 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9275 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9276 * @method cmd_justifycenter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9277 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9278 * @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
9279 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9280 cmd_justifycenter: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9281 return [this.cmd_justify('center')];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9282 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9283 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9284 * @method cmd_justifyleft
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9285 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9286 * @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
9287 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9288 cmd_justifyleft: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9289 return [this.cmd_justify('left')];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9290 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9291 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9292 * @method cmd_justifyright
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9293 * @param value Value passed from the execCommand method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9294 * @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
9295 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9296 cmd_justifyright: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9297 return [this.cmd_justify('right')];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9298 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9299 /* }}}*/
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9300 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9301 * @method toString
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9302 * @description Returns a string representing the editor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9303 * @return {String}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9304 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9305 toString: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9306 var str = 'Editor';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9307 if (this.get && this.get('element_cont')) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9308 str = 'Editor (#' + this.get('element_cont').get('id') + ')' + ((this.get('disabled') ? ' Disabled' : ''));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9309 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9310 return str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9311 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9312 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9313 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9314 * @event beforeOpenWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9315 * @param {<a href="YAHOO.widget.EditorWindow.html">EditorWindow</a>} win The EditorWindow object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9316 * @param {Overlay} panel The Overlay object that is used to create the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9317 * @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
9318 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9319 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9320 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9321 * @event afterOpenWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9322 * @param {<a href="YAHOO.widget.EditorWindow.html">EditorWindow</a>} win The EditorWindow object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9323 * @param {Overlay} panel The Overlay object that is used to create the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9324 * @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
9325 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9326 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9327 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9328 * @event closeWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9329 * @param {<a href="YAHOO.widget.EditorWindow.html">EditorWindow</a>} win The EditorWindow object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9330 * @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
9331 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9332 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9333 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9334 * @event windowCMDOpen
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9335 * @param {<a href="YAHOO.widget.EditorWindow.html">EditorWindow</a>} win The EditorWindow object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9336 * @param {Overlay} panel The Overlay object that is used to create the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9337 * @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
9338 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9339 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9340 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9341 * @event windowCMDClose
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9342 * @param {<a href="YAHOO.widget.EditorWindow.html">EditorWindow</a>} win The EditorWindow object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9343 * @param {Overlay} panel The Overlay object that is used to create the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9344 * @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
9345 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9346 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9347 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9348 * @event windowRender
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9349 * @param {<a href="YAHOO.widget.EditorWindow.html">EditorWindow</a>} win The EditorWindow object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9350 * @param {Overlay} panel The Overlay object that is used to create the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9351 * @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
9352 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9353 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9354 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9355 * @event windowInsertImageRender
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9356 * @param {Overlay} panel The Overlay object that is used to create the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9357 * @param {HTMLElement} body The HTML element used as the body of the window..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9358 * @param {Toolbar} toolbar A reference to the toolbar object used inside this window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9359 * @description Event fired when the pre render of the Insert Image window has finished.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9360 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9361 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9362 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9363 * @event windowCreateLinkRender
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9364 * @param {Overlay} panel The Overlay object that is used to create the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9365 * @param {HTMLElement} body The HTML element used as the body of the window..
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9366 * @description Event fired when the pre render of the Create Link window has finished.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9367 * @type YAHOO.util.CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9368 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9369
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9370
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9371
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9372 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9373 * @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
9374 * 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
9375 * @class EditorWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9376 * @param {String} name The name of the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9377 * @param {Object} attrs Attributes for the window. Current attributes used are : height and width
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9378 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9379 YAHOO.widget.EditorWindow = function(name, attrs) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9380 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9381 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9382 * @property name
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9383 * @description A unique name for the window
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9384 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9385 this.name = name.replace(' ', '_');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9386 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9387 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9388 * @property attrs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9389 * @description The window attributes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9390 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9391 this.attrs = attrs;
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 YAHOO.widget.EditorWindow.prototype = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9395 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9396 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9397 * @property header
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9398 * @description Holder for the header of the window, used in Editor.openWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9399 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9400 header: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9401 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9402 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9403 * @property body
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9404 * @description Holder for the body of the window, used in Editor.openWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9405 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9406 body: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9407 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9408 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9409 * @property footer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9410 * @description Holder for the footer of the window, used in Editor.openWindow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9411 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9412 footer: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9413 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9414 * @method setHeader
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9415 * @description Sets the header for the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9416 * @param {String/HTMLElement} str The string or DOM reference to be used as the windows header.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9417 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9418 setHeader: function(str) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9419 this.header = str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9420 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9421 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9422 * @method setBody
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9423 * @description Sets the body for the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9424 * @param {String/HTMLElement} str The string or DOM reference to be used as the windows body.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9425 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9426 setBody: function(str) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9427 this.body = str;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9428 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9429 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9430 * @method setFooter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9431 * @description Sets the footer for the window.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9432 * @param {String/HTMLElement} str The string or DOM reference to be used as the windows footer.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9433 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9434 setFooter: function(str) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9435 this.footer = str;
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 * @method toString
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9439 * @description Returns a string representing the EditorWindow.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9440 * @return {String}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9441 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9442 toString: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9443 return 'Editor Window (' + this.name + ')';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9444 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9445 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9446 })();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9447 YAHOO.register("editor", YAHOO.widget.Editor, {version: "2.8.0r4", build: "2449"});