about summary refs log tree commit diff stats
path: root/app/assets/javascripts/ckeditor/plugins/image2
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2023-10-11 11:39:16 -0400
committerStar Rauchenberger <fefferburbia@gmail.com>2023-10-11 11:39:16 -0400
commit3a628945ade35f3ba351ba90e271608520753174 (patch)
tree05c496db4cf11aec1e334336858bf3fafff0c9e0 /app/assets/javascripts/ckeditor/plugins/image2
parentffcc44d1a73ae1191e835fa625f2f8a7e3e25bda (diff)
downloadthoughts-3a628945ade35f3ba351ba90e271608520753174.tar.gz
thoughts-3a628945ade35f3ba351ba90e271608520753174.tar.bz2
thoughts-3a628945ade35f3ba351ba90e271608520753174.zip
Removed ckeditor
Diffstat (limited to 'app/assets/javascripts/ckeditor/plugins/image2')
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/dev/assets/image1.jpgbin34316 -> 0 bytes
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/dev/assets/image2.jpgbin27711 -> 0 bytes
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/dev/contents.css35
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/dev/image2.html339
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/dialogs/image2.js553
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/icons/hidpi/image.pngbin905 -> 0 bytes
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/icons/image.pngbin498 -> 0 bytes
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/af.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/ar.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/az.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/bg.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/bn.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/bs.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/ca.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/cs.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/cy.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/da.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/de-ch.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/de.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/el.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/en-au.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/en-ca.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/en-gb.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/en.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/eo.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/es-mx.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/es.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/et.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/eu.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/fa.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/fi.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/fo.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/fr-ca.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/fr.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/gl.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/gu.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/he.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/hi.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/hr.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/hu.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/id.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/is.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/it.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/ja.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/ka.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/km.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/ko.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/ku.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/lt.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/lv.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/mk.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/mn.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/ms.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/nb.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/nl.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/no.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/oc.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/pl.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/pt-br.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/pt.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/ro.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/ru.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/si.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/sk.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/sl.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/sq.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/sr-latn.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/sr.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/sv.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/th.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/tr.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/tt.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/ug.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/uk.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/vi.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/zh-cn.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/lang/zh.js21
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/plugin.js1712
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/samples/assets/image1.jpgbin33171 -> 0 bytes
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/samples/assets/image2.jpgbin26238 -> 0 bytes
-rw-r--r--app/assets/javascripts/ckeditor/plugins/image2/samples/image2.html68
81 files changed, 0 insertions, 4177 deletions
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/dev/assets/image1.jpg b/app/assets/javascripts/ckeditor/plugins/image2/dev/assets/image1.jpg deleted file mode 100644 index 2fe79eb..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/dev/assets/image1.jpg +++ /dev/null
Binary files differ
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/dev/assets/image2.jpg b/app/assets/javascripts/ckeditor/plugins/image2/dev/assets/image2.jpg deleted file mode 100644 index 453ece5..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/dev/assets/image2.jpg +++ /dev/null
Binary files differ
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/dev/contents.css b/app/assets/javascripts/ckeditor/plugins/image2/dev/contents.css deleted file mode 100644 index ef29f02..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/dev/contents.css +++ /dev/null
@@ -1,35 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5
6.cke_widget_wrapper:hover:after {
7 content: "id: " attr(data-cke-widget-id);
8 position: absolute;
9 top: 0;
10 right: 0;
11 padding: 2px 4px;
12 background: #EEE;
13 border: solid 1px #DDD;
14 border-radius: 2px;
15 color: #BBB;
16 font: bold 10px sans-serif;
17}
18
19.align-left {
20 float: left;
21 margin-right: 20px;
22}
23
24.align-right {
25 float: right;
26 margin-left: 20px;
27}
28
29.align-center {
30 text-align: center;
31}
32
33.align-center > figure {
34 display: inline-block;
35}
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/dev/image2.html b/app/assets/javascripts/ckeditor/plugins/image2/dev/image2.html deleted file mode 100644 index 1070a6e..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/dev/image2.html +++ /dev/null
@@ -1,339 +0,0 @@
1<!DOCTYPE html>
2<!--
3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license
5-->
6<html>
7<head>
8 <meta charset="utf-8">
9 <title>Widget Image &mdash; CKEditor Sample</title>
10 <script src="../../../ckeditor.js"></script>
11 <script src="../../../dev/console/console.js"></script>
12 <script src="../../../dev/console/focusconsole.js"></script>
13 <script src="../../widget/dev/console.js"></script>
14 <script>
15 if ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 )
16 CKEDITOR.tools.enableHtml5Elements( document );
17
18 var editor;
19
20 // The instanceReady event is fired, when an instance of CKEditor has finished
21 // its initialization.
22 CKEDITOR.on( 'instanceReady', function( ev ) {
23 editor = ev.editor;
24
25 // Show this "on" button.
26 document.getElementById( 'readOnlyOn' ).style.display = '';
27
28 // Event fired when the readOnly property changes.
29 editor.on( 'readOnly', function() {
30 document.getElementById( 'readOnlyOn' ).style.display = this.readOnly ? 'none' : '';
31 document.getElementById( 'readOnlyOff' ).style.display = this.readOnly ? '' : 'none';
32 });
33 });
34
35 function toggleReadOnly( isReadOnly ) {
36 // Change the read-only state of the editor.
37 // http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setReadOnly
38 editor.setReadOnly( isReadOnly );
39 }
40
41 </script>
42 <link href="../../../samples/old/sample.css" rel="stylesheet">
43
44 <style>
45
46 body {
47 font-size: 13px;
48 }
49 .editable {
50 padding: 20px;
51 border: 2px solid #dfdfdf;
52 overflow: auto;
53 }
54
55 body p {
56 line-height: 1.8em;
57 }
58
59 /* Reset some styles from sample.css */
60 .cke_editable.cke_editable_inline
61 {
62 cursor: auto;
63 }
64 .cke_editable.cke_editable_inline.cke_focus
65 {
66 box-shadow: none;
67 background: inherit;
68 cursor: auto;
69 }
70
71 </style>
72 <link href="contents.css" rel="stylesheet">
73 <link href="../../../contents.css" rel="stylesheet">
74</head>
75<body>
76 <h1 class="samples">
77 <a href="../../../samples/old/index.html">CKEditor Samples</a> &raquo; Widget Image
78 </h1>
79
80 <h2>Classic (iframe-based) Sample</h2>
81
82 <textarea id="editor1" cols="10" rows="10">
83 <h1>Apollo 11</h1>
84
85 <figure class="image" style="float: right">
86 <img alt="Saturn V" src="assets/image1.jpg" width="200" data-foo="*********" data-bar="@@@@@@@@" />
87 <figcaption>Roll out of Saturn V on launch pad</figcaption>
88 </figure>
89
90 <p><strong>Apollo 11</strong> was the spaceflight that landed the first humans, Americans <a href="http://en.wikipedia.org/wiki/Neil_Armstrong" title="Neil Armstrong">Neil Armstrong</a> and <a href="http://en.wikipedia.org/wiki/Buzz_Aldrin" title="Buzz Aldrin">Buzz Aldrin</a>, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.</p>
91
92 <p>Armstrong spent about <s>three and a half</s> two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5&nbsp;kg) of lunar material for return to Earth. A third member of the mission, <a href="http://en.wikipedia.org/wiki/Michael_Collins_(astronaut)" title="Michael Collins (astronaut)">Michael Collins</a>, piloted the <a href="http://en.wikipedia.org/wiki/Apollo_Command/Service_Module" title="Apollo Command/Service Module">command</a> spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.</p>
93
94 <h2>Broadcasting and <em>quotes</em> <a id="quotes" name="quotes"></a></h2>
95
96 <p>Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:</p>
97
98 <blockquote>
99 <p>One small step for [a] man, one giant leap for mankind.</p>
100 </blockquote>
101
102 <p>Apollo 11 effectively ended the <a href="http://en.wikipedia.org/wiki/Space_Race" title="Space Race">Space Race</a> and fulfilled a national goal proposed in 1961 by the late U.S. President <a href="http://en.wikipedia.org/wiki/John_F._Kennedy" title="John F. Kennedy">John F. Kennedy</a> in a speech before the United States Congress:</p>
103
104 <blockquote>
105 <p>[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.</p>
106 </blockquote>
107
108 <figure class="image" style="float: right">
109 <img alt="The Eagle" src="assets/image2.jpg" style="width: 200px" />
110 <figcaption>The Eagle in lunar orbit</figcaption>
111 </figure>
112
113 <h2>Technical details <a id="tech-details" name="tech-details"></a></h2>
114
115 <p>Launched by a <strong>Saturn V</strong> rocket from <a href="http://en.wikipedia.org/wiki/Kennedy_Space_Center" title="Kennedy Space Center">Kennedy Space Center</a> in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of <a href="http://en.wikipedia.org/wiki/NASA" title="NASA">NASA</a>&#39;s Apollo program. The Apollo spacecraft had three parts:</p>
116
117 <ol>
118 <li><strong>Command Module</strong> with a cabin for the three astronauts which was the only part which landed back on Earth</li>
119 <li><strong>Service Module</strong> which supported the Command Module with propulsion, electrical power, oxygen and water</li>
120 <li><strong>Lunar Module</strong> for landing on the Moon.</li>
121 </ol>
122
123 <p>After being sent to the Moon by the Saturn V&#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the <a href="http://en.wikipedia.org/wiki/Mare_Tranquillitatis" title="Mare Tranquillitatis">Sea of Tranquility</a>. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the <a href="http://en.wikipedia.org/wiki/Pacific_Ocean" title="Pacific Ocean">Pacific Ocean</a> on July 24.</p>
124
125 <p style="text-align:center">
126 <img alt="Saturn V" src="assets/image1.jpg" width="200" />
127 </p>
128
129 <hr />
130 <p style="text-align:right"><small>Source: <a href="http://en.wikipedia.org/wiki/Apollo_11">Wikipedia.org</a></small></p>
131 </textarea>
132
133 <h2>Inline Sample</h2>
134
135 <div id="editor2" contenteditable="true" class="editable">
136 <h2>Apollo 11</h2>
137
138 <figure class="image" style="float: right">
139 <img alt="Saturn V" src="assets/image1.jpg" width="200" />
140 <figcaption>Roll out of Saturn V on launch pad</figcaption>
141 </figure>
142
143 <p><strong>Apollo 11</strong> was the spaceflight that landed the first humans, Americans <a href="http://en.wikipedia.org/wiki/Neil_Armstrong" title="Neil Armstrong">Neil Armstrong</a> and <a href="http://en.wikipedia.org/wiki/Buzz_Aldrin" title="Buzz Aldrin">Buzz Aldrin</a>, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.</p>
144
145 <p>Armstrong spent about <s>three and a half</s> two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5&nbsp;kg) of lunar material for return to Earth. A third member of the mission, <a href="http://en.wikipedia.org/wiki/Michael_Collins_(astronaut)" title="Michael Collins (astronaut)">Michael Collins</a>, piloted the <a href="http://en.wikipedia.org/wiki/Apollo_Command/Service_Module" title="Apollo Command/Service Module">command</a> spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.</p>
146
147 <h2>Broadcasting and <em>quotes</em> <a id="quotes" name="quotes"></a></h2>
148
149 <p>Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:</p>
150
151 <blockquote>
152 <p>One small step for [a] man, one giant leap for mankind.</p>
153 </blockquote>
154
155 <p>Apollo 11 effectively ended the <a href="http://en.wikipedia.org/wiki/Space_Race" title="Space Race">Space Race</a> and fulfilled a national goal proposed in 1961 by the late U.S. President <a href="http://en.wikipedia.org/wiki/John_F._Kennedy" title="John F. Kennedy">John F. Kennedy</a> in a speech before the United States Congress:</p>
156
157 <blockquote>
158 <p>[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.</p>
159 </blockquote>
160
161 <figure class="image" style="float: right">
162 <img alt="The Eagle" src="assets/image2.jpg" style="width: 200px" />
163 <figcaption>The Eagle in lunar orbit</figcaption>
164 </figure>
165
166 <h2>Technical details <a id="tech-details" name="tech-details"></a></h2>
167
168 <p>Launched by a <strong>Saturn V</strong> rocket from <a href="http://en.wikipedia.org/wiki/Kennedy_Space_Center" title="Kennedy Space Center">Kennedy Space Center</a> in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of <a href="http://en.wikipedia.org/wiki/NASA" title="NASA">NASA</a>&#39;s Apollo program. The Apollo spacecraft had three parts:</p>
169
170 <ol>
171 <li><strong>Command Module</strong> with a cabin for the three astronauts which was the only part which landed back on Earth</li>
172 <li><strong>Service Module</strong> which supported the Command Module with propulsion, electrical power, oxygen and water</li>
173 <li><strong>Lunar Module</strong> for landing on the Moon.</li>
174 </ol>
175
176 <p>After being sent to the Moon by the Saturn V&#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the <a href="http://en.wikipedia.org/wiki/Mare_Tranquillitatis" title="Mare Tranquillitatis">Sea of Tranquility</a>. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the <a href="http://en.wikipedia.org/wiki/Pacific_Ocean" title="Pacific Ocean">Pacific Ocean</a> on July 24.</p>
177
178 <p style="text-align:center">
179 <img alt="Saturn V" src="assets/image1.jpg" width="200" />
180 </p>
181
182 <hr />
183 <p style="text-align:right"><small>Source: <a href="http://en.wikipedia.org/wiki/Apollo_11">Wikipedia.org</a></small></p>
184 </div>
185
186 <h2>Div Editing Area Sample</h2>
187
188 <textarea id="editor3" cols="10" rows="10">
189 <h1>Apollo 11</h1>
190
191 <figure class="caption" style="float: right">
192 <img alt="Saturn V" src="assets/image1.jpg" width="200" />
193 <figcaption>Roll out of Saturn V on launch pad</figcaption>
194 </figure>
195
196 <p><strong>Apollo 11</strong> was the spaceflight that landed the first humans, Americans <a href="http://en.wikipedia.org/wiki/Neil_Armstrong" title="Neil Armstrong">Neil Armstrong</a> and <a href="http://en.wikipedia.org/wiki/Buzz_Aldrin" title="Buzz Aldrin">Buzz Aldrin</a>, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.</p>
197
198 <p>Armstrong spent about <s>three and a half</s> two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5&nbsp;kg) of lunar material for return to Earth. A third member of the mission, <a href="http://en.wikipedia.org/wiki/Michael_Collins_(astronaut)" title="Michael Collins (astronaut)">Michael Collins</a>, piloted the <a href="http://en.wikipedia.org/wiki/Apollo_Command/Service_Module" title="Apollo Command/Service Module">command</a> spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.</p>
199
200 <h2>Broadcasting and <em>quotes</em> <a id="quotes" name="quotes"></a></h2>
201
202 <p>Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:</p>
203
204 <blockquote>
205 <p>One small step for [a] man, one giant leap for mankind.</p>
206 </blockquote>
207
208 <p>Apollo 11 effectively ended the <a href="http://en.wikipedia.org/wiki/Space_Race" title="Space Race">Space Race</a> and fulfilled a national goal proposed in 1961 by the late U.S. President <a href="http://en.wikipedia.org/wiki/John_F._Kennedy" title="John F. Kennedy">John F. Kennedy</a> in a speech before the United States Congress:</p>
209
210 <blockquote>
211 <p>[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.</p>
212 </blockquote>
213
214 <figure class="caption" style="float: right">
215 <img alt="The Eagle" src="assets/image2.jpg" style="width: 200px" />
216 <figcaption>The Eagle in lunar orbit</figcaption>
217 </figure>
218
219 <h2>Technical Details <a id="tech-details" name="tech-details"></a></h2>
220
221 <p>Launched by a <strong>Saturn V</strong> rocket from <a href="http://en.wikipedia.org/wiki/Kennedy_Space_Center" title="Kennedy Space Center">Kennedy Space Center</a> in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of <a href="http://en.wikipedia.org/wiki/NASA" title="NASA">NASA</a>&#39;s Apollo program. The Apollo spacecraft had three parts:</p>
222
223 <ol>
224 <li><strong>Command Module</strong> with a cabin for the three astronauts which was the only part which landed back on Earth</li>
225 <li><strong>Service Module</strong> which supported the Command Module with propulsion, electrical power, oxygen and water</li>
226 <li><strong>Lunar Module</strong> for landing on the Moon.</li>
227 </ol>
228
229 <p>After being sent to the Moon by the Saturn V&#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the <a href="http://en.wikipedia.org/wiki/Mare_Tranquillitatis" title="Mare Tranquillitatis">Sea of Tranquility</a>. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the <a href="http://en.wikipedia.org/wiki/Pacific_Ocean" title="Pacific Ocean">Pacific Ocean</a> on July 24.</p>
230
231 <p style="text-align:center">
232 <img alt="Saturn V" src="assets/image1.jpg" width="200" />
233 </p>
234
235 <hr />
236 <p style="text-align:right"><small>Source: <a href="http://en.wikipedia.org/wiki/Apollo_11">Wikipedia.org</a></small></p>
237 </textarea>
238
239 <h2>alignClasses samples</h2>
240
241 <textarea id="editor4" cols="10" rows="10">
242 <h1>Apollo 11</h1>
243
244 <figure class="align-left image">
245 <img alt="Saturn V" src="assets/image1.jpg" width="200" data-foo="*********" data-bar="@@@@@@@@" />
246 <figcaption>Roll out of Saturn V on launch pad</figcaption>
247 </figure>
248
249 <p><strong>Apollo 11</strong> was the spaceflight that landed the first humans, Americans <a href="http://en.wikipedia.org/wiki/Neil_Armstrong" title="Neil Armstrong">Neil Armstrong</a> and <a href="http://en.wikipedia.org/wiki/Buzz_Aldrin" title="Buzz Aldrin">Buzz Aldrin</a>, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.</p>
250
251 <blockquote>
252 <p>[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.</p>
253 </blockquote>
254
255 <figure class="align-right image">
256 <img alt="The Eagle" src="assets/image2.jpg" style="width: 200px" />
257 <figcaption>The Eagle in lunar orbit</figcaption>
258 </figure>
259
260 <h2>Technical details <a id="tech-details" name="tech-details"></a></h2>
261
262 <p>Launched by a <strong>Saturn V</strong> rocket from <a href="http://en.wikipedia.org/wiki/Kennedy_Space_Center" title="Kennedy Space Center">Kennedy Space Center</a> in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of <a href="http://en.wikipedia.org/wiki/NASA" title="NASA">NASA</a>&#39;s Apollo program. The Apollo spacecraft had three parts:</p>
263
264 <ol>
265 <li><strong>Command Module</strong> with a cabin for the three astronauts which was the only part which landed back on Earth</li>
266 <li><strong>Service Module</strong> which supported the Command Module with propulsion, electrical power, oxygen and water</li>
267 <li><strong>Lunar Module</strong> for landing on the Moon.</li>
268 </ol>
269
270 <p>After being sent to the Moon by the Saturn V&#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the <a href="http://en.wikipedia.org/wiki/Mare_Tranquillitatis" title="Mare Tranquillitatis">Sea of Tranquility</a>. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the <a href="http://en.wikipedia.org/wiki/Pacific_Ocean" title="Pacific Ocean">Pacific Ocean</a> on July 24.</p>
271
272 <p class="align-center">
273 <img alt="Saturn V" src="assets/image1.jpg" width="200" />
274 </p>
275
276 <hr />
277 <p style="text-align:right"><small>Source: <a href="http://en.wikipedia.org/wiki/Apollo_11">Wikipedia.org</a></small></p>
278 </textarea>
279
280 <p>
281 <input id="readOnlyOn" onclick="toggleReadOnly( true );" type="button" value="Make it read-only" style="display:none">
282 <input id="readOnlyOff" onclick="toggleReadOnly( false );" type="button" value="Make it editable again" style="display:none">
283 </p>
284
285 <script>
286
287 CKEDITOR.disableAutoInline = true;
288
289 CKEDITOR.replace( 'editor1', {
290 extraPlugins: 'image2',
291 height: 600,
292 contentsCss: [ '../../../contents.css', 'contents.css' ],
293 extraAllowedContent: 'img[data-foo,data-bar]',
294
295 filebrowserBrowseUrl: '/ckfinder/ckfinder.html',
296 filebrowserImageBrowseUrl: '/ckfinder/ckfinder.html?Type=Images',
297 filebrowserUploadUrl: '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files',
298 filebrowserImageUploadUrl: '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images',
299 } );
300
301 CKEDITOR.inline( 'editor2', {
302 extraPlugins: 'image2,sourcedialog'
303 } );
304
305 CKEDITOR.replace( 'editor3', {
306 extraPlugins: 'image2,divarea',
307 height: 600
308 } );
309
310 CKEDITOR.replace( 'editor4', {
311 extraPlugins: 'image2',
312 image2_alignClasses: [ 'align-left', 'align-center', 'align-right' ],
313 contentsCss: [ '../../../contents.css', 'contents.css' ],
314 height: 600
315 } );
316
317 CKCONSOLE.create( 'widget', { editor: 'editor1' } );
318 CKCONSOLE.create( 'focus', { editor: 'editor1' } );
319 CKCONSOLE.create( 'widget', { editor: 'editor2', folded: true } );
320 CKCONSOLE.create( 'focus', { editor: 'editor2', folded: true } );
321 CKCONSOLE.create( 'widget', { editor: 'editor3' } );
322 CKCONSOLE.create( 'focus', { editor: 'editor3' } );
323 CKCONSOLE.create( 'widget', { editor: 'editor4' } );
324 CKCONSOLE.create( 'focus', { editor: 'editor4' } );
325
326 </script>
327
328 <div id="footer">
329 <hr>
330 <p>
331 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
332 </p>
333 <p id="copy">
334 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
335 Knabben. All rights reserved.
336 </p>
337 </div>
338</body>
339</html>
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/dialogs/image2.js b/app/assets/javascripts/ckeditor/plugins/image2/dialogs/image2.js deleted file mode 100644 index cb393a3..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/dialogs/image2.js +++ /dev/null
@@ -1,553 +0,0 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6/**
7 * @fileOverview Image plugin based on Widgets API
8 */
9
10'use strict';
11
12CKEDITOR.dialog.add( 'image2', function( editor ) {
13
14 // RegExp: 123, 123px, empty string ""
15 var regexGetSizeOrEmpty = /(^\s*(\d+)(px)?\s*$)|^$/i,
16
17 lockButtonId = CKEDITOR.tools.getNextId(),
18 resetButtonId = CKEDITOR.tools.getNextId(),
19
20 lang = editor.lang.image2,
21 commonLang = editor.lang.common,
22
23 lockResetStyle = 'margin-top:18px;width:40px;height:20px;',
24 lockResetHtml = new CKEDITOR.template(
25 '<div>' +
26 '<a href="javascript:void(0)" tabindex="-1" title="' + lang.lockRatio + '" class="cke_btn_locked" id="{lockButtonId}" role="checkbox">' +
27 '<span class="cke_icon"></span>' +
28 '<span class="cke_label">' + lang.lockRatio + '</span>' +
29 '</a>' +
30
31 '<a href="javascript:void(0)" tabindex="-1" title="' + lang.resetSize + '" class="cke_btn_reset" id="{resetButtonId}" role="button">' +
32 '<span class="cke_label">' + lang.resetSize + '</span>' +
33 '</a>' +
34 '</div>' ).output( {
35 lockButtonId: lockButtonId,
36 resetButtonId: resetButtonId
37 } ),
38
39 helpers = CKEDITOR.plugins.image2,
40
41 // Editor instance configuration.
42 config = editor.config,
43
44 hasFileBrowser = !!( config.filebrowserImageBrowseUrl || config.filebrowserBrowseUrl ),
45
46 // Content restrictions defined by the widget which
47 // impact on dialog structure and presence of fields.
48 features = editor.widgets.registered.image.features,
49
50 // Functions inherited from image2 plugin.
51 getNatural = helpers.getNatural,
52
53 // Global variables referring to the dialog's context.
54 doc, widget, image,
55
56 // Global variable referring to this dialog's image pre-loader.
57 preLoader,
58
59 // Global variables holding the original size of the image.
60 domWidth, domHeight,
61
62 // Global variables related to image pre-loading.
63 preLoadedWidth, preLoadedHeight, srcChanged,
64
65 // Global variables related to size locking.
66 lockRatio, userDefinedLock,
67
68 // Global variables referring to dialog fields and elements.
69 lockButton, resetButton, widthField, heightField,
70
71 natural;
72
73 // Validates dimension. Allowed values are:
74 // "123px", "123", "" (empty string)
75 function validateDimension() {
76 var match = this.getValue().match( regexGetSizeOrEmpty ),
77 isValid = !!( match && parseInt( match[ 1 ], 10 ) !== 0 );
78
79 if ( !isValid )
80 alert( commonLang[ 'invalid' + CKEDITOR.tools.capitalize( this.id ) ] ); // jshint ignore:line
81
82 return isValid;
83 }
84
85 // Creates a function that pre-loads images. The callback function passes
86 // [image, width, height] or null if loading failed.
87 //
88 // @returns {Function}
89 function createPreLoader() {
90 var image = doc.createElement( 'img' ),
91 listeners = [];
92
93 function addListener( event, callback ) {
94 listeners.push( image.once( event, function( evt ) {
95 removeListeners();
96 callback( evt );
97 } ) );
98 }
99
100 function removeListeners() {
101 var l;
102
103 while ( ( l = listeners.pop() ) )
104 l.removeListener();
105 }
106
107 // @param {String} src.
108 // @param {Function} callback.
109 return function( src, callback, scope ) {
110 addListener( 'load', function() {
111 // Don't use image.$.(width|height) since it's buggy in IE9-10 (http://dev.ckeditor.com/ticket/11159)
112 var dimensions = getNatural( image );
113
114 callback.call( scope, image, dimensions.width, dimensions.height );
115 } );
116
117 addListener( 'error', function() {
118 callback( null );
119 } );
120
121 addListener( 'abort', function() {
122 callback( null );
123 } );
124
125 image.setAttribute( 'src',
126 ( config.baseHref || '' ) + src + '?' + Math.random().toString( 16 ).substring( 2 ) );
127 };
128 }
129
130 // This function updates width and height fields once the
131 // "src" field is altered. Along with dimensions, also the
132 // dimensions lock is adjusted.
133 function onChangeSrc() {
134 var value = this.getValue();
135
136 toggleDimensions( false );
137
138 // Remember that src is different than default.
139 if ( value !== widget.data.src ) {
140 // Update dimensions of the image once it's preloaded.
141 preLoader( value, function( image, width, height ) {
142 // Re-enable width and height fields.
143 toggleDimensions( true );
144
145 // There was problem loading the image. Unlock ratio.
146 if ( !image )
147 return toggleLockRatio( false );
148
149 // Fill width field with the width of the new image.
150 widthField.setValue( editor.config.image2_prefillDimensions === false ? 0 : width );
151
152 // Fill height field with the height of the new image.
153 heightField.setValue( editor.config.image2_prefillDimensions === false ? 0 : height );
154
155 // Cache the new width.
156 preLoadedWidth = width;
157
158 // Cache the new height.
159 preLoadedHeight = height;
160
161 // Check for new lock value if image exist.
162 toggleLockRatio( helpers.checkHasNaturalRatio( image ) );
163 } );
164
165 srcChanged = true;
166 }
167
168 // Value is the same as in widget data but is was
169 // modified back in time. Roll back dimensions when restoring
170 // default src.
171 else if ( srcChanged ) {
172 // Re-enable width and height fields.
173 toggleDimensions( true );
174
175 // Restore width field with cached width.
176 widthField.setValue( domWidth );
177
178 // Restore height field with cached height.
179 heightField.setValue( domHeight );
180
181 // Src equals default one back again.
182 srcChanged = false;
183 }
184
185 // Value is the same as in widget data and it hadn't
186 // been modified.
187 else {
188 // Re-enable width and height fields.
189 toggleDimensions( true );
190 }
191 }
192
193 function onChangeDimension() {
194 // If ratio is un-locked, then we don't care what's next.
195 if ( !lockRatio )
196 return;
197
198 var value = this.getValue();
199
200 // No reason to auto-scale or unlock if the field is empty.
201 if ( !value )
202 return;
203
204 // If the value of the field is invalid (e.g. with %), unlock ratio.
205 if ( !value.match( regexGetSizeOrEmpty ) )
206 toggleLockRatio( false );
207
208 // No automatic re-scale when dimension is '0'.
209 if ( value === '0' )
210 return;
211
212 var isWidth = this.id == 'width',
213 // If dialog opened for the new image, domWidth and domHeight
214 // will be empty. Use dimensions from pre-loader in such case instead.
215 width = domWidth || preLoadedWidth,
216 height = domHeight || preLoadedHeight;
217
218 // If changing width, then auto-scale height.
219 if ( isWidth )
220 value = Math.round( height * ( value / width ) );
221
222 // If changing height, then auto-scale width.
223 else
224 value = Math.round( width * ( value / height ) );
225
226 // If the value is a number, apply it to the other field.
227 if ( !isNaN( value ) )
228 ( isWidth ? heightField : widthField ).setValue( value );
229 }
230
231 // Set-up function for lock and reset buttons:
232 // * Adds lock and reset buttons to focusables. Check if button exist first
233 // because it may be disabled e.g. due to ACF restrictions.
234 // * Register mouseover and mouseout event listeners for UI manipulations.
235 // * Register click event listeners for buttons.
236 function onLoadLockReset() {
237 var dialog = this.getDialog();
238
239 function setupMouseClasses( el ) {
240 el.on( 'mouseover', function() {
241 this.addClass( 'cke_btn_over' );
242 }, el );
243
244 el.on( 'mouseout', function() {
245 this.removeClass( 'cke_btn_over' );
246 }, el );
247 }
248
249 // Create references to lock and reset buttons for this dialog instance.
250 lockButton = doc.getById( lockButtonId );
251 resetButton = doc.getById( resetButtonId );
252
253 // Activate (Un)LockRatio button
254 if ( lockButton ) {
255 // Consider that there's an additional focusable field
256 // in the dialog when the "browse" button is visible.
257 dialog.addFocusable( lockButton, 4 + hasFileBrowser );
258
259 lockButton.on( 'click', function( evt ) {
260 toggleLockRatio();
261 evt.data && evt.data.preventDefault();
262 }, this.getDialog() );
263
264 setupMouseClasses( lockButton );
265 }
266
267 // Activate the reset size button.
268 if ( resetButton ) {
269 // Consider that there's an additional focusable field
270 // in the dialog when the "browse" button is visible.
271 dialog.addFocusable( resetButton, 5 + hasFileBrowser );
272
273 // Fills width and height fields with the original dimensions of the
274 // image (stored in widget#data since widget#init).
275 resetButton.on( 'click', function( evt ) {
276 // If there's a new image loaded, reset button should revert
277 // cached dimensions of pre-loaded DOM element.
278 if ( srcChanged ) {
279 widthField.setValue( preLoadedWidth );
280 heightField.setValue( preLoadedHeight );
281 }
282
283 // If the old image remains, reset button should revert
284 // dimensions as loaded when the dialog was first shown.
285 else {
286 widthField.setValue( domWidth );
287 heightField.setValue( domHeight );
288 }
289
290 evt.data && evt.data.preventDefault();
291 }, this );
292
293 setupMouseClasses( resetButton );
294 }
295 }
296
297 function toggleLockRatio( enable ) {
298 // No locking if there's no radio (i.e. due to ACF).
299 if ( !lockButton )
300 return;
301
302 if ( typeof enable == 'boolean' ) {
303 // If user explicitly wants to decide whether
304 // to lock or not, don't do anything.
305 if ( userDefinedLock )
306 return;
307
308 lockRatio = enable;
309 }
310
311 // Undefined. User changed lock value.
312 else {
313 var width = widthField.getValue(),
314 height;
315
316 userDefinedLock = true;
317 lockRatio = !lockRatio;
318
319 // Automatically adjust height to width to match
320 // the original ratio (based on dom- dimensions).
321 if ( lockRatio && width ) {
322 height = domHeight / domWidth * width;
323
324 if ( !isNaN( height ) )
325 heightField.setValue( Math.round( height ) );
326 }
327 }
328
329 lockButton[ lockRatio ? 'removeClass' : 'addClass' ]( 'cke_btn_unlocked' );
330 lockButton.setAttribute( 'aria-checked', lockRatio );
331
332 // Ratio button hc presentation - WHITE SQUARE / BLACK SQUARE
333 if ( CKEDITOR.env.hc ) {
334 var icon = lockButton.getChild( 0 );
335 icon.setHtml( lockRatio ? CKEDITOR.env.ie ? '\u25A0' : '\u25A3' : CKEDITOR.env.ie ? '\u25A1' : '\u25A2' );
336 }
337 }
338
339 function toggleDimensions( enable ) {
340 var method = enable ? 'enable' : 'disable';
341
342 widthField[ method ]();
343 heightField[ method ]();
344 }
345
346 var srcBoxChildren = [
347 {
348 id: 'src',
349 type: 'text',
350 label: commonLang.url,
351 onKeyup: onChangeSrc,
352 onChange: onChangeSrc,
353 setup: function( widget ) {
354 this.setValue( widget.data.src );
355 },
356 commit: function( widget ) {
357 widget.setData( 'src', this.getValue() );
358 },
359 validate: CKEDITOR.dialog.validate.notEmpty( lang.urlMissing )
360 }
361 ];
362
363 // Render the "Browse" button on demand to avoid an "empty" (hidden child)
364 // space in dialog layout that distorts the UI.
365 if ( hasFileBrowser ) {
366 srcBoxChildren.push( {
367 type: 'button',
368 id: 'browse',
369 // v-align with the 'txtUrl' field.
370 // TODO: We need something better than a fixed size here.
371 style: 'display:inline-block;margin-top:14px;',
372 align: 'center',
373 label: editor.lang.common.browseServer,
374 hidden: true,
375 filebrowser: 'info:src'
376 } );
377 }
378
379 return {
380 title: lang.title,
381 minWidth: 250,
382 minHeight: 100,
383 onLoad: function() {
384 // Create a "global" reference to the document for this dialog instance.
385 doc = this._.element.getDocument();
386
387 // Create a pre-loader used for determining dimensions of new images.
388 preLoader = createPreLoader();
389 },
390 onShow: function() {
391 // Create a "global" reference to edited widget.
392 widget = this.widget;
393
394 // Create a "global" reference to widget's image.
395 image = widget.parts.image;
396
397 // Reset global variables.
398 srcChanged = userDefinedLock = lockRatio = false;
399
400 // Natural dimensions of the image.
401 natural = getNatural( image );
402
403 // Get the natural width of the image.
404 preLoadedWidth = domWidth = natural.width;
405
406 // Get the natural height of the image.
407 preLoadedHeight = domHeight = natural.height;
408 },
409 contents: [
410 {
411 id: 'info',
412 label: lang.infoTab,
413 elements: [
414 {
415 type: 'vbox',
416 padding: 0,
417 children: [
418 {
419 type: 'hbox',
420 widths: [ '100%' ],
421 className: 'cke_dialog_image_url',
422 children: srcBoxChildren
423 }
424 ]
425 },
426 {
427 id: 'alt',
428 type: 'text',
429 label: lang.alt,
430 setup: function( widget ) {
431 this.setValue( widget.data.alt );
432 },
433 commit: function( widget ) {
434 widget.setData( 'alt', this.getValue() );
435 },
436 validate: editor.config.image2_altRequired === true ? CKEDITOR.dialog.validate.notEmpty( lang.altMissing ) : null
437 },
438 {
439 type: 'hbox',
440 widths: [ '25%', '25%', '50%' ],
441 requiredContent: features.dimension.requiredContent,
442 children: [
443 {
444 type: 'text',
445 width: '45px',
446 id: 'width',
447 label: commonLang.width,
448 validate: validateDimension,
449 onKeyUp: onChangeDimension,
450 onLoad: function() {
451 widthField = this;
452 },
453 setup: function( widget ) {
454 this.setValue( widget.data.width );
455 },
456 commit: function( widget ) {
457 widget.setData( 'width', this.getValue() );
458 }
459 },
460 {
461 type: 'text',
462 id: 'height',
463 width: '45px',
464 label: commonLang.height,
465 validate: validateDimension,
466 onKeyUp: onChangeDimension,
467 onLoad: function() {
468 heightField = this;
469 },
470 setup: function( widget ) {
471 this.setValue( widget.data.height );
472 },
473 commit: function( widget ) {
474 widget.setData( 'height', this.getValue() );
475 }
476 },
477 {
478 id: 'lock',
479 type: 'html',
480 style: lockResetStyle,
481 onLoad: onLoadLockReset,
482 setup: function( widget ) {
483 toggleLockRatio( widget.data.lock );
484 },
485 commit: function( widget ) {
486 widget.setData( 'lock', lockRatio );
487 },
488 html: lockResetHtml
489 }
490 ]
491 },
492 {
493 type: 'hbox',
494 id: 'alignment',
495 requiredContent: features.align.requiredContent,
496 children: [
497 {
498 id: 'align',
499 type: 'radio',
500 items: [
501 [ commonLang.alignNone, 'none' ],
502 [ commonLang.alignLeft, 'left' ],
503 [ commonLang.alignCenter, 'center' ],
504 [ commonLang.alignRight, 'right' ]
505 ],
506 label: commonLang.align,
507 setup: function( widget ) {
508 this.setValue( widget.data.align );
509 },
510 commit: function( widget ) {
511 widget.setData( 'align', this.getValue() );
512 }
513 }
514 ]
515 },
516 {
517 id: 'hasCaption',
518 type: 'checkbox',
519 label: lang.captioned,
520 requiredContent: features.caption.requiredContent,
521 setup: function( widget ) {
522 this.setValue( widget.data.hasCaption );
523 },
524 commit: function( widget ) {
525 widget.setData( 'hasCaption', this.getValue() );
526 }
527 }
528 ]
529 },
530 {
531 id: 'Upload',
532 hidden: true,
533 filebrowser: 'uploadButton',
534 label: lang.uploadTab,
535 elements: [
536 {
537 type: 'file',
538 id: 'upload',
539 label: lang.btnUpload,
540 style: 'height:40px'
541 },
542 {
543 type: 'fileButton',
544 id: 'uploadButton',
545 filebrowser: 'info:src',
546 label: lang.btnUpload,
547 'for': [ 'Upload', 'upload' ]
548 }
549 ]
550 }
551 ]
552 };
553} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/icons/hidpi/image.png b/app/assets/javascripts/ckeditor/plugins/image2/icons/hidpi/image.png deleted file mode 100644 index d0f21ae..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/icons/hidpi/image.png +++ /dev/null
Binary files differ
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/icons/image.png b/app/assets/javascripts/ckeditor/plugins/image2/icons/image.png deleted file mode 100644 index 8ea9725..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/icons/image.png +++ /dev/null
Binary files differ
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/af.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/af.js deleted file mode 100644 index be02258..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/af.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'af', {
6 alt: 'Alternatiewe teks',
7 btnUpload: 'Stuur na bediener',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Afbeelding informasie',
11 lockRatio: 'Vaste proporsie',
12 menu: 'Afbeelding eienskappe',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'Herstel grootte',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'Afbeelding eienskappe',
18 uploadTab: 'Oplaai',
19 urlMissing: 'Die URL na die afbeelding ontbreek.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/ar.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/ar.js deleted file mode 100644 index 729ba5e..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/ar.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'ar', {
6 alt: 'عنوان الصورة',
7 btnUpload: 'أرسلها للخادم',
8 captioned: 'صورة ذات اسم',
9 captionPlaceholder: 'تسمية',
10 infoTab: 'معلومات الصورة',
11 lockRatio: 'تناسق الحجم',
12 menu: 'خصائص الصورة',
13 pathName: 'صورة',
14 pathNameCaption: 'تسمية',
15 resetSize: 'إستعادة الحجم الأصلي',
16 resizer: 'انقر ثم اسحب للتحجيم',
17 title: 'خصائص الصورة',
18 uploadTab: 'رفع',
19 urlMissing: 'عنوان مصدر الصورة مفقود',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/az.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/az.js deleted file mode 100644 index 8422f43..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/az.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'az', {
6 alt: 'Alternativ mətn',
7 btnUpload: 'Serverə göndər',
8 captioned: 'Altyazı olan şəkil',
9 captionPlaceholder: 'Altyazı',
10 infoTab: 'Şəkil haqqında məlumat',
11 lockRatio: 'Ölçülərin nisbəti saxla',
12 menu: 'Şəklin seçimləri',
13 pathName: 'Şəkil',
14 pathNameCaption: 'Altyazı',
15 resetSize: 'Ölçüləri qaytar',
16 resizer: 'Ölçülər dəyişmək üçün tıklayın və aparın',
17 title: 'Şəklin seçimləri',
18 uploadTab: 'Serverə yüklə',
19 urlMissing: 'Şəklin ünvanı yanlışdır.',
20 altMissing: 'Alternativ mətn tapılmayıb'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/bg.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/bg.js deleted file mode 100644 index 66cec57..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/bg.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'bg', {
6 alt: 'Алтернативен текст',
7 btnUpload: 'Изпрати я на сървъра',
8 captioned: 'Надписано изображение',
9 captionPlaceholder: 'Надпис',
10 infoTab: 'Детайли за изображението',
11 lockRatio: 'Заключване на съотношението',
12 menu: 'Настройки на изображението',
13 pathName: 'изображение',
14 pathNameCaption: 'надпис',
15 resetSize: 'Нулиране на размер',
16 resizer: 'Кликни и влачи, за да преоразмериш',
17 title: 'Настройки на изображението',
18 uploadTab: 'Качване',
19 urlMissing: 'URL адреса на изображението липсва.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/bn.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/bn.js deleted file mode 100644 index cc057b6..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/bn.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'bn', {
6 alt: 'বিকল্প টেক্সট',
7 btnUpload: 'ইহাকে সার্ভারে প্রেরন কর',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'ছবির তথ্য',
11 lockRatio: 'অনুপাত লক কর',
12 menu: 'ছবির প্রোপার্টি',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'সাইজ পূর্বাবস্থায় ফিরিয়ে দাও',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'ছবির প্রোপার্টি',
18 uploadTab: 'আপলোড',
19 urlMissing: 'Image source URL is missing.', // MISSING
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/bs.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/bs.js deleted file mode 100644 index d0c57c8..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/bs.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'bs', {
6 alt: 'Tekst na slici',
7 btnUpload: 'Šalji na server',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Info slike',
11 lockRatio: 'Zakljuèaj odnos',
12 menu: 'Svojstva slike',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'Resetuj dimenzije',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'Svojstva slike',
18 uploadTab: 'Šalji',
19 urlMissing: 'Image source URL is missing.', // MISSING
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/ca.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/ca.js deleted file mode 100644 index 66feadc..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/ca.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'ca', {
6 alt: 'Text alternatiu',
7 btnUpload: 'Envia-la al servidor',
8 captioned: 'Imatge amb subtítol',
9 captionPlaceholder: 'Títol',
10 infoTab: 'Informació de la imatge',
11 lockRatio: 'Bloqueja les proporcions',
12 menu: 'Propietats de la imatge',
13 pathName: 'imatge',
14 pathNameCaption: 'subtítol',
15 resetSize: 'Restaura la mida',
16 resizer: 'Clicar i arrossegar per redimensionar',
17 title: 'Propietats de la imatge',
18 uploadTab: 'Puja',
19 urlMissing: 'Falta la URL de la imatge.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/cs.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/cs.js deleted file mode 100644 index c50394e..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/cs.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'cs', {
6 alt: 'Alternativní text',
7 btnUpload: 'Odeslat na server',
8 captioned: 'Obrázek s popisem',
9 captionPlaceholder: 'Popis',
10 infoTab: 'Informace o obrázku',
11 lockRatio: 'Zámek',
12 menu: 'Vlastnosti obrázku',
13 pathName: 'Obrázek',
14 pathNameCaption: 'Popis',
15 resetSize: 'Původní velikost',
16 resizer: 'Klepněte a táhněte pro změnu velikosti',
17 title: 'Vlastnosti obrázku',
18 uploadTab: 'Odeslat',
19 urlMissing: 'Zadané URL zdroje obrázku nebylo nalezeno.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/cy.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/cy.js deleted file mode 100644 index 7051680..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/cy.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'cy', {
6 alt: 'Testun Amgen',
7 btnUpload: 'Anfon i\'r Gweinydd',
8 captioned: 'Delwedd â phennawd',
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Gwyb Delwedd',
11 lockRatio: 'Cloi Cymhareb',
12 menu: 'Priodweddau Delwedd',
13 pathName: 'delwedd',
14 pathNameCaption: 'pennawd',
15 resetSize: 'Ailosod Maint',
16 resizer: 'Clicio a llusgo i ail-meintio',
17 title: 'Priodweddau Delwedd',
18 uploadTab: 'Lanlwytho',
19 urlMissing: 'URL gwreiddiol y ddelwedd ar goll.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/da.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/da.js deleted file mode 100644 index 3d7c443..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/da.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'da', {
6 alt: 'Alternativ tekst',
7 btnUpload: 'Upload fil til serveren',
8 captioned: 'Tekstet billede',
9 captionPlaceholder: 'Tekst',
10 infoTab: 'Generelt',
11 lockRatio: 'Lås størrelsesforhold',
12 menu: 'Egenskaber for billede',
13 pathName: 'billede',
14 pathNameCaption: 'tekst',
15 resetSize: 'Nulstil størrelse',
16 resizer: 'Klik og træk for at ændre størrelsen',
17 title: 'Egenskaber for billede',
18 uploadTab: 'Upload',
19 urlMissing: 'Kilde på billed-URL mangler',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/de-ch.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/de-ch.js deleted file mode 100644 index ec55d1f..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/de-ch.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'de-ch', {
6 alt: 'Alternativer Text',
7 btnUpload: 'Zum Server senden',
8 captioned: 'Bild mit Überschrift',
9 captionPlaceholder: 'Überschrift',
10 infoTab: 'Bildinfo',
11 lockRatio: 'Größenverhältnis beibehalten',
12 menu: 'Bildeigenschaften',
13 pathName: 'Bild',
14 pathNameCaption: 'Überschrift',
15 resetSize: 'Grösse zurücksetzen',
16 resizer: 'Zum Vergrössern auswählen und ziehen',
17 title: 'Bild-Eigenschaften',
18 uploadTab: 'Hochladen',
19 urlMissing: 'Bildquellen-URL fehlt.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/de.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/de.js deleted file mode 100644 index 0b5b6f6..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/de.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'de', {
6 alt: 'Alternativer Text',
7 btnUpload: 'Zum Server senden',
8 captioned: 'Bild mit Überschrift',
9 captionPlaceholder: 'Überschrift',
10 infoTab: 'Bildinfo',
11 lockRatio: 'Größenverhältnis beibehalten',
12 menu: 'Bildeigenschaften',
13 pathName: 'Bild',
14 pathNameCaption: 'Überschrift',
15 resetSize: 'Größe zurücksetzen',
16 resizer: 'Zum Vergrößern auswählen und ziehen',
17 title: 'Bild-Eigenschaften',
18 uploadTab: 'Hochladen',
19 urlMissing: 'Bildquellen-URL fehlt.',
20 altMissing: 'Alternativer Text fehlt.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/el.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/el.js deleted file mode 100644 index 8167636..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/el.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'el', {
6 alt: 'Εναλλακτικό Κείμενο',
7 btnUpload: 'Αποστολή στον Διακομιστή',
8 captioned: 'Εικόνα με λεζάντα',
9 captionPlaceholder: 'Λεζάντα',
10 infoTab: 'Πληροφορίες Εικόνας',
11 lockRatio: 'Κλείδωμα Αναλογίας',
12 menu: 'Ιδιότητες Εικόνας',
13 pathName: 'εικόνα',
14 pathNameCaption: 'λεζάντα',
15 resetSize: 'Επαναφορά Αρχικού Μεγέθους',
16 resizer: 'Κάνετε κλικ και σύρετε το ποντίκι για να αλλάξετε το μέγεθος',
17 title: 'Ιδιότητες Εικόνας',
18 uploadTab: 'Αποστολή',
19 urlMissing: 'Λείπει το πηγαίο URL της εικόνας.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/en-au.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/en-au.js deleted file mode 100644 index f51ffa3..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/en-au.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'en-au', {
6 alt: 'Alternative Text',
7 btnUpload: 'Send it to the Server',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Image Info',
11 lockRatio: 'Lock Ratio',
12 menu: 'Image Properties',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'Reset Size',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'Image Properties',
18 uploadTab: 'Upload',
19 urlMissing: 'Image source URL is missing.', // MISSING
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/en-ca.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/en-ca.js deleted file mode 100644 index 79dabcf..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/en-ca.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'en-ca', {
6 alt: 'Alternative Text',
7 btnUpload: 'Send it to the Server',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Image Info',
11 lockRatio: 'Lock Ratio',
12 menu: 'Image Properties',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'Reset Size',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'Image Properties',
18 uploadTab: 'Upload',
19 urlMissing: 'Image source URL is missing.', // MISSING
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/en-gb.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/en-gb.js deleted file mode 100644 index 99c4f80..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/en-gb.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'en-gb', {
6 alt: 'Alternative Text',
7 btnUpload: 'Send it to the Server',
8 captioned: 'Captioned image',
9 captionPlaceholder: 'Caption',
10 infoTab: 'Image Info',
11 lockRatio: 'Lock Ratio',
12 menu: 'Image Properties',
13 pathName: 'image',
14 pathNameCaption: 'caption',
15 resetSize: 'Reset Size',
16 resizer: 'Click and drag to resize',
17 title: 'Image Properties',
18 uploadTab: 'Upload',
19 urlMissing: 'Image source URL is missing.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/en.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/en.js deleted file mode 100644 index 61abe6f..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/en.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'en', {
6 alt: 'Alternative Text',
7 btnUpload: 'Send it to the Server',
8 captioned: 'Captioned image',
9 captionPlaceholder: 'Caption',
10 infoTab: 'Image Info',
11 lockRatio: 'Lock Ratio',
12 menu: 'Image Properties',
13 pathName: 'image',
14 pathNameCaption: 'caption',
15 resetSize: 'Reset Size',
16 resizer: 'Click and drag to resize',
17 title: 'Image Properties',
18 uploadTab: 'Upload',
19 urlMissing: 'Image source URL is missing.',
20 altMissing: 'Alternative text is missing.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/eo.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/eo.js deleted file mode 100644 index 604b91a..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/eo.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'eo', {
6 alt: 'Anstataŭiga Teksto',
7 btnUpload: 'Sendu al Servilo',
8 captioned: 'Bildo kun apudskribo',
9 captionPlaceholder: 'Apudskribo',
10 infoTab: 'Informoj pri Bildo',
11 lockRatio: 'Konservi Proporcion',
12 menu: 'Atributoj de Bildo',
13 pathName: 'bildo',
14 pathNameCaption: 'apudskribo',
15 resetSize: 'Origina Grando',
16 resizer: 'Kliki kaj treni por ŝanĝi la grandon',
17 title: 'Atributoj de Bildo',
18 uploadTab: 'Alŝuti',
19 urlMissing: 'La fontretadreso de la bildo mankas.',
20 altMissing: 'Alternativa teksto mankas.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/es-mx.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/es-mx.js deleted file mode 100644 index 7005bd2..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/es-mx.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'es-mx', {
6 alt: 'Texto alternativo',
7 btnUpload: 'Enviar al servidor',
8 captioned: 'Imagen subtitulada',
9 captionPlaceholder: 'Subtítulo',
10 infoTab: 'Información de la imagen',
11 lockRatio: 'Bloquear aspecto',
12 menu: 'Propiedades de la imagen',
13 pathName: 'imagen',
14 pathNameCaption: 'subtítulo',
15 resetSize: 'Reiniciar tamaño',
16 resizer: 'Presiona y arrastra para redimensionar',
17 title: 'Propiedades de imagen',
18 uploadTab: 'Cargar',
19 urlMissing: 'Falta la URL de origen de la imagen.',
20 altMissing: 'Falta texto alternativo.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/es.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/es.js deleted file mode 100644 index 9a02c33..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/es.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'es', {
6 alt: 'Texto Alternativo',
7 btnUpload: 'Enviar al Servidor',
8 captioned: 'Imagen subtitulada',
9 captionPlaceholder: 'Leyenda',
10 infoTab: 'Información de Imagen',
11 lockRatio: 'Proporcional',
12 menu: 'Propiedades de Imagen',
13 pathName: 'image',
14 pathNameCaption: 'subtítulo',
15 resetSize: 'Tamaño Original',
16 resizer: 'Dar clic y arrastrar para cambiar tamaño',
17 title: 'Propiedades de Imagen',
18 uploadTab: 'Cargar',
19 urlMissing: 'Debe indicar la URL de la imagen.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/et.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/et.js deleted file mode 100644 index 02ee064..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/et.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'et', {
6 alt: 'Alternatiivne tekst',
7 btnUpload: 'Saada serverisse',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Pildi info',
11 lockRatio: 'Lukusta kuvasuhe',
12 menu: 'Pildi omadused',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'Lähtesta suurus',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'Pildi omadused',
18 uploadTab: 'Lae üles',
19 urlMissing: 'Pildi lähte-URL on puudu.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/eu.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/eu.js deleted file mode 100644 index 9ac8268..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/eu.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'eu', {
6 alt: 'Ordezko testua',
7 btnUpload: 'Bidali zerbitzarira',
8 captioned: 'Argazki oina',
9 captionPlaceholder: 'Argazki oina',
10 infoTab: 'Irudiaren informazioa',
11 lockRatio: 'Blokeatu erlazioa',
12 menu: 'Irudiaren propietateak',
13 pathName: 'Irudia',
14 pathNameCaption: 'Argazki oina',
15 resetSize: 'Berrezarri tamaina',
16 resizer: 'Klikatu eta arrastatu tamainaz aldatzeko',
17 title: 'Irudiaren propietateak',
18 uploadTab: 'Kargatu',
19 urlMissing: 'Irudiaren iturburuaren URLa falta da.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/fa.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/fa.js deleted file mode 100644 index 23db9ed..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/fa.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'fa', {
6 alt: 'متن جایگزین',
7 btnUpload: 'به سرور بفرست',
8 captioned: 'تصویر زیرنویس شده',
9 captionPlaceholder: 'عنوان',
10 infoTab: 'اطلاعات تصویر',
11 lockRatio: 'قفل کردن نسبت',
12 menu: 'ویژگی​های تصویر',
13 pathName: 'تصویر',
14 pathNameCaption: 'عنوان',
15 resetSize: 'بازنشانی اندازه',
16 resizer: 'کلیک و کشیدن برای تغییر اندازه',
17 title: 'ویژگی​های تصویر',
18 uploadTab: 'بالاگذاری',
19 urlMissing: 'آدرس URL اصلی تصویر یافت نشد.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/fi.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/fi.js deleted file mode 100644 index cb89f0a..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/fi.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'fi', {
6 alt: 'Vaihtoehtoinen teksti',
7 btnUpload: 'Lähetä palvelimelle',
8 captioned: 'Kuva kuvatekstillä',
9 captionPlaceholder: 'Kuvateksti',
10 infoTab: 'Kuvan tiedot',
11 lockRatio: 'Lukitse suhteet',
12 menu: 'Kuvan ominaisuudet',
13 pathName: 'kuva',
14 pathNameCaption: 'kuvateksti',
15 resetSize: 'Alkuperäinen koko',
16 resizer: 'Klikkaa ja raahaa muuttaaksesi kokoa',
17 title: 'Kuvan ominaisuudet',
18 uploadTab: 'Lisää tiedosto',
19 urlMissing: 'Kuvan lähdeosoite puuttuu.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/fo.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/fo.js deleted file mode 100644 index 86c001a..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/fo.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'fo', {
6 alt: 'Alternativur tekstur',
7 btnUpload: 'Send til ambætaran',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Myndaupplýsingar',
11 lockRatio: 'Læs lutfallið',
12 menu: 'Myndaeginleikar',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'Upprunastødd',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'Myndaeginleikar',
18 uploadTab: 'Send til ambætaran',
19 urlMissing: 'URL til mynd manglar.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/fr-ca.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/fr-ca.js deleted file mode 100644 index 38afd99..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/fr-ca.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'fr-ca', {
6 alt: 'Texte alternatif',
7 btnUpload: 'Envoyer sur le serveur',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Informations sur l\'image2',
11 lockRatio: 'Verrouiller les proportions',
12 menu: 'Propriétés de l\'image2',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'Taille originale',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'Propriétés de l\'image2',
18 uploadTab: 'Téléverser',
19 urlMissing: 'L\'URL de la source de l\'image est manquant.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/fr.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/fr.js deleted file mode 100644 index 5c14790..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/fr.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'fr', {
6 alt: 'Texte alternatif',
7 btnUpload: 'Envoyer sur le serveur',
8 captioned: 'Image légendée',
9 captionPlaceholder: 'Légende',
10 infoTab: 'Informations sur l\'image',
11 lockRatio: 'Conserver les proportions',
12 menu: 'Propriétés de l\'image',
13 pathName: 'image',
14 pathNameCaption: 'légende',
15 resetSize: 'Réinitialiser la taille',
16 resizer: 'Cliquer et glisser pour redimensionner',
17 title: 'Propriétés de l\'image',
18 uploadTab: 'Téléverser',
19 urlMissing: 'L\'URL source de l\'image est manquante.',
20 altMissing: 'Vous n\'avez pas indiqué de texte de remplacement.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/gl.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/gl.js deleted file mode 100644 index a2a824c..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/gl.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'gl', {
6 alt: 'Texto alternativo',
7 btnUpload: 'Enviar ao servidor',
8 captioned: 'Imaxe con lenda',
9 captionPlaceholder: 'Lenda',
10 infoTab: 'Información da imaxe',
11 lockRatio: 'Proporcional',
12 menu: 'Propiedades da imaxe',
13 pathName: 'Imaxe',
14 pathNameCaption: 'lenda',
15 resetSize: 'Tamaño orixinal',
16 resizer: 'Prema e arrastre para axustar o tamaño',
17 title: 'Propiedades da imaxe',
18 uploadTab: 'Cargar',
19 urlMissing: 'Non se atopa o URL da imaxe.',
20 altMissing: 'Non foi posíbel atopar o texto alternativo.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/gu.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/gu.js deleted file mode 100644 index 25a0cf3..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/gu.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'gu', {
6 alt: 'ઑલ્ટર્નટ ટેક્સ્ટ',
7 btnUpload: 'આ સર્વરને મોકલવું',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'ચિત્ર ની જાણકારી',
11 lockRatio: 'લૉક ગુણોત્તર',
12 menu: 'ચિત્રના ગુણ',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'રીસેટ સાઇઝ',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'ચિત્રના ગુણ',
18 uploadTab: 'અપલોડ',
19 urlMissing: 'ઈમેજની મૂળ URL છે નહી.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/he.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/he.js deleted file mode 100644 index 49bef06..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/he.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'he', {
6 alt: 'טקסט חלופי',
7 btnUpload: 'שליחה לשרת',
8 captioned: 'כותרת תמונה',
9 captionPlaceholder: 'כותרת',
10 infoTab: 'מידע על התמונה',
11 lockRatio: 'נעילת היחס',
12 menu: 'תכונות התמונה',
13 pathName: 'תמונה',
14 pathNameCaption: 'כותרת',
15 resetSize: 'איפוס הגודל',
16 resizer: 'לחץ וגרור לשינוי הגודל',
17 title: 'מאפייני התמונה',
18 uploadTab: 'העלאה',
19 urlMissing: 'כתובת התמונה חסרה.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/hi.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/hi.js deleted file mode 100644 index 029ff92..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/hi.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'hi', {
6 alt: 'वैकल्पिक टेक्स्ट',
7 btnUpload: 'इसे सर्वर को भेजें',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'तस्वीर की जानकारी',
11 lockRatio: 'लॉक अनुपात',
12 menu: 'तस्वीर प्रॉपर्टीज़',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'रीसॅट साइज़',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'तस्वीर प्रॉपर्टीज़',
18 uploadTab: 'अपलोड',
19 urlMissing: 'Image source URL is missing.', // MISSING
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/hr.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/hr.js deleted file mode 100644 index 6d05047..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/hr.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'hr', {
6 alt: 'Alternativni tekst',
7 btnUpload: 'Pošalji na server',
8 captioned: 'Titl slike',
9 captionPlaceholder: 'Titl',
10 infoTab: 'Info slike',
11 lockRatio: 'Zaključaj odnos',
12 menu: 'Svojstva slika',
13 pathName: 'slika',
14 pathNameCaption: 'titl',
15 resetSize: 'Obriši veličinu',
16 resizer: 'Odaberi i povuci za promjenu veličine',
17 title: 'Svojstva slika',
18 uploadTab: 'Pošalji',
19 urlMissing: 'Nedostaje URL slike.',
20 altMissing: 'Nedostaje alternativni tekst.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/hu.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/hu.js deleted file mode 100644 index d1f6484..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/hu.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'hu', {
6 alt: 'Buborék szöveg',
7 btnUpload: 'Küldés a szerverre',
8 captioned: 'Feliratozott kép',
9 captionPlaceholder: 'Képfelirat',
10 infoTab: 'Alaptulajdonságok',
11 lockRatio: 'Arány megtartása',
12 menu: 'Kép tulajdonságai',
13 pathName: 'kép',
14 pathNameCaption: 'felirat',
15 resetSize: 'Eredeti méret',
16 resizer: 'Kattints és húzz az átméretezéshez',
17 title: 'Kép tulajdonságai',
18 uploadTab: 'Feltöltés',
19 urlMissing: 'Hiányzik a kép URL-je',
20 altMissing: 'Az alternatív szöveg hiányzik.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/id.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/id.js deleted file mode 100644 index dd783c4..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/id.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'id', {
6 alt: 'Teks alternatif',
7 btnUpload: 'Kirim ke Server',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Info Gambar',
11 lockRatio: 'Lock Ratio', // MISSING
12 menu: 'Image Properties', // MISSING
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'Atur Ulang Ukuran',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'Image Properties', // MISSING
18 uploadTab: 'Unggah',
19 urlMissing: 'Image source URL is missing.', // MISSING
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/is.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/is.js deleted file mode 100644 index a4a002d..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/is.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'is', {
6 alt: 'Baklægur texti',
7 btnUpload: 'Hlaða upp',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Almennt',
11 lockRatio: 'Festa stærðarhlutfall',
12 menu: 'Eigindi myndar',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'Reikna stærð',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'Eigindi myndar',
18 uploadTab: 'Senda upp',
19 urlMissing: 'Image source URL is missing.', // MISSING
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/it.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/it.js deleted file mode 100644 index 95ae97a..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/it.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'it', {
6 alt: 'Testo alternativo',
7 btnUpload: 'Invia al server',
8 captioned: 'Immagine con didascalia',
9 captionPlaceholder: 'Didascalia',
10 infoTab: 'Informazioni immagine',
11 lockRatio: 'Blocca rapporto',
12 menu: 'Proprietà immagine',
13 pathName: 'immagine',
14 pathNameCaption: 'didascalia',
15 resetSize: 'Reimposta dimensione',
16 resizer: 'Fare clic e trascinare per ridimensionare',
17 title: 'Proprietà immagine',
18 uploadTab: 'Carica',
19 urlMissing: 'Manca l\'URL dell\'immagine.',
20 altMissing: 'Testo alternativo mancante.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/ja.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/ja.js deleted file mode 100644 index 4cf0ad8..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/ja.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'ja', {
6 alt: '代替テキスト',
7 btnUpload: 'サーバーに送信',
8 captioned: 'キャプションを付ける',
9 captionPlaceholder: 'キャプション',
10 infoTab: '画像情報',
11 lockRatio: '比率を固定',
12 menu: '画像のプロパティ',
13 pathName: 'image',
14 pathNameCaption: 'caption',
15 resetSize: 'サイズをリセット',
16 resizer: 'ドラッグしてリサイズ',
17 title: '画像のプロパティ',
18 uploadTab: 'アップロード',
19 urlMissing: '画像のURLを入力してください。',
20 altMissing: '代替テキストを入力してください。'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/ka.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/ka.js deleted file mode 100644 index 64e06d0..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/ka.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'ka', {
6 alt: 'სანაცვლო ტექსტი',
7 btnUpload: 'სერვერისთვის გაგზავნა',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'სურათის ინფორმცია',
11 lockRatio: 'პროპორციის შენარჩუნება',
12 menu: 'სურათის პარამეტრები',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'ზომის დაბრუნება',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'სურათის პარამეტრები',
18 uploadTab: 'აქაჩვა',
19 urlMissing: 'სურათის URL არაა შევსებული.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/km.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/km.js deleted file mode 100644 index ea193ed..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/km.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'km', {
6 alt: 'អត្ថបទជំនួស',
7 btnUpload: 'បញ្ជូនទៅកាន់ម៉ាស៊ីនផ្តល់សេវា',
8 captioned: 'រូប​ដែល​មាន​ចំណង​ជើង',
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'ពត៌មានអំពីរូបភាព',
11 lockRatio: 'ចាក់​សោ​ផល​ធៀប',
12 menu: 'លក្ខណៈ​សម្បត្តិ​រូប​ភាព',
13 pathName: 'រូបភាព',
14 pathNameCaption: 'ចំណងជើង',
15 resetSize: 'កំណត់ទំហំឡើងវិញ',
16 resizer: 'ចុច​ហើយ​ទាញ​ដើម្បី​ប្ដូរ​ទំហំ',
17 title: 'លក្ខណៈ​សម្បត្តិ​រូប​ភាប',
18 uploadTab: 'ផ្ទុក​ឡើង',
19 urlMissing: 'ខ្វះ URL ប្រភព​រូប​ភាព។',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/ko.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/ko.js deleted file mode 100644 index 85d843d..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/ko.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'ko', {
6 alt: '대체 문자열',
7 btnUpload: '서버로 전송',
8 captioned: '이미지 설명 넣기',
9 captionPlaceholder: '설명',
10 infoTab: '이미지 정보',
11 lockRatio: '비율 유지',
12 menu: '이미지 속성',
13 pathName: '이미지',
14 pathNameCaption: '설명',
15 resetSize: '원래 크기로',
16 resizer: '크기를 조절하려면 클릭 후 드래그 하세요',
17 title: '이미지 속성',
18 uploadTab: '업로드',
19 urlMissing: '이미지 원본 주소(URL)가 없습니다.',
20 altMissing: '대체 문자가 없습니다.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/ku.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/ku.js deleted file mode 100644 index c8b06a1..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/ku.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'ku', {
6 alt: 'جێگرەوەی دەق',
7 btnUpload: 'ناردنی بۆ ڕاژه',
8 captioned: 'وێنەی بەسەردێر',
9 captionPlaceholder: 'سەردێر',
10 infoTab: 'زانیاری وێنه',
11 lockRatio: 'داخستنی ڕێژه',
12 menu: 'خاسیەتی وێنه',
13 pathName: 'وێنە',
14 pathNameCaption: 'سەردێر',
15 resetSize: 'ڕێکخستنەوەی قەباره',
16 resizer: 'کرتەبکە و ڕایبکێشە بۆ قەبارە گۆڕین',
17 title: 'خاسیەتی وێنه',
18 uploadTab: 'بارکردن',
19 urlMissing: 'سەرچاوەی بەستەری وێنه بزره',
20 altMissing: 'جێگرەوەی دەق لەدەست چووە.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/lt.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/lt.js deleted file mode 100644 index 73514ee..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/lt.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'lt', {
6 alt: 'Alternatyvus Tekstas',
7 btnUpload: 'Siųsti į serverį',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Vaizdo informacija',
11 lockRatio: 'Išlaikyti proporciją',
12 menu: 'Vaizdo savybės',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'Atstatyti dydį',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'Vaizdo savybės',
18 uploadTab: 'Siųsti',
19 urlMissing: 'Paveiksliuko nuorodos nėra.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/lv.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/lv.js deleted file mode 100644 index aa5f8d3..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/lv.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'lv', {
6 alt: 'Alternatīvais teksts',
7 btnUpload: 'Nosūtīt serverim',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Informācija par attēlu',
11 lockRatio: 'Nemainīga Augstuma/Platuma attiecība',
12 menu: 'Attēla īpašības',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'Atjaunot sākotnējo izmēru',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'Attēla īpašības',
18 uploadTab: 'Augšupielādēt',
19 urlMissing: 'Trūkst attēla atrašanās adrese.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/mk.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/mk.js deleted file mode 100644 index 8edd69a..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/mk.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'mk', {
6 alt: 'Алтернативен текст',
7 btnUpload: 'Прикачи на сервер',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Информации за сликата',
11 lockRatio: 'Зачувај пропорција',
12 menu: 'Својства на сликата',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'Ресетирај големина',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'Својства на сликата',
18 uploadTab: 'Прикачи',
19 urlMissing: 'Недостасува URL-то на сликата.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/mn.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/mn.js deleted file mode 100644 index e985509..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/mn.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'mn', {
6 alt: 'Зургийг орлох бичвэр',
7 btnUpload: 'Үүнийг сервэррүү илгээ',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Зурагны мэдээлэл',
11 lockRatio: 'Радио түгжих',
12 menu: 'Зураг',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'хэмжээ дахин оноох',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'Зураг',
18 uploadTab: 'Илгээж ачаалах',
19 urlMissing: 'Зургийн эх сурвалжийн хаяг (URL) байхгүй байна.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/ms.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/ms.js deleted file mode 100644 index 50d73d9..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/ms.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'ms', {
6 alt: 'Text Alternatif',
7 btnUpload: 'Hantar ke Server',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Info Imej',
11 lockRatio: 'Tetapkan Nisbah',
12 menu: 'Ciri-ciri Imej',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'Saiz Set Semula',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'Ciri-ciri Imej',
18 uploadTab: 'Muat Naik',
19 urlMissing: 'Image source URL is missing.', // MISSING
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/nb.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/nb.js deleted file mode 100644 index dce7f1e..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/nb.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'nb', {
6 alt: 'Alternativ tekst',
7 btnUpload: 'Send det til serveren',
8 captioned: 'Bilde med bildetekst',
9 captionPlaceholder: 'Bildetekst',
10 infoTab: 'Bildeinformasjon',
11 lockRatio: 'Lås forhold',
12 menu: 'Bildeegenskaper',
13 pathName: 'bilde',
14 pathNameCaption: 'bildetekst',
15 resetSize: 'Tilbakestill størrelse',
16 resizer: 'Klikk og dra for å endre størrelse',
17 title: 'Bildeegenskaper',
18 uploadTab: 'Last opp',
19 urlMissing: 'Bildets adresse mangler.',
20 altMissing: 'Alternativ tekst mangler.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/nl.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/nl.js deleted file mode 100644 index 925e0aa..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/nl.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'nl', {
6 alt: 'Alternatieve tekst',
7 btnUpload: 'Naar server verzenden',
8 captioned: 'Afbeelding met onderschrift',
9 captionPlaceholder: 'Onderschrift',
10 infoTab: 'Afbeeldingsinformatie',
11 lockRatio: 'Verhouding vergrendelen',
12 menu: 'Eigenschappen afbeelding',
13 pathName: 'afbeelding',
14 pathNameCaption: 'onderschrift',
15 resetSize: 'Afmetingen herstellen',
16 resizer: 'Klik en sleep om te herschalen',
17 title: 'Afbeeldingseigenschappen',
18 uploadTab: 'Uploaden',
19 urlMissing: 'De URL naar de afbeelding ontbreekt.',
20 altMissing: 'Alternatieve tekst ontbreekt.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/no.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/no.js deleted file mode 100644 index 1d43e04..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/no.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'no', {
6 alt: 'Alternativ tekst',
7 btnUpload: 'Send det til serveren',
8 captioned: 'Bilde med bildetekst',
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Bildeinformasjon',
11 lockRatio: 'Lås forhold',
12 menu: 'Bildeegenskaper',
13 pathName: 'bilde',
14 pathNameCaption: 'bildetekst',
15 resetSize: 'Tilbakestill størrelse',
16 resizer: 'Klikk og dra for å endre størrelse',
17 title: 'Bildeegenskaper',
18 uploadTab: 'Last opp',
19 urlMissing: 'Bildets adresse mangler.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/oc.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/oc.js deleted file mode 100644 index 1b75050..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/oc.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'oc', {
6 alt: 'Tèxte alternatiu',
7 btnUpload: 'Mandar sul servidor',
8 captioned: 'Imatge amb legenda',
9 captionPlaceholder: 'Legenda',
10 infoTab: 'Informacions sus l\'imatge',
11 lockRatio: 'Conservar las proporcions',
12 menu: 'Proprietats de l\'imatge',
13 pathName: 'imatge',
14 pathNameCaption: 'legenda',
15 resetSize: 'Reïnicializar la talha',
16 resizer: 'Clicar e lisar per redimensionar',
17 title: 'Proprietats de l\'imatge',
18 uploadTab: 'Mandar',
19 urlMissing: 'L\'URL font de l\'imatge es mancanta.',
20 altMissing: 'Lo tèxte alternatiu es mancant.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/pl.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/pl.js deleted file mode 100644 index 17e4d95..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/pl.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'pl', {
6 alt: 'Tekst zastępczy',
7 btnUpload: 'Wyślij',
8 captioned: 'Obrazek z podpisem',
9 captionPlaceholder: 'Podpis',
10 infoTab: 'Informacje o obrazku',
11 lockRatio: 'Zablokuj proporcje',
12 menu: 'Właściwości obrazka',
13 pathName: 'obrazek',
14 pathNameCaption: 'podpis',
15 resetSize: 'Przywróć rozmiar',
16 resizer: 'Kliknij i przeciągnij, by zmienić rozmiar.',
17 title: 'Właściwości obrazka',
18 uploadTab: 'Wyślij',
19 urlMissing: 'Podaj adres URL obrazka.',
20 altMissing: 'Podaj tekst zastępczy obrazka.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/pt-br.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/pt-br.js deleted file mode 100644 index 63d0023..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/pt-br.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'pt-br', {
6 alt: 'Texto Alternativo',
7 btnUpload: 'Enviar para o Servidor',
8 captioned: 'Legenda da Imagem',
9 captionPlaceholder: 'Legenda',
10 infoTab: 'Informações da Imagem',
11 lockRatio: 'Travar Proporções',
12 menu: 'Formatar Imagem',
13 pathName: 'Imagem',
14 pathNameCaption: 'Legenda',
15 resetSize: 'Redefinir para o Tamanho Original',
16 resizer: 'Click e arraste para redimensionar',
17 title: 'Formatar Imagem',
18 uploadTab: 'Enviar ao Servidor',
19 urlMissing: 'URL da imagem está faltando.',
20 altMissing: 'Texto alternativo não informado.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/pt.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/pt.js deleted file mode 100644 index 2621a07..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/pt.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'pt', {
6 alt: 'Texto alternativo',
7 btnUpload: 'Enviar para o servidor',
8 captioned: 'Imagem legendada',
9 captionPlaceholder: 'Legenda',
10 infoTab: 'Informação da imagem',
11 lockRatio: 'Proporcional',
12 menu: 'Propriedades da imagem',
13 pathName: 'imagem',
14 pathNameCaption: 'legenda',
15 resetSize: 'Tamanho original',
16 resizer: 'Clique e arraste para redimensionar',
17 title: 'Propriedades da imagem',
18 uploadTab: 'Carregar',
19 urlMissing: 'O URL de origem da imagem está em falta.',
20 altMissing: 'Texto alternativo em falta.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/ro.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/ro.js deleted file mode 100644 index ed14bee..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/ro.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'ro', {
6 alt: 'Text alternativ',
7 btnUpload: 'Trimite la server',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Informaţii despre imagine',
11 lockRatio: 'Păstrează proporţiile',
12 menu: 'Proprietăţile imaginii',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'Resetează mărimea',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'Proprietăţile imaginii',
18 uploadTab: 'Încarcă',
19 urlMissing: 'Sursa URL a imaginii lipsește.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/ru.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/ru.js deleted file mode 100644 index eeafd51..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/ru.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'ru', {
6 alt: 'Альтернативный текст',
7 btnUpload: 'Загрузить на сервер',
8 captioned: 'Отображать название',
9 captionPlaceholder: 'Название',
10 infoTab: 'Данные об изображении',
11 lockRatio: 'Сохранять пропорции',
12 menu: 'Свойства изображения',
13 pathName: 'изображение',
14 pathNameCaption: 'название',
15 resetSize: 'Вернуть обычные размеры',
16 resizer: 'Нажмите и растяните',
17 title: 'Свойства изображения',
18 uploadTab: 'Загрузка файла',
19 urlMissing: 'Не указана ссылка на изображение.',
20 altMissing: 'Не задан альтернативный текст'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/si.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/si.js deleted file mode 100644 index d86b2d6..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/si.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'si', {
6 alt: 'විකල්ප ',
7 btnUpload: 'සේවාදායකය වෙත යොමුකිරිම',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'රුපයේ තොරතුරු',
11 lockRatio: 'නවතන අනුපාතය ',
12 menu: 'රුපයේ ගුණ',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'නැවතත් විශාලත්වය වෙනස් කිරීම',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'රුපයේ ',
18 uploadTab: 'උඩුගතකිරීම',
19 urlMissing: 'රුප මුලාශ්‍ර URL නැත.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/sk.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/sk.js deleted file mode 100644 index dac2032..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/sk.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'sk', {
6 alt: 'Alternatívny text',
7 btnUpload: 'Odoslať to na server',
8 captioned: 'Opísaný obrázok',
9 captionPlaceholder: 'Popis',
10 infoTab: 'Informácie o obrázku',
11 lockRatio: 'Pomer zámky',
12 menu: 'Vlastnosti obrázka',
13 pathName: 'obrázok',
14 pathNameCaption: 'popis',
15 resetSize: 'Pôvodná veľkosť',
16 resizer: 'Kliknite a potiahnite pre zmenu veľkosti',
17 title: 'Vlastnosti obrázka',
18 uploadTab: 'Nahrať',
19 urlMissing: 'Chýba URL zdroja obrázka.',
20 altMissing: 'Chýba alternatívny text.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/sl.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/sl.js deleted file mode 100644 index 548ad59..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/sl.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'sl', {
6 alt: 'Nadomestno besedilo',
7 btnUpload: 'Pošlji na strežnik',
8 captioned: 'Slika z napisom',
9 captionPlaceholder: 'Napis',
10 infoTab: 'Podatki o sliki',
11 lockRatio: 'Zakleni razmerje',
12 menu: 'Lastnosti slike',
13 pathName: 'slika',
14 pathNameCaption: 'napis',
15 resetSize: 'Ponastavi velikost',
16 resizer: 'Kliknite in povlecite, da spremenite velikost',
17 title: 'Lastnosti slike',
18 uploadTab: 'Naloži',
19 urlMissing: 'Manjka vir (URL) slike.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/sq.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/sq.js deleted file mode 100644 index e10f33c..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/sq.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'sq', {
6 alt: 'Tekst Alternativ',
7 btnUpload: 'Dërgo në server',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Informacione mbi Fotografinë',
11 lockRatio: 'Mbyll Racionin',
12 menu: 'Karakteristikat e Fotografisë',
13 pathName: 'foto',
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'Rikthe Madhësinë',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'Karakteristikat e Fotografisë',
18 uploadTab: 'Ngarko',
19 urlMissing: 'Mungon URL e burimit të fotografisë.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/sr-latn.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/sr-latn.js deleted file mode 100644 index cd0975b..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/sr-latn.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'sr-latn', {
6 alt: 'Alternativni tekst',
7 btnUpload: 'Pošalji na server',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Info slike',
11 lockRatio: 'Zaključaj odnos',
12 menu: 'Osobine slika',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'Resetuj veličinu',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'Osobine slika',
18 uploadTab: 'Pošalji',
19 urlMissing: 'Image source URL is missing.', // MISSING
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/sr.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/sr.js deleted file mode 100644 index 9544b91..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/sr.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'sr', {
6 alt: 'Алтернативни текст',
7 btnUpload: 'Пошаљи на сервер',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'Инфо слике',
11 lockRatio: 'Закључај однос',
12 menu: 'Особине слика',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'Ресетуј величину',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'Особине слика',
18 uploadTab: 'Пошаљи',
19 urlMissing: 'Недостаје УРЛ слике.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/sv.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/sv.js deleted file mode 100644 index 36fd8cb..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/sv.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'sv', {
6 alt: 'Alternativ text',
7 btnUpload: 'Skicka till server',
8 captioned: 'Rubricerad bild',
9 captionPlaceholder: 'Bildtext',
10 infoTab: 'Bildinformation',
11 lockRatio: 'Lås höjd/bredd förhållanden',
12 menu: 'Bildegenskaper',
13 pathName: 'bild',
14 pathNameCaption: 'rubrik',
15 resetSize: 'Återställ storlek',
16 resizer: 'Klicka och drag för att ändra storlek',
17 title: 'Bildegenskaper',
18 uploadTab: 'Ladda upp',
19 urlMissing: 'Bildkällans URL saknas.',
20 altMissing: 'Alternativ text saknas'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/th.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/th.js deleted file mode 100644 index 48d99a9..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/th.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'th', {
6 alt: 'คำประกอบรูปภาพ',
7 btnUpload: 'อัพโหลดไฟล์ไปเก็บไว้ที่เครื่องแม่ข่าย (เซิร์ฟเวอร์)',
8 captioned: 'Captioned image', // MISSING
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'ข้อมูลของรูปภาพ',
11 lockRatio: 'กำหนดอัตราส่วน กว้าง-สูง แบบคงที่',
12 menu: 'คุณสมบัติของ รูปภาพ',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'กำหนดรูปเท่าขนาดจริง',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'คุณสมบัติของ รูปภาพ',
18 uploadTab: 'อัพโหลดไฟล์',
19 urlMissing: 'Image source URL is missing.', // MISSING
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/tr.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/tr.js deleted file mode 100644 index c358582..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/tr.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'tr', {
6 alt: 'Alternatif Yazı',
7 btnUpload: 'Sunucuya Yolla',
8 captioned: 'Başlıklı resim',
9 captionPlaceholder: 'Başlık',
10 infoTab: 'Resim Bilgisi',
11 lockRatio: 'Oranı Kilitle',
12 menu: 'Resim Özellikleri',
13 pathName: 'Resim',
14 pathNameCaption: 'başlık',
15 resetSize: 'Boyutu Başa Döndür',
16 resizer: 'Boyutlandırmak için, tıklayın ve sürükleyin',
17 title: 'Resim Özellikleri',
18 uploadTab: 'Karşıya Yükle',
19 urlMissing: 'Resmin URL kaynağı bulunamadı.',
20 altMissing: 'Alternatif yazı eksik.'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/tt.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/tt.js deleted file mode 100644 index 2c0dca5..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/tt.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'tt', {
6 alt: 'Альтернатив текст',
7 btnUpload: 'Серверга җибәрү',
8 captioned: 'Исеме куелган рәсем',
9 captionPlaceholder: 'Исем',
10 infoTab: 'Рәсем тасвирламасы',
11 lockRatio: 'Lock Ratio', // MISSING
12 menu: 'Рәсем үзлекләре',
13 pathName: 'рәсем',
14 pathNameCaption: 'исем',
15 resetSize: 'Баштагы зурлык',
16 resizer: 'Күчереп куер өчен басып шудырыгыз',
17 title: 'Рәсем үзлекләре',
18 uploadTab: 'Йөкләү',
19 urlMissing: 'Image source URL is missing.', // MISSING
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/ug.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/ug.js deleted file mode 100644 index af146f2..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/ug.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'ug', {
6 alt: 'تېكىست ئالماشتۇر',
7 btnUpload: 'مۇلازىمېتىرغا يۈكلە',
8 captioned: 'ماۋزۇلۇق سۈرەت',
9 captionPlaceholder: 'Caption', // MISSING
10 infoTab: 'سۈرەت',
11 lockRatio: 'نىسبەتنى قۇلۇپلا',
12 menu: 'سۈرەت خاسلىقى',
13 pathName: 'image', // MISSING
14 pathNameCaption: 'caption', // MISSING
15 resetSize: 'ئەسلى چوڭلۇق',
16 resizer: 'Click and drag to resize', // MISSING
17 title: 'سۈرەت خاسلىقى',
18 uploadTab: 'يۈكلە',
19 urlMissing: 'سۈرەتنىڭ ئەسلى ھۆججەت ئادرېسى كەم',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/uk.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/uk.js deleted file mode 100644 index 1cf3cac..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/uk.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'uk', {
6 alt: 'Альтернативний текст',
7 btnUpload: 'Надіслати на сервер',
8 captioned: 'Підписане зображення',
9 captionPlaceholder: 'Заголовок',
10 infoTab: 'Інформація про зображення',
11 lockRatio: 'Зберегти пропорції',
12 menu: 'Властивості зображення',
13 pathName: 'Зображення',
14 pathNameCaption: 'заголовок',
15 resetSize: 'Очистити поля розмірів',
16 resizer: 'Клікніть та потягніть для зміни розмірів',
17 title: 'Властивості зображення',
18 uploadTab: 'Надіслати',
19 urlMissing: 'Вкажіть URL зображення.',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/vi.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/vi.js deleted file mode 100644 index 7a40fbf..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/vi.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'vi', {
6 alt: 'Chú thích ảnh',
7 btnUpload: 'Tải lên máy chủ',
8 captioned: 'Ảnh có chú thích',
9 captionPlaceholder: 'Nhãn',
10 infoTab: 'Thông tin của ảnh',
11 lockRatio: 'Giữ nguyên tỷ lệ',
12 menu: 'Thuộc tính của ảnh',
13 pathName: 'ảnh',
14 pathNameCaption: 'chú thích',
15 resetSize: 'Kích thước gốc',
16 resizer: 'Kéo rê để thay đổi kích cỡ',
17 title: 'Thuộc tính của ảnh',
18 uploadTab: 'Tải lên',
19 urlMissing: 'Thiếu đường dẫn hình ảnh',
20 altMissing: 'Alternative text is missing.' // MISSING
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/zh-cn.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/zh-cn.js deleted file mode 100644 index 48c436f..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/zh-cn.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'zh-cn', {
6 alt: '替换文本',
7 btnUpload: '上传到服务器',
8 captioned: '带标题图像',
9 captionPlaceholder: '标题',
10 infoTab: '图像信息',
11 lockRatio: '锁定比例',
12 menu: '图像属性',
13 pathName: '图像',
14 pathNameCaption: '标题',
15 resetSize: '原始尺寸',
16 resizer: '点击并拖拽以改变尺寸',
17 title: '图像属性',
18 uploadTab: '上传',
19 urlMissing: '缺少图像源文件地址',
20 altMissing: '缺少替换文本'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/lang/zh.js b/app/assets/javascripts/ckeditor/plugins/image2/lang/zh.js deleted file mode 100644 index 1578b41..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/lang/zh.js +++ /dev/null
@@ -1,21 +0,0 @@
1/*
2Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3For licensing, see LICENSE.md or http://ckeditor.com/license
4*/
5CKEDITOR.plugins.setLang( 'image2', 'zh', {
6 alt: '替代文字',
7 btnUpload: '傳送至伺服器',
8 captioned: '已加標題之圖片',
9 captionPlaceholder: '標題',
10 infoTab: '影像資訊',
11 lockRatio: '固定比例',
12 menu: '影像屬性',
13 pathName: '圖片',
14 pathNameCaption: '標題',
15 resetSize: '重設大小',
16 resizer: '拖曳以改變大小',
17 title: '影像屬性',
18 uploadTab: '上傳',
19 urlMissing: '遺失圖片來源之 URL ',
20 altMissing: '替代文字遺失。'
21} );
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/plugin.js b/app/assets/javascripts/ckeditor/plugins/image2/plugin.js deleted file mode 100644 index 3a55255..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/plugin.js +++ /dev/null
@@ -1,1712 +0,0 @@
1/**
2 * @license Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
3 * For licensing, see LICENSE.md or http://ckeditor.com/license
4 */
5
6'use strict';
7
8( function() {
9
10 var template = '<img alt="" src="" />',
11 templateBlock = new CKEDITOR.template(
12 '<figure class="{captionedClass}">' +
13 template +
14 '<figcaption>{captionPlaceholder}</figcaption>' +
15 '</figure>' ),
16 alignmentsObj = { left: 0, center: 1, right: 2 },
17 regexPercent = /^\s*(\d+\%)\s*$/i;
18
19 CKEDITOR.plugins.add( 'image2', {
20 // jscs:disable maximumLineLength
21 lang: 'af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE%
22 // jscs:enable maximumLineLength
23 requires: 'widget,dialog',
24 icons: 'image',
25 hidpi: true,
26
27 onLoad: function() {
28 CKEDITOR.addCss(
29 '.cke_image_nocaption{' +
30 // This is to remove unwanted space so resize
31 // wrapper is displayed property.
32 'line-height:0' +
33 '}' +
34 '.cke_editable.cke_image_sw, .cke_editable.cke_image_sw *{cursor:sw-resize !important}' +
35 '.cke_editable.cke_image_se, .cke_editable.cke_image_se *{cursor:se-resize !important}' +
36 '.cke_image_resizer{' +
37 'display:none;' +
38 'position:absolute;' +
39 'width:10px;' +
40 'height:10px;' +
41 'bottom:-5px;' +
42 'right:-5px;' +
43 'background:#000;' +
44 'outline:1px solid #fff;' +
45 // Prevent drag handler from being misplaced (http://dev.ckeditor.com/ticket/11207).
46 'line-height:0;' +
47 'cursor:se-resize;' +
48 '}' +
49 '.cke_image_resizer_wrapper{' +
50 'position:relative;' +
51 'display:inline-block;' +
52 'line-height:0;' +
53 '}' +
54 // Bottom-left corner style of the resizer.
55 '.cke_image_resizer.cke_image_resizer_left{' +
56 'right:auto;' +
57 'left:-5px;' +
58 'cursor:sw-resize;' +
59 '}' +
60 '.cke_widget_wrapper:hover .cke_image_resizer,' +
61 '.cke_image_resizer.cke_image_resizing{' +
62 'display:block' +
63 '}' +
64 // Expand widget wrapper when linked inline image.
65 '.cke_widget_wrapper>a{' +
66 'display:inline-block' +
67 '}' );
68 },
69
70 init: function( editor ) {
71 // Adapts configuration from original image plugin. Should be removed
72 // when we'll rename image2 to image.
73 var config = editor.config,
74 lang = editor.lang.image2,
75 image = widgetDef( editor );
76
77 // Since filebrowser plugin discovers config properties by dialog (plugin?)
78 // names (sic!), this hack will be necessary as long as Image2 is not named
79 // Image. And since Image2 will never be Image, for sure some filebrowser logic
80 // got to be refined.
81 config.filebrowserImage2BrowseUrl = config.filebrowserImageBrowseUrl;
82 config.filebrowserImage2UploadUrl = config.filebrowserImageUploadUrl;
83
84 // Add custom elementspath names to widget definition.
85 image.pathName = lang.pathName;
86 image.editables.caption.pathName = lang.pathNameCaption;
87
88 // Register the widget.
89 editor.widgets.add( 'image', image );
90
91 // Add toolbar button for this plugin.
92 editor.ui.addButton && editor.ui.addButton( 'Image', {
93 label: editor.lang.common.image,
94 command: 'image',
95 toolbar: 'insert,10'
96 } );
97
98 // Register context menu option for editing widget.
99 if ( editor.contextMenu ) {
100 editor.addMenuGroup( 'image', 10 );
101
102 editor.addMenuItem( 'image', {
103 label: lang.menu,
104 command: 'image',
105 group: 'image'
106 } );
107 }
108
109 CKEDITOR.dialog.add( 'image2', this.path + 'dialogs/image2.js' );
110 },
111
112 afterInit: function( editor ) {
113 // Integrate with align commands (justify plugin).
114 var align = { left: 1, right: 1, center: 1, block: 1 },
115 integrate = alignCommandIntegrator( editor );
116
117 for ( var value in align )
118 integrate( value );
119
120 // Integrate with link commands (link plugin).
121 linkCommandIntegrator( editor );
122 }
123 } );
124
125 // Wiget states (forms) depending on alignment and configuration.
126 //
127 // Non-captioned widget (inline styles)
128 // ┌──────┬───────────────────────────────┬─────────────────────────────┐
129 // │Align │Internal form │Data │
130 // ├──────┼───────────────────────────────┼─────────────────────────────┤
131 // │none │<wrapper> │<img /> │
132 // │ │ <img /> │ │
133 // │ │</wrapper> │ │
134 // ├──────┼───────────────────────────────┼─────────────────────────────┤
135 // │left │<wrapper style=”float:left”> │<img style=”float:left” /> │
136 // │ │ <img /> │ │
137 // │ │</wrapper> │ │
138 // ├──────┼───────────────────────────────┼─────────────────────────────┤
139 // │center│<wrapper> │<p style=”text-align:center”>│
140 // │ │ <p style=”text-align:center”> │ <img /> │
141 // │ │ <img /> │</p> │
142 // │ │ </p> │ │
143 // │ │</wrapper> │ │
144 // ├──────┼───────────────────────────────┼─────────────────────────────┤
145 // │right │<wrapper style=”float:right”> │<img style=”float:right” /> │
146 // │ │ <img /> │ │
147 // │ │</wrapper> │ │
148 // └──────┴───────────────────────────────┴─────────────────────────────┘
149 //
150 // Non-captioned widget (config.image2_alignClasses defined)
151 // ┌──────┬───────────────────────────────┬─────────────────────────────┐
152 // │Align │Internal form │Data │
153 // ├──────┼───────────────────────────────┼─────────────────────────────┤
154 // │none │<wrapper> │<img /> │
155 // │ │ <img /> │ │
156 // │ │</wrapper> │ │
157 // ├──────┼───────────────────────────────┼─────────────────────────────┤
158 // │left │<wrapper class=”left”> │<img class=”left” /> │
159 // │ │ <img /> │ │
160 // │ │</wrapper> │ │
161 // ├──────┼───────────────────────────────┼─────────────────────────────┤
162 // │center│<wrapper> │<p class=”center”> │
163 // │ │ <p class=”center”> │ <img /> │
164 // │ │ <img /> │</p> │
165 // │ │ </p> │ │
166 // │ │</wrapper> │ │
167 // ├──────┼───────────────────────────────┼─────────────────────────────┤
168 // │right │<wrapper class=”right”> │<img class=”right” /> │
169 // │ │ <img /> │ │
170 // │ │</wrapper> │ │
171 // └──────┴───────────────────────────────┴─────────────────────────────┘
172 //
173 // Captioned widget (inline styles)
174 // ┌──────┬────────────────────────────────────────┬────────────────────────────────────────┐
175 // │Align │Internal form │Data │
176 // ├──────┼────────────────────────────────────────┼────────────────────────────────────────┤
177 // │none │<wrapper> │<figure /> │
178 // │ │ <figure /> │ │
179 // │ │</wrapper> │ │
180 // ├──────┼────────────────────────────────────────┼────────────────────────────────────────┤
181 // │left │<wrapper style=”float:left”> │<figure style=”float:left” /> │
182 // │ │ <figure /> │ │
183 // │ │</wrapper> │ │
184 // ├──────┼────────────────────────────────────────┼────────────────────────────────────────┤
185 // │center│<wrapper style=”text-align:center”> │<div style=”text-align:center”> │
186 // │ │ <figure style=”display:inline-block” />│ <figure style=”display:inline-block” />│
187 // │ │</wrapper> │</p> │
188 // ├──────┼────────────────────────────────────────┼────────────────────────────────────────┤
189 // │right │<wrapper style=”float:right”> │<figure style=”float:right” /> │
190 // │ │ <figure /> │ │
191 // │ │</wrapper> │ │
192 // └──────┴────────────────────────────────────────┴────────────────────────────────────────┘
193 //
194 // Captioned widget (config.image2_alignClasses defined)
195 // ┌──────┬────────────────────────────────────────┬────────────────────────────────────────┐
196 // │Align │Internal form │Data │
197 // ├──────┼────────────────────────────────────────┼────────────────────────────────────────┤
198 // │none │<wrapper> │<figure /> │
199 // │ │ <figure /> │ │
200 // │ │</wrapper> │ │
201 // ├──────┼────────────────────────────────────────┼────────────────────────────────────────┤
202 // │left │<wrapper class=”left”> │<figure class=”left” /> │
203 // │ │ <figure /> │ │
204 // │ │</wrapper> │ │
205 // ├──────┼────────────────────────────────────────┼────────────────────────────────────────┤
206 // │center│<wrapper class=”center”> │<div class=”center”> │
207 // │ │ <figure /> │ <figure /> │
208 // │ │</wrapper> │</p> │
209 // ├──────┼────────────────────────────────────────┼────────────────────────────────────────┤
210 // │right │<wrapper class=”right”> │<figure class=”right” /> │
211 // │ │ <figure /> │ │
212 // │ │</wrapper> │ │
213 // └──────┴────────────────────────────────────────┴────────────────────────────────────────┘
214 //
215 // @param {CKEDITOR.editor}
216 // @returns {Object}
217 function widgetDef( editor ) {
218 var alignClasses = editor.config.image2_alignClasses,
219 captionedClass = editor.config.image2_captionedClass;
220
221 function deflate() {
222 if ( this.deflated )
223 return;
224
225 // Remember whether widget was focused before destroyed.
226 if ( editor.widgets.focused == this.widget )
227 this.focused = true;
228
229 editor.widgets.destroy( this.widget );
230
231 // Mark widget was destroyed.
232 this.deflated = true;
233 }
234
235 function inflate() {
236 var editable = editor.editable(),
237 doc = editor.document;
238
239 // Create a new widget. This widget will be either captioned
240 // non-captioned, block or inline according to what is the
241 // new state of the widget.
242 if ( this.deflated ) {
243 this.widget = editor.widgets.initOn( this.element, 'image', this.widget.data );
244
245 // Once widget was re-created, it may become an inline element without
246 // block wrapper (i.e. when unaligned, end not captioned). Let's do some
247 // sort of autoparagraphing here (http://dev.ckeditor.com/ticket/10853).
248 if ( this.widget.inline && !( new CKEDITOR.dom.elementPath( this.widget.wrapper, editable ).block ) ) {
249 var block = doc.createElement( editor.activeEnterMode == CKEDITOR.ENTER_P ? 'p' : 'div' );
250 block.replace( this.widget.wrapper );
251 this.widget.wrapper.move( block );
252 }
253
254 // The focus must be transferred from the old one (destroyed)
255 // to the new one (just created).
256 if ( this.focused ) {
257 this.widget.focus();
258 delete this.focused;
259 }
260
261 delete this.deflated;
262 }
263
264 // If now widget was destroyed just update wrapper's alignment.
265 // According to the new state.
266 else {
267 setWrapperAlign( this.widget, alignClasses );
268 }
269 }
270
271 return {
272 allowedContent: getWidgetAllowedContent( editor ),
273
274 requiredContent: 'img[src,alt]',
275
276 features: getWidgetFeatures( editor ),
277
278 styleableElements: 'img figure',
279
280 // This widget converts style-driven dimensions to attributes.
281 contentTransformations: [
282 [ 'img[width]: sizeToAttribute' ]
283 ],
284
285 // This widget has an editable caption.
286 editables: {
287 caption: {
288 selector: 'figcaption',
289 allowedContent: 'br em strong sub sup u s; a[!href,target]'
290 }
291 },
292
293 parts: {
294 image: 'img',
295 caption: 'figcaption'
296 // parts#link defined in widget#init
297 },
298
299 // The name of this widget's dialog.
300 dialog: 'image2',
301
302 // Template of the widget: plain image.
303 template: template,
304
305 data: function() {
306 var features = this.features;
307
308 // Image can't be captioned when figcaption is disallowed (http://dev.ckeditor.com/ticket/11004).
309 if ( this.data.hasCaption && !editor.filter.checkFeature( features.caption ) )
310 this.data.hasCaption = false;
311
312 // Image can't be aligned when floating is disallowed (http://dev.ckeditor.com/ticket/11004).
313 if ( this.data.align != 'none' && !editor.filter.checkFeature( features.align ) )
314 this.data.align = 'none';
315
316 // Convert the internal form of the widget from the old state to the new one.
317 this.shiftState( {
318 widget: this,
319 element: this.element,
320 oldData: this.oldData,
321 newData: this.data,
322 deflate: deflate,
323 inflate: inflate
324 } );
325
326 // Update widget.parts.link since it will not auto-update unless widget
327 // is destroyed and re-inited.
328 if ( !this.data.link ) {
329 if ( this.parts.link )
330 delete this.parts.link;
331 } else {
332 if ( !this.parts.link )
333 this.parts.link = this.parts.image.getParent();
334 }
335
336 this.parts.image.setAttributes( {
337 src: this.data.src,
338
339 // This internal is required by the editor.
340 'data-cke-saved-src': this.data.src,
341
342 alt: this.data.alt
343 } );
344
345 // If shifting non-captioned -> captioned, remove classes
346 // related to styles from <img/>.
347 if ( this.oldData && !this.oldData.hasCaption && this.data.hasCaption ) {
348 for ( var c in this.data.classes )
349 this.parts.image.removeClass( c );
350 }
351
352 // Set dimensions of the image according to gathered data.
353 // Do it only when the attributes are allowed (http://dev.ckeditor.com/ticket/11004).
354 if ( editor.filter.checkFeature( features.dimension ) )
355 setDimensions( this );
356
357 // Cache current data.
358 this.oldData = CKEDITOR.tools.extend( {}, this.data );
359 },
360
361 init: function() {
362 var helpers = CKEDITOR.plugins.image2,
363 image = this.parts.image,
364 data = {
365 hasCaption: !!this.parts.caption,
366 src: image.getAttribute( 'src' ),
367 alt: image.getAttribute( 'alt' ) || '',
368 width: image.getAttribute( 'width' ) || '',
369 height: image.getAttribute( 'height' ) || '',
370
371 // Lock ratio is on by default (http://dev.ckeditor.com/ticket/10833).
372 lock: this.ready ? helpers.checkHasNaturalRatio( image ) : true
373 };
374
375 // If we used 'a' in widget#parts definition, it could happen that
376 // selected element is a child of widget.parts#caption. Since there's no clever
377 // way to solve it with CSS selectors, it's done like that. (http://dev.ckeditor.com/ticket/11783).
378 var link = image.getAscendant( 'a' );
379
380 if ( link && this.wrapper.contains( link ) )
381 this.parts.link = link;
382
383 // Depending on configuration, read style/class from element and
384 // then remove it. Removed style/class will be set on wrapper in #data listener.
385 // Note: Center alignment is detected during upcast, so only left/right cases
386 // are checked below.
387 if ( !data.align ) {
388 var alignElement = data.hasCaption ? this.element : image;
389
390 // Read the initial left/right alignment from the class set on element.
391 if ( alignClasses ) {
392 if ( alignElement.hasClass( alignClasses[ 0 ] ) ) {
393 data.align = 'left';
394 } else if ( alignElement.hasClass( alignClasses[ 2 ] ) ) {
395 data.align = 'right';
396 }
397
398 if ( data.align ) {
399 alignElement.removeClass( alignClasses[ alignmentsObj[ data.align ] ] );
400 } else {
401 data.align = 'none';
402 }
403 }
404 // Read initial float style from figure/image and then remove it.
405 else {
406 data.align = alignElement.getStyle( 'float' ) || 'none';
407 alignElement.removeStyle( 'float' );
408 }
409 }
410
411 // Update data.link object with attributes if the link has been discovered.
412 if ( editor.plugins.link && this.parts.link ) {
413 data.link = helpers.getLinkAttributesParser()( editor, this.parts.link );
414
415 // Get rid of cke_widget_* classes in data. Otherwise
416 // they might appear in link dialog.
417 var advanced = data.link.advanced;
418 if ( advanced && advanced.advCSSClasses ) {
419 advanced.advCSSClasses = CKEDITOR.tools.trim( advanced.advCSSClasses.replace( /cke_\S+/, '' ) );
420 }
421 }
422
423 // Get rid of extra vertical space when there's no caption.
424 // It will improve the look of the resizer.
425 this.wrapper[ ( data.hasCaption ? 'remove' : 'add' ) + 'Class' ]( 'cke_image_nocaption' );
426
427 this.setData( data );
428
429 // Setup dynamic image resizing with mouse.
430 // Don't initialize resizer when dimensions are disallowed (http://dev.ckeditor.com/ticket/11004).
431 if ( editor.filter.checkFeature( this.features.dimension ) && editor.config.image2_disableResizer !== true )
432 setupResizer( this );
433
434 this.shiftState = helpers.stateShifter( this.editor );
435
436 // Add widget editing option to its context menu.
437 this.on( 'contextMenu', function( evt ) {
438 evt.data.image = CKEDITOR.TRISTATE_OFF;
439
440 // Integrate context menu items for link.
441 // Note that widget may be wrapped in a link, which
442 // does not belong to that widget (http://dev.ckeditor.com/ticket/11814).
443 if ( this.parts.link || this.wrapper.getAscendant( 'a' ) )
444 evt.data.link = evt.data.unlink = CKEDITOR.TRISTATE_OFF;
445 } );
446
447 // Pass the reference to this widget to the dialog.
448 this.on( 'dialog', function( evt ) {
449 evt.data.widget = this;
450 }, this );
451 },
452
453 // Overrides default method to handle internal mutability of Image2.
454 // @see CKEDITOR.plugins.widget#addClass
455 addClass: function( className ) {
456 getStyleableElement( this ).addClass( className );
457 },
458
459 // Overrides default method to handle internal mutability of Image2.
460 // @see CKEDITOR.plugins.widget#hasClass
461 hasClass: function( className ) {
462 return getStyleableElement( this ).hasClass( className );
463 },
464
465 // Overrides default method to handle internal mutability of Image2.
466 // @see CKEDITOR.plugins.widget#removeClass
467 removeClass: function( className ) {
468 getStyleableElement( this ).removeClass( className );
469 },
470
471 // Overrides default method to handle internal mutability of Image2.
472 // @see CKEDITOR.plugins.widget#getClasses
473 getClasses: ( function() {
474 var classRegex = new RegExp( '^(' + [].concat( captionedClass, alignClasses ).join( '|' ) + ')$' );
475
476 return function() {
477 var classes = this.repository.parseElementClasses( getStyleableElement( this ).getAttribute( 'class' ) );
478
479 // Neither config.image2_captionedClass nor config.image2_alignClasses
480 // do not belong to style classes.
481 for ( var c in classes ) {
482 if ( classRegex.test( c ) )
483 delete classes[ c ];
484 }
485
486 return classes;
487 };
488 } )(),
489
490 upcast: upcastWidgetElement( editor ),
491 downcast: downcastWidgetElement( editor ),
492
493 getLabel: function() {
494 var label = ( this.data.alt || '' ) + ' ' + this.pathName;
495
496 return this.editor.lang.widget.label.replace( /%1/, label );
497 }
498 };
499 }
500
501 /**
502 * A set of Enhanced Image (image2) plugin helpers.
503 *
504 * @class
505 * @singleton
506 */
507 CKEDITOR.plugins.image2 = {
508 stateShifter: function( editor ) {
509 // Tag name used for centering non-captioned widgets.
510 var doc = editor.document,
511 alignClasses = editor.config.image2_alignClasses,
512 captionedClass = editor.config.image2_captionedClass,
513 editable = editor.editable(),
514
515 // The order that stateActions get executed. It matters!
516 shiftables = [ 'hasCaption', 'align', 'link' ];
517
518 // Atomic procedures, one per state variable.
519 var stateActions = {
520 align: function( shift, oldValue, newValue ) {
521 var el = shift.element;
522
523 // Alignment changed.
524 if ( shift.changed.align ) {
525 // No caption in the new state.
526 if ( !shift.newData.hasCaption ) {
527 // Changed to "center" (non-captioned).
528 if ( newValue == 'center' ) {
529 shift.deflate();
530 shift.element = wrapInCentering( editor, el );
531 }
532
533 // Changed to "non-center" from "center" while caption removed.
534 if ( !shift.changed.hasCaption && oldValue == 'center' && newValue != 'center' ) {
535 shift.deflate();
536 shift.element = unwrapFromCentering( el );
537 }
538 }
539 }
540
541 // Alignment remains and "center" removed caption.
542 else if ( newValue == 'center' && shift.changed.hasCaption && !shift.newData.hasCaption ) {
543 shift.deflate();
544 shift.element = wrapInCentering( editor, el );
545 }
546
547 // Finally set display for figure.
548 if ( !alignClasses && el.is( 'figure' ) ) {
549 if ( newValue == 'center' )
550 el.setStyle( 'display', 'inline-block' );
551 else
552 el.removeStyle( 'display' );
553 }
554 },
555
556 hasCaption: function( shift, oldValue, newValue ) {
557 // This action is for real state change only.
558 if ( !shift.changed.hasCaption )
559 return;
560
561 // Get <img/> or <a><img/></a> from widget. Note that widget element might itself
562 // be what we're looking for. Also element can be <p style="text-align:center"><a>...</a></p>.
563 var imageOrLink;
564 if ( shift.element.is( { img: 1, a: 1 } ) )
565 imageOrLink = shift.element;
566 else
567 imageOrLink = shift.element.findOne( 'a,img' );
568
569 // Switching hasCaption always destroys the widget.
570 shift.deflate();
571
572 // There was no caption, but the caption is to be added.
573 if ( newValue ) {
574 // Create new <figure> from widget template.
575 var figure = CKEDITOR.dom.element.createFromHtml( templateBlock.output( {
576 captionedClass: captionedClass,
577 captionPlaceholder: editor.lang.image2.captionPlaceholder
578 } ), doc );
579
580 // Replace element with <figure>.
581 replaceSafely( figure, shift.element );
582
583 // Use old <img/> or <a><img/></a> instead of the one from the template,
584 // so we won't lose additional attributes.
585 imageOrLink.replace( figure.findOne( 'img' ) );
586
587 // Update widget's element.
588 shift.element = figure;
589 }
590
591 // The caption was present, but now it's to be removed.
592 else {
593 // Unwrap <img/> or <a><img/></a> from figure.
594 imageOrLink.replace( shift.element );
595
596 // Update widget's element.
597 shift.element = imageOrLink;
598 }
599 },
600
601 link: function( shift, oldValue, newValue ) {
602 if ( shift.changed.link ) {
603 var img = shift.element.is( 'img' ) ?
604 shift.element : shift.element.findOne( 'img' ),
605 link = shift.element.is( 'a' ) ?
606 shift.element : shift.element.findOne( 'a' ),
607 // Why deflate:
608 // If element is <img/>, it will be wrapped into <a>,
609 // which becomes a new widget.element.
610 // If element is <a><img/></a>, it will be unlinked
611 // so <img/> becomes a new widget.element.
612 needsDeflate = ( shift.element.is( 'a' ) && !newValue ) || ( shift.element.is( 'img' ) && newValue ),
613 newEl;
614
615 if ( needsDeflate )
616 shift.deflate();
617
618 // If unlinked the image, returned element is <img>.
619 if ( !newValue )
620 newEl = unwrapFromLink( link );
621 else {
622 // If linked the image, returned element is <a>.
623 if ( !oldValue )
624 newEl = wrapInLink( img, shift.newData.link );
625
626 // Set and remove all attributes associated with this state.
627 var attributes = CKEDITOR.plugins.image2.getLinkAttributesGetter()( editor, newValue );
628
629 if ( !CKEDITOR.tools.isEmpty( attributes.set ) )
630 ( newEl || link ).setAttributes( attributes.set );
631
632 if ( attributes.removed.length )
633 ( newEl || link ).removeAttributes( attributes.removed );
634 }
635
636 if ( needsDeflate )
637 shift.element = newEl;
638 }
639 }
640 };
641
642 function wrapInCentering( editor, element ) {
643 var attribsAndStyles = {};
644
645 if ( alignClasses )
646 attribsAndStyles.attributes = { 'class': alignClasses[ 1 ] };
647 else
648 attribsAndStyles.styles = { 'text-align': 'center' };
649
650 // There's no gentle way to center inline element with CSS, so create p/div
651 // that wraps widget contents and does the trick either with style or class.
652 var center = doc.createElement(
653 editor.activeEnterMode == CKEDITOR.ENTER_P ? 'p' : 'div', attribsAndStyles );
654
655 // Replace element with centering wrapper.
656 replaceSafely( center, element );
657 element.move( center );
658
659 return center;
660 }
661
662 function unwrapFromCentering( element ) {
663 var imageOrLink = element.findOne( 'a,img' );
664
665 imageOrLink.replace( element );
666
667 return imageOrLink;
668 }
669
670 // Wraps <img/> -> <a><img/></a>.
671 // Returns reference to <a>.
672 //
673 // @param {CKEDITOR.dom.element} img
674 // @param {Object} linkData
675 // @returns {CKEDITOR.dom.element}
676 function wrapInLink( img, linkData ) {
677 var link = doc.createElement( 'a', {
678 attributes: {
679 href: linkData.url
680 }
681 } );
682
683 link.replace( img );
684 img.move( link );
685
686 return link;
687 }
688
689 // De-wraps <a><img/></a> -> <img/>.
690 // Returns the reference to <img/>
691 //
692 // @param {CKEDITOR.dom.element} link
693 // @returns {CKEDITOR.dom.element}
694 function unwrapFromLink( link ) {
695 var img = link.findOne( 'img' );
696
697 img.replace( link );
698
699 return img;
700 }
701
702 function replaceSafely( replacing, replaced ) {
703 if ( replaced.getParent() ) {
704 var range = editor.createRange();
705
706 range.moveToPosition( replaced, CKEDITOR.POSITION_BEFORE_START );
707
708 // Remove old element. Do it before insertion to avoid a case when
709 // element is moved from 'replaced' element before it, what creates
710 // a tricky case which insertElementIntorRange does not handle.
711 replaced.remove();
712
713 editable.insertElementIntoRange( replacing, range );
714 }
715 else {
716 replacing.replace( replaced );
717 }
718 }
719
720 return function( shift ) {
721 var name, i;
722
723 shift.changed = {};
724
725 for ( i = 0; i < shiftables.length; i++ ) {
726 name = shiftables[ i ];
727
728 shift.changed[ name ] = shift.oldData ?
729 shift.oldData[ name ] !== shift.newData[ name ] : false;
730 }
731
732 // Iterate over possible state variables.
733 for ( i = 0; i < shiftables.length; i++ ) {
734 name = shiftables[ i ];
735
736 stateActions[ name ]( shift,
737 shift.oldData ? shift.oldData[ name ] : null,
738 shift.newData[ name ] );
739 }
740
741 shift.inflate();
742 };
743 },
744
745 /**
746 * Checks whether the current image ratio matches the natural one
747 * by comparing dimensions.
748 *
749 * @param {CKEDITOR.dom.element} image
750 * @returns {Boolean}
751 */
752 checkHasNaturalRatio: function( image ) {
753 var $ = image.$,
754 natural = this.getNatural( image );
755
756 // The reason for two alternative comparisons is that the rounding can come from
757 // both dimensions, e.g. there are two cases:
758 // 1. height is computed as a rounded relation of the real height and the value of width,
759 // 2. width is computed as a rounded relation of the real width and the value of heigh.
760 return Math.round( $.clientWidth / natural.width * natural.height ) == $.clientHeight ||
761 Math.round( $.clientHeight / natural.height * natural.width ) == $.clientWidth;
762 },
763
764 /**
765 * Returns natural dimensions of the image. For modern browsers
766 * it uses natural(Width|Height). For old ones (IE8) it creates
767 * a new image and reads the dimensions.
768 *
769 * @param {CKEDITOR.dom.element} image
770 * @returns {Object}
771 */
772 getNatural: function( image ) {
773 var dimensions;
774
775 if ( image.$.naturalWidth ) {
776 dimensions = {
777 width: image.$.naturalWidth,
778 height: image.$.naturalHeight
779 };
780 } else {
781 var img = new Image();
782 img.src = image.getAttribute( 'src' );
783
784 dimensions = {
785 width: img.width,
786 height: img.height
787 };
788 }
789
790 return dimensions;
791 },
792
793 /**
794 * Returns an attribute getter function. Default getter comes from the Link plugin
795 * and is documented by {@link CKEDITOR.plugins.link#getLinkAttributes}.
796 *
797 * **Note:** It is possible to override this method and use a custom getter e.g.
798 * in the absence of the Link plugin.
799 *
800 * **Note:** If a custom getter is used, a data model format it produces
801 * must be compatible with {@link CKEDITOR.plugins.link#getLinkAttributes}.
802 *
803 * **Note:** A custom getter must understand the data model format produced by
804 * {@link #getLinkAttributesParser} to work correctly.
805 *
806 * @returns {Function} A function that gets (composes) link attributes.
807 * @since 4.5.5
808 */
809 getLinkAttributesGetter: function() {
810 // http://dev.ckeditor.com/ticket/13885
811 return CKEDITOR.plugins.link.getLinkAttributes;
812 },
813
814 /**
815 * Returns an attribute parser function. Default parser comes from the Link plugin
816 * and is documented by {@link CKEDITOR.plugins.link#parseLinkAttributes}.
817 *
818 * **Note:** It is possible to override this method and use a custom parser e.g.
819 * in the absence of the Link plugin.
820 *
821 * **Note:** If a custom parser is used, a data model format produced by the parser
822 * must be compatible with {@link #getLinkAttributesGetter}.
823 *
824 * **Note:** If a custom parser is used, it should be compatible with the
825 * {@link CKEDITOR.plugins.link#parseLinkAttributes} data model format. Otherwise the
826 * Link plugin dialog may not be populated correctly with parsed data. However
827 * as long as Enhanced Image is **not** used with the Link plugin dialog, any custom data model
828 * will work, being stored as an internal property of Enhanced Image widget's data only.
829 *
830 * @returns {Function} A function that parses attributes.
831 * @since 4.5.5
832 */
833 getLinkAttributesParser: function() {
834 // http://dev.ckeditor.com/ticket/13885
835 return CKEDITOR.plugins.link.parseLinkAttributes;
836 }
837 };
838
839 function setWrapperAlign( widget, alignClasses ) {
840 var wrapper = widget.wrapper,
841 align = widget.data.align,
842 hasCaption = widget.data.hasCaption;
843
844 if ( alignClasses ) {
845 // Remove all align classes first.
846 for ( var i = 3; i--; )
847 wrapper.removeClass( alignClasses[ i ] );
848
849 if ( align == 'center' ) {
850 // Avoid touching non-captioned, centered widgets because
851 // they have the class set on the element instead of wrapper:
852 //
853 // <div class="cke_widget_wrapper">
854 // <p class="center-class">
855 // <img />
856 // </p>
857 // </div>
858 if ( hasCaption ) {
859 wrapper.addClass( alignClasses[ 1 ] );
860 }
861 } else if ( align != 'none' ) {
862 wrapper.addClass( alignClasses[ alignmentsObj[ align ] ] );
863 }
864 } else {
865 if ( align == 'center' ) {
866 if ( hasCaption )
867 wrapper.setStyle( 'text-align', 'center' );
868 else
869 wrapper.removeStyle( 'text-align' );
870
871 wrapper.removeStyle( 'float' );
872 }
873 else {
874 if ( align == 'none' )
875 wrapper.removeStyle( 'float' );
876 else
877 wrapper.setStyle( 'float', align );
878
879 wrapper.removeStyle( 'text-align' );
880 }
881 }
882 }
883
884 // Returns a function that creates widgets from all <img> and
885 // <figure class="{config.image2_captionedClass}"> elements.
886 //
887 // @param {CKEDITOR.editor} editor
888 // @returns {Function}
889 function upcastWidgetElement( editor ) {
890 var isCenterWrapper = centerWrapperChecker( editor ),
891 captionedClass = editor.config.image2_captionedClass;
892
893 // @param {CKEDITOR.htmlParser.element} el
894 // @param {Object} data
895 return function( el, data ) {
896 var dimensions = { width: 1, height: 1 },
897 name = el.name,
898 image;
899
900 // http://dev.ckeditor.com/ticket/11110 Don't initialize on pasted fake objects.
901 if ( el.attributes[ 'data-cke-realelement' ] )
902 return;
903
904 // If a center wrapper is found, there are 3 possible cases:
905 //
906 // 1. <div style="text-align:center"><figure>...</figure></div>.
907 // In this case centering is done with a class set on widget.wrapper.
908 // Simply replace centering wrapper with figure (it's no longer necessary).
909 //
910 // 2. <p style="text-align:center"><img/></p>.
911 // Nothing to do here: <p> remains for styling purposes.
912 //
913 // 3. <div style="text-align:center"><img/></div>.
914 // Nothing to do here (2.) but that case is only possible in enterMode different
915 // than ENTER_P.
916 if ( isCenterWrapper( el ) ) {
917 if ( name == 'div' ) {
918 var figure = el.getFirst( 'figure' );
919
920 // Case #1.
921 if ( figure ) {
922 el.replaceWith( figure );
923 el = figure;
924 }
925 }
926 // Cases #2 and #3 (handled transparently)
927
928 // If there's a centering wrapper, save it in data.
929 data.align = 'center';
930
931 // Image can be wrapped in link <a><img/></a>.
932 image = el.getFirst( 'img' ) || el.getFirst( 'a' ).getFirst( 'img' );
933 }
934
935 // No center wrapper has been found.
936 else if ( name == 'figure' && el.hasClass( captionedClass ) ) {
937 image = el.getFirst( 'img' ) || el.getFirst( 'a' ).getFirst( 'img' );
938
939 // Upcast linked image like <a><img/></a>.
940 } else if ( isLinkedOrStandaloneImage( el ) ) {
941 image = el.name == 'a' ? el.children[ 0 ] : el;
942 }
943
944 if ( !image )
945 return;
946
947 // If there's an image, then cool, we got a widget.
948 // Now just remove dimension attributes expressed with %.
949 for ( var d in dimensions ) {
950 var dimension = image.attributes[ d ];
951
952 if ( dimension && dimension.match( regexPercent ) )
953 delete image.attributes[ d ];
954 }
955
956 return el;
957 };
958 }
959
960 // Returns a function which transforms the widget to the external format
961 // according to the current configuration.
962 //
963 // @param {CKEDITOR.editor}
964 function downcastWidgetElement( editor ) {
965 var alignClasses = editor.config.image2_alignClasses;
966
967 // @param {CKEDITOR.htmlParser.element} el
968 return function( el ) {
969 // In case of <a><img/></a>, <img/> is the element to hold
970 // inline styles or classes (image2_alignClasses).
971 var attrsHolder = el.name == 'a' ? el.getFirst() : el,
972 attrs = attrsHolder.attributes,
973 align = this.data.align;
974
975 // De-wrap the image from resize handle wrapper.
976 // Only block widgets have one.
977 if ( !this.inline ) {
978 var resizeWrapper = el.getFirst( 'span' );
979
980 if ( resizeWrapper )
981 resizeWrapper.replaceWith( resizeWrapper.getFirst( { img: 1, a: 1 } ) );
982 }
983
984 if ( align && align != 'none' ) {
985 var styles = CKEDITOR.tools.parseCssText( attrs.style || '' );
986
987 // When the widget is captioned (<figure>) and internally centering is done
988 // with widget's wrapper style/class, in the external data representation,
989 // <figure> must be wrapped with an element holding an style/class:
990 //
991 // <div style="text-align:center">
992 // <figure class="image" style="display:inline-block">...</figure>
993 // </div>
994 // or
995 // <div class="some-center-class">
996 // <figure class="image">...</figure>
997 // </div>
998 //
999 if ( align == 'center' && el.name == 'figure' ) {
1000 el = el.wrapWith( new CKEDITOR.htmlParser.element( 'div',
1001 alignClasses ? { 'class': alignClasses[ 1 ] } : { style: 'text-align:center' } ) );
1002 }
1003
1004 // If left/right, add float style to the downcasted element.
1005 else if ( align in { left: 1, right: 1 } ) {
1006 if ( alignClasses )
1007 attrsHolder.addClass( alignClasses[ alignmentsObj[ align ] ] );
1008 else
1009 styles[ 'float' ] = align;
1010 }
1011
1012 // Update element styles.
1013 if ( !alignClasses && !CKEDITOR.tools.isEmpty( styles ) )
1014 attrs.style = CKEDITOR.tools.writeCssText( styles );
1015 }
1016
1017 return el;
1018 };
1019 }
1020
1021 // Returns a function that checks if an element is a centering wrapper.
1022 //
1023 // @param {CKEDITOR.editor} editor
1024 // @returns {Function}
1025 function centerWrapperChecker( editor ) {
1026 var captionedClass = editor.config.image2_captionedClass,
1027 alignClasses = editor.config.image2_alignClasses,
1028 validChildren = { figure: 1, a: 1, img: 1 };
1029
1030 return function( el ) {
1031 // Wrapper must be either <div> or <p>.
1032 if ( !( el.name in { div: 1, p: 1 } ) )
1033 return false;
1034
1035 var children = el.children;
1036
1037 // Centering wrapper can have only one child.
1038 if ( children.length !== 1 )
1039 return false;
1040
1041 var child = children[ 0 ];
1042
1043 // Only <figure> or <img /> can be first (only) child of centering wrapper,
1044 // regardless of its type.
1045 if ( !( child.name in validChildren ) )
1046 return false;
1047
1048 // If centering wrapper is <p>, only <img /> can be the child.
1049 // <p style="text-align:center"><img /></p>
1050 if ( el.name == 'p' ) {
1051 if ( !isLinkedOrStandaloneImage( child ) )
1052 return false;
1053 }
1054 // Centering <div> can hold <img/> or <figure>, depending on enterMode.
1055 else {
1056 // If a <figure> is the first (only) child, it must have a class.
1057 // <div style="text-align:center"><figure>...</figure><div>
1058 if ( child.name == 'figure' ) {
1059 if ( !child.hasClass( captionedClass ) )
1060 return false;
1061 } else {
1062 // Centering <div> can hold <img/> or <a><img/></a> only when enterMode
1063 // is ENTER_(BR|DIV).
1064 // <div style="text-align:center"><img /></div>
1065 // <div style="text-align:center"><a><img /></a></div>
1066 if ( editor.enterMode == CKEDITOR.ENTER_P )
1067 return false;
1068
1069 // Regardless of enterMode, a child which is not <figure> must be
1070 // either <img/> or <a><img/></a>.
1071 if ( !isLinkedOrStandaloneImage( child ) )
1072 return false;
1073 }
1074 }
1075
1076 // Centering wrapper got to be... centering. If image2_alignClasses are defined,
1077 // check for centering class. Otherwise, check the style.
1078 if ( alignClasses ? el.hasClass( alignClasses[ 1 ] ) :
1079 CKEDITOR.tools.parseCssText( el.attributes.style || '', true )[ 'text-align' ] == 'center' )
1080 return true;
1081
1082 return false;
1083 };
1084 }
1085
1086 // Checks whether element is <img/> or <a><img/></a>.
1087 //
1088 // @param {CKEDITOR.htmlParser.element}
1089 function isLinkedOrStandaloneImage( el ) {
1090 if ( el.name == 'img' )
1091 return true;
1092 else if ( el.name == 'a' )
1093 return el.children.length == 1 && el.getFirst( 'img' );
1094
1095 return false;
1096 }
1097
1098 // Sets width and height of the widget image according to current widget data.
1099 //
1100 // @param {CKEDITOR.plugins.widget} widget
1101 function setDimensions( widget ) {
1102 var data = widget.data,
1103 dimensions = { width: data.width, height: data.height },
1104 image = widget.parts.image;
1105
1106 for ( var d in dimensions ) {
1107 if ( dimensions[ d ] )
1108 image.setAttribute( d, dimensions[ d ] );
1109 else
1110 image.removeAttribute( d );
1111 }
1112 }
1113
1114 // Defines all features related to drag-driven image resizing.
1115 //
1116 // @param {CKEDITOR.plugins.widget} widget
1117 function setupResizer( widget ) {
1118 var editor = widget.editor,
1119 editable = editor.editable(),
1120 doc = editor.document,
1121
1122 // Store the resizer in a widget for testing (http://dev.ckeditor.com/ticket/11004).
1123 resizer = widget.resizer = doc.createElement( 'span' );
1124
1125 resizer.addClass( 'cke_image_resizer' );
1126 resizer.setAttribute( 'title', editor.lang.image2.resizer );
1127 resizer.append( new CKEDITOR.dom.text( '\u200b', doc ) );
1128
1129 // Inline widgets don't need a resizer wrapper as an image spans the entire widget.
1130 if ( !widget.inline ) {
1131 var imageOrLink = widget.parts.link || widget.parts.image,
1132 oldResizeWrapper = imageOrLink.getParent(),
1133 resizeWrapper = doc.createElement( 'span' );
1134
1135 resizeWrapper.addClass( 'cke_image_resizer_wrapper' );
1136 resizeWrapper.append( imageOrLink );
1137 resizeWrapper.append( resizer );
1138 widget.element.append( resizeWrapper, true );
1139
1140 // Remove the old wrapper which could came from e.g. pasted HTML
1141 // and which could be corrupted (e.g. resizer span has been lost).
1142 if ( oldResizeWrapper.is( 'span' ) )
1143 oldResizeWrapper.remove();
1144 } else {
1145 widget.wrapper.append( resizer );
1146 }
1147
1148 // Calculate values of size variables and mouse offsets.
1149 resizer.on( 'mousedown', function( evt ) {
1150 var image = widget.parts.image,
1151
1152 // "factor" can be either 1 or -1. I.e.: For right-aligned images, we need to
1153 // subtract the difference to get proper width, etc. Without "factor",
1154 // resizer starts working the opposite way.
1155 factor = widget.data.align == 'right' ? -1 : 1,
1156
1157 // The x-coordinate of the mouse relative to the screen
1158 // when button gets pressed.
1159 startX = evt.data.$.screenX,
1160 startY = evt.data.$.screenY,
1161
1162 // The initial dimensions and aspect ratio of the image.
1163 startWidth = image.$.clientWidth,
1164 startHeight = image.$.clientHeight,
1165 ratio = startWidth / startHeight,
1166
1167 listeners = [],
1168
1169 // A class applied to editable during resizing.
1170 cursorClass = 'cke_image_s' + ( !~factor ? 'w' : 'e' ),
1171
1172 nativeEvt, newWidth, newHeight, updateData,
1173 moveDiffX, moveDiffY, moveRatio;
1174
1175 // Save the undo snapshot first: before resizing.
1176 editor.fire( 'saveSnapshot' );
1177
1178 // Mousemove listeners are removed on mouseup.
1179 attachToDocuments( 'mousemove', onMouseMove, listeners );
1180
1181 // Clean up the mousemove listener. Update widget data if valid.
1182 attachToDocuments( 'mouseup', onMouseUp, listeners );
1183
1184 // The entire editable will have the special cursor while resizing goes on.
1185 editable.addClass( cursorClass );
1186
1187 // This is to always keep the resizer element visible while resizing.
1188 resizer.addClass( 'cke_image_resizing' );
1189
1190 // Attaches an event to a global document if inline editor.
1191 // Additionally, if classic (`iframe`-based) editor, also attaches the same event to `iframe`'s document.
1192 function attachToDocuments( name, callback, collection ) {
1193 var globalDoc = CKEDITOR.document,
1194 listeners = [];
1195
1196 if ( !doc.equals( globalDoc ) )
1197 listeners.push( globalDoc.on( name, callback ) );
1198
1199 listeners.push( doc.on( name, callback ) );
1200
1201 if ( collection ) {
1202 for ( var i = listeners.length; i--; )
1203 collection.push( listeners.pop() );
1204 }
1205 }
1206
1207 // Calculate with first, and then adjust height, preserving ratio.
1208 function adjustToX() {
1209 newWidth = startWidth + factor * moveDiffX;
1210 newHeight = Math.round( newWidth / ratio );
1211 }
1212
1213 // Calculate height first, and then adjust width, preserving ratio.
1214 function adjustToY() {
1215 newHeight = startHeight - moveDiffY;
1216 newWidth = Math.round( newHeight * ratio );
1217 }
1218
1219 // This is how variables refer to the geometry.
1220 // Note: x corresponds to moveOffset, this is the position of mouse
1221 // Note: o corresponds to [startX, startY].
1222 //
1223 // +--------------+--------------+
1224 // | | |
1225 // | I | II |
1226 // | | |
1227 // +------------- o -------------+ _ _ _
1228 // | | | ^
1229 // | VI | III | | moveDiffY
1230 // | | x _ _ _ _ _ v
1231 // +--------------+---------|----+
1232 // | |
1233 // <------->
1234 // moveDiffX
1235 function onMouseMove( evt ) {
1236 nativeEvt = evt.data.$;
1237
1238 // This is how far the mouse is from the point the button was pressed.
1239 moveDiffX = nativeEvt.screenX - startX;
1240 moveDiffY = startY - nativeEvt.screenY;
1241
1242 // This is the aspect ratio of the move difference.
1243 moveRatio = Math.abs( moveDiffX / moveDiffY );
1244
1245 // Left, center or none-aligned widget.
1246 if ( factor == 1 ) {
1247 if ( moveDiffX <= 0 ) {
1248 // Case: IV.
1249 if ( moveDiffY <= 0 )
1250 adjustToX();
1251
1252 // Case: I.
1253 else {
1254 if ( moveRatio >= ratio )
1255 adjustToX();
1256 else
1257 adjustToY();
1258 }
1259 } else {
1260 // Case: III.
1261 if ( moveDiffY <= 0 ) {
1262 if ( moveRatio >= ratio )
1263 adjustToY();
1264 else
1265 adjustToX();
1266 }
1267
1268 // Case: II.
1269 else {
1270 adjustToY();
1271 }
1272 }
1273 }
1274
1275 // Right-aligned widget. It mirrors behaviours, so I becomes II,
1276 // IV becomes III and vice-versa.
1277 else {
1278 if ( moveDiffX <= 0 ) {
1279 // Case: IV.
1280 if ( moveDiffY <= 0 ) {
1281 if ( moveRatio >= ratio )
1282 adjustToY();
1283 else
1284 adjustToX();
1285 }
1286
1287 // Case: I.
1288 else {
1289 adjustToY();
1290 }
1291 } else {
1292 // Case: III.
1293 if ( moveDiffY <= 0 )
1294 adjustToX();
1295
1296 // Case: II.
1297 else {
1298 if ( moveRatio >= ratio ) {
1299 adjustToX();
1300 } else {
1301 adjustToY();
1302 }
1303 }
1304 }
1305 }
1306
1307 // Don't update attributes if less than 10.
1308 // This is to prevent images to visually disappear.
1309 if ( newWidth >= 15 && newHeight >= 15 ) {
1310 image.setAttributes( { width: newWidth, height: newHeight } );
1311 updateData = true;
1312 } else {
1313 updateData = false;
1314 }
1315 }
1316
1317 function onMouseUp() {
1318 var l;
1319
1320 while ( ( l = listeners.pop() ) )
1321 l.removeListener();
1322
1323 // Restore default cursor by removing special class.
1324 editable.removeClass( cursorClass );
1325
1326 // This is to bring back the regular behaviour of the resizer.
1327 resizer.removeClass( 'cke_image_resizing' );
1328
1329 if ( updateData ) {
1330 widget.setData( { width: newWidth, height: newHeight } );
1331
1332 // Save another undo snapshot: after resizing.
1333 editor.fire( 'saveSnapshot' );
1334 }
1335
1336 // Don't update data twice or more.
1337 updateData = false;
1338 }
1339 } );
1340
1341 // Change the position of the widget resizer when data changes.
1342 widget.on( 'data', function() {
1343 resizer[ widget.data.align == 'right' ? 'addClass' : 'removeClass' ]( 'cke_image_resizer_left' );
1344 } );
1345 }
1346
1347 // Integrates widget alignment setting with justify
1348 // plugin's commands (execution and refreshment).
1349 // @param {CKEDITOR.editor} editor
1350 // @param {String} value 'left', 'right', 'center' or 'block'
1351 function alignCommandIntegrator( editor ) {
1352 var execCallbacks = [],
1353 enabled;
1354
1355 return function( value ) {
1356 var command = editor.getCommand( 'justify' + value );
1357
1358 // Most likely, the justify plugin isn't loaded.
1359 if ( !command )
1360 return;
1361
1362 // This command will be manually refreshed along with
1363 // other commands after exec.
1364 execCallbacks.push( function() {
1365 command.refresh( editor, editor.elementPath() );
1366 } );
1367
1368 if ( value in { right: 1, left: 1, center: 1 } ) {
1369 command.on( 'exec', function( evt ) {
1370 var widget = getFocusedWidget( editor );
1371
1372 if ( widget ) {
1373 widget.setData( 'align', value );
1374
1375 // Once the widget changed its align, all the align commands
1376 // must be refreshed: the event is to be cancelled.
1377 for ( var i = execCallbacks.length; i--; )
1378 execCallbacks[ i ]();
1379
1380 evt.cancel();
1381 }
1382 } );
1383 }
1384
1385 command.on( 'refresh', function( evt ) {
1386 var widget = getFocusedWidget( editor ),
1387 allowed = { right: 1, left: 1, center: 1 };
1388
1389 if ( !widget )
1390 return;
1391
1392 // Cache "enabled" on first use. This is because filter#checkFeature may
1393 // not be available during plugin's afterInit in the future — a moment when
1394 // alignCommandIntegrator is called.
1395 if ( enabled === undefined )
1396 enabled = editor.filter.checkFeature( editor.widgets.registered.image.features.align );
1397
1398 // Don't allow justify commands when widget alignment is disabled (http://dev.ckeditor.com/ticket/11004).
1399 if ( !enabled )
1400 this.setState( CKEDITOR.TRISTATE_DISABLED );
1401 else {
1402 this.setState(
1403 ( widget.data.align == value ) ? (
1404 CKEDITOR.TRISTATE_ON
1405 ) : (
1406 ( value in allowed ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED
1407 )
1408 );
1409 }
1410
1411 evt.cancel();
1412 } );
1413 };
1414 }
1415
1416 function linkCommandIntegrator( editor ) {
1417 // Nothing to integrate with if link is not loaded.
1418 if ( !editor.plugins.link )
1419 return;
1420
1421 CKEDITOR.on( 'dialogDefinition', function( evt ) {
1422 var dialog = evt.data;
1423
1424 if ( dialog.name == 'link' ) {
1425 var def = dialog.definition;
1426
1427 var onShow = def.onShow,
1428 onOk = def.onOk;
1429
1430 def.onShow = function() {
1431 var widget = getFocusedWidget( editor ),
1432 displayTextField = this.getContentElement( 'info', 'linkDisplayText' ).getElement().getParent().getParent();
1433
1434 // Widget cannot be enclosed in a link, i.e.
1435 // <a>foo<inline widget/>bar</a>
1436 if ( widget && ( widget.inline ? !widget.wrapper.getAscendant( 'a' ) : 1 ) ) {
1437 this.setupContent( widget.data.link || {} );
1438
1439 // Hide the display text in case of linking image2 widget.
1440 displayTextField.hide();
1441 } else {
1442 // Make sure that display text is visible, as it might be hidden by image2 integration
1443 // before.
1444 displayTextField.show();
1445 onShow.apply( this, arguments );
1446 }
1447 };
1448
1449 // Set widget data if linking the widget using
1450 // link dialog (instead of default action).
1451 // State shifter handles data change and takes
1452 // care of internal DOM structure of linked widget.
1453 def.onOk = function() {
1454 var widget = getFocusedWidget( editor );
1455
1456 // Widget cannot be enclosed in a link, i.e.
1457 // <a>foo<inline widget/>bar</a>
1458 if ( widget && ( widget.inline ? !widget.wrapper.getAscendant( 'a' ) : 1 ) ) {
1459 var data = {};
1460
1461 // Collect data from fields.
1462 this.commitContent( data );
1463
1464 // Set collected data to widget.
1465 widget.setData( 'link', data );
1466 } else {
1467 onOk.apply( this, arguments );
1468 }
1469 };
1470 }
1471 } );
1472
1473 // Overwrite default behaviour of unlink command.
1474 editor.getCommand( 'unlink' ).on( 'exec', function( evt ) {
1475 var widget = getFocusedWidget( editor );
1476
1477 // Override unlink only when link truly belongs to the widget.
1478 // If wrapped inline widget in a link, let default unlink work (http://dev.ckeditor.com/ticket/11814).
1479 if ( !widget || !widget.parts.link )
1480 return;
1481
1482 widget.setData( 'link', null );
1483
1484 // Selection (which is fake) may not change if unlinked image in focused widget,
1485 // i.e. if captioned image. Let's refresh command state manually here.
1486 this.refresh( editor, editor.elementPath() );
1487
1488 evt.cancel();
1489 } );
1490
1491 // Overwrite default refresh of unlink command.
1492 editor.getCommand( 'unlink' ).on( 'refresh', function( evt ) {
1493 var widget = getFocusedWidget( editor );
1494
1495 if ( !widget )
1496 return;
1497
1498 // Note that widget may be wrapped in a link, which
1499 // does not belong to that widget (http://dev.ckeditor.com/ticket/11814).
1500 this.setState( widget.data.link || widget.wrapper.getAscendant( 'a' ) ?
1501 CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED );
1502
1503 evt.cancel();
1504 } );
1505 }
1506
1507 // Returns the focused widget, if of the type specific for this plugin.
1508 // If no widget is focused, `null` is returned.
1509 //
1510 // @param {CKEDITOR.editor}
1511 // @returns {CKEDITOR.plugins.widget}
1512 function getFocusedWidget( editor ) {
1513 var widget = editor.widgets.focused;
1514
1515 if ( widget && widget.name == 'image' )
1516 return widget;
1517
1518 return null;
1519 }
1520
1521 // Returns a set of widget allowedContent rules, depending
1522 // on configurations like config#image2_alignClasses or
1523 // config#image2_captionedClass.
1524 //
1525 // @param {CKEDITOR.editor}
1526 // @returns {Object}
1527 function getWidgetAllowedContent( editor ) {
1528 var alignClasses = editor.config.image2_alignClasses,
1529 rules = {
1530 // Widget may need <div> or <p> centering wrapper.
1531 div: {
1532 match: centerWrapperChecker( editor )
1533 },
1534 p: {
1535 match: centerWrapperChecker( editor )
1536 },
1537 img: {
1538 attributes: '!src,alt,width,height'
1539 },
1540 figure: {
1541 classes: '!' + editor.config.image2_captionedClass
1542 },
1543 figcaption: true
1544 };
1545
1546 if ( alignClasses ) {
1547 // Centering class from the config.
1548 rules.div.classes = alignClasses[ 1 ];
1549 rules.p.classes = rules.div.classes;
1550
1551 // Left/right classes from the config.
1552 rules.img.classes = alignClasses[ 0 ] + ',' + alignClasses[ 2 ];
1553 rules.figure.classes += ',' + rules.img.classes;
1554 } else {
1555 // Centering with text-align.
1556 rules.div.styles = 'text-align';
1557 rules.p.styles = 'text-align';
1558
1559 rules.img.styles = 'float';
1560 rules.figure.styles = 'float,display';
1561 }
1562
1563 return rules;
1564 }
1565
1566 // Returns a set of widget feature rules, depending
1567 // on editor configuration. Note that the following may not cover
1568 // all the possible cases since requiredContent supports a single
1569 // tag only.
1570 //
1571 // @param {CKEDITOR.editor}
1572 // @returns {Object}
1573 function getWidgetFeatures( editor ) {
1574 var alignClasses = editor.config.image2_alignClasses,
1575 features = {
1576 dimension: {
1577 requiredContent: 'img[width,height]'
1578 },
1579 align: {
1580 requiredContent: 'img' +
1581 ( alignClasses ? '(' + alignClasses[ 0 ] + ')' : '{float}' )
1582 },
1583 caption: {
1584 requiredContent: 'figcaption'
1585 }
1586 };
1587
1588 return features;
1589 }
1590
1591 // Returns element which is styled, considering current
1592 // state of the widget.
1593 //
1594 // @see CKEDITOR.plugins.widget#applyStyle
1595 // @param {CKEDITOR.plugins.widget} widget
1596 // @returns {CKEDITOR.dom.element}
1597 function getStyleableElement( widget ) {
1598 return widget.data.hasCaption ? widget.element : widget.parts.image;
1599 }
1600} )();
1601
1602/**
1603 * A CSS class applied to the `<figure>` element of a captioned image.
1604 *
1605 * Read more in the [documentation](#!/guide/dev_captionedimage) and see the
1606 * [SDK sample](http://sdk.ckeditor.com/samples/captionedimage.html).
1607 *
1608 * // Changes the class to "captionedImage".
1609 * config.image2_captionedClass = 'captionedImage';
1610 *
1611 * @cfg {String} [image2_captionedClass='image']
1612 * @member CKEDITOR.config
1613 */
1614CKEDITOR.config.image2_captionedClass = 'image';
1615
1616/**
1617 * Determines whether dimension inputs should be automatically filled when the image URL changes in the Enhanced Image
1618 * plugin dialog window.
1619 *
1620 * Read more in the [documentation](#!/guide/dev_captionedimage) and see the
1621 * [SDK sample](http://sdk.ckeditor.com/samples/captionedimage.html).
1622 *
1623 * config.image2_prefillDimensions = false;
1624 *
1625 * @since 4.5
1626 * @cfg {Boolean} [image2_prefillDimensions=true]
1627 * @member CKEDITOR.config
1628 */
1629
1630/**
1631 * Disables the image resizer. By default the resizer is enabled.
1632 *
1633 * Read more in the [documentation](#!/guide/dev_captionedimage) and see the
1634 * [SDK sample](http://sdk.ckeditor.com/samples/captionedimage.html).
1635 *
1636 * config.image2_disableResizer = true;
1637 *
1638 * @since 4.5
1639 * @cfg {Boolean} [image2_disableResizer=false]
1640 * @member CKEDITOR.config
1641 */
1642
1643/**
1644 * CSS classes applied to aligned images. Useful to take control over the way
1645 * the images are aligned, i.e. to customize output HTML and integrate external stylesheets.
1646 *
1647 * Classes should be defined in an array of three elements, containing left, center, and right
1648 * alignment classes, respectively. For example:
1649 *
1650 * config.image2_alignClasses = [ 'align-left', 'align-center', 'align-right' ];
1651 *
1652 * **Note**: Once this configuration option is set, the plugin will no longer produce inline
1653 * styles for alignment. It means that e.g. the following HTML will be produced:
1654 *
1655 * <img alt="My image" class="custom-center-class" src="foo.png" />
1656 *
1657 * instead of:
1658 *
1659 * <img alt="My image" style="float:left" src="foo.png" />
1660 *
1661 * **Note**: Once this configuration option is set, corresponding style definitions
1662 * must be supplied to the editor:
1663 *
1664 * * For [classic editor](#!/guide/dev_framed) it can be done by defining additional
1665 * styles in the {@link CKEDITOR.config#contentsCss stylesheets loaded by the editor}. The same
1666 * styles must be provided on the target page where the content will be loaded.
1667 * * For [inline editor](#!/guide/dev_inline) the styles can be defined directly
1668 * with `<style> ... <style>` or `<link href="..." rel="stylesheet">`, i.e. within the `<head>`
1669 * of the page.
1670 *
1671 * For example, considering the following configuration:
1672 *
1673 * config.image2_alignClasses = [ 'align-left', 'align-center', 'align-right' ];
1674 *
1675 * CSS rules can be defined as follows:
1676 *
1677 * .align-left {
1678 * float: left;
1679 * }
1680 *
1681 * .align-right {
1682 * float: right;
1683 * }
1684 *
1685 * .align-center {
1686 * text-align: center;
1687 * }
1688 *
1689 * .align-center > figure {
1690 * display: inline-block;
1691 * }
1692 *
1693 * Read more in the [documentation](#!/guide/dev_captionedimage) and see the
1694 * [SDK sample](http://sdk.ckeditor.com/samples/captionedimage.html).
1695 *
1696 * @since 4.4
1697 * @cfg {String[]} [image2_alignClasses=null]
1698 * @member CKEDITOR.config
1699 */
1700
1701/**
1702 * Determines whether alternative text is required for the captioned image.
1703 *
1704 * config.image2_altRequired = true;
1705 *
1706 * Read more in the [documentation](#!/guide/dev_captionedimage) and see the
1707 * [SDK sample](http://sdk.ckeditor.com/samples/captionedimage.html).
1708 *
1709 * @since 4.6.0
1710 * @cfg {Boolean} [image2_altRequired=false]
1711 * @member CKEDITOR.config
1712 */
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/samples/assets/image1.jpg b/app/assets/javascripts/ckeditor/plugins/image2/samples/assets/image1.jpg deleted file mode 100644 index ca491e3..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/samples/assets/image1.jpg +++ /dev/null
Binary files differ
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/samples/assets/image2.jpg b/app/assets/javascripts/ckeditor/plugins/image2/samples/assets/image2.jpg deleted file mode 100644 index 3dd6d61..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/samples/assets/image2.jpg +++ /dev/null
Binary files differ
diff --git a/app/assets/javascripts/ckeditor/plugins/image2/samples/image2.html b/app/assets/javascripts/ckeditor/plugins/image2/samples/image2.html deleted file mode 100644 index 9c3ef13..0000000 --- a/app/assets/javascripts/ckeditor/plugins/image2/samples/image2.html +++ /dev/null
@@ -1,68 +0,0 @@
1<!DOCTYPE html>
2<!--
3Copyright (c) 2003-2017, CKSource - Frederico Knabben. All rights reserved.
4For licensing, see LICENSE.md or http://ckeditor.com/license
5-->
6<html>
7<head>
8 <meta charset="utf-8">
9 <title>New Image plugin &mdash; CKEditor Sample</title>
10 <script src="../../../ckeditor.js"></script>
11 <script>
12 if ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 )
13 CKEDITOR.tools.enableHtml5Elements( document );
14 </script>
15 <link href="../../../samples/old/sample.css" rel="stylesheet">
16 <meta name="ckeditor-sample-name" content="New Image plugin">
17 <meta name="ckeditor-sample-group" content="Plugins">
18 <meta name="ckeditor-sample-description" content="Using the new Image plugin to insert captioned images and adjust their dimensions.">
19 <meta name="ckeditor-sample-isnew" content="1">
20</head>
21<body>
22 <h1 class="samples">
23 <a href="../../../samples/old/index.html">CKEditor Samples</a> &raquo; New Image plugin
24 </h1>
25 <div class="warning deprecated">
26 This sample is not maintained anymore. Check out its <a href="http://sdk.ckeditor.com/samples/captionedimage.html">brand new version in CKEditor SDK</a>.
27 </div>
28
29 <div class="description">
30 <p>
31 This editor is using the new <strong>Image</strong> (<code>image2</code>) plugin, which implements a dynamic <em>click-and-drag</em> resizing
32 and easy captioning of the images.
33 </p>
34 <p>
35 To use the new plugin, extend <code><a class="samples" href="http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-extraPlugins">config.extraPlugins</a></code>:
36 </p>
37<pre class="samples">
38CKEDITOR.replace( '<em>textarea_id</em>', {
39 <strong>extraPlugins: 'image2'</strong>
40} );
41</pre>
42 </div>
43
44 <textarea id="editor1" cols="10" rows="10">
45 &lt;h1&gt;Apollo 11&lt;/h1&gt;&lt;figure class=&quot;image&quot; style=&quot;float: right&quot;&gt;&lt;img alt=&quot;Saturn V&quot; src=&quot;assets/image1.jpg&quot; width=&quot;200&quot; /&gt;&lt;figcaption&gt;Roll out of Saturn V on launch pad&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;Apollo 11&lt;/strong&gt; was the spaceflight that landed the first humans, Americans &lt;a href=&quot;http://en.wikipedia.org/wiki/Neil_Armstrong&quot; title=&quot;Neil Armstrong&quot;&gt;Neil Armstrong&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Buzz_Aldrin&quot; title=&quot;Buzz Aldrin&quot;&gt;Buzz Aldrin&lt;/a&gt;, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.&lt;/p&gt;&lt;p&gt;Armstrong spent about &lt;s&gt;three and a half&lt;/s&gt; two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5&amp;nbsp;kg) of lunar material for return to Earth. A third member of the mission, &lt;a href=&quot;http://en.wikipedia.org/wiki/Michael_Collins_(astronaut)&quot; title=&quot;Michael Collins (astronaut)&quot;&gt;Michael Collins&lt;/a&gt;, piloted the &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_Command/Service_Module&quot; title=&quot;Apollo Command/Service Module&quot;&gt;command&lt;/a&gt; spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.&lt;/p&gt;&lt;h2&gt;Broadcasting and &lt;em&gt;quotes&lt;/em&gt; &lt;a id=&quot;quotes&quot; name=&quot;quotes&quot;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;One small step for [a] man, one giant leap for mankind.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Apollo 11 effectively ended the &lt;a href=&quot;http://en.wikipedia.org/wiki/Space_Race&quot; title=&quot;Space Race&quot;&gt;Space Race&lt;/a&gt; and fulfilled a national goal proposed in 1961 by the late U.S. President &lt;a href=&quot;http://en.wikipedia.org/wiki/John_F._Kennedy&quot; title=&quot;John F. Kennedy&quot;&gt;John F. Kennedy&lt;/a&gt; in a speech before the United States Congress:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.&lt;/p&gt;&lt;/blockquote&gt;&lt;figure class=&quot;image&quot; style=&quot;float: right&quot;&gt;&lt;img alt=&quot;The Eagle&quot; src=&quot;assets/image2.jpg&quot; style=&quot;width: 200px&quot; /&gt;&lt;figcaption&gt;The Eagle in lunar orbit&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2&gt;Technical details &lt;a id=&quot;tech-details&quot; name=&quot;tech-details&quot;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Launched by a &lt;strong&gt;Saturn V&lt;/strong&gt; rocket from &lt;a href=&quot;http://en.wikipedia.org/wiki/Kennedy_Space_Center&quot; title=&quot;Kennedy Space Center&quot;&gt;Kennedy Space Center&lt;/a&gt; in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of &lt;a href=&quot;http://en.wikipedia.org/wiki/NASA&quot; title=&quot;NASA&quot;&gt;NASA&lt;/a&gt;&amp;#39;s Apollo program. The Apollo spacecraft had three parts:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Command Module&lt;/strong&gt; with a cabin for the three astronauts which was the only part which landed back on Earth&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Service Module&lt;/strong&gt; which supported the Command Module with propulsion, electrical power, oxygen and water&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Lunar Module&lt;/strong&gt; for landing on the Moon.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;After being sent to the Moon by the Saturn V&amp;#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Mare_Tranquillitatis&quot; title=&quot;Mare Tranquillitatis&quot;&gt;Sea of Tranquility&lt;/a&gt;. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Pacific_Ocean&quot; title=&quot;Pacific Ocean&quot;&gt;Pacific Ocean&lt;/a&gt; on July 24.&lt;/p&gt;&lt;hr /&gt;&lt;p style=&quot;text-align:right&quot;&gt;&lt;small&gt;Source: &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_11&quot;&gt;Wikipedia.org&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;
46 </textarea>
47
48 <script>
49
50 CKEDITOR.replace( 'editor1', {
51 extraPlugins: 'image2',
52 height: 450
53 } );
54
55 </script>
56
57 <div id="footer">
58 <hr>
59 <p>
60 CKEditor - The text editor for the Internet - <a class="samples" href="http://ckeditor.com/">http://ckeditor.com</a>
61 </p>
62 <p id="copy">
63 Copyright &copy; 2003-2017, <a class="samples" href="http://cksource.com/">CKSource</a> - Frederico
64 Knabben. All rights reserved.
65 </p>
66 </div>
67</body>
68</html>