tenon 1.1.2 → 1.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/tenon/version.rb +1 -1
- metadata +1 -60
- data/app/assets/javascripts/ckeditor/samples/css/samples.css +0 -1640
- data/app/assets/javascripts/ckeditor/samples/img/github-top.png +0 -0
- data/app/assets/javascripts/ckeditor/samples/img/header-bg.png +0 -0
- data/app/assets/javascripts/ckeditor/samples/img/header-separator.png +0 -0
- data/app/assets/javascripts/ckeditor/samples/img/logo.png +0 -0
- data/app/assets/javascripts/ckeditor/samples/img/navigation-tip.png +0 -0
- data/app/assets/javascripts/ckeditor/samples/index.html +0 -128
- data/app/assets/javascripts/ckeditor/samples/js/sample.js +0 -53
- data/app/assets/javascripts/ckeditor/samples/js/sf.js +0 -17
- data/app/assets/javascripts/ckeditor/samples/old/ajax.html +0 -85
- data/app/assets/javascripts/ckeditor/samples/old/api.html +0 -210
- data/app/assets/javascripts/ckeditor/samples/old/appendto.html +0 -59
- data/app/assets/javascripts/ckeditor/samples/old/assets/inlineall/logo.png +0 -0
- data/app/assets/javascripts/ckeditor/samples/old/assets/outputxhtml/outputxhtml.css +0 -204
- data/app/assets/javascripts/ckeditor/samples/old/assets/posteddata.php +0 -59
- data/app/assets/javascripts/ckeditor/samples/old/assets/sample.jpg +0 -0
- data/app/assets/javascripts/ckeditor/samples/old/assets/uilanguages/languages.js +0 -7
- data/app/assets/javascripts/ckeditor/samples/old/datafiltering.html +0 -508
- data/app/assets/javascripts/ckeditor/samples/old/dialog/assets/my_dialog.js +0 -48
- data/app/assets/javascripts/ckeditor/samples/old/dialog/dialog.html +0 -190
- data/app/assets/javascripts/ckeditor/samples/old/divreplace.html +0 -144
- data/app/assets/javascripts/ckeditor/samples/old/enterkey/enterkey.html +0 -106
- data/app/assets/javascripts/ckeditor/samples/old/index.html +0 -125
- data/app/assets/javascripts/ckeditor/samples/old/inlineall.html +0 -314
- data/app/assets/javascripts/ckeditor/samples/old/inlinebycode.html +0 -124
- data/app/assets/javascripts/ckeditor/samples/old/inlinetextarea.html +0 -113
- data/app/assets/javascripts/ckeditor/samples/old/jquery.html +0 -103
- data/app/assets/javascripts/ckeditor/samples/old/readonly.html +0 -76
- data/app/assets/javascripts/ckeditor/samples/old/replacebyclass.html +0 -60
- data/app/assets/javascripts/ckeditor/samples/old/replacebycode.html +0 -59
- data/app/assets/javascripts/ckeditor/samples/old/sample.css +0 -357
- data/app/assets/javascripts/ckeditor/samples/old/sample.js +0 -50
- data/app/assets/javascripts/ckeditor/samples/old/sample_posteddata.php +0 -16
- data/app/assets/javascripts/ckeditor/samples/old/sourcedialog/sourcedialog.html +0 -121
- data/app/assets/javascripts/ckeditor/samples/old/tabindex.html +0 -78
- data/app/assets/javascripts/ckeditor/samples/old/toolbar/toolbar.html +0 -235
- data/app/assets/javascripts/ckeditor/samples/old/uicolor.html +0 -72
- data/app/assets/javascripts/ckeditor/samples/old/uilanguages.html +0 -122
- data/app/assets/javascripts/ckeditor/samples/old/wysiwygarea/fullpage.html +0 -80
- data/app/assets/javascripts/ckeditor/samples/old/xhtmlstyle.html +0 -234
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/css/fontello.css +0 -55
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/LICENSE.txt +0 -10
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/config.json +0 -28
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/fontello.eot +0 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/fontello.svg +0 -14
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/fontello.ttf +0 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/font/fontello.woff +0 -0
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/index.html +0 -446
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/js/abstracttoolbarmodifier.js +0 -13
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/js/fulltoolbareditor.js +0 -9
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/js/toolbarmodifier.js +0 -33
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/js/toolbartextmodifier.js +0 -14
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/LICENSE +0 -19
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.css +0 -325
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.js +0 -288
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/javascript.js +0 -25
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/neo.css +0 -36
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.css +0 -38
- data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.js +0 -16
@@ -1,446 +0,0 @@
|
|
1
|
-
<!DOCTYPE html>
|
2
|
-
<!--
|
3
|
-
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
|
4
|
-
For licensing, see LICENSE.md or http://ckeditor.com/license
|
5
|
-
-->
|
6
|
-
<!--[if IE 8]><html class="ie8"><![endif]-->
|
7
|
-
<!--[if gt IE 8]><html><![endif]-->
|
8
|
-
<!--[if !IE]><!--><html><!--<![endif]-->
|
9
|
-
<head>
|
10
|
-
<meta charset="utf-8">
|
11
|
-
<title>Toolbar Configurator</title>
|
12
|
-
<script src="../../ckeditor.js"></script>
|
13
|
-
<script>
|
14
|
-
if ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 )
|
15
|
-
CKEDITOR.tools.enableHtml5Elements( document );
|
16
|
-
</script>
|
17
|
-
<link rel="stylesheet" href="lib/codemirror/codemirror.css">
|
18
|
-
<link rel="stylesheet" href="lib/codemirror/show-hint.css">
|
19
|
-
<link rel="stylesheet" href="lib/codemirror/neo.css">
|
20
|
-
<link rel="stylesheet" href="css/fontello.css">
|
21
|
-
<link rel="stylesheet" href="../css/samples.css">
|
22
|
-
</head>
|
23
|
-
<body id="toolbar">
|
24
|
-
|
25
|
-
<nav class="navigation-a">
|
26
|
-
<div class="grid-container">
|
27
|
-
<ul class="navigation-a-left grid-width-70">
|
28
|
-
<li><a href="http://ckeditor.com">Project Homepage</a></li>
|
29
|
-
<li><a href="http://dev.ckeditor.com/">I found a bug</a></li>
|
30
|
-
<li><a href="http://github.com/ckeditor/ckeditor-dev" class="icon-pos-right icon-navigation-a-github">Fork CKEditor on GitHub</a></li>
|
31
|
-
</ul>
|
32
|
-
<ul class="navigation-a-right grid-width-30">
|
33
|
-
<li><a href="http://ckeditor.com/blog-list">CKEditor Blog</a></li>
|
34
|
-
</ul>
|
35
|
-
</div>
|
36
|
-
</nav>
|
37
|
-
|
38
|
-
<header class="header-a">
|
39
|
-
<div class="grid-container">
|
40
|
-
<h1 class="header-a-logo grid-width-30">
|
41
|
-
<a href="../index.html"><img src="../img/logo.png" alt="CKEditor Logo"></a>
|
42
|
-
</h1>
|
43
|
-
<nav class="navigation-b grid-width-70">
|
44
|
-
<ul>
|
45
|
-
<li><a href="../index.html" class="button-a">Start</a></li>
|
46
|
-
<li><a href="index.html" class="button-a button-a-background">Toolbar configurator</a></li>
|
47
|
-
</ul>
|
48
|
-
</nav>
|
49
|
-
</div>
|
50
|
-
</header>
|
51
|
-
|
52
|
-
<main>
|
53
|
-
<div class="adjoined-top">
|
54
|
-
<div class="grid-container">
|
55
|
-
<div class="content grid-width-100">
|
56
|
-
<div class="grid-container-nested">
|
57
|
-
<h1 class="grid-width-60">
|
58
|
-
Toolbar Configurator
|
59
|
-
<a href="#help-content" type="button" title="Configurator help" id="help" class="button-a button-a-background button-a-no-text icon-pos-left icon-question-mark">Help</a>
|
60
|
-
</h1>
|
61
|
-
|
62
|
-
<div class="grid-width-40 grid-switch-magic">
|
63
|
-
<div class="switch">
|
64
|
-
<span class="balloon-a balloon-a-se">Select configurator type</span>
|
65
|
-
<input type="radio" name="radio" data-num="1" id="radio-basic" />
|
66
|
-
<input type="radio" name="radio" data-num="2" id="radio-advanced" />
|
67
|
-
<label data-for="1" for="radio-basic">Basic</label>
|
68
|
-
<span class="switch-inner">
|
69
|
-
<span class="handler"></span>
|
70
|
-
</span>
|
71
|
-
<label data-for="2" for="radio-advanced">Advanced</label>
|
72
|
-
</div>
|
73
|
-
</div>
|
74
|
-
</div>
|
75
|
-
</div>
|
76
|
-
</div>
|
77
|
-
</div>
|
78
|
-
<div class="adjoined-bottom">
|
79
|
-
<div class="grid-container">
|
80
|
-
<div class="grid-width-100">
|
81
|
-
<div class="editors-container">
|
82
|
-
<div id="editor-basic"></div>
|
83
|
-
<div id="editor-advanced"></div>
|
84
|
-
</div>
|
85
|
-
</div>
|
86
|
-
</div>
|
87
|
-
</div>
|
88
|
-
|
89
|
-
<div class="grid-container configurator">
|
90
|
-
<div class="content grid-width-100">
|
91
|
-
<div class="configurator">
|
92
|
-
<div>
|
93
|
-
<div id="toolbarModifierWrapper"></div>
|
94
|
-
</div>
|
95
|
-
</div>
|
96
|
-
</div>
|
97
|
-
</div>
|
98
|
-
|
99
|
-
<div id="help-content">
|
100
|
-
<div class="grid-container">
|
101
|
-
<div class="grid-width-100">
|
102
|
-
<h2>What Am I Doing Here?</h2>
|
103
|
-
|
104
|
-
<div class="grid-container grid-container-nested">
|
105
|
-
<div class="basic">
|
106
|
-
<div class="grid-width-50">
|
107
|
-
<p>Arrange <a href="http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-toolbarGroups">toolbar groups</a>, toggle <a href="http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-removeButtons">button visibility</a> according to your needs and get your toolbar configuration.</p>
|
108
|
-
<p>You can replace the content of the <a href="../../config.js"><code>config.js</code></a> file with the generated configuration. If you already set some configuration options you will need to merge both configurations.</p>
|
109
|
-
</div>
|
110
|
-
<div class="grid-width-50">
|
111
|
-
<p>Read more about different ways of <a href="http://docs.ckeditor.com/#!/guide/dev_configuration">setting configuration</a> and do not forget about <strong>clearing browser cache</strong>.</p>
|
112
|
-
<p>Arranging toolbar groups is the recommended way of configuring the toolbar, but if you need more freedom you can use the <a href="#advanced">advanced configurator</a>.</p>
|
113
|
-
</div>
|
114
|
-
</div>
|
115
|
-
<div class="advanced" style="display: none;">
|
116
|
-
<div class="grid-width-50">
|
117
|
-
<p>With this code editor you can edit your <a href="http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-toolbar">toolbar configuration</a> live.</p>
|
118
|
-
<p>You can replace the content of the <a href="../../config.js"><code>config.js</code></a> file with the generated configuration. If you already set some configuration options you will need to merge both configurations.</p>
|
119
|
-
</div>
|
120
|
-
<div class="grid-width-50">
|
121
|
-
<p>Read more about different ways of <a href="http://docs.ckeditor.com/#!/guide/dev_configuration">setting configuration</a> and do not forget about <strong>clearing browser cache</strong>.</p>
|
122
|
-
</div>
|
123
|
-
</div>
|
124
|
-
</div>
|
125
|
-
|
126
|
-
<p class="grid-container grid-container-nested">
|
127
|
-
<button type="button" class="help-content-close grid-width-100 button-a button-a-background">Got it. Let's play!</button>
|
128
|
-
</p>
|
129
|
-
</div>
|
130
|
-
</div>
|
131
|
-
</div>
|
132
|
-
</main>
|
133
|
-
|
134
|
-
<footer class="footer-a grid-container">
|
135
|
-
<p class="grid-width-100">
|
136
|
-
CKEditor – The text editor for the Internet – <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
|
137
|
-
</p>
|
138
|
-
<p class="grid-width-100" id="copy">
|
139
|
-
Copyright © 2003-2015, <a class="samples" href="http://cksource.com/">CKSource</a> – Frederico Knabben. All rights reserved.
|
140
|
-
</p>
|
141
|
-
</footer>
|
142
|
-
|
143
|
-
<script src="lib/codemirror/codemirror.js"></script>
|
144
|
-
<script src="lib/codemirror/javascript.js"></script>
|
145
|
-
<script src="lib/codemirror/show-hint.js"></script>
|
146
|
-
|
147
|
-
<script src="js/fulltoolbareditor.js"></script>
|
148
|
-
<script src="js/abstracttoolbarmodifier.js"></script>
|
149
|
-
<script src="js/toolbarmodifier.js"></script>
|
150
|
-
<script src="js/toolbartextmodifier.js"></script>
|
151
|
-
<script src="../js/sf.js"></script>
|
152
|
-
|
153
|
-
<script>
|
154
|
-
( function() {
|
155
|
-
'use strict';
|
156
|
-
|
157
|
-
var mode = ( window.location.hash.substr( 1 ) === 'advanced' ) ? 'advanced' : 'basic',
|
158
|
-
configuratorSection = CKEDITOR.document.findOne( 'main > .grid-container.configurator' ),
|
159
|
-
basicInstruction = CKEDITOR.document.findOne( '#help-content .basic' ),
|
160
|
-
advancedInstruction = CKEDITOR.document.findOne( '#help-content .advanced' ),
|
161
|
-
|
162
|
-
// Configurator mode switcher.
|
163
|
-
modeSwitchBasic = CKEDITOR.document.getById( 'radio-basic' ),
|
164
|
-
modeSwitchAdvanced = CKEDITOR.document.getById( 'radio-advanced' );
|
165
|
-
|
166
|
-
// Initial setup
|
167
|
-
function updateSwitcher() {
|
168
|
-
if ( mode === 'advanced' ) {
|
169
|
-
modeSwitchAdvanced.$.checked = true;
|
170
|
-
} else {
|
171
|
-
modeSwitchBasic.$.checked = true;
|
172
|
-
}
|
173
|
-
}
|
174
|
-
|
175
|
-
updateSwitcher();
|
176
|
-
|
177
|
-
CKEDITOR.document.getWindow().on( 'hashchange', function( e ) {
|
178
|
-
var hash = window.location.hash.substr( 1 );
|
179
|
-
if ( !( hash === 'advanced' || hash === 'basic' ) ) {
|
180
|
-
return;
|
181
|
-
}
|
182
|
-
mode = hash;
|
183
|
-
onToolbarsDone( mode );
|
184
|
-
} );
|
185
|
-
|
186
|
-
CKEDITOR.document.getWindow().on( 'resize', function() {
|
187
|
-
updateToolbar( ( mode === 'basic' ? toolbarModifier : toolbarTextModifier )[ 'editorInstance' ] );
|
188
|
-
} );
|
189
|
-
|
190
|
-
function onRefresh( modifier ) {
|
191
|
-
modifier = modifier || this;
|
192
|
-
|
193
|
-
if ( mode === 'basic' && modifier instanceof ToolbarConfigurator.ToolbarTextModifier ) {
|
194
|
-
return;
|
195
|
-
}
|
196
|
-
|
197
|
-
// CodeMirror container becomes visible, so we need to refresh and to avoid rendering problems.
|
198
|
-
if ( mode === 'advanced' && modifier instanceof ToolbarConfigurator.ToolbarTextModifier ) {
|
199
|
-
modifier.codeContainer.refresh();
|
200
|
-
}
|
201
|
-
|
202
|
-
updateToolbar( modifier.editorInstance );
|
203
|
-
}
|
204
|
-
|
205
|
-
function updateToolbar( editor ) {
|
206
|
-
var editorContainer = editor.container;
|
207
|
-
|
208
|
-
// Not always editor is loaded.
|
209
|
-
if ( !editorContainer ) {
|
210
|
-
return;
|
211
|
-
}
|
212
|
-
|
213
|
-
var displayStyle = editorContainer.getStyle( 'display' );
|
214
|
-
|
215
|
-
editorContainer.setStyle( 'display', 'block' );
|
216
|
-
|
217
|
-
var newHeight = editorContainer.getSize( 'height' );
|
218
|
-
|
219
|
-
var newMarginTop = parseInt( editorContainer.getComputedStyle( 'margin-top' ), 10 );
|
220
|
-
newMarginTop = ( isNaN( newMarginTop ) ? 0 : Number( newMarginTop ) );
|
221
|
-
|
222
|
-
var newMarginBottom = parseInt( editorContainer.getComputedStyle( 'margin-bottom' ), 10 );
|
223
|
-
newMarginBottom = ( isNaN( newMarginBottom ) ? 0 : Number( newMarginBottom ) );
|
224
|
-
|
225
|
-
var result = newHeight + newMarginTop + newMarginBottom;
|
226
|
-
|
227
|
-
editorContainer.setStyle( 'display', displayStyle );
|
228
|
-
|
229
|
-
editor.container.getAscendant( 'div' ).setStyle( 'height', result + 'px' );
|
230
|
-
}
|
231
|
-
|
232
|
-
var toolbarModifier = new ToolbarConfigurator.ToolbarModifier( 'editor-basic' );
|
233
|
-
|
234
|
-
var done = 0;
|
235
|
-
toolbarModifier.init( onToolbarInit );
|
236
|
-
toolbarModifier.onRefresh = onRefresh;
|
237
|
-
|
238
|
-
CKEDITOR.document.getById( 'toolbarModifierWrapper' ).append( toolbarModifier.mainContainer );
|
239
|
-
|
240
|
-
var toolbarTextModifier = new ToolbarConfigurator.ToolbarTextModifier( 'editor-advanced' );
|
241
|
-
toolbarTextModifier.init( onToolbarInit );
|
242
|
-
toolbarTextModifier.onRefresh = onRefresh;
|
243
|
-
|
244
|
-
function onToolbarInit() {
|
245
|
-
if ( ++done === 2 ) {
|
246
|
-
onToolbarsDone();
|
247
|
-
|
248
|
-
positionSticky.watch( CKEDITOR.document.findOne( '.toolbar' ), function() {
|
249
|
-
return mode === 'advanced';
|
250
|
-
} );
|
251
|
-
}
|
252
|
-
}
|
253
|
-
|
254
|
-
function onToolbarsDone() {
|
255
|
-
if ( mode === 'basic' ) {
|
256
|
-
toggleModeBasic( false );
|
257
|
-
} else {
|
258
|
-
toggleModeAdvanced( false );
|
259
|
-
}
|
260
|
-
|
261
|
-
updateSwitcher();
|
262
|
-
|
263
|
-
setTimeout( function() {
|
264
|
-
CKEDITOR.document.findOne( '.editors-container' ).addClass( 'active' );
|
265
|
-
CKEDITOR.document.findOne( '#toolbarModifierWrapper' ).addClass( 'active' );
|
266
|
-
}, 200 );
|
267
|
-
}
|
268
|
-
|
269
|
-
CKEDITOR.document.getById( 'toolbarModifierWrapper' ).append( toolbarTextModifier.mainContainer );
|
270
|
-
|
271
|
-
function toogleModeSwitch( onElement, offElement, onModifier, offModifier ) {
|
272
|
-
onElement.addClass( 'fancy-button-active' );
|
273
|
-
offElement.removeClass( 'fancy-button-active' );
|
274
|
-
|
275
|
-
onModifier.showUI();
|
276
|
-
offModifier.hideUI();
|
277
|
-
}
|
278
|
-
|
279
|
-
function toggleModeBasic( callOnRefresh ) {
|
280
|
-
callOnRefresh = ( callOnRefresh !== false );
|
281
|
-
mode = 'basic';
|
282
|
-
window.location.hash = '#basic';
|
283
|
-
toogleModeSwitch( modeSwitchBasic, modeSwitchAdvanced, toolbarModifier, toolbarTextModifier );
|
284
|
-
|
285
|
-
configuratorSection.removeClass( 'freed-width' );
|
286
|
-
basicInstruction.show();
|
287
|
-
advancedInstruction.hide();
|
288
|
-
|
289
|
-
callOnRefresh && onRefresh( toolbarModifier );
|
290
|
-
}
|
291
|
-
|
292
|
-
function toggleModeAdvanced( callOnRefresh ) {
|
293
|
-
callOnRefresh = ( callOnRefresh !== false );
|
294
|
-
mode = 'advanced';
|
295
|
-
window.location.hash = '#advanced';
|
296
|
-
toogleModeSwitch( modeSwitchAdvanced, modeSwitchBasic, toolbarTextModifier, toolbarModifier );
|
297
|
-
|
298
|
-
configuratorSection.addClass( 'freed-width' );
|
299
|
-
advancedInstruction.show();
|
300
|
-
basicInstruction.hide();
|
301
|
-
|
302
|
-
callOnRefresh && onRefresh( toolbarTextModifier );
|
303
|
-
}
|
304
|
-
|
305
|
-
modeSwitchBasic.on( 'click', toggleModeBasic );
|
306
|
-
modeSwitchAdvanced.on( 'click', toggleModeAdvanced );
|
307
|
-
|
308
|
-
//
|
309
|
-
// Position:sticky for the toolbar.
|
310
|
-
//
|
311
|
-
|
312
|
-
// Will make elements behave like they were styled with position:sticky.
|
313
|
-
var positionSticky = {
|
314
|
-
// Store object: {
|
315
|
-
// element: CKEDITOR.dom.element, // Element which will float.
|
316
|
-
// placeholder: CKEDITOR.dom.element, // Placeholder which is place to prevent page bounce.
|
317
|
-
// isFixed: boolean // Whether element float now.
|
318
|
-
// }
|
319
|
-
watched: [],
|
320
|
-
|
321
|
-
active: [],
|
322
|
-
|
323
|
-
staticContainer: null,
|
324
|
-
|
325
|
-
init: function() {
|
326
|
-
var element = CKEDITOR.dom.element.createFromHtml(
|
327
|
-
'<div class="staticContainer">' +
|
328
|
-
'<div class="grid-container" >' +
|
329
|
-
'<div class="grid-width-100">' +
|
330
|
-
'<div class="inner"></div>' +
|
331
|
-
'</div>' +
|
332
|
-
'</div>' +
|
333
|
-
'</div>' );
|
334
|
-
|
335
|
-
this.staticContainer = element.findOne( '.inner' );
|
336
|
-
|
337
|
-
CKEDITOR.document.getBody().append( element );
|
338
|
-
},
|
339
|
-
|
340
|
-
watch: function( element, preventFunc ) {
|
341
|
-
this.watched.push( {
|
342
|
-
element: element,
|
343
|
-
placeholder: new CKEDITOR.dom.element( 'div' ),
|
344
|
-
isFixed: false,
|
345
|
-
preventFunc: preventFunc
|
346
|
-
} );
|
347
|
-
},
|
348
|
-
|
349
|
-
checkAll: function() {
|
350
|
-
for ( var i = 0; i < this.watched.length; i++ ) {
|
351
|
-
this.check( this.watched[ i ] );
|
352
|
-
}
|
353
|
-
},
|
354
|
-
|
355
|
-
check: function( element ) {
|
356
|
-
var isFixed = element.isFixed;
|
357
|
-
var shouldBeFixed = this.shouldBeFixed( element );
|
358
|
-
|
359
|
-
// Nothing to be done.
|
360
|
-
if ( isFixed === shouldBeFixed ) {
|
361
|
-
return;
|
362
|
-
}
|
363
|
-
|
364
|
-
var placeholder = element.placeholder;
|
365
|
-
|
366
|
-
if ( isFixed ) {
|
367
|
-
// Unfixing.
|
368
|
-
|
369
|
-
element.element.insertBefore( placeholder );
|
370
|
-
placeholder.remove();
|
371
|
-
|
372
|
-
element.element.removeStyle( 'margin' );
|
373
|
-
|
374
|
-
this.active.splice( CKEDITOR.tools.indexOf( this.active, element ), 1 );
|
375
|
-
|
376
|
-
} else {
|
377
|
-
// Fixing.
|
378
|
-
placeholder.setStyle( 'width', element.element.getSize( 'width' ) + 'px' );
|
379
|
-
placeholder.setStyle( 'height', element.element.getSize( 'height' ) + 'px' );
|
380
|
-
placeholder.setStyle( 'margin-bottom', element.element.getComputedStyle( 'margin-bottom' ) );
|
381
|
-
placeholder.setStyle( 'display', element.element.getComputedStyle( 'display' ) );
|
382
|
-
placeholder.insertAfter( element.element );
|
383
|
-
|
384
|
-
this.staticContainer.append( element.element );
|
385
|
-
|
386
|
-
this.active.push( element );
|
387
|
-
}
|
388
|
-
|
389
|
-
element.isFixed = !element.isFixed;
|
390
|
-
},
|
391
|
-
|
392
|
-
shouldBeFixed: function( element ) {
|
393
|
-
if ( element.preventFunc && element.preventFunc() ) {
|
394
|
-
return false;
|
395
|
-
}
|
396
|
-
|
397
|
-
// If element is already fixed we are checking it's placeholder.
|
398
|
-
var related = ( element.isFixed ? element.placeholder : element.element ),
|
399
|
-
clientRect = related.$.getBoundingClientRect(),
|
400
|
-
staticHeight = this.staticContainer.getSize('height' ),
|
401
|
-
elemHeight = element.element.getSize( 'height' );
|
402
|
-
|
403
|
-
if ( element.isFixed ) {
|
404
|
-
return ( clientRect.top + elemHeight < staticHeight );
|
405
|
-
} else {
|
406
|
-
return ( clientRect.top < staticHeight );
|
407
|
-
}
|
408
|
-
}
|
409
|
-
};
|
410
|
-
|
411
|
-
positionSticky.init();
|
412
|
-
|
413
|
-
CKEDITOR.document.getWindow().on( 'scroll',
|
414
|
-
new CKEDITOR.tools.eventsBuffer( 100, positionSticky.checkAll, positionSticky ).input
|
415
|
-
);
|
416
|
-
|
417
|
-
// Make the toolbar sticky.
|
418
|
-
positionSticky.watch( CKEDITOR.document.findOne( '.editors-container' ) );
|
419
|
-
|
420
|
-
// Help button and help-content.
|
421
|
-
( function() {
|
422
|
-
var helpButton = CKEDITOR.document.getById( 'help' ),
|
423
|
-
helpContent = CKEDITOR.document.getById( 'help-content' );
|
424
|
-
|
425
|
-
// Don't show help button on IE8 because it's unsupported by Pico Modal.
|
426
|
-
if ( CKEDITOR.env.ie && CKEDITOR.env.version == 8 ) {
|
427
|
-
helpButton.hide();
|
428
|
-
} else {
|
429
|
-
// Display help modal when the button is clicked.
|
430
|
-
helpButton.on( 'click', function( evt ) {
|
431
|
-
SF.modal( {
|
432
|
-
// Clone modal content from DOM.
|
433
|
-
content: helpContent.getHtml(),
|
434
|
-
|
435
|
-
afterCreate: function( modal ) {
|
436
|
-
// Enable modal content button to close the modal.
|
437
|
-
new CKEDITOR.dom.element( modal.modalElem() ).findOne( '.help-content-close' ).once( 'click', modal.close );
|
438
|
-
}
|
439
|
-
} ).show();
|
440
|
-
} );
|
441
|
-
}
|
442
|
-
} )();
|
443
|
-
} )();
|
444
|
-
</script>
|
445
|
-
</body>
|
446
|
-
</html>
|
data/app/assets/javascripts/ckeditor/samples/toolbarconfigurator/js/abstracttoolbarmodifier.js
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
"function"!=typeof Object.create&&function(){var a=function(){};Object.create=function(b){if(1<arguments.length)throw Error("Second argument not supported");if(null===b)throw Error("Cannot set a null [[Prototype]]");if("object"!=typeof b)throw TypeError("Argument must be an object");a.prototype=b;return new a}}();
|
2
|
-
CKEDITOR.plugins.add("toolbarconfiguratorarea",{afterInit:function(a){a.addMode("wysiwyg",function(b){var c=CKEDITOR.dom.element.createFromHtml('\x3cdiv class\x3d"cke_wysiwyg_div cke_reset" hidefocus\x3d"true"\x3e\x3c/div\x3e');a.ui.space("contents").append(c);c=a.editable(c);c.detach=CKEDITOR.tools.override(c.detach,function(b){return function(){b.apply(this,arguments);this.remove()}});a.setData(a.getData(1),b);a.fire("contentDom")});a.dataProcessor.toHtml=function(b){return b};a.dataProcessor.toDataFormat=
|
3
|
-
function(b){return b}}});Object.keys||(Object.keys=function(){var a=Object.prototype.hasOwnProperty,b=!{toString:null}.propertyIsEnumerable("toString"),c="toString toLocaleString valueOf hasOwnProperty isPrototypeOf propertyIsEnumerable constructor".split(" "),e=c.length;return function(d){if("object"!==typeof d&&("function"!==typeof d||null===d))throw new TypeError("Object.keys called on non-object");var g=[],f;for(f in d)a.call(d,f)&&g.push(f);if(b)for(f=0;f<e;f++)a.call(d,c[f])&&g.push(c[f]);return g}}());
|
4
|
-
(function(){function a(b,c){this.cfg=c||{};this.hidden=!1;this.editorId=b;this.fullToolbarEditor=new ToolbarConfigurator.FullToolbarEditor;this.actualConfig=this.originalConfig=this.mainContainer=null;this.isEditableVisible=this.waitForReady=!1;this.toolbarContainer=null;this.toolbarButtons=[]}ToolbarConfigurator.AbstractToolbarModifier=a;a.prototype.setConfig=function(b){this._onInit(void 0,b,!0)};a.prototype.init=function(b){var c=this;this.mainContainer=new CKEDITOR.dom.element("div");if(null!==
|
5
|
-
this.fullToolbarEditor.editorInstance)throw"Only one instance of ToolbarModifier is allowed";this.editorInstance||this._createEditor(!1);this.editorInstance.once("loaded",function(){c.fullToolbarEditor.init(function(){c._onInit(b);if("function"==typeof c.onRefresh)c.onRefresh()},c.editorInstance.config)});return this.mainContainer};a.prototype._onInit=function(b,c){this.originalConfig=this.editorInstance.config;this.actualConfig=c?JSON.parse(c):JSON.parse(JSON.stringify(this.originalConfig));if(!this.actualConfig.toolbarGroups&&
|
6
|
-
!this.actualConfig.toolbar){for(var a=this.actualConfig,d=this.editorInstance.toolbar,g=[],f=d.length,k=0;k<f;k++){var h=d[k];"string"==typeof h?g.push(h):g.push({name:h.name,groups:h.groups?h.groups.slice():[]})}a.toolbarGroups=g}"function"===typeof b&&b(this.mainContainer)};a.prototype._createModifier=function(){this.mainContainer.addClass("unselectable");this.modifyContainer&&this.modifyContainer.remove();this.modifyContainer=new CKEDITOR.dom.element("div");this.modifyContainer.addClass("toolbarModifier");
|
7
|
-
this.mainContainer.append(this.modifyContainer);return this.mainContainer};a.prototype.getEditableArea=function(){return this.editorInstance.container.findOne("#"+this.editorInstance.id+"_contents")};a.prototype._hideEditable=function(){var b=this.getEditableArea();this.isEditableVisible=!1;this.lastEditableAreaHeight=b.getStyle("height");b.setStyle("height","0")};a.prototype._showEditable=function(){this.isEditableVisible=!0;this.getEditableArea().setStyle("height",this.lastEditableAreaHeight||"auto")};
|
8
|
-
a.prototype._toggleEditable=function(){this.isEditableVisible?this._hideEditable():this._showEditable()};a.prototype._refreshEditor=function(){function b(){c.editorInstance.destroy();c._createEditor(!0,c.getActualConfig());c.waitForReady=!1}var c=this,a=this.editorInstance.status;this.waitForReady||("unloaded"==a||"loaded"==a?(this.waitForReady=!0,this.editorInstance.once("instanceReady",function(){b()},this)):b())};a.prototype._createEditor=function(b,c){function e(){}var d=this;this.editorInstance=
|
9
|
-
CKEDITOR.replace(this.editorId);this.editorInstance.on("configLoaded",function(){var b=d.editorInstance.config;c&&CKEDITOR.tools.extend(b,c,!0);a.extendPluginsConfig(b)});this.editorInstance.on("uiSpace",function(b){"top"!=b.data.space&&b.stop()},null,null,-999);this.editorInstance.once("loaded",function(){var c=d.editorInstance.ui.instances,a;for(a in c)c[a]&&(c[a].click=e,c[a].onClick=e);d.isEditableVisible||d._hideEditable();d.currentActive&&d.currentActive.name&&d._highlightGroup(d.currentActive.name);
|
10
|
-
d.hidden?d.hideUI():d.showUI();if(b&&"function"===typeof d.onRefresh)d.onRefresh()})};a.prototype.getActualConfig=function(){return JSON.parse(JSON.stringify(this.actualConfig))};a.prototype._createToolbar=function(){if(this.toolbarButtons.length){this.toolbarContainer=new CKEDITOR.dom.element("div");this.toolbarContainer.addClass("toolbar");for(var b=this.toolbarButtons.length,c=0;c<b;c+=1)this._createToolbarBtn(this.toolbarButtons[c])}};a.prototype._createToolbarBtn=function(b){var c=ToolbarConfigurator.FullToolbarEditor.createButton("string"===
|
11
|
-
typeof b.text?b.text:b.text.inactive,b.cssClass);this.toolbarContainer.append(c);c.data("group",b.group);c.addClass(b.position);c.on("click",function(){b.clickCallback.call(this,c,b)},this);return c};a.prototype._fixGroups=function(b){b=b.toolbarGroups||[];for(var c=b.length,a=0;a<c;a+=1){var d=b[a];"/"==d?(d=b[a]={},d.type="separator",d.name="separator"+CKEDITOR.tools.getNextNumber()):(d.groups=d.groups||[],-1==CKEDITOR.tools.indexOf(d.groups,d.name)&&(this.editorInstance.ui.addToolbarGroup(d.name,
|
12
|
-
d.groups[d.groups.length-1],d.name),d.groups.push(d.name)),this._fixSubgroups(d))}};a.prototype._fixSubgroups=function(b){b=b.groups;for(var c=b.length,a=0;a<c;a+=1){var d=b[a];b[a]={name:d,totalBtns:ToolbarConfigurator.ToolbarModifier.getTotalSubGroupButtonsNumber(d,this.fullToolbarEditor)}}};a.stringifyJSONintoOneLine=function(b,a){a=a||{};var e=JSON.stringify(b,null,""),e=e.replace(/\n/g,"");a.addSpaces&&(e=e.replace(/(\{|:|,|\[|\])/g,function(a){return a+" "}),e=e.replace(/(\])/g,function(a){return" "+
|
13
|
-
a}));a.noQuotesOnKey&&(e=e.replace(/"(\w*)":/g,function(a,b){return b+":"}));a.singleQuotes&&(e=e.replace(/\"/g,"'"));return e};a.prototype.hideUI=function(){this.hidden=!0;this.mainContainer.hide();this.editorInstance.container&&this.editorInstance.container.hide()};a.prototype.showUI=function(){this.hidden=!1;this.mainContainer.show();this.editorInstance.container&&this.editorInstance.container.show()};a.extendPluginsConfig=function(a){var c=a.extraPlugins;a.extraPlugins=(c?c+",":"")+"toolbarconfiguratorarea"}})();
|
@@ -1,9 +0,0 @@
|
|
1
|
-
window.ToolbarConfigurator={};
|
2
|
-
(function(){function e(){this.instanceid="fte"+CKEDITOR.tools.getNextId();this.textarea=new CKEDITOR.dom.element("textarea");this.textarea.setAttributes({id:this.instanceid,name:this.instanceid,contentEditable:!0});this.editorInstance=this.buttons=null}ToolbarConfigurator.FullToolbarEditor=e;e.prototype.init=function(b){var a=this;document.body.appendChild(this.textarea.$);CKEDITOR.replace(this.instanceid);this.editorInstance=CKEDITOR.instances[this.instanceid];this.editorInstance.once("configLoaded",function(d){var c=
|
3
|
-
d.editor.config;delete c.removeButtons;delete c.toolbarGroups;delete c.toolbar;ToolbarConfigurator.AbstractToolbarModifier.extendPluginsConfig(c);d.editor.once("loaded",function(){a.buttons=e.toolbarToButtons(a.editorInstance.toolbar);a.buttonsByGroup=e.groupButtons(a.buttons);a.buttonNamesByGroup=a.groupButtonNamesByGroup(a.buttons);d.editor.container.hide();"function"===typeof b&&b(a.buttons)})})};e.prototype.groupButtonNamesByGroup=function(b){var a=this;b=e.groupButtons(b);for(var d in b)b[d]=
|
4
|
-
e.map(b[d],function(b){return a.getCamelCasedButtonName(b.name)});return b};e.prototype.getGroupByName=function(b){for(var a=this.editorInstance.config.toolbarGroups||this.getFullToolbarGroupsConfig(),d=a.length,c=0;c<d;c+=1)if(a[c].name===b)return a[c];return null};e.prototype.getCamelCasedButtonName=function(b){var a=this.editorInstance.ui.items,d;for(d in a)if(a[d].name==b)return d;return null};e.prototype.getFullToolbarGroupsConfig=function(b){b=!0===b?!0:!1;for(var a=[],d=this.editorInstance.toolbar,
|
5
|
-
c=d.length,f=0;f<c;f+=1){var e=d[f],g={};"string"!=typeof e.name?b&&a.push("/"):(g.name=e.name,e.groups&&(g.groups=Array.prototype.slice.call(e.groups)),a.push(g))}return a};e.filter=function(b,a){for(var d=b&&b.length?b.length:0,c=[],f=0;f<d;f+=1)a(b[f])&&c.push(b[f]);return c};e.map=function(b,a){var d;if(CKEDITOR.tools.isArray(b)){d=[];for(var c=b.length,f=0;f<c;f+=1)d.push(a(b[f]))}else for(c in d={},b)d[c]=a(b[c]);return d};e.groupButtons=function(b){for(var a={},d=b.length,c=0;c<d;c+=1){var f=
|
6
|
-
b[c],e=f.toolbar.split(",")[0];a[e]=a[e]||[];a[e].push(f)}return a};e.toolbarToButtons=function(b){for(var a=[],d=b.length,c=0;c<d;c+=1)"object"==typeof b[c]&&(a=a.concat(e.groupToButtons(b[c])));return a};e.createToolbarButton=function(b){var a=new CKEDITOR.dom.element("a"),d=e.createIcon(b.name,b.icon,b.command);a.setStyle("float","none");a.addClass("cke_"+("rtl"==CKEDITOR.lang.dir?"rtl":"ltr"));if(b instanceof CKEDITOR.ui.button)a.addClass("cke_button"),a.addClass("cke_toolgroup"),a.append(d);
|
7
|
-
else if(CKEDITOR.ui.richCombo&&b instanceof CKEDITOR.ui.richCombo){var d=new CKEDITOR.dom.element("span"),c=new CKEDITOR.dom.element("span"),f=new CKEDITOR.dom.element("span");a.addClass("cke_combo_button");d.addClass("cke_combo_text");d.addClass("cke_combo_inlinelabel");d.setText(b.label);c.addClass("cke_combo_open");f.addClass("cke_combo_arrow");c.append(f);a.append(d);a.append(c)}return a};e.createIcon=function(b,a,d){var c=CKEDITOR.skin.getIconStyle(b,"rtl"==CKEDITOR.lang.dir),c=(c=c||CKEDITOR.skin.getIconStyle(a,
|
8
|
-
"rtl"==CKEDITOR.lang.dir))||CKEDITOR.skin.getIconStyle(d,"rtl"==CKEDITOR.lang.dir);a=new CKEDITOR.dom.element("span");a.addClass("cke_button_icon");a.addClass("cke_button__"+b+"_icon");a.setAttribute("style",c);a.setStyle("float","none");return a};e.createButton=function(b,a){var d=new CKEDITOR.dom.element("button");d.addClass("button-a");d.setAttribute("type","button");if("string"==typeof a){a=a.split(" ");for(var c=a.length;c--;)d.addClass(a[c])}d.setHtml(b);return d};e.groupToButtons=function(b){for(var a=
|
9
|
-
[],d=(b=b.items)?b.length:0,c=0;c<d;c+=1){var f=b[c];if(f instanceof CKEDITOR.ui.button||CKEDITOR.ui.richCombo&&f instanceof CKEDITOR.ui.richCombo)f.$=e.createToolbarButton(f),a.push(f)}return a}})();
|
@@ -1,33 +0,0 @@
|
|
1
|
-
(function(){function d(a,b){l.call(this,a,b);this.actualConfig=this.originalConfig=this.removedButtons=null;this.emptyVisible=!1;this.state="edit";this.toolbarButtons=[{text:{active:"Hide empty toolbar groups",inactive:"Show empty toolbar groups"},group:"edit",position:"left",cssClass:"button-a-soft",clickCallback:function(a,b){a[a.hasClass("button-a-background")?"removeClass":"addClass"]("button-a-background");this._toggleVisibilityEmptyElements();this.emptyVisible?a.setText(b.text.active):a.setText(b.text.inactive)}},
|
2
|
-
{text:"Add row separator",group:"edit",position:"left",cssClass:"button-a-soft",clickCallback:function(){this._addSeparator()}},{text:"Select config",group:"config",position:"left",cssClass:"button-a-soft",clickCallback:function(){this.configContainer.findOne("textarea").$.select()}},{text:"Back to configurator",group:"config",position:"right",cssClass:"button-a-background",clickCallback:function(){if("paste"===this.state){var a=this.configContainer.findOne("textarea").getValue();(a=d.evaluateToolbarGroupsConfig(a))?
|
3
|
-
this.setConfig(a):alert("Your pasted config is wrong.")}this.state="edit";this._showConfigurationTool();this.showToolbarBtnsByGroupName(this.state)}},{text:'Get toolbar \x3cspan class\x3d"highlight"\x3econfig\x3c/span\x3e',group:"edit",position:"right",cssClass:"button-a-background icon-pos-left icon-download",clickCallback:function(){this.state="config";this._showConfig();this.showToolbarBtnsByGroupName(this.state)}}];this.cachedActiveElement=null}var l=ToolbarConfigurator.AbstractToolbarModifier;
|
4
|
-
ToolbarConfigurator.ToolbarModifier=d;d.prototype=Object.create(ToolbarConfigurator.AbstractToolbarModifier.prototype);d.prototype.getActualConfig=function(){var a=l.prototype.getActualConfig.call(this);if(a.toolbarGroups)for(var b=a.toolbarGroups.length,c=0;c<b;c+=1)a.toolbarGroups[c]=d.parseGroupToConfigValue(a.toolbarGroups[c]);return a};d.prototype._onInit=function(a,b,c){c=!0===c;l.prototype._onInit.call(this,void 0,b);this.removedButtons=[];c?this.removedButtons=this.actualConfig.removeButtons?
|
5
|
-
this.actualConfig.removeButtons.split(","):[]:"removeButtons"in this.originalConfig?this.removedButtons=this.originalConfig.removeButtons?this.originalConfig.removeButtons.split(","):[]:(this.originalConfig.removeButtons="",this.removedButtons=[]);this.actualConfig.toolbarGroups||(this.actualConfig.toolbarGroups=this.fullToolbarEditor.getFullToolbarGroupsConfig());this._fixGroups(this.actualConfig);this._calculateTotalBtns();this._createModifier();this._refreshMoveBtnsAvalibility();this._refreshBtnTabIndexes();
|
6
|
-
"function"===typeof a&&a(this.mainContainer)};d.prototype._showConfigurationTool=function(){this.configContainer.addClass("hidden");this.modifyContainer.removeClass("hidden")};d.prototype._showConfig=function(){var a=this.getActualConfig(),b,c;if(a.toolbarGroups){b=a.toolbarGroups;for(var e=this.cfg.trimEmptyGroups,f=[],g=b.length,m=0;m<g;m++){var h=b[m];if("/"===h)f.push("'/'");else{if(e)for(var k=h.groups.length;k--;)0===d.getTotalSubGroupButtonsNumber(h.groups[k],this.fullToolbarEditor)&&h.groups.splice(k,
|
7
|
-
1);e&&0===h.groups.length||f.push(l.stringifyJSONintoOneLine(h,{addSpaces:!0,noQuotesOnKey:!0,singleQuotes:!0}))}}b="\n\t\t"+f.join(",\n\t\t")}a.removeButtons&&(c=a.removeButtons);a=['\x3ctextarea class\x3d"configCode" readonly\x3eCKEDITOR.editorConfig \x3d function( config ) {\n',b?"\tconfig.toolbarGroups \x3d ["+b+"\n\t];":"",c?"\n\n":"",c?"\tconfig.removeButtons \x3d '"+c+"';":"","\n};\x3c/textarea\x3e"].join("");this.modifyContainer.addClass("hidden");this.configContainer.removeClass("hidden");
|
8
|
-
this.configContainer.setHtml(a)};d.prototype._toggleVisibilityEmptyElements=function(){this.modifyContainer.hasClass("empty-visible")?(this.modifyContainer.removeClass("empty-visible"),this.emptyVisible=!1):(this.modifyContainer.addClass("empty-visible"),this.emptyVisible=!0);this._refreshMoveBtnsAvalibility()};d.prototype._createModifier=function(){function a(){b._highlightGroup(this.data("name"))}var b=this;l.prototype._createModifier.call(this);this.modifyContainer.setHtml(this._toolbarConfigToListString());
|
9
|
-
var c=this.modifyContainer.find('li[data-type\x3d"group"]');this.modifyContainer.on("mouseleave",function(){this._dehighlightActiveToolGroup()},this);for(var e=c.count(),f=0;f<e;f+=1)c.getItem(f).on("mouseenter",a);CKEDITOR.document.on("keypress",function(a){a=a.data.$.keyCode;a=32===a||13===a;var c=new CKEDITOR.dom.element(CKEDITOR.document.$.activeElement);c.getAscendant(function(a){return a.$===b.mainContainer.$})&&a&&"button"===c.data("type")&&c.findOne("input").$.click()});this.modifyContainer.on("click",
|
10
|
-
function(a){var c=a.data.$,e=new CKEDITOR.dom.element(c.target||c.srcElement);if(a=d.getGroupOrSeparatorLiAncestor(e)){b.cachedActiveElement=document.activeElement;if(e.$ instanceof HTMLInputElement)b._handleCheckboxClicked(e);else if(e.$ instanceof HTMLButtonElement&&(c.preventDefault?c.preventDefault():c.returnValue=!1,(c=b._handleAnchorClicked(e.$))&&"remove"==c.action))return;c=a.data("type");a=a.data("name");b._setActiveElement(c,a);b.cachedActiveElement&&b.cachedActiveElement.focus()}});this.toolbarContainer||
|
11
|
-
(this._createToolbar(),this.toolbarContainer.insertBefore(this.mainContainer.getChildren().getItem(0)));this.showToolbarBtnsByGroupName("edit");this.configContainer||(this.configContainer=new CKEDITOR.dom.element("div"),this.configContainer.addClass("configContainer"),this.configContainer.addClass("hidden"),this.mainContainer.append(this.configContainer));return this.mainContainer};d.prototype.showToolbarBtnsByGroupName=function(a){if(this.toolbarContainer)for(var b=this.toolbarContainer.find("button"),
|
12
|
-
c=b.count(),e=0;e<c;e+=1){var d=b.getItem(e);d.data("group")==a?d.removeClass("hidden"):d.addClass("hidden")}};d.parseGroupToConfigValue=function(a){if("separator"==a.type)return"/";var b=a.groups,c=b.length;delete a.totalBtns;for(var e=0;e<c;e+=1)b[e]=b[e].name;return a};d.getGroupOrSeparatorLiAncestor=function(a){return a.$ instanceof HTMLLIElement&&"group"==a.data("type")?a:d.getFirstAncestor(a,function(a){a=a.data("type");return"group"==a||"separator"==a})};d.prototype._setActiveElement=function(a,
|
13
|
-
b){this.currentActive&&this.currentActive.elem.removeClass("active");if(null===a)this._dehighlightActiveToolGroup(),this.currentActive=null;else{var c=this.mainContainer.findOne('ul[data-type\x3dtable-body] li[data-type\x3d"'+a+'"][data-name\x3d"'+b+'"]');c.addClass("active");this.currentActive={type:a,name:b,elem:c};"group"==a&&this._highlightGroup(b);"separator"==a&&this._dehighlightActiveToolGroup()}};d.prototype.getActiveToolGroup=function(){return this.editorInstance.container?this.editorInstance.container.findOne(".cke_toolgroup.active, .cke_toolbar.active"):
|
14
|
-
null};d.prototype._dehighlightActiveToolGroup=function(){var a=this.getActiveToolGroup();a&&a.removeClass("active");this.editorInstance.container&&this.editorInstance.container.removeClass("some-toolbar-active")};d.prototype._highlightGroup=function(a){this.editorInstance.container&&(a=this.getFirstEnabledButtonInGroup(a),a=this.editorInstance.container.findOne(".cke_button__"+a+", .cke_combo__"+a),this._dehighlightActiveToolGroup(),this.editorInstance.container&&this.editorInstance.container.addClass("some-toolbar-active"),
|
15
|
-
a&&(a=d.getFirstAncestor(a,function(a){return a.hasClass("cke_toolbar")}))&&a.addClass("active"))};d.prototype.getFirstEnabledButtonInGroup=function(a){var b=this.actualConfig.toolbarGroups;a=this.getGroupIndex(a);b=b[a];if(-1===a)return null;a=b.groups?b.groups.length:0;for(var c=0;c<a;c+=1){var e=this.getFirstEnabledButtonInSubgroup(b.groups[c].name);if(e)return e}return null};d.prototype.getFirstEnabledButtonInSubgroup=function(a){for(var b=(a=this.fullToolbarEditor.buttonsByGroup[a])?a.length:
|
16
|
-
0,c=0;c<b;c+=1){var e=a[c].name;if(!this.isButtonRemoved(e))return e}return null};d.prototype._handleCheckboxClicked=function(a){var b=a.getAscendant("li").data("name");a.$.checked?this._removeButtonFromRemoved(b):this._addButtonToRemoved(b)};d.prototype._handleAnchorClicked=function(a){a=new CKEDITOR.dom.element(a);var b=a.getAscendant("li"),c=b.getAscendant("ul"),e=b.data("type"),d=b.data("name"),g=a.data("direction"),m="up"===g?b.getPrevious():b.getNext(),h;if(a.hasClass("disabled"))return null;
|
17
|
-
if(a.hasClass("remove"))return b.remove(),this._removeSeparator(b.data("name")),this._setActiveElement(null),{action:"remove"};if(!a.hasClass("move")||!m)return{action:null};if("group"===e||"separator"===e)h=this._moveGroup(g,d);"subgroup"===e&&(h=b.getAscendant("li").data("name"),h=this._moveSubgroup(g,h,d));"up"===g&&b.insertBefore(c.getChild(h));"down"===g&&b.insertAfter(c.getChild(h));for(var k;b="up"===g?b.getPrevious():b.getNext();)if(this.emptyVisible||!b.hasClass("empty")){k=b;break}k||(k=
|
18
|
-
'[data-direction\x3d"'+("up"===g?"down":"up")+'"]',this.cachedActiveElement=a.getParent().findOne(k));this._refreshMoveBtnsAvalibility();this._refreshBtnTabIndexes();return{action:"move"}};d.prototype._refreshMoveBtnsAvalibility=function(){function a(a){var c=a.count();for(d=0;d<c;d+=1)b._disableElementsInList(a.getItem(d))}for(var b=this,c=this.mainContainer.find("ul[data-type\x3dtable-body] li \x3e p \x3e span \x3e button.move.disabled"),e=c.count(),d=0;d<e;d+=1)c.getItem(d).removeClass("disabled");
|
19
|
-
a(this.mainContainer.find("ul[data-type\x3dtable-body]"));a(this.mainContainer.find("ul[data-type\x3dtable-body] \x3e li \x3e ul"))};d.prototype._refreshBtnTabIndexes=function(){for(var a=this.mainContainer.find('[data-tab\x3d"true"]'),b=a.count(),c=0;c<b;c++){var e=a.getItem(c),d=e.hasClass("disabled");e.setAttribute("tabindex",d?-1:c)}};d.prototype._disableElementsInList=function(a){function b(a){return!a.hasClass("empty")}if(a.getChildren().count()){var c;this.emptyVisible?(c=a.getFirst(),a=a.getLast()):
|
20
|
-
(c=a.getFirst(b),a=a.getLast(b));if(c)var e=c.findOne('p button[data-direction\x3d"up"]');if(a)var d=a.findOne('p button[data-direction\x3d"down"]');e&&(e.addClass("disabled"),e.setAttribute("tabindex","-1"));d&&(d.addClass("disabled"),d.setAttribute("tabindex","-1"))}};d.prototype.getGroupIndex=function(a){for(var b=this.actualConfig.toolbarGroups,c=b.length,d=0;d<c;d+=1)if(b[d].name===a)return d;return-1};d.prototype._addSeparator=function(){var a=this._determineSeparatorToAddIndex(),b=d.createSeparatorLiteral(),
|
21
|
-
c=CKEDITOR.dom.element.createFromHtml(d.getToolbarSeparatorString(b));this.actualConfig.toolbarGroups.splice(a,0,b);c.insertBefore(this.modifyContainer.findOne("ul[data-type\x3dtable-body]").getChild(a));this._setActiveElement("separator",b.name);this._refreshMoveBtnsAvalibility();this._refreshBtnTabIndexes();this._refreshEditor()};d.prototype._removeSeparator=function(a){var b=CKEDITOR.tools.indexOf(this.actualConfig.toolbarGroups,function(b){return"separator"==b.type&&b.name==a});this.actualConfig.toolbarGroups.splice(b,
|
22
|
-
1);this._refreshMoveBtnsAvalibility();this._refreshBtnTabIndexes();this._refreshEditor()};d.prototype._determineSeparatorToAddIndex=function(){return this.currentActive?("group"==this.currentActive.elem.data("type")||"separator"==this.currentActive.elem.data("type")?this.currentActive.elem:this.currentActive.elem.getAscendant("li")).getIndex():0};d.prototype._moveElement=function(a,b,c){function e(a){return a.totalBtns||"separator"==a.type}c=this.emptyVisible?"down"==c?b+1:b-1:d.getFirstElementIndexWith(a,
|
23
|
-
b,c,e);return d.moveTo(c-b,a,b)};d.prototype._moveGroup=function(a,b){var c=this.getGroupIndex(b),c=this._moveElement(this.actualConfig.toolbarGroups,c,a);this._refreshMoveBtnsAvalibility();this._refreshBtnTabIndexes();this._refreshEditor();return c};d.prototype._moveSubgroup=function(a,b,c){b=this.getGroupIndex(b);b=this.actualConfig.toolbarGroups[b];var d=CKEDITOR.tools.indexOf(b.groups,function(a){return a.name==c});a=this._moveElement(b.groups,d,a);this._refreshEditor();return a};d.prototype._calculateTotalBtns=
|
24
|
-
function(){for(var a=this.actualConfig.toolbarGroups,b=a.length;b--;){var c=a[b],e=d.getTotalGroupButtonsNumber(c,this.fullToolbarEditor);"separator"!=c.type&&(c.totalBtns=e)}};d.prototype._addButtonToRemoved=function(a){if(-1!=CKEDITOR.tools.indexOf(this.removedButtons,a))throw"Button already added to removed";this.removedButtons.push(a);this.actualConfig.removeButtons=this.removedButtons.join(",");this._refreshEditor()};d.prototype._removeButtonFromRemoved=function(a){a=CKEDITOR.tools.indexOf(this.removedButtons,
|
25
|
-
a);if(-1===a)throw"Trying to remove button from removed, but not found";this.removedButtons.splice(a,1);this.actualConfig.removeButtons=this.removedButtons.join(",");this._refreshEditor()};d.parseGroupToConfigValue=function(a){if("separator"==a.type)return"/";var b=a.groups,c=b.length;delete a.totalBtns;for(var d=0;d<c;d+=1)b[d]=b[d].name;return a};d.getGroupOrSeparatorLiAncestor=function(a){return a.$ instanceof HTMLLIElement&&"group"==a.data("type")?a:d.getFirstAncestor(a,function(a){a=a.data("type");
|
26
|
-
return"group"==a||"separator"==a})};d.createSeparatorLiteral=function(){return{type:"separator",name:"separator"+CKEDITOR.tools.getNextNumber()}};d.prototype._toolbarConfigToListString=function(){for(var a=this.actualConfig.toolbarGroups||[],b='\x3cul data-type\x3d"table-body"\x3e',c=a.length,e=0;e<c;e+=1)var f=a[e],b="separator"===f.type?b+d.getToolbarSeparatorString(f):b+this._getToolbarGroupString(f);b+="\x3c/ul\x3e";return d.getToolbarHeaderString()+b};d.prototype._getToolbarGroupString=function(a){var b=
|
27
|
-
a.groups,c;c=""+['\x3cli data-type\x3d"group" data-name\x3d"',a.name,'" ',a.totalBtns?"":'class\x3d"empty"',"\x3e"].join("");c+=d.getToolbarElementPreString(a)+"\x3cul\x3e";a=b.length;for(var e=0;e<a;e+=1){var f=b[e];c+=this._getToolbarSubgroupString(f,this.fullToolbarEditor.buttonsByGroup[f.name])}return c+"\x3c/ul\x3e\x3c/li\x3e"};d.getToolbarSeparatorString=function(a){return['\x3cli data-type\x3d"',a.type,'" data-name\x3d"',a.name,'"\x3e',d.getToolbarElementPreString("row separator"),"\x3c/li\x3e"].join("")};
|
28
|
-
d.getToolbarHeaderString=function(){return'\x3cul data-type\x3d"table-header"\x3e\x3cli data-type\x3d"header"\x3e\x3cp\x3eToolbars\x3c/p\x3e\x3cul\x3e\x3cli\x3e\x3cp\x3eToolbar groups\x3c/p\x3e\x3cp\x3eToolbar group items\x3c/p\x3e\x3c/li\x3e\x3c/ul\x3e\x3c/li\x3e\x3c/ul\x3e'};d.getFirstAncestor=function(a,b){for(var c=a.getParents(),d=c.length;d--;)if(b(c[d]))return c[d];return null};d.getFirstElementIndexWith=function(a,b,c,d){for(;"up"===c?b--:++b<a.length;)if(d(a[b]))return b;return-1};d.moveTo=
|
29
|
-
function(a,b,c){var d;-1!==c&&(d=b.splice(c,1)[0]);a=c+a;b.splice(a,0,d);return a};d.getTotalSubGroupButtonsNumber=function(a,b){var c=b.buttonsByGroup["string"==typeof a?a:a.name];return c?c.length:0};d.getTotalGroupButtonsNumber=function(a,b){for(var c=0,e=a.groups,f=e?e.length:0,g=0;g<f;g+=1)c+=d.getTotalSubGroupButtonsNumber(e[g],b);return c};d.prototype._getToolbarSubgroupString=function(a,b){var c;c=""+['\x3cli data-type\x3d"subgroup" data-name\x3d"',a.name,'" ',a.totalBtns?"":'class\x3d"empty" ',
|
30
|
-
"\x3e"].join("");c+=d.getToolbarElementPreString(a.name);c+="\x3cul\x3e";for(var e=b?b.length:0,f=0;f<e;f+=1)c+=this.getButtonString(b[f]);return c+="\x3c/ul\x3e\x3c/li\x3e"};d.prototype._getConfigButtonName=function(a){var b=this.fullToolbarEditor.editorInstance.ui.items,c;for(c in b)if(b[c].name==a)return c;return null};d.prototype.isButtonRemoved=function(a){return-1!=CKEDITOR.tools.indexOf(this.removedButtons,this._getConfigButtonName(a))};d.prototype.getButtonString=function(a){var b=this.isButtonRemoved(a.name)?
|
31
|
-
"":'checked\x3d"checked"';return['\x3cli data-tab\x3d"true" data-type\x3d"button" data-name\x3d"',this._getConfigButtonName(a.name),'"\x3e\x3clabel title\x3d"',a.label,'" \x3e\x3cinput tabindex\x3d"-1"type\x3d"checkbox"',b,"/\x3e",a.$.getOuterHtml(),"\x3c/label\x3e\x3c/li\x3e"].join("")};d.getToolbarElementPreString=function(a){a=a.name?a.name:a;return['\x3cp\x3e\x3cspan\x3e\x3cbutton title\x3d"Move element upward" data-tab\x3d"true" data-direction\x3d"up" class\x3d"move icon-up-big"\x3e\x3c/button\x3e\x3cbutton title\x3d"Move element downward" data-tab\x3d"true" data-direction\x3d"down" class\x3d"move icon-down-big"\x3e\x3c/button\x3e',
|
32
|
-
"row separator"==a?'\x3cbutton title\x3d"Remove element" data-tab\x3d"true" class\x3d"remove icon-trash"\x3e\x3c/button\x3e':"",a,"\x3c/span\x3e\x3c/p\x3e"].join("")};d.evaluateToolbarGroupsConfig=function(a){return a=function(a){var c={},d;try{d=eval("("+a+")")}catch(f){try{d=eval(a)}catch(g){return null}}return c.toolbarGroups&&"number"===typeof c.toolbarGroups.length?JSON.stringify(c):d&&"number"===typeof d.length?JSON.stringify({toolbarGroups:d}):d&&d.toolbarGroups?JSON.stringify(d):null}(a)};
|
33
|
-
return d})();
|
@@ -1,14 +0,0 @@
|
|
1
|
-
(function(){function e(a){l.call(this,a);this.hintContainer=this.codeContainer=null}var l=ToolbarConfigurator.AbstractToolbarModifier,g=ToolbarConfigurator.FullToolbarEditor;ToolbarConfigurator.ToolbarTextModifier=e;e.prototype=Object.create(l.prototype);e.prototype._onInit=function(a,d){l.prototype._onInit.call(this,void 0,d);this._createModifier(d?this.actualConfig:void 0);"function"===typeof a&&a(this.mainContainer)};e.prototype._createModifier=function(a){function d(a){var b=c(a);if(null!==b.charsBetween){var d=
|
2
|
-
k.getUnusedButtonsArray(k.actualConfig.toolbar,!0,b.charsBetween),e=a.getCursor(),b=CodeMirror.Pos(e.line,e.ch-b.charsBetween.length),h=a.getTokenAt(e);"{"===a.getTokenAt({line:e.line,ch:h.start}).string&&(d=["name"]);if(0!==d.length)return new f(b,e,d)}}function f(a,c,b){this.from=a;this.to=c;this.list=b;this._handlers=[]}function c(a,c){var b={};b.cur=a.getCursor();b.tok=a.getTokenAt(b.cur);b["char"]=c||b.tok.string.charAt(b.tok.string.length-1);var d=a.getRange(CodeMirror.Pos(b.cur.line,0),b.cur).split("").reverse().join(""),
|
3
|
-
d=d.replace(/(['|"]\w*['|"])/g,"");b.charsBetween=d.match(/(^\w*)(['|"])/);b.charsBetween&&(b.endChar=b.charsBetween[2],b.charsBetween=b.charsBetween[1].split("").reverse().join(""));return b}function b(a){setTimeout(function(){a.state.completionActive||CodeMirror.showHint(a,d,{hintsClass:"toolbar-modifier",completeSingle:!1})},100);return CodeMirror.Pass}var k=this;this._createToolbar();this.toolbarContainer&&this.mainContainer.append(this.toolbarContainer);l.prototype._createModifier.call(this);
|
4
|
-
this._setupActualConfig(a);a=this.actualConfig.toolbar;a=CKEDITOR.tools.isArray(a)?"\tconfig.toolbar \x3d "+("[\n\t\t"+g.map(a,function(a){return l.stringifyJSONintoOneLine(a,{addSpaces:!0,noQuotesOnKey:!0,singleQuotes:!0})}).join(",\n\t\t")+"\n\t]")+";":"config.toolbar \x3d [];";a=["CKEDITOR.editorConfig \x3d function( config ) {\n",a,"\n};"].join("");var e=new CKEDITOR.dom.element("div");e.addClass("codemirror-wrapper");this.modifyContainer.append(e);this.codeContainer=CodeMirror(e.$,{mode:{name:"javascript",
|
5
|
-
json:!0},lineNumbers:!1,lineWrapping:!0,viewportMargin:Infinity,value:a,smartIndent:!1,indentWithTabs:!0,indentUnit:4,tabSize:4,theme:"neo",extraKeys:{Left:b,Right:b,"'''":b,"'\"'":b,Backspace:b,Delete:b,"Shift-Tab":"indentLess"}});this.codeContainer.on("endCompletion",function(a,b){var d=c(a);void 0!==b&&a.replaceSelection(d.endChar)});this.codeContainer.on("change",function(){var a=k.codeContainer.getValue(),a=k._evaluateValue(a);null!==a?(k.actualConfig.toolbar=a.toolbar?a.toolbar:k.actualConfig.toolbar,
|
6
|
-
k._fillHintByUnusedElements(),k._refreshEditor(),k.mainContainer.removeClass("invalid")):k.mainContainer.addClass("invalid")});this.hintContainer=new CKEDITOR.dom.element("div");this.hintContainer.addClass("toolbarModifier-hints");this._fillHintByUnusedElements();this.hintContainer.insertBefore(e)};e.prototype._fillHintByUnusedElements=function(){var a=this.getUnusedButtonsArray(this.actualConfig.toolbar,!0),a=this.groupButtonNamesByGroup(a),d=g.map(a,function(a){var b=g.map(a.buttons,function(a){return"\x3ccode\x3e"+
|
7
|
-
a+"\x3c/code\x3e "}).join("");return["\x3cdt\x3e\x3ccode\x3e",a.name,"\x3c/code\x3e\x3c/dt\x3e\x3cdd\x3e",b,"\x3c/dd\x3e"].join("")}).join(" "),f='\x3cdt class\x3d"list-header"\x3eToolbar group\x3c/dt\x3e\x3cdd class\x3d"list-header"\x3eUnused items\x3c/dd\x3e';a.length||(f="\x3cp\x3eAll items are in use.\x3c/p\x3e");this.codeContainer.refresh();this.hintContainer.setHtml("\x3ch3\x3eUnused toolbar items\x3c/h3\x3e\x3cdl\x3e"+f+d+"\x3c/dl\x3e")};e.prototype.getToolbarGroupByButtonName=function(a){var d=
|
8
|
-
this.fullToolbarEditor.buttonNamesByGroup,f;for(f in d)for(var c=d[f],b=c.length;b--;)if(a===c[b])return f;return null};e.prototype.getUnusedButtonsArray=function(a,d,f){d=!0===d?!0:!1;var c=e.mapToolbarCfgToElementsList(a);a=Object.keys(this.fullToolbarEditor.editorInstance.ui.items);a=g.filter(a,function(a){var d="-"===a;a=void 0===f||0===a.toLowerCase().indexOf(f.toLowerCase());return!d&&a});a=g.filter(a,function(a){return-1==CKEDITOR.tools.indexOf(c,a)});d&&a.sort();return a};e.prototype.groupButtonNamesByGroup=
|
9
|
-
function(a){var d=[],f=JSON.parse(JSON.stringify(this.fullToolbarEditor.buttonNamesByGroup)),c;for(c in f){var b=f[c],b=g.filter(b,function(b){return-1!==CKEDITOR.tools.indexOf(a,b)});b.length&&d.push({name:c,buttons:b})}return d};e.mapToolbarCfgToElementsList=function(a){function d(a){return"-"!==a}for(var f=[],c=a.length,b=0;b<c;b+=1)a[b]&&"string"!==typeof a[b]&&(f=f.concat(g.filter(a[b].items,d)));return f};e.prototype._setupActualConfig=function(a){a=a||this.editorInstance.config;CKEDITOR.tools.isArray(a.toolbar)||
|
10
|
-
(a.toolbarGroups||(a.toolbarGroups=this.fullToolbarEditor.getFullToolbarGroupsConfig(!0)),this._fixGroups(a),a.toolbar=this._mapToolbarGroupsToToolbar(a.toolbarGroups,this.actualConfig.removeButtons),this.actualConfig.toolbar=a.toolbar,this.actualConfig.removeButtons="")};e.prototype._mapToolbarGroupsToToolbar=function(a,d){d=d||this.editorInstance.config.removedBtns;d="string"==typeof d?d.split(","):[];for(var f=a.length;f--;){var c=this._mapToolbarSubgroup(a[f],d);"separator"===a[f].type?a[f]="/":
|
11
|
-
CKEDITOR.tools.isArray(c)&&0===c.length?a.splice(f,1):a[f]="string"==typeof c?c:{name:a[f].name,items:c}}return a};e.prototype._mapToolbarSubgroup=function(a,d){if("string"==typeof a)return a;for(var f=a.groups?a.groups.length:0,c=[],b=0;b<f;b+=1){var e=a.groups[b],e=this.fullToolbarEditor.buttonsByGroup["string"===typeof e?e:e.name]||[],e=this._mapButtonsToButtonsNames(e,d),g=e.length,c=c.concat(e);g&&c.push("-")}"-"==c[c.length-1]&&c.pop();return c};e.prototype._mapButtonsToButtonsNames=function(a,
|
12
|
-
d){for(var f=a.length;f--;){var c=a[f],c="string"===typeof c?c:this.fullToolbarEditor.getCamelCasedButtonName(c.name);-1!==CKEDITOR.tools.indexOf(d,c)?a.splice(f,1):a[f]=c}return a};e.prototype._evaluateValue=function(a){var d;try{var f={};Function("var CKEDITOR \x3d {}; "+a+"; return CKEDITOR;")().editorConfig(f);d=f;for(var c=d.toolbar.length;c--;)d.toolbar[c]||d.toolbar.splice(c,1)}catch(b){d=null}return d};e.prototype.mapToolbarToToolbarGroups=function(a){function d(a,b){a=a.slice();for(var d=
|
13
|
-
b.length;d--;){var c=a.indexOf(b[d]);-1!==c&&a.splice(c,1)}return a}for(var f={},c=[],b=[],c=a.length,e=0;e<c;e++)if("/"===a[e])b.push("/");else{var g=a[e].items,m={};m.name=a[e].name;m.groups=[];for(var l=g.length,p=0;p<l;p++){var n=g[p];if("-"!==n){var h=this.getToolbarGroupByButtonName(n);-1===m.groups.indexOf(h)&&m.groups.push(h);f[h]=f[h]||{};h=f[h].buttons=f[h].buttons||{};h[n]=h[n]||{used:0,origin:m.name};h[n].used++}}b.push(m)}c=function(a,b){var c=[],e;for(e in a)var f=a[e],g=b[e].slice(),
|
14
|
-
c=c.concat(d(g,Object.keys(f.buttons)));return c}(f,this.fullToolbarEditor.buttonNamesByGroup);return{toolbarGroups:b,removeButtons:c.join(",")}};return e})();
|
@@ -1,19 +0,0 @@
|
|
1
|
-
Copyright (C) 2014 by Marijn Haverbeke <marijnh@gmail.com> and others
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
-
of this software and associated documentation files (the "Software"), to deal
|
5
|
-
in the Software without restriction, including without limitation the rights
|
6
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
-
copies of the Software, and to permit persons to whom the Software is
|
8
|
-
furnished to do so, subject to the following conditions:
|
9
|
-
|
10
|
-
The above copyright notice and this permission notice shall be included in
|
11
|
-
all copies or substantial portions of the Software.
|
12
|
-
|
13
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
-
THE SOFTWARE.
|