liquid_feedback_frontend

view static/wysihtml/wysihtml.all-commands.js @ 1800:b87997219042

Updated spanish translation
author bsw
date Thu Oct 21 15:22:29 2021 +0200 (2021-10-21)
parents 32cc544d5a5b
children
line source
1 wysihtml.commands.alignCenterStyle = (function() {
2 var nodeOptions = {
3 styleProperty: "textAlign",
4 styleValue: "center",
5 toggle: true
6 };
8 return {
9 exec: function(composer, command) {
10 return wysihtml.commands.formatBlock.exec(composer, "formatBlock", nodeOptions);
11 },
13 state: function(composer, command) {
14 return wysihtml.commands.formatBlock.state(composer, "formatBlock", nodeOptions);
15 }
16 };
17 })();
19 wysihtml.commands.alignJustifyStyle = (function() {
20 var nodeOptions = {
21 styleProperty: "textAlign",
22 styleValue: "justify",
23 toggle: true
24 };
26 return {
27 exec: function(composer, command) {
28 return wysihtml.commands.formatBlock.exec(composer, "formatBlock", nodeOptions);
29 },
31 state: function(composer, command) {
32 return wysihtml.commands.formatBlock.state(composer, "formatBlock", nodeOptions);
33 }
34 };
35 })();
37 wysihtml.commands.alignLeftStyle = (function() {
38 var nodeOptions = {
39 styleProperty: "textAlign",
40 styleValue: "left",
41 toggle: true
42 };
44 return {
45 exec: function(composer, command) {
46 return wysihtml.commands.formatBlock.exec(composer, "formatBlock", nodeOptions);
47 },
49 state: function(composer, command) {
50 return wysihtml.commands.formatBlock.state(composer, "formatBlock", nodeOptions);
51 }
52 };
53 })();
55 wysihtml.commands.alignRightStyle = (function() {
56 var nodeOptions = {
57 styleProperty: "textAlign",
58 styleValue: "right",
59 toggle: true
60 };
62 return {
63 exec: function(composer, command) {
64 return wysihtml.commands.formatBlock.exec(composer, "formatBlock", nodeOptions);
65 },
67 state: function(composer, command) {
68 return wysihtml.commands.formatBlock.state(composer, "formatBlock", nodeOptions);
69 }
70 };
71 })();
73 /* Sets text background color by inline styles */
74 wysihtml.commands.bgColorStyle = (function() {
75 return {
76 exec: function(composer, command, color) {
77 var colorVals = wysihtml.quirks.styleParser.parseColor("background-color:" + (color.color || color), "background-color"),
78 colString;
80 if (colorVals) {
81 colString = (colorVals[3] === 1 ? "rgb(" + [colorVals[0], colorVals[1], colorVals[2]].join(', ') : "rgba(" + colorVals.join(', ')) + ')';
82 wysihtml.commands.formatInline.exec(composer, command, {styleProperty: 'backgroundColor', styleValue: colString});
83 }
84 },
86 state: function(composer, command, color) {
87 var colorVals = color ? wysihtml.quirks.styleParser.parseColor("background-color:" + (color.color || color), "background-color") : null,
88 colString;
90 if (colorVals) {
91 colString = (colorVals[3] === 1 ? "rgb(" + [colorVals[0], colorVals[1], colorVals[2]].join(', ') : "rgba(" + colorVals.join(', ')) + ')';
92 }
94 return wysihtml.commands.formatInline.state(composer, command, {styleProperty: 'backgroundColor', styleValue: colString});
95 },
97 remove: function(composer, command) {
98 return wysihtml.commands.formatInline.remove(composer, command, {styleProperty: 'backgroundColor'});
99 },
101 stateValue: function(composer, command, props) {
102 var st = this.state(composer, command),
103 colorStr,
104 val = false;
106 if (st && wysihtml.lang.object(st).isArray()) {
107 st = st[0];
108 }
110 if (st) {
111 colorStr = st.getAttribute('style');
112 if (colorStr) {
113 val = wysihtml.quirks.styleParser.parseColor(colorStr, "background-color");
114 return wysihtml.quirks.styleParser.unparseColor(val, props);
115 }
116 }
117 return false;
118 }
119 };
120 })();
122 wysihtml.commands.bold = (function() {
123 var nodeOptions = {
124 nodeName: "B",
125 toggle: true
126 };
128 return {
129 exec: function(composer, command) {
130 wysihtml.commands.formatInline.exec(composer, command, nodeOptions);
131 },
133 state: function(composer, command) {
134 return wysihtml.commands.formatInline.state(composer, command, nodeOptions);
135 }
136 };
137 })();
139 /* Formats block for as a <pre><code class="classname"></code></pre> block
140 * Useful in conjuction for sytax highlight utility: highlight.js
141 *
142 * Usage:
143 *
144 * editorInstance.composer.commands.exec("formatCode", "language-html");
145 */
146 wysihtml.commands.formatCode = (function() {
147 return {
148 exec: function(composer, command, classname) {
149 var pre = this.state(composer)[0],
150 code, range, selectedNodes;
152 if (pre) {
153 // caret is already within a <pre><code>...</code></pre>
154 composer.selection.executeAndRestore(function() {
155 code = pre.querySelector("code");
156 wysihtml.dom.replaceWithChildNodes(pre);
157 if (code) {
158 wysihtml.dom.replaceWithChildNodes(code);
159 }
160 });
161 } else {
162 // Wrap in <pre><code>...</code></pre>
163 range = composer.selection.getRange();
164 selectedNodes = range.extractContents();
165 pre = composer.doc.createElement("pre");
166 code = composer.doc.createElement("code");
168 if (classname) {
169 code.className = classname;
170 }
172 pre.appendChild(code);
173 code.appendChild(selectedNodes);
174 range.insertNode(pre);
175 composer.selection.selectNode(pre);
176 }
177 },
179 state: function(composer) {
180 var selectedNode = composer.selection.getSelectedNode(), node;
181 if (selectedNode && selectedNode.nodeName && selectedNode.nodeName == "PRE"&&
182 selectedNode.firstChild && selectedNode.firstChild.nodeName && selectedNode.firstChild.nodeName == "CODE") {
183 return [selectedNode];
184 } else {
185 node = wysihtml.dom.getParentElement(selectedNode, { query: "pre code" });
186 return node ? [node.parentNode] : false;
187 }
188 }
189 };
190 })();
192 /**
193 * Inserts an <img>
194 * If selection is already an image link, it removes it
195 *
196 * @example
197 * // either ...
198 * wysihtml.commands.insertImage.exec(composer, "insertImage", "http://www.google.de/logo.jpg");
199 * // ... or ...
200 * wysihtml.commands.insertImage.exec(composer, "insertImage", { src: "http://www.google.de/logo.jpg", title: "foo" });
201 */
202 wysihtml.commands.insertImage = (function() {
203 var NODE_NAME = "IMG";
204 return {
205 exec: function(composer, command, value) {
206 value = typeof(value) === "object" ? value : { src: value };
208 var doc = composer.doc,
209 image = this.state(composer),
210 textNode,
211 parent;
213 // If image is selected and src ie empty, set the caret before it and delete the image
214 if (image && !value.src) {
215 composer.selection.setBefore(image);
216 parent = image.parentNode;
217 parent.removeChild(image);
219 // and it's parent <a> too if it hasn't got any other relevant child nodes
220 wysihtml.dom.removeEmptyTextNodes(parent);
221 if (parent.nodeName === "A" && !parent.firstChild) {
222 composer.selection.setAfter(parent);
223 parent.parentNode.removeChild(parent);
224 }
226 // firefox and ie sometimes don't remove the image handles, even though the image got removed
227 wysihtml.quirks.redraw(composer.element);
228 return;
229 }
231 // If image selected change attributes accordingly
232 if (image) {
233 for (var key in value) {
234 if (value.hasOwnProperty(key)) {
235 image.setAttribute(key === "className" ? "class" : key, value[key]);
236 }
237 }
238 return;
239 }
241 // Otherwise lets create the image
242 image = doc.createElement(NODE_NAME);
244 for (var i in value) {
245 image.setAttribute(i === "className" ? "class" : i, value[i]);
246 }
248 composer.selection.insertNode(image);
249 if (wysihtml.browser.hasProblemsSettingCaretAfterImg()) {
250 textNode = doc.createTextNode(wysihtml.INVISIBLE_SPACE);
251 composer.selection.insertNode(textNode);
252 composer.selection.setAfter(textNode);
253 } else {
254 composer.selection.setAfter(image);
255 }
256 },
258 state: function(composer) {
259 var doc = composer.doc,
260 selectedNode,
261 text,
262 imagesInSelection;
264 if (!wysihtml.dom.hasElementWithTagName(doc, NODE_NAME)) {
265 return false;
266 }
268 selectedNode = composer.selection.getSelectedNode();
269 if (!selectedNode) {
270 return false;
271 }
273 if (selectedNode.nodeName === NODE_NAME) {
274 // This works perfectly in IE
275 return selectedNode;
276 }
278 if (selectedNode.nodeType !== wysihtml.ELEMENT_NODE) {
279 return false;
280 }
282 text = composer.selection.getText();
283 text = wysihtml.lang.string(text).trim();
284 if (text) {
285 return false;
286 }
288 imagesInSelection = composer.selection.getNodes(wysihtml.ELEMENT_NODE, function(node) {
289 return node.nodeName === "IMG";
290 });
292 if (imagesInSelection.length !== 1) {
293 return false;
294 }
296 return imagesInSelection[0];
297 }
298 };
299 })();
301 wysihtml.commands.fontSize = (function() {
302 var REG_EXP = /wysiwyg-font-size-[0-9a-z\-]+/g;
304 return {
305 exec: function(composer, command, size) {
306 wysihtml.commands.formatInline.exec(composer, command, {className: "wysiwyg-font-size-" + size, classRegExp: REG_EXP, toggle: true});
307 },
309 state: function(composer, command, size) {
310 return wysihtml.commands.formatInline.state(composer, command, {className: "wysiwyg-font-size-" + size});
311 }
312 };
313 })();
315 /* Set font size by inline style */
316 wysihtml.commands.fontSizeStyle = (function() {
317 return {
318 exec: function(composer, command, size) {
319 size = size.size || size;
320 if (!(/^\s*$/).test(size)) {
321 wysihtml.commands.formatInline.exec(composer, command, {styleProperty: "fontSize", styleValue: size, toggle: false});
322 }
323 },
325 state: function(composer, command, size) {
326 return wysihtml.commands.formatInline.state(composer, command, {styleProperty: "fontSize", styleValue: size || undefined});
327 },
329 remove: function(composer, command) {
330 return wysihtml.commands.formatInline.remove(composer, command, {styleProperty: "fontSize"});
331 },
333 stateValue: function(composer, command) {
334 var styleStr,
335 st = this.state(composer, command);
337 if (st && wysihtml.lang.object(st).isArray()) {
338 st = st[0];
339 }
340 if (st) {
341 styleStr = st.getAttribute("style");
342 if (styleStr) {
343 return wysihtml.quirks.styleParser.parseFontSize(styleStr);
344 }
345 }
346 return false;
347 }
348 };
349 })();
351 wysihtml.commands.foreColor = (function() {
352 var REG_EXP = /wysiwyg-color-[0-9a-z]+/g;
354 return {
355 exec: function(composer, command, color) {
356 wysihtml.commands.formatInline.exec(composer, command, {className: "wysiwyg-color-" + color, classRegExp: REG_EXP, toggle: true});
357 },
359 state: function(composer, command, color) {
360 return wysihtml.commands.formatInline.state(composer, command, {className: "wysiwyg-color-" + color});
361 }
362 };
363 })();
365 /* Sets text color by inline styles */
366 wysihtml.commands.foreColorStyle = (function() {
367 return {
368 exec: function(composer, command, color) {
369 var colorVals, colString;
371 if (!color) { return; }
373 colorVals = wysihtml.quirks.styleParser.parseColor("color:" + (color.color || color), "color");
375 if (colorVals) {
376 colString = (colorVals[3] === 1 ? "rgb(" + [colorVals[0], colorVals[1], colorVals[2]].join(", ") : "rgba(" + colorVals.join(', ')) + ')';
377 wysihtml.commands.formatInline.exec(composer, command, {styleProperty: "color", styleValue: colString});
378 }
379 },
381 state: function(composer, command, color) {
382 var colorVals = color ? wysihtml.quirks.styleParser.parseColor("color:" + (color.color || color), "color") : null,
383 colString;
386 if (colorVals) {
387 colString = (colorVals[3] === 1 ? "rgb(" + [colorVals[0], colorVals[1], colorVals[2]].join(", ") : "rgba(" + colorVals.join(', ')) + ')';
388 }
390 return wysihtml.commands.formatInline.state(composer, command, {styleProperty: "color", styleValue: colString});
391 },
393 remove: function(composer, command) {
394 return wysihtml.commands.formatInline.remove(composer, command, {styleProperty: "color"});
395 },
397 stateValue: function(composer, command, props) {
398 var st = this.state(composer, command),
399 colorStr,
400 val = false;
402 if (st && wysihtml.lang.object(st).isArray()) {
403 st = st[0];
404 }
406 if (st) {
407 colorStr = st.getAttribute("style");
408 if (colorStr) {
409 val = wysihtml.quirks.styleParser.parseColor(colorStr, "color");
410 return wysihtml.quirks.styleParser.unparseColor(val, props);
411 }
412 }
413 return false;
414 }
415 };
416 })();
418 wysihtml.commands.insertBlockQuote = (function() {
419 var nodeOptions = {
420 nodeName: "BLOCKQUOTE",
421 toggle: true
422 };
424 return {
425 exec: function(composer, command) {
426 return wysihtml.commands.formatBlock.exec(composer, "formatBlock", nodeOptions);
427 },
429 state: function(composer, command) {
430 return wysihtml.commands.formatBlock.state(composer, "formatBlock", nodeOptions);
431 }
432 };
433 })();
435 wysihtml.commands.insertHorizontalRule = (function() {
436 return {
437 exec: function(composer) {
438 var node = composer.selection.getSelectedNode(),
439 phrasingOnlyParent = wysihtml.dom.getParentElement(node, { query: wysihtml.PERMITTED_PHRASING_CONTENT_ONLY }, null, composer.editableArea),
440 elem = document.createElement('hr'),
441 range, idx;
443 // HR is not allowed into some elements (where only phrasing content is allowed)
444 // thus the HR insertion must break out of those https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories
445 if (phrasingOnlyParent) {
446 composer.selection.splitElementAtCaret(phrasingOnlyParent, elem);
447 } else {
448 composer.selection.insertNode(elem);
449 }
451 if (elem.nextSibling) {
452 composer.selection.setBefore(elem.nextSibling);
453 } else {
454 composer.selection.setAfter(elem);
455 }
456 },
457 state: function() {
458 return false; // :(
459 }
460 };
461 })();
463 wysihtml.commands.insertOrderedList = (function() {
464 return {
465 exec: function(composer, command) {
466 wysihtml.commands.insertList.exec(composer, command, "OL");
467 },
469 state: function(composer, command) {
470 return wysihtml.commands.insertList.state(composer, command, "OL");
471 }
472 };
473 })();
475 wysihtml.commands.insertUnorderedList = (function() {
476 return {
477 exec: function(composer, command) {
478 wysihtml.commands.insertList.exec(composer, command, "UL");
479 },
481 state: function(composer, command) {
482 return wysihtml.commands.insertList.state(composer, command, "UL");
483 }
484 };
485 })();
487 wysihtml.commands.italic = (function() {
488 var nodeOptions = {
489 nodeName: "I",
490 toggle: true
491 };
493 return {
494 exec: function(composer, command) {
495 wysihtml.commands.formatInline.exec(composer, command, nodeOptions);
496 },
498 state: function(composer, command) {
499 return wysihtml.commands.formatInline.state(composer, command, nodeOptions);
500 }
501 };
503 })();
505 wysihtml.commands.justifyCenter = (function() {
506 var nodeOptions = {
507 className: "wysiwyg-text-align-center",
508 classRegExp: /wysiwyg-text-align-[0-9a-z]+/g,
509 toggle: true
510 };
512 return {
513 exec: function(composer, command) {
514 return wysihtml.commands.formatBlock.exec(composer, "formatBlock", nodeOptions);
515 },
517 state: function(composer, command) {
518 return wysihtml.commands.formatBlock.state(composer, "formatBlock", nodeOptions);
519 }
520 };
522 })();
524 wysihtml.commands.justifyFull = (function() {
525 var nodeOptions = {
526 className: "wysiwyg-text-align-justify",
527 classRegExp: /wysiwyg-text-align-[0-9a-z]+/g,
528 toggle: true
529 };
531 return {
532 exec: function(composer, command) {
533 return wysihtml.commands.formatBlock.exec(composer, "formatBlock", nodeOptions);
534 },
536 state: function(composer, command) {
537 return wysihtml.commands.formatBlock.state(composer, "formatBlock", nodeOptions);
538 }
539 };
540 })();
542 wysihtml.commands.justifyLeft = (function() {
543 var nodeOptions = {
544 className: "wysiwyg-text-align-left",
545 classRegExp: /wysiwyg-text-align-[0-9a-z]+/g,
546 toggle: true
547 };
549 return {
550 exec: function(composer, command) {
551 return wysihtml.commands.formatBlock.exec(composer, "formatBlock", nodeOptions);
552 },
554 state: function(composer, command) {
555 return wysihtml.commands.formatBlock.state(composer, "formatBlock", nodeOptions);
556 }
557 };
558 })();
560 wysihtml.commands.justifyRight = (function() {
561 var nodeOptions = {
562 className: "wysiwyg-text-align-right",
563 classRegExp: /wysiwyg-text-align-[0-9a-z]+/g,
564 toggle: true
565 };
567 return {
568 exec: function(composer, command) {
569 return wysihtml.commands.formatBlock.exec(composer, "formatBlock", nodeOptions);
570 },
572 state: function(composer, command) {
573 return wysihtml.commands.formatBlock.state(composer, "formatBlock", nodeOptions);
574 }
575 };
576 })();
578 wysihtml.commands.subscript = (function() {
579 var nodeOptions = {
580 nodeName: "SUB",
581 toggle: true
582 };
584 return {
585 exec: function(composer, command) {
586 wysihtml.commands.formatInline.exec(composer, command, nodeOptions);
587 },
589 state: function(composer, command) {
590 return wysihtml.commands.formatInline.state(composer, command, nodeOptions);
591 }
592 };
594 })();
596 wysihtml.commands.superscript = (function() {
597 var nodeOptions = {
598 nodeName: "SUP",
599 toggle: true
600 };
602 return {
603 exec: function(composer, command) {
604 wysihtml.commands.formatInline.exec(composer, command, nodeOptions);
605 },
607 state: function(composer, command) {
608 return wysihtml.commands.formatInline.state(composer, command, nodeOptions);
609 }
610 };
612 })();
614 wysihtml.commands.underline = (function() {
615 var nodeOptions = {
616 nodeName: "U",
617 toggle: true
618 };
620 return {
621 exec: function(composer, command) {
622 wysihtml.commands.formatInline.exec(composer, command, nodeOptions);
623 },
625 state: function(composer, command) {
626 return wysihtml.commands.formatInline.state(composer, command, nodeOptions);
627 }
628 };
630 })();

Impressum / About Us