diff --git a/lam/templates/lib/extra/ckeditor/CHANGES.md b/lam/templates/lib/extra/ckeditor/CHANGES.md index 39b3b37f..bbae6185 100644 --- a/lam/templates/lib/extra/ckeditor/CHANGES.md +++ b/lam/templates/lib/extra/ckeditor/CHANGES.md @@ -1,248 +1,1274 @@ -CKEditor 4 Changelog +CKEditor 4 Changelog ==================== +## CKEditor 4.9.2 + +**Security Updates:** + +* Fixed XSS vulnerability in the [Enhanced Image](https://ckeditor.com/cke4/addon/image2) (`image2`) plugin reported by [Kyaw Min Thein](https://twitter.com/kyawminthein99). + + Issue summary: It was possible to execute XSS inside CKEditor using the `` tag and specially crafted HTML. Please note that the default presets (Basic/Standard/Full) do not include this plugin, so you are only at risk if you made a custom build and enabled this plugin. + +## CKEditor 4.9.1 + +Fixed Issues: + +* [#1835](https://github.com/ckeditor/ckeditor-dev/issues/1835): Fixed: Integration between [CKFinder](https://ckeditor.com/ckeditor-4/ckfinder/) and the [File Browser](https://ckeditor.com/cke4/addon/filebrowser) plugin does not work. + +## CKEditor 4.9 + +New Features: + +* [#932](https://github.com/ckeditor/ckeditor-dev/issues/932): Introduced Easy Image feature for inserting images that are automatically rescaled, optimized, responsive and delivered through a blazing-fast CDN. Three new plugins were added to support it: + * [Easy Image](https://ckeditor.com/cke4/addon/easyimage), + * [Cloud Services](https://ckeditor.com/cke4/addon/cloudservices) + * [Image Base](https://ckeditor.com/cke4/addon/imagebase) +* [#1338](https://github.com/ckeditor/ckeditor-dev/issues/1338): Keystroke labels are displayed for function keys (like F7, F8). +* [#643](https://github.com/ckeditor/ckeditor-dev/issues/643): The [File Browser](https://ckeditor.com/cke4/addon/filebrowser) plugin can now upload files using XHR requests. This allows for setting custom HTTP headers using the [`config.fileTools_requestHeaders`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.config-cfg-fileTools_requestHeaders) configuration option. +* [#1365](https://github.com/ckeditor/ckeditor-dev/issues/1365): The [File Browser](https://ckeditor.com/cke4/addon/filebrowser) plugin uses XHR requests by default. +* [#1399](https://github.com/ckeditor/ckeditor-dev/issues/1399): Added the possibility to set [`CKEDITOR.config.startupFocus`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.config-cfg-startupFocus) as `start` or `end` to specify where the editor focus should be after the initialization. +* [#1441](https://github.com/ckeditor/ckeditor-dev/issues/1441): The [Magic Line](https://ckeditor.com/cke4/addon/magicline) plugin line element can now be identified by the `data-cke-magic-line="1"` attribute. + +Fixed Issues: + +* [#595](https://github.com/ckeditor/ckeditor-dev/issues/595): Fixed: Pasting does not work on mobile devices. +* [#869](https://github.com/ckeditor/ckeditor-dev/issues/869): Fixed: Empty selection clears cached clipboard data in the editor. +* [#1419](https://github.com/ckeditor/ckeditor-dev/issues/1419): Fixed: The [Widget Selection](https://ckeditor.com/cke4/addon/widgetselection) plugin selects the editor content with the Alt+A key combination on Windows. +* [#1274](https://github.com/ckeditor/ckeditor-dev/issues/1274): Fixed: [Balloon Toolbar](https://ckeditor.com/cke4/addon/balloontoolbar) does not match a single selected image using the [`contextDefinition.cssSelector`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.plugins.balloontoolbar.contextDefinition-property-cssSelector) matcher. +* [#1232](https://github.com/ckeditor/ckeditor-dev/issues/1232): Fixed: [Balloon Toolbar](https://ckeditor.com/cke4/addon/balloontoolbar) buttons should be registered as focusable elements. +* [#1342](https://github.com/ckeditor/ckeditor-dev/issues/1342): Fixed: [Balloon Toolbar](https://ckeditor.com/cke4/addon/balloontoolbar) should be re-positioned after the [`change`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.editor-event-change) event. +* [#1426](https://github.com/ckeditor/ckeditor-dev/issues/1426): [IE8-9] Fixed: Missing [Balloon Toolbar](https://ckeditor.com/cke4/addon/balloontoolbar) background in the [Kama](https://ckeditor.com/cke4/addon/kama) skin. Thanks to [Christian Elmer](https://github.com/keinkurt)! +* [#1470](https://github.com/ckeditor/ckeditor-dev/issues/1470): Fixed: [Balloon Toolbar](https://ckeditor.com/cke4/addon/balloontoolbar) is not visible after drag and drop of a widget it is attached to. +* [#1048](https://github.com/ckeditor/ckeditor-dev/issues/1048): Fixed: [Balloon Panel](https://ckeditor.com/cke4/addon/balloonpanel) is not positioned properly when a margin is added to its non-static parent. +* [#889](https://github.com/ckeditor/ckeditor-dev/issues/889): Fixed: Unclear error message for width and height fields in the [Image](https://ckeditor.com/cke4/addon/image) and [Enhanced Image](https://ckeditor.com/cke4/addon/image2) plugins. +* [#859](https://github.com/ckeditor/ckeditor-dev/issues/859): Fixed: Cannot edit a link after a double-click on the text in the link. +* [#1013](https://github.com/ckeditor/ckeditor-dev/issues/1013): Fixed: [Paste from Word](https://ckeditor.com/cke4/addon/pastefromword) does not work correctly with the [`config.forcePasteAsPlainText`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.config-cfg-forcePasteAsPlainText) option. +* [#1356](https://github.com/ckeditor/ckeditor-dev/issues/1356): Fixed: [Border parse function](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.tools.style.parse-method-border) does not allow spaces in the color value. +* [#1010](https://github.com/ckeditor/ckeditor-dev/issues/1010): Fixed: The CSS `border` shorthand property was incorrectly expanded ignoring the `border-color` style. +* [#1535](https://github.com/ckeditor/ckeditor-dev/issues/1535): Fixed: [Widget](https://ckeditor.com/cke4/addon/widget) mouseover border contrast is insufficient. +* [#1516](https://github.com/ckeditor/ckeditor-dev/issues/1516): Fixed: Fake selection allows removing content in read-only mode using the Backspace and Delete keys. +* [#1570](https://github.com/ckeditor/ckeditor-dev/issues/1570): Fixed: Fake selection allows cutting content in read-only mode using the Ctrl/Cmd + X keys. +* [#1363](https://github.com/ckeditor/ckeditor-dev/issues/1363): Fixed: Paste notification is unclear and it might confuse users. + +API Changes: + +* [#1346](https://github.com/ckeditor/ckeditor-dev/issues/1346): [Balloon Toolbar](https://ckeditor.com/cke4/addon/balloontoolbar) [context manager API](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.plugins.balloontoolbar.contextManager) is now available in the [`pluginDefinition.init`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.pluginDefinition-method-init) method of the [requiring](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.pluginDefinition-property-requires) plugin. +* [#1530](https://github.com/ckeditor/ckeditor-dev/issues/1530): Added the possibility to use custom icons for [buttons](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR_ui_button.html). + +Other Changes: + +* Updated [SCAYT](https://ckeditor.com/cke4/addon/scayt) (Spell Check As You Type) and [WebSpellChecker](https://ckeditor.com/cke4/addon/wsc) (WSC) plugins: + * SCAYT [`scayt_minWordLength`](https://docs.ckeditor.com/ckeditor4/latest/api/CKEDITOR_config.html#scayt_minWordLength) configuration option now defaults to 3 instead of 4. + * SCAYT default number of suggested words in the context menu changed to 3. + * [#90](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/90): Fixed: Selection is lost on link creation if SCAYT highlights the word. + * Fixed: SCAYT crashes when the browser `localStorage` is disabled. + * [IE11] Fixed: `Unable to get property type of undefined or null reference` error in the browser console when SCAYT is disabled/enabled. + * [#46](https://github.com/WebSpellChecker/ckeditor-plugin-wsc/issues/46): Fixed: Editing is blocked when remote spell checker server is offline. + * Fixed: User Dictionary cannot be created in WSC due to `You already have the dictionary` error. + * Fixed: Words with apostrophe `'` on the replacement make the WSC dialog inaccessible. + * Fixed: SCAYT/WSC causes the `Uncaught TypeError` error in the browser console. +* [#1337](https://github.com/ckeditor/ckeditor-dev/issues/1337): Updated the samples layout with the new CKEditor 4 logo and color scheme. +* [#1591](https://github.com/ckeditor/ckeditor-dev/issues/1591): CKBuilder and language tools are now downloaded over HTTPS. Thanks to [August Detlefsen](https://github.com/augustd)! + +## CKEditor 4.8 + +**Important Notes:** + +* [#1249](https://github.com/ckeditor/ckeditor-dev/issues/1249): Enabled the [Upload Image](https://ckeditor.com/cke4/addon/uploadimage) plugin by default in standard and full presets. Also, it will no longer log an error in case of missing [`config.imageUploadUrl`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.config-cfg-imageUploadUrl) property. + +New Features: + +* [#933](https://github.com/ckeditor/ckeditor-dev/issues/933): Introduced [Balloon Toolbar](https://ckeditor.com/cke4/addon/balloontoolbar) plugin. +* [#662](https://github.com/ckeditor/ckeditor-dev/issues/662): Introduced image inlining for the [Paste from Word](https://ckeditor.com/cke4/addon/pastefromword) plugin. +* [#468](https://github.com/ckeditor/ckeditor-dev/issues/468): [Edge] Introduced support for the Clipboard API. +* [#607](https://github.com/ckeditor/ckeditor-dev/issues/607): Manually inserted Hex color is prefixed with a hash character (`#`) if needed. It ensures a valid Hex color value is used when setting the table cell border or background color with the [Color Dialog](https://ckeditor.com/cke4/addon/colordialog) window. +* [#584](https://github.com/ckeditor/ckeditor-dev/issues/584): [Font size and Family](https://ckeditor.com/cke4/addon/font) and [Format](https://ckeditor.com/cke4/addon/format) drop-downs are not toggleable anymore. Default option to reset styles added. +* [#856](https://github.com/ckeditor/ckeditor-dev/issues/856): Introduced the [`CKEDITOR.tools.keystrokeToArray`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.tools-method-keystrokeToArray) method. It converts a keystroke into its string representation, returning every key name as a separate array element. +* [#1053](https://github.com/ckeditor/ckeditor-dev/issues/1053): Introduced the [`CKEDITOR.tools.object.merge`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.tools.object-method-merge) method. It allows to merge two objects, returning the new object with all properties from both objects deeply cloned. +* [#1073](https://github.com/ckeditor/ckeditor-dev/issues/1073): Introduced the [`CKEDITOR.tools.array.every`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.tools.array-method-every) method. It invokes a given test function on every array element and returns `true` if all elements pass the test. + +Fixed Issues: + +* [#796](https://github.com/ckeditor/ckeditor-dev/issues/796): Fixed: A list is pasted from OneNote in the reversed order. +* [#834](https://github.com/ckeditor/ckeditor-dev/issues/834): [IE9-11] Fixed: The editor does not save the selected state of radio buttons inserted by the [Form Elements](https://ckeditor.com/cke4/addon/forms) plugin. +* [#704](https://github.com/ckeditor/ckeditor-dev/issues/704): [Edge] Fixed: Using Ctrl/Cmd + Z breaks widget structure. +* [#591](https://github.com/ckeditor/ckeditor-dev/issues/591): Fixed: A column is inserted in a wrong order inside the table if any cell has a vertical split. +* [#787](https://github.com/ckeditor/ckeditor-dev/issues/787): Fixed: Using Cut inside a nested table does not cut the selected content. +* [#842](https://github.com/ckeditor/ckeditor-dev/issues/842): Fixed: List style not restored when toggling list indent level in the [Indent List](https://ckeditor.com/cke4/addon/indentlist) plugin. +* [#711](https://github.com/ckeditor/ckeditor-dev/issues/711): Fixed: Dragging widgets should only work with the left mouse button. +* [#862](https://github.com/ckeditor/ckeditor-dev/issues/862): Fixed: The "Object Styles" group in the [Styles Combo](https://ckeditor.com/cke4/addon/stylescombo) plugin is visible only if the whole element is selected. +* [#994](https://github.com/ckeditor/ckeditor-dev/pull/994): Fixed: Typo in the [`CKEDITOR.focusManager.focus`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.focusManager-method-focus) API documentation. Thanks to [benjy](https://github.com/benjy)! +* [#1014](https://github.com/ckeditor/ckeditor-dev/issues/1014): Fixed: The [Table Tools](https://ckeditor.com/cke4/addon/tabletools) Cell Properties dialog is now [Advanced Content Filter](https://docs.ckeditor.com/ckeditor4/docs/#!/guide/dev_acf) aware — it is not possible to change the cell width or height if corresponding styles are disabled. +* [#877](https://github.com/ckeditor/ckeditor-dev/issues/877): Fixed: A list with custom bullets with exotic characters crashes the editor when [pasted from Word](https://ckeditor.com/cke4/addon/pastefromword). +* [#605](https://github.com/ckeditor/ckeditor-dev/issues/605): Fixed: Inline widgets do not preserve trailing spaces. +* [#1008](https://github.com/ckeditor/ckeditor-dev/issues/1008): Fixed: Shorthand Hex colors from the [`config.colorButton_colors`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.config-cfg-colorButton_colors) option are not correctly highlighted in the [Color Button](https://ckeditor.com/cke4/addon/colorbutton) Text Color or Background Color panel. +* [#1094](https://github.com/ckeditor/ckeditor-dev/issues/1094): Fixed: Widget definition [`upcast`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.plugins.widget.definition-property-upcasts) methods are called for every element. +* [#1057](https://github.com/ckeditor/ckeditor-dev/issues/1057): Fixed: The [Notification](https://ckeditor.com/addon/notification) plugin overwrites Web Notifications API due to leakage to the global scope. +* [#1068](https://github.com/ckeditor/ckeditor-dev/issues/1068): Fixed: Upload widget paste listener ignores changes to the [`uploadWidgetDefinition`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.fileTools.uploadWidgetDefinition). +* [#921](https://github.com/ckeditor/ckeditor-dev/issues/921): Fixed: [Edge] CKEditor erroneously perceives internal copy and paste as type "external". +* [#1213](https://github.com/ckeditor/ckeditor-dev/issues/1213): Fixed: Multiple images uploaded using [Upload Image](https://ckeditor.com/cke4/addon/uploadimage) plugin are randomly duplicated or mangled. +* [#532](https://github.com/ckeditor/ckeditor-dev/issues/532): Fixed: Removed an outdated user guide link from the [About](https://ckeditor.com/cke4/addon/about) dialog. +* [#1221](https://github.com/ckeditor/ckeditor-dev/issues/1221): Fixed: Invalid CSS loaded by [Balloon Panel](https://ckeditor.com/cke4/addon/balloonpanel) plugin when [`config.skin`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.config-cfg-skin) is loaded using a custom path. +* [#522](https://github.com/ckeditor/ckeditor-dev/issues/522): Fixed: Widget selection is not removed when widget is inside table cell with [Table Selection](https://ckeditor.com/cke4/addon/tableselection) plugin enabled. +* [#1027](https://github.com/ckeditor/ckeditor-dev/issues/1027): Fixed: Cannot add multiple images to the table with [Table Selection](https://ckeditor.com/cke4/addon/tableselection) plugin in certain situations. +* [#1069](https://github.com/ckeditor/ckeditor-dev/issues/1069): Fixed: Wrong shape processing by [Paste from Word](https://ckeditor.com/cke4/addon/pastefromword) plugin. +* [#995](https://github.com/ckeditor/ckeditor-dev/issues/995): Fixed: Hyperlinked image gets inserted twice by [Paste from Word](https://ckeditor.com/cke4/addon/pastefromword) plugin. +* [#1287](https://github.com/ckeditor/ckeditor-dev/issues/1287): Fixed: [Widget](https://ckeditor.com/cke4/addon/widget) plugin throws exception if included in editor build but not loaded into editor's instance. + +API Changes: + +* [#1097](https://github.com/ckeditor/ckeditor-dev/issues/1097): Widget [`upcast`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.plugins.widget.definition-property-upcast) methods are now called in the [widget definition's](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.plugins.widget-property-definition) context. +* [#1118](https://github.com/ckeditor/ckeditor-dev/issues/1118): Added the `show` option in the [`balloonPanel.attach`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.ui.balloonPanel-method-attach) method, allowing to attach a hidden [Balloon Panel](https://ckeditor.com/cke4/addon/balloonpanel) instance. +* [#1145](https://github.com/ckeditor/ckeditor-dev/issues/1145): Added the [`skipNotifications`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.fileTools.uploadWidgetDefinition-property-skipNotifications) option to the [`CKEDITOR.fileTools.uploadWidgetDefinition`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.fileTools.uploadWidgetDefinition), allowing to switch off default notifications displayed by upload widgets. + +Other Changes: + +* [#815](https://github.com/ckeditor/ckeditor-dev/issues/815): Removed Node.js dependency from the CKEditor build script. +* [#1041](https://github.com/ckeditor/ckeditor-dev/pull/1041), [#1131](https://github.com/ckeditor/ckeditor-dev/issues/1131): Updated URLs pointing to [CKSource](https://cksource.com/) and [CKEditor](https://ckeditor.com/) resources after the launch of new websites. + +## CKEditor 4.7.3 + +New Features: + +* [#568](https://github.com/ckeditor/ckeditor-dev/issues/568): Added possibility to adjust nested editables' filters using the [`CKEDITOR.filter.disallowedContent`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.filter-property-disallowedContent) property. + +Fixed Issues: + +* [#554](https://github.com/ckeditor/ckeditor-dev/issues/554): Fixed: [`change`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.editor-event-change) event not fired when typing the first character after pasting into the editor. Thanks to [Daniel Miller](https://github.com/millerdev)! +* [#566](https://github.com/ckeditor/ckeditor-dev/issues/566): Fixed: The CSS `border` shorthand property with zero width (`border: 0px solid #000;`) causes the table to have the border attribute set to 1. +* [#779](https://github.com/ckeditor/ckeditor-dev/issues/779): Fixed: The [Remove Format](https://ckeditor.com/cke4/addon/removeformat) plugin removes elements with language definition inserted by the [Language](https://ckeditor.com/cke4/addon/language) plugin. +* [#423](https://github.com/ckeditor/ckeditor-dev/issues/423): Fixed: The [Paste from Word](https://ckeditor.com/cke4/addon/pastefromword) plugin pastes paragraphs into the editor even if [`CKEDITOR.config.enterMode`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.config-cfg-enterMode) is set to `CKEDITOR.ENTER_BR`. +* [#719](https://github.com/ckeditor/ckeditor-dev/issues/719): Fixed: Image inserted using the [Enhanced Image](https://ckeditor.com/cke4/addon/image2) plugin can be resized when the editor is in [read-only mode](https://docs.ckeditor.com/ckeditor4/docs/#!/guide/dev_readonly). +* [#577](https://github.com/ckeditor/ckeditor-dev/issues/577): Fixed: The "Delete Columns" command provided by the [Table Tools](https://ckeditor.com/cke4/addon/tabletools) plugin throws an error when trying to delete columns. +* [#867](https://github.com/ckeditor/ckeditor-dev/issues/867): Fixed: Typing into a selected table throws an error. +* [#817](https://github.com/ckeditor/ckeditor-dev/issues/817): Fixed: The [Save](https://ckeditor.com/cke4/addon/save) plugin does not work in [Source Mode](https://ckeditor.com/cke4/addon/sourcearea). + +Other Changes: + +* Updated the [WebSpellChecker](https://ckeditor.com/cke4/addon/wsc) plugin: + * [#40](https://github.com/WebSpellChecker/ckeditor-plugin-wsc/issues/40): Fixed: IE10 throws an error when spell checking is started. +* [#800](https://github.com/ckeditor/ckeditor-dev/issues/800): Added the [`CKEDITOR.dom.selection.isCollapsed`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.dom.selection-method-isCollapsed) method which is a simpler way to check if the selection is collapsed. +* [#830](https://github.com/ckeditor/ckeditor-dev/issues/830): Added an option to define which dialog tab should be shown by default when creating [`CKEDITOR.dialogCommand`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.dialogCommand). + +## CKEditor 4.7.2 + +New Features: + +* [#455](https://github.com/ckeditor/ckeditor-dev/issues/455): Added [Advanced Content Filter](https://docs.ckeditor.com/ckeditor4/docs/#!/guide/dev_acf) integration with the [Justify](https://ckeditor.com/cke4/addon/justify) plugin. + +Fixed Issues: + +* [#663](https://github.com/ckeditor/ckeditor-dev/issues/663): [Chrome] Fixed: Clicking the scrollbar throws an `Uncaught TypeError: element.is is not a function` error. +* [#694](https://github.com/ckeditor/ckeditor-dev/pull/694): Refactoring in the [Table Selection](https://ckeditor.com/cke4/addon/tableselection) plugin: + * [#520](https://github.com/ckeditor/ckeditor-dev/issues/520): Fixed: Widgets cannot be properly pasted into a table cell. + * [#460](https://github.com/ckeditor/ckeditor-dev/issues/460): Fixed: Editor gone after pasting into an editor within a table. +* [#579](https://github.com/ckeditor/ckeditor-dev/issues/579): Fixed: Internal `cke_table-faked-selection-table` class is visible in the Stylesheet Classes field of the [Table Properties](https://ckeditor.com/cke4/addon/table) dialog. +* [#545](https://github.com/ckeditor/ckeditor-dev/issues/545): [Edge] Fixed: Error thrown when pressing the [Select All](https://ckeditor.com/cke4/addon/selectall) button in [Source Mode](https://ckeditor.com/cke4/addon/sourcearea). +* [#582](https://github.com/ckeditor/ckeditor-dev/issues/582): Fixed: Double slash in the path to stylesheet needed by the [Table Selection](https://ckeditor.com/cke4/addon/tableselection) plugin. Thanks to [Marius Dumitru Florea](https://github.com/mflorea)! +* [#491](https://github.com/ckeditor/ckeditor-dev/issues/491): Fixed: Unnecessary dependency on the [Editor Toolbar](https://ckeditor.com/cke4/addon/toolbar) plugin inside the [Notification](https://ckeditor.com/cke4/addon/notification) plugin. +* [#646](https://github.com/ckeditor/ckeditor-dev/issues/646): Fixed: Error thrown into the browser console after opening the [Styles Combo](https://ckeditor.com/cke4/addon/stylescombo) plugin menu in the editor without any selection. +* [#501](https://github.com/ckeditor/ckeditor-dev/issues/501): Fixed: Double click does not open the dialog for modifying anchors inserted via the [Link](https://ckeditor.com/cke4/addon/link) plugin. +* [#9780](https://dev.ckeditor.com/ticket/9780): [IE8-9] Fixed: Clicking inside an empty [read-only](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.editor-property-readOnly) editor throws an error. +* [#16820](https://dev.ckeditor.com/ticket/16820): [IE10] Fixed: Clicking below a single horizontal rule throws an error. +* [#426](https://github.com/ckeditor/ckeditor-dev/issues/426): Fixed: The [`range.cloneContents`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.dom.range-method-cloneContents) method selects the whole element when the selection starts at the beginning of that element. +* [#644](https://github.com/ckeditor/ckeditor-dev/issues/644): Fixed: The [`range.extractContents`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.dom.range-method-extractContents) method returns an incorrect result when multiple nodes are selected. +* [#684](https://github.com/ckeditor/ckeditor-dev/issues/684): Fixed: The [`elementPath.contains`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.dom.elementPath-method-contains) method incorrectly excludes the last element instead of root when the `fromTop` parameter is set to `true`. + +Other Changes: + +* Updated the [SCAYT](https://ckeditor.com/cke4/addon/scayt) (Spell Check As You Type) plugin: + * [#148](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/148): Fixed: SCAYT leaves underlined word after the CKEditor Replace dialog corrects it. +* [#751](https://github.com/ckeditor/ckeditor-dev/issues/751): Added the [`CKEDITOR.dom.nodeList.toArray`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.dom.nodeList-method-toArray) method which returns an array representation of a [node list](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.dom.nodeList). + +## CKEditor 4.7.1 + +New Features: + +* Added a new Mexican Spanish localization. Thanks to [David Alexandro Rodriguez](https://www.transifex.com/user/profile/darsco16/)! +* [#413](https://github.com/ckeditor/ckeditor-dev/issues/413): Added Paste as Plain Text keyboard shortcut to the [Accessibility Help](https://ckeditor.com/cke4/addon/a11yhelp) instructions. + +Fixed Issues: + +* [#515](https://github.com/ckeditor/ckeditor-dev/issues/515): [Chrome] Fixed: Mouse actions on CKEditor scrollbar throw an exception when the [Table Selection](https://ckeditor.com/cke4/addon/tableselection) plugin is loaded. +* [#493](https://github.com/ckeditor/ckeditor-dev/issues/493): Fixed: Selection started from a nested table causes an error in the browser while scrolling down. +* [#415](https://github.com/ckeditor/ckeditor-dev/issues/415): [Firefox] Fixed: Enter key breaks the table structure when pressed in a table selection. +* [#457](https://github.com/ckeditor/ckeditor-dev/issues/457): Fixed: Error thrown when deleting content from the editor with no selection. +* [#478](https://github.com/ckeditor/ckeditor-dev/issues/478): [Chrome] Fixed: Error thrown by the [Enter Key](https://ckeditor.com/cke4/addon/enterkey) plugin when pressing Enter with no selection. +* [#424](https://github.com/ckeditor/ckeditor-dev/issues/424): Fixed: Error thrown by [Tab Key Handling](https://ckeditor.com/cke4/addon/tab) and [Indent List](https://ckeditor.com/cke4/addon/indentlist) plugins when pressing Tab with no selection in inline editor. +* [#476](https://github.com/ckeditor/ckeditor-dev/issues/476): Fixed: Anchors inserted with the [Link](https://ckeditor.com/cke4/addon/link) plugin on collapsed selection cannot be edited. +* [#417](https://github.com/ckeditor/ckeditor-dev/issues/417): Fixed: The [Table Resize](https://ckeditor.com/cke4/addon/tableresize) plugin throws an error when used with a table with only header or footer rows. +* [#523](https://github.com/ckeditor/ckeditor-dev/issues/523): Fixed: The [`editor.getCommandKeystroke`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.editor-method-getCommandKeystroke) method does not obtain the correct keystroke. +* [#534](https://github.com/ckeditor/ckeditor-dev/issues/534): [IE] Fixed: [Paste from Word](https://ckeditor.com/cke4/addon/pastefromword) does not work in Quirks Mode. +* [#450](https://github.com/ckeditor/ckeditor-dev/issues/450): Fixed: [`CKEDITOR.filter`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.filter) incorrectly transforms the `margin` CSS property. + +## CKEditor 4.7 + +**Important Notes:** + +* [#13793](https://dev.ckeditor.com/ticket/13793): The [`embed_provider`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.config-cfg-embed_provider) configuration option for the [Media Embed](https://ckeditor.com/cke4/addon/embed) and [Semantic Media Embed](https://ckeditor.com/cke4/addon/embedsemantic) plugins is no longer preset by default. +* The [UI Color](https://ckeditor.com/cke4/addon/uicolor) plugin now uses a custom color picker instead of the `YUI 2.7.0` library which has some known vulnerabilities (it's a security precaution, there was no security issue in CKEditor due to the way it was used). + +New Features: + +* [#16755](https://dev.ckeditor.com/ticket/16755): Added the [Table Selection](https://ckeditor.com/cke4/addon/tableselection) plugin that lets you select and manipulate an arbitrary rectangular table fragment (a few cells, a row or a column). +* [#16961](https://dev.ckeditor.com/ticket/16961): Added support for pasting from Microsoft Excel. +* [#13381](https://dev.ckeditor.com/ticket/13381): Dynamic code evaluation call in [`CKEDITOR.template`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.template) removed. CKEditor can now be used without the `unsafe-eval` Content Security Policy. Thanks to [Caridy Patiño](http://caridy.name)! +* [#16971](https://dev.ckeditor.com/ticket/16971): Added support for color in the `background` property containing also other styles for table cells in the [Table Tools](https://ckeditor.com/cke4/addon/tabletools) plugin. +* [#16847](https://dev.ckeditor.com/ticket/16847): Added support for parsing and inlining any formatting created using the Microsoft Word style system to the [Paste from Word](https://ckeditor.com/cke4/addon/pastefromword) plugin. +* [#16818](https://dev.ckeditor.com/ticket/16818): Added table cell height parsing in the [Paste from Word](https://ckeditor.com/cke4/addon/pastefromword) plugin. +* [#16850](https://dev.ckeditor.com/ticket/16850): Added a new [`config.enableContextMenu`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.config-cfg-enableContextMenu) configuration option for enabling and disabling the [context menu](https://ckeditor.com/cke4/addon/contextmenu). +* [#16937](https://dev.ckeditor.com/ticket/16937): The `command` parameter in [CKEDITOR.editor.getCommandKeystroke](http://docs.ckeditor.dev/#!/api/CKEDITOR.editor-method-getCommandKeystroke) now also accepts a command name as an argument. +* [#17010](https://dev.ckeditor.com/ticket/17010): The [`CKEDITOR.dom.range.shrink`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR.dom.range-method-shrink) method now allows for skipping bogus `
` elements. + +Fixed Issues: + +* [#16935](https://dev.ckeditor.com/ticket/16935): [Chrome] Fixed: Blurring the editor in [Source Mode](https://ckeditor.com/cke4/addon/sourcearea) throws an error. +* [#16825](https://dev.ckeditor.com/ticket/16825): [Chrome] Fixed: Error thrown when destroying a focused inline editor. +* [#16857](https://dev.ckeditor.com/ticket/16857): Fixed: Ctrl+Shift+V blocked by [Copy Formatting](https://ckeditor.com/cke4/addon/copyformatting). +* [#16845](https://dev.ckeditor.com/ticket/16845): [IE] Fixed: Cursor jumps to the top of the scrolled editor after focusing it when the [Copy Formatting](https://ckeditor.com/cke4/addon/copyformatting) plugin is enabled. +* [#16786](https://dev.ckeditor.com/ticket/16786): Fixed: Added missing translations for the [Copy Formatting](https://ckeditor.com/cke4/addon/copyformatting) plugin. +* [#14714](https://dev.ckeditor.com/ticket/14714): [WebKit/Blink] Fixed: Exception thrown on refocusing a blurred inline editor. +* [#16913](https://dev.ckeditor.com/ticket/16913): [Firefox, IE] Fixed: [Paste as Plain Text](https://ckeditor.com/cke4/addon/pastetext) keystroke does not work. +* [#16968](https://dev.ckeditor.com/ticket/16968): Fixed: [Safari] [Paste as Plain Text](https://ckeditor.com/cke4/addon/pastetext) is not handled by the editor. +* [#16912](https://dev.ckeditor.com/ticket/16912): Fixed: Exception thrown when a single image is pasted using [Paste from Word](https://ckeditor.com/cke4/addon/pastefromword). +* [#16821](https://dev.ckeditor.com/ticket/16821): Fixed: Extraneous `` elements with `height` style stacked when [pasting from Word](https://ckeditor.com/cke4/addon/pastefromword). +* [#16866](https://dev.ckeditor.com/ticket/16866): [IE, Edge] Fixed: Whitespaces not preserved when [pasting from Word](https://ckeditor.com/cke4/addon/pastefromword). +* [#16860](https://dev.ckeditor.com/ticket/16860): Fixed: Paragraphs which only look like lists incorrectly transformed into them when [pasting from Word](https://ckeditor.com/cke4/addon/pastefromword). +* [#16817](https://dev.ckeditor.com/ticket/16817): Fixed: When [pasting from Word](https://ckeditor.com/cke4/addon/pastefromword), paragraphs are transformed into lists with some corrupted data. +* [#16833](https://dev.ckeditor.com/ticket/16833): [IE11] Fixed: Malformed list with headers [pasted from Word](https://ckeditor.com/cke4/addon/pastefromword). +* [#16826](https://dev.ckeditor.com/ticket/16826): [IE] Fixed: Superfluous paragraphs within lists [pasted from Word](https://ckeditor.com/cke4/addon/pastefromword). +* [#12465](https://dev.ckeditor.com/ticket/12465): Fixed: Cannot change the state of checkboxes or radio buttons if the properties dialog was invoked with a double-click. +* [#13062](https://dev.ckeditor.com/ticket/13062): Fixed: Impossible to unlink when the caret is at the edge of the link. +* [#13585](https://dev.ckeditor.com/ticket/13585): Fixed: Error when wrapping two adjacent `
` elements with a `
`. +* [#16811](https://dev.ckeditor.com/ticket/16811): Fixed: Table alignment is not preserved by the [Paste from Word](https://ckeditor.com/cke4/addon/pastefromword) plugin. +* [#16810](https://dev.ckeditor.com/ticket/16810): Fixed: Vertical align in tables is not supported by the [Paste from Word](https://ckeditor.com/cke4/addon/pastefromword) plugin. +* [#11956](https://dev.ckeditor.com/ticket/11956): [Blink, IE] Fixed: [Link](https://ckeditor.com/cke4/addon/link) dialog does not open on a double click on the second word of the link with a background color or other styles. +* [#10472](https://dev.ckeditor.com/ticket/10472): Fixed: Unable to use [Table Resize](https://ckeditor.com/cke4/addon/tableresize) on table header and footer. +* [#14762](https://dev.ckeditor.com/ticket/14762): Fixed: Hovering over an empty table (without rows or cells) throws an error when the [Table Resize](https://ckeditor.com/cke4/addon/tableresize) plugin is active. +* [#16777](https://dev.ckeditor.com/ticket/16777): [Edge] Fixed: The [Clipboard](https://ckeditor.com/cke4/addon/clipboard) plugin does not allow to drop widgets into the editor. +* [#14894](https://dev.ckeditor.com/ticket/14894): [Chrome] Fixed: The editor scrolls to the top after focusing or when a dialog is opened. +* [#14769](https://dev.ckeditor.com/ticket/14769): Fixed: URLs with '-' in host are not detected by the [Auto Link](https://ckeditor.com/cke4/addon/autolink) plugin. +* [#16804](https://dev.ckeditor.com/ticket/16804): Fixed: Focus is not on the first menu item when the user opens a context menu or a drop-down list from the editor toolbar. +* [#14407](https://dev.ckeditor.com/ticket/14407): [IE] Fixed: Non-editable widgets can be edited. +* [#16927](https://dev.ckeditor.com/ticket/16927): Fixed: An error thrown if a bundle containing the [Color Button](https://ckeditor.com/cke4/addon/colorbutton) plugin is run in ES5 strict mode. Thanks to [Igor Rubinovich](https://github.com/IgorRubinovich)! +* [#16920](https://dev.ckeditor.com/ticket/16920): Fixed: Several plugins not using the [Dialog](https://ckeditor.com/cke4/addon/dialog) plugin as a direct dependency. +* [PR#336](https://github.com/ckeditor/ckeditor-dev/pull/336): Fixed: Typo in [`CKEDITOR.getCss`](https://docs.ckeditor.com/ckeditor4/docs/#!/api/CKEDITOR-method-getCss) API documentation. Thanks to [knusperpixel](https://github.com/knusperpixel)! +* [#17027](https://dev.ckeditor.com/ticket/17027): Fixed: Command event data should be initialized as an empty object. +* Fixed the behavior of HTML parser when parsing `src`/`srcdoc` attributes of the `' ); + var iframe = CKEDITOR.dom.element.createFromHtml( '' ); - iframe.on( 'load', function( e ) { - e.removeListener(); + // Reset last data transfer. + lastDataTransfer = null; - var doc = iframe.getFrameDocument(); - doc.write( htmlToLoad ); + iframe.on( 'load', function( e ) { + e.removeListener(); - editor.focusManager.add( doc.getBody() ); + var doc = iframe.getFrameDocument(); + doc.write( htmlToLoad ); - if ( CKEDITOR.env.air ) - onPasteFrameLoad.call( this, doc.getWindow().$ ); - }, dialog ); + editor.focusManager.add( doc.getBody() ); - iframe.setCustomData( 'dialog', dialog ); + if ( CKEDITOR.env.air ) + onPasteFrameLoad.call( this, doc.getWindow().$ ); + }, dialog ); - var container = this.getElement(); - container.setHtml( '' ); - container.append( iframe ); + iframe.setCustomData( 'dialog', dialog ); - // IE need a redirect on focus to make - // the cursor blinking inside iframe. (#5461) - if ( CKEDITOR.env.ie ) { - var focusGrabber = CKEDITOR.dom.element.createFromHtml( '' ); - focusGrabber.on( 'focus', function() { - // Since fixDomain is called in src attribute, - // IE needs some slight delay to correctly move focus. - setTimeout( function() { - iframe.$.contentWindow.focus(); + var container = this.getElement(); + container.setHtml( '' ); + container.append( iframe ); + + // IE need a redirect on focus to make + // the cursor blinking inside iframe. (#5461) + if ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) { + var focusGrabber = CKEDITOR.dom.element.createFromHtml( '' ); + focusGrabber.on( 'focus', function() { + // Since fixDomain is called in src attribute, + // IE needs some slight delay to correctly move focus. + setTimeout( function() { + iframe.$.contentWindow.focus(); + } ); } ); - } ); - container.append( focusGrabber ); + container.append( focusGrabber ); - // Override focus handler on field. - this.focus = function() { - focusGrabber.focus(); - this.fire( 'focus' ); + // Override focus handler on field. + this.focus = function() { + focusGrabber.focus(); + this.fire( 'focus' ); + }; + } + + this.getInputElement = function() { + return iframe; }; + + // Force container to scale in IE. + if ( CKEDITOR.env.ie ) { + container.setStyle( 'display', 'block' ); + container.setStyle( 'height', ( iframe.$.offsetHeight + 2 ) + 'px' ); + } + }, + commit: function() { + var editor = this.getDialog().getParentEditor(), + body = this.getInputElement().getFrameDocument().getBody(), + bogus = body.getBogus(), + html; + bogus && bogus.remove(); + + // Saving the contents so changes until paste is complete will not take place (#7500) + html = body.getHtml(); + + this.getDialog()._.committed = true; + + editor.fire( 'pasteDialogCommit', { + dataValue: html, + // Avoid error if there was no paste so lastDataTransfer is null. + dataTransfer: lastDataTransfer || clipboard.initPasteDataTransfer() + } ); } - - this.getInputElement = function() { - return iframe; - }; - - // Force container to scale in IE. - if ( CKEDITOR.env.ie ) { - container.setStyle( 'display', 'block' ); - container.setStyle( 'height', ( iframe.$.offsetHeight + 2 ) + 'px' ); - } - }, - commit: function( data ) { - var editor = this.getDialog().getParentEditor(), - body = this.getInputElement().getFrameDocument().getBody(), - bogus = body.getBogus(), - html; - bogus && bogus.remove(); - - // Saving the contents so changes until paste is complete will not take place (#7500) - html = body.getHtml(); - - // Opera needs some time to think about what has happened and what it should do now. - setTimeout( function() { - editor.fire( 'pasteDialogCommit', html ); - }, 0 ); } - } ] - } - ] + } ] }; } ); /** - * Internal event to pass paste dialog's data to the listeners. + * Internal event to pass the paste dialog data to the listeners. + * + * This event was not available in versions 4.7.0-4.8.0. * * @private * @event pasteDialogCommit diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/copy-rtl.png b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/copy-rtl.png index ef724460..ce94fc08 100644 Binary files a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/copy-rtl.png and b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/copy-rtl.png differ diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/copy.png b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/copy.png index ef724460..ce94fc08 100644 Binary files a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/copy.png and b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/copy.png differ diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/cut-rtl.png b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/cut-rtl.png index 0b719653..8ae48d9a 100644 Binary files a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/cut-rtl.png and b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/cut-rtl.png differ diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/cut.png b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/cut.png index 0b719653..8ae48d9a 100644 Binary files a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/cut.png and b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/cut.png differ diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/copy-rtl.png b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/copy-rtl.png index 29026cc0..74c67656 100644 Binary files a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/copy-rtl.png and b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/copy-rtl.png differ diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/copy.png b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/copy.png index 29026cc0..74c67656 100644 Binary files a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/copy.png and b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/copy.png differ diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/cut-rtl.png b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/cut-rtl.png index bfec0cfb..f5a9b0da 100644 Binary files a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/cut-rtl.png and b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/cut-rtl.png differ diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/cut.png b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/cut.png index bfec0cfb..f5a9b0da 100644 Binary files a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/cut.png and b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/cut.png differ diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/paste-rtl.png b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/paste-rtl.png index f18dac37..12cac92a 100644 Binary files a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/paste-rtl.png and b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/paste-rtl.png differ diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/paste.png b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/paste.png index f18dac37..12cac92a 100644 Binary files a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/paste.png and b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/hidpi/paste.png differ diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/paste-rtl.png b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/paste-rtl.png index b2bfef20..7039251b 100644 Binary files a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/paste-rtl.png and b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/paste-rtl.png differ diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/paste.png b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/paste.png index b2bfef20..7039251b 100644 Binary files a/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/paste.png and b/lam/templates/lib/extra/ckeditor/plugins/clipboard/icons/paste.png differ diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/af.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/af.js index af598099..b9ea2b42 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/af.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/af.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'af', { copy: 'Kopiëer', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'af', { cut: 'Knip', cutError: 'U blaaier se sekuriteitsinstelling belet die outomatiese knip-aksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+X).', paste: 'Plak', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Plak-area', - pasteMsg: 'Plak die teks in die volgende teks-area met die sleutelbordkombinasie (Ctrl/Cmd+V) en druk OK.', - securityMsg: 'Weens u blaaier se sekuriteitsinstelling is data op die knipbord nie toeganklik nie. U kan dit eers weer in hierdie venster plak.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Byvoeg' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ar.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ar.js index e66eb230..8a5fe12b 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ar.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ar.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'ar', { copy: 'نسخ', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'ar', { cut: 'قص', cutError: 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+X).', paste: 'لصق', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'منطقة اللصق', - pasteMsg: 'الصق داخل الصندوق بإستخدام زرائر (Ctrl/Cmd+V) في لوحة المفاتيح، ثم اضغط زر موافق.', - securityMsg: 'نظراً لإعدادات الأمان الخاصة بمتصفحك، لن يتمكن هذا المحرر من الوصول لمحتوى حافظتك، لذلك يجب عليك لصق المحتوى مرة أخرى في هذه النافذة.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'لصق' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/az.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/az.js new file mode 100644 index 00000000..b61e518c --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/az.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'az', { + copy: 'Köçür', + copyError: 'Avtomatik köçürülməsi mümkün deyil. Ctrl+C basın.', + cut: 'Kəs', + cutError: 'Avtomatik kəsmə mümkün deyil. Ctrl+X basın.', + paste: 'Əlavə et', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING + pasteArea: 'Paste Area', // MISSING + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING + title: 'Paste' // MISSING +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/bg.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/bg.js index 5979d8ff..d6439c2a 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/bg.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/bg.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'bg', { copy: 'Копирай', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'bg', { cut: 'Отрежи', cutError: 'Настройките за сигурност на Вашия браузър не позволяват на редактора автоматично да изъплни действията за отрязване. Моля ползвайте клавиатурните команди за целта (ctrl+x).', paste: 'Вмъкни', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Зона за вмъкване', - pasteMsg: 'Вмъкнете тук съдъжанието с клавиатуарата (Ctrl/Cmd+V) и натиснете OK.', - securityMsg: 'Заради настройките за сигурност на Вашия браузър, редакторът не може да прочете данните от клипборда коректно.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Вмъкни' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/bn.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/bn.js index 9788cace..14d54a19 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/bn.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/bn.js @@ -1,15 +1,15 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'bn', { copy: 'কপি', - copyError: 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কপি করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+C)।', + copyError: 'আপনার ব্রাউজারের নিরাপত্তা সেটিংসমূহ এডিটরকে স্বয়ংক্রিয়ভাবে কপি করার প্রক্রিয়া চালনা করার অনুমতি দেয় না। অনুগ্রহপূর্বক এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+C)।', cut: 'কাট', cutError: 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কাট করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+X)।', paste: 'পেস্ট', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Paste Area', // MISSING - pasteMsg: 'অনুগ্রহ করে নীচের বাক্সে কিবোর্ড ব্যবহার করে (Ctrl/Cmd+V) পেস্ট করুন এবং OK চাপ দিন', - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'পেস্ট' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/bs.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/bs.js index b9fffd08..0565e737 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/bs.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/bs.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'bs', { copy: 'Kopiraj', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'bs', { cut: 'Izreži', cutError: 'Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+X).', paste: 'Zalijepi', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Paste Area', // MISSING - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Zalijepi' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ca.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ca.js index ac37e5de..78dbf1e6 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ca.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ca.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'ca', { copy: 'Copiar', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'ca', { cut: 'Retallar', cutError: 'La configuració de seguretat del vostre navegador no permet executar automàticament les operacions de retallar. Si us plau, utilitzeu el teclat (Ctrl/Cmd+X).', paste: 'Enganxar', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Àrea d\'enganxat', - pasteMsg: 'Si us plau, enganxi dins del següent camp utilitzant el teclat (Ctrl/Cmd+V) i premi OK.', - securityMsg: 'A causa de la configuració de seguretat del vostre navegador, l\'editor no pot accedir a les dades del porta-retalls directament. Enganxeu-ho un altre cop en aquesta finestra.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Enganxar' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/cs.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/cs.js index 77d1bd09..0a60f7c1 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/cs.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/cs.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'cs', { copy: 'Kopírovat', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'cs', { cut: 'Vyjmout', cutError: 'Bezpečnostní nastavení vašeho prohlížeče nedovolují editoru spustit funkci pro vyjmutí zvoleného textu do schránky. Prosím vyjměte zvolený text do schránky pomocí klávesnice (Ctrl/Cmd+X).', paste: 'Vložit', + pasteNotification: 'Stiskněte %1 pro vložení. Váš prohlížeč nepodporuje vkládání pomocí tlačítka na panelu nástrojů nebo volby kontextového menu.', pasteArea: 'Oblast vkládání', - pasteMsg: 'Do následujícího pole vložte požadovaný obsah pomocí klávesnice (Ctrl/Cmd+V) a stiskněte OK.', - securityMsg: 'Z důvodů nastavení bezpečnosti vašeho prohlížeče nemůže editor přistupovat přímo do schránky. Obsah schránky prosím vložte znovu do tohoto okna.', + pasteMsg: 'Vložte svůj obsah do oblasti níže a stiskněte OK.', title: 'Vložit' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/cy.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/cy.js index 75981c79..b541a00c 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/cy.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/cy.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'cy', { copy: 'Copïo', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'cy', { cut: 'Torri', cutError: 'Nid yw gosodiadau diogelwch eich porwr yn caniatàu\'r golygydd i gynnal \'gweithredoedd torri\' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+X).', paste: 'Gludo', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Ardal Gludo', - pasteMsg: 'Gludwch i mewn i\'r blwch canlynol gan ddefnyddio\'r bysellfwrdd (Ctrl/Cmd+V) a phwyso Iawn.', - securityMsg: 'Oherwydd gosodiadau diogelwch eich porwr, \'dyw\'r porwr ddim yn gallu ennill mynediad i\'r data ar y clipfwrdd yn uniongyrchol. Mae angen i chi ei ludo eto i\'r ffenestr hon.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Gludo' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/da.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/da.js index 832758ac..7bdc2e94 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/da.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/da.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'da', { copy: 'Kopiér', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'da', { cut: 'Klip', cutError: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.

Brug i stedet tastaturet til at klippe teksten (Ctrl/Cmd+X).', paste: 'Indsæt', - pasteArea: 'Indsæt område', - pasteMsg: 'Indsæt i feltet herunder (Ctrl/Cmd+V) og klik på OK.', - securityMsg: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.

Du skal indsætte udklipsholderens indhold i dette vindue igen.', + pasteNotification: 'Tryk %1 for at sætte ind. Din browser understøtter ikke indsættelse med værktøjslinje knappen eller kontekst menuen.', + pasteArea: 'Indsættelses område', + pasteMsg: 'Indsæt dit indhold i området nedenfor og tryk OK.', title: 'Indsæt' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/de-ch.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/de-ch.js new file mode 100644 index 00000000..b3f9065e --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/de-ch.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'de-ch', { + copy: 'Kopieren', + copyError: 'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).', + cut: 'Ausschneiden', + cutError: 'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).', + paste: 'Einfügen', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING + pasteArea: 'Einfügebereich', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING + title: 'Einfügen' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/de.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/de.js index 4426d084..693f7100 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/de.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/de.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'de', { copy: 'Kopieren', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'de', { cut: 'Ausschneiden', cutError: 'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).', paste: 'Einfügen', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Einfügebereich', - pasteMsg: 'Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit Strg+V) ein und bestätigen Sie mit OK.', - securityMsg: 'Aufgrund von Sicherheitsbeschränkungen Ihres Browsers kann der Editor nicht direkt auf die Zwischenablage zugreifen. Bitte fügen Sie den Inhalt erneut in diesem Fenster ein.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Einfügen' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/el.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/el.js index 3d7116d4..2fc669a7 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/el.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/el.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'el', { copy: 'Αντιγραφή', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'el', { cut: 'Αποκοπή', cutError: 'Οι ρυθμίσεις ασφαλείας του περιηγητή σας δεν επιτρέπουν την επιλεγμένη εργασία αποκοπής. Παρακαλώ χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+X).', paste: 'Επικόλληση', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Περιοχή Επικόλλησης', - pasteMsg: 'Παρακαλώ επικολλήστε στο ακόλουθο κουτί χρησιμοποιώντας το πληκτρολόγιο (Ctrl/Cmd+V) και πατήστε OK.', - securityMsg: 'Λόγων των ρυθμίσεων ασφάλειας του περιηγητή σας, ο επεξεργαστής δεν μπορεί να έχει πρόσβαση στην μνήμη επικόλλησης. Χρειάζεται να επικολλήσετε ξανά σε αυτό το παράθυρο.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Επικόλληση' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/en-au.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/en-au.js index 501fe1e0..ea89deaa 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/en-au.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/en-au.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'en-au', { copy: 'Copy', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'en-au', { cut: 'Cut', cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', paste: 'Paste', - pasteArea: 'Paste Area', // MISSING - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', + pasteArea: 'Paste Area', + pasteMsg: 'Paste your content inside the area below and press OK.', title: 'Paste' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/en-ca.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/en-ca.js index 9ea55e18..d8735994 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/en-ca.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/en-ca.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'en-ca', { copy: 'Copy', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'en-ca', { cut: 'Cut', cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', paste: 'Paste', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Paste Area', // MISSING - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', - title: 'Paste' + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING + title: 'Paste' // MISSING } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/en-gb.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/en-gb.js index e0d62349..a6a111bc 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/en-gb.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/en-gb.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'en-gb', { copy: 'Copy', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'en-gb', { cut: 'Cut', cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', paste: 'Paste', - pasteArea: 'Paste Area', - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', - title: 'Paste' + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING + pasteArea: 'Paste Area', // MISSING + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING + title: 'Paste' // MISSING } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/en.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/en.js index 24c263ba..019a787b 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/en.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/en.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'en', { copy: 'Copy', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'en', { cut: 'Cut', cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', paste: 'Paste', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', pasteArea: 'Paste Area', - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', + pasteMsg: 'Paste your content inside the area below and press OK.', title: 'Paste' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/eo.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/eo.js index 8a983379..b5265b5d 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/eo.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/eo.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'eo', { copy: 'Kopii', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'eo', { cut: 'Eltondi', cutError: 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-X).', paste: 'Interglui', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Intergluoareo', - pasteMsg: 'Bonvolu glui la tekston en la jenan areon per uzado de la klavaro (Ctrl/Cmd+V) kaj premu OK', - securityMsg: 'Pro la sekurecagordo de via TTT-legilo, la redaktilo ne povas rekte atingi viajn datenojn en la poŝo. Bonvolu denove interglui la datenojn en tiun fenestron.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Interglui' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/es-mx.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/es-mx.js new file mode 100644 index 00000000..d27b4c7d --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/es-mx.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'es-mx', { + copy: 'Copiar', + copyError: 'La configuración de seguridad de su navegador no permite al editor ejecutar automáticamente operaciones de copiado. Por favor, utilice el teclado para (Ctrl/Cmd+C).', + cut: 'Cortar', + cutError: 'La configuración de seguridad de su navegador no permite al editor ejecutar automáticamente operaciones de corte. Por favor, utilice el teclado para (Ctrl/Cmd+X).', + paste: 'Pegar', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING + pasteArea: 'Paste Area', // MISSING + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING + title: 'Paste' // MISSING +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/es.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/es.js index fad57908..e04f757e 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/es.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/es.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'es', { copy: 'Copiar', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'es', { cut: 'Cortar', cutError: 'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de cortado.\r\nPor favor use el teclado (Ctrl/Cmd+X).', paste: 'Pegar', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Zona de pegado', - pasteMsg: 'Por favor pegue dentro del cuadro utilizando el teclado (Ctrl/Cmd+V);\r\nluego presione Aceptar.', - securityMsg: 'Debido a la configuración de seguridad de su navegador, el editor no tiene acceso al portapapeles.\r\nEs necesario que lo pegue de nuevo en esta ventana.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Pegar' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/et.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/et.js index 09a4bcec..7387817c 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/et.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/et.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'et', { copy: 'Kopeeri', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'et', { cut: 'Lõika', cutError: 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+X).', paste: 'Aseta', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Asetamise ala', - pasteMsg: 'Palun aseta tekst järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+V) ja vajuta seejärel OK.', - securityMsg: 'Sinu veebisirvija turvaseadete tõttu ei oma redaktor otsest ligipääsu lõikelaua andmetele. Sa pead asetama need uuesti siia aknasse.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Asetamine' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/eu.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/eu.js index 037a21c7..da0e092b 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/eu.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/eu.js @@ -1,15 +1,15 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'eu', { copy: 'Kopiatu', - copyError: 'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki kopiatzea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl/Cmd+C).', + copyError: 'Zure web nabigatzailearen segurtasun ezarpenek ez dute baimentzen testuak automatikoki kopiatzea. Mesedez teklatua erabil ezazu (Ctrl/Cmd+C).', cut: 'Ebaki', - cutError: 'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki moztea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl/Cmd+X).', + cutError: 'Zure web nabigatzailearen segurtasun ezarpenek ez dute baimentzen testuak automatikoki moztea. Mesedez teklatua erabil ezazu (Ctrl/Cmd+X).', paste: 'Itsatsi', - pasteArea: 'Itsasteko Area', - pasteMsg: 'Mesedez teklatua erabilita (Ctrl/Cmd+V) ondorego eremuan testua itsatsi eta OK sakatu.', - securityMsg: 'Nabigatzailearen segurtasun ezarpenak direla eta, editoreak ezin du arbela zuzenean erabili. Leiho honetan berriro itsatsi behar duzu.', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING + pasteArea: 'Itsasteko area', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Itsatsi' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fa.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fa.js index d894f686..a6b3ed6d 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fa.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fa.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'fa', { copy: 'رونوشت', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'fa', { cut: 'برش', cutError: 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. لطفا با دکمههای صفحه کلید این کار را انجام دهید (Ctrl/Cmd+X).', paste: 'چسباندن', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'محل چسباندن', - pasteMsg: 'لطفا متن را با کلیدهای (Ctrl/Cmd+V) در این جعبهٴ متنی بچسبانید و پذیرش را بزنید.', - securityMsg: 'به خاطر تنظیمات امنیتی مرورگر شما، ویرایشگر نمیتواند دسترسی مستقیم به دادههای clipboard داشته باشد. شما باید دوباره آنرا در این پنجره بچسبانید.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'چسباندن' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fi.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fi.js index 9a068a32..83aa63ff 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fi.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fi.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'fi', { copy: 'Kopioi', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'fi', { cut: 'Leikkaa', cutError: 'Selaimesi turva-asetukset eivät salli editorin toteuttaa leikkaamista. Käytä näppäimistöä leikkaamiseen (Ctrl+X).', paste: 'Liitä', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Leikealue', - pasteMsg: 'Liitä painamalla (Ctrl+V) ja painamalla OK.', - securityMsg: 'Selaimesi turva-asetukset eivät salli editorin käyttää leikepöytää suoraan. Sinun pitää suorittaa liittäminen tässä ikkunassa.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Liitä' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fo.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fo.js index da436ea4..7a24f07b 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fo.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fo.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'fo', { copy: 'Avrita', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'fo', { cut: 'Kvett', cutError: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (Ctrl/Cmd+X).', paste: 'Innrita', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Avritingarumráði', - pasteMsg: 'Vinarliga koyr tekstin í hendan rútin við knappaborðinum (Ctrl/Cmd+V) og klikk á Góðtak.', - securityMsg: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í beinleiðis atgongd til avritingarminnið. Tygum mugu royna aftur í hesum rútinum.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Innrita' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fr-ca.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fr-ca.js index e4e483cf..ef855ad7 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fr-ca.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fr-ca.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'fr-ca', { copy: 'Copier', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'fr-ca', { cut: 'Couper', cutError: 'Les paramètres de sécurité de votre navigateur empêchent l\'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+X).', paste: 'Coller', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Coller la zone', - pasteMsg: 'Veuillez coller dans la zone ci-dessous en utilisant le clavier (Ctrl/Cmd+V) et appuyer sur OK.', - securityMsg: 'A cause des paramètres de sécurité de votre navigateur, l\'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Coller' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fr.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fr.js index ed17f8e6..4361b97f 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fr.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/fr.js @@ -1,15 +1,15 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'fr', { copy: 'Copier', - copyError: 'Les paramètres de sécurité de votre navigateur ne permettent pas à l\'éditeur d\'exécuter automatiquement des opérations de copie. Veuillez utiliser le raccourci clavier (Ctrl/Cmd+C).', + copyError: 'Les paramètres de sécurité de votre navigateur n\'autorisent pas l\'éditeur à exécuter automatiquement l\'opération « Copier ». Veuillez utiliser le raccourci clavier à cet effet (Ctrl/Cmd+C).', cut: 'Couper', - cutError: 'Les paramètres de sécurité de votre navigateur ne permettent pas à l\'éditeur d\'exécuter automatiquement l\'opération "couper". Veuillez utiliser le raccourci clavier (Ctrl/Cmd+X).', + cutError: 'Les paramètres de sécurité de votre navigateur n\'autorisent pas l\'éditeur à exécuter automatiquement l\'opération « Couper ». Veuillez utiliser le raccourci clavier à cet effet (Ctrl/Cmd+X).', paste: 'Coller', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Coller la zone', - pasteMsg: 'Veuillez coller le texte dans la zone suivante en utilisant le raccourci clavier (Ctrl/Cmd+V) et cliquez sur OK.', - securityMsg: 'A cause des paramètres de sécurité de votre navigateur, l\'éditeur n\'est pas en mesure d\'accéder directement à vos données contenues dans le presse-papier. Vous devriez réessayer de coller les données dans la fenêtre.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Coller' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/gl.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/gl.js index cace10af..3013b964 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/gl.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/gl.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'gl', { copy: 'Copiar', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'gl', { cut: 'Cortar', cutError: 'Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de corte. Use o teclado para iso (Ctrl/Cmd+X).', paste: 'Pegar', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Zona de pegado', - pasteMsg: 'Pegue dentro do seguinte cadro usando o teclado (Ctrl/Cmd+V) e prema en Aceptar', - securityMsg: 'Por mor da configuración de seguranza do seu navegador, o editor non ten acceso ao portapapeis. É necesario pegalo novamente nesta xanela.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Pegar' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/gu.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/gu.js index 8bb5bcd2..8b88c841 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/gu.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/gu.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'gu', { copy: 'નકલ', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'gu', { cut: 'કાપવું', cutError: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+X) નો ઉપયોગ કરો.', paste: 'પેસ્ટ', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'પેસ્ટ કરવાની જગ્યા', - pasteMsg: 'Ctrl/Cmd+V નો પ્રયોગ કરી પેસ્ટ કરો', - securityMsg: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસના કારણે,એડિટર તમારા કિલ્પબોર્ડ ડેટા ને કોપી નથી કરી શકતો. તમારે આ વિન્ડોમાં ફરીથી પેસ્ટ કરવું પડશે.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'પેસ્ટ' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/he.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/he.js index 99d06565..b3cdd104 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/he.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/he.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'he', { copy: 'העתקה', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'he', { cut: 'גזירה', cutError: 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות גזירה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+X).', paste: 'הדבקה', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'איזור הדבקה', - pasteMsg: 'נא להדביק בתוך הקופסה באמצעות (Ctrl/Cmd+V) וללחוץ על אישור.', - securityMsg: 'עקב הגדרות אבטחה בדפדפן, לא ניתן לגשת אל לוח הגזירים (Clipboard) בצורה ישירה. נא להדביק שוב בחלון זה.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'הדבקה' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/hi.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/hi.js index b3cb47b9..61dd5d22 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/hi.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/hi.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'hi', { copy: 'कॉपी', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'hi', { cut: 'कट', cutError: 'आपके ब्राउज़र की सुरक्षा सॅटिन्ग्स ने कट करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+X) का प्रयोग करें।', paste: 'पेस्ट', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Paste Area', // MISSING - pasteMsg: 'Ctrl/Cmd+V का प्रयोग करके पेस्ट करें और ठीक है करें.', - securityMsg: 'आपके ब्राउज़र की सुरक्षा आपके ब्राउज़र की सुरKश सैटिंग के कारण, एडिटर आपके क्लिपबोर्ड डेटा को नहीं पा सकता है. आपको उसे इस विन्डो में दोबारा पेस्ट करना होगा.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'पेस्ट' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/hr.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/hr.js index eacaeb3e..ef424d4b 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/hr.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/hr.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'hr', { copy: 'Kopiraj', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'hr', { cut: 'Izreži', cutError: 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+X).', paste: 'Zalijepi', - pasteArea: 'Prostor za ljepljenje', - pasteMsg: 'Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (Ctrl/Cmd+V) i kliknite OK.', - securityMsg: 'Zbog sigurnosnih postavki Vašeg pretraživača, editor nema direktan pristup Vašem međuspremniku. Potrebno je ponovno zalijepiti tekst u ovaj prozor.', + pasteNotification: 'Vaš preglednik Vam ne dozvoljava lijepljenje običnog teksta na ovaj način. Za lijepljenje, pritisnite %1.', + pasteArea: 'Okvir za lijepljenje', + pasteMsg: 'Zalijepite vaš sadržaj u okvir ispod i pritisnite OK.', title: 'Zalijepi' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/hu.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/hu.js index 50a9f2ce..b408fbd3 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/hu.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/hu.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'hu', { copy: 'Másolás', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'hu', { cut: 'Kivágás', cutError: 'A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a kivágás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).', paste: 'Beillesztés', - pasteArea: 'Beszúrás mező', - pasteMsg: 'Másolja be az alábbi mezőbe a Ctrl/Cmd+V billentyűk lenyomásával, majd nyomjon Rendben-t.', - securityMsg: 'A böngésző biztonsági beállításai miatt a szerkesztő nem képes hozzáférni a vágólap adataihoz. Illeszd be újra ebben az ablakban.', + pasteNotification: 'Nyomjd meg a %1 gombot a beillesztéshez. A böngésző nem támogatja a beillesztést az eszköztás gombbal vagy a menüből.', + pasteArea: 'Beillesztési terület', + pasteMsg: 'Illeszd be a tartalmat az alábbi területbe, és nyomj egy OK-t.', title: 'Beillesztés' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/id.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/id.js index 4cd777a1..15738441 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/id.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/id.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'id', { copy: 'Salin', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'id', { cut: 'Potong', cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', // MISSING paste: 'Tempel', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Area Tempel', - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Tempel' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/is.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/is.js index 4f426a90..365e7583 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/is.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/is.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'is', { copy: 'Afrita', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'is', { cut: 'Klippa', cutError: 'Öryggisstillingar vafrans þíns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið í klippa (Ctrl/Cmd+X).', paste: 'Líma', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Paste Area', // MISSING - pasteMsg: 'Límdu í svæðið hér að neðan og (Ctrl/Cmd+V) og smelltu á OK.', - securityMsg: 'Vegna öryggisstillinga í vafranum þínum fær ritillinn ekki beinan aðgang að klippuborðinu. Þú verður að líma innihaldið aftur inn í þennan glugga.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Líma' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/it.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/it.js index ae91498c..263d3309 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/it.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/it.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'it', { copy: 'Copia', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'it', { cut: 'Taglia', cutError: 'Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+X).', paste: 'Incolla', - pasteArea: 'Incolla', - pasteMsg: 'Incolla il testo all\'interno dell\'area sottostante usando la scorciatoia di tastiere (Ctrl/Cmd+V) e premi OK.', - securityMsg: 'A causa delle impostazioni di sicurezza del browser,l\'editor non è in grado di accedere direttamente agli appunti. E\' pertanto necessario incollarli di nuovo in questa finestra.', + pasteNotification: 'Premere %1 per incollare. Il tuo browser non permette di incollare tramite il pulsante della barra degli strumenti o tramite la voce del menu contestuale.', + pasteArea: 'Area dove incollare', + pasteMsg: 'Incollare il proprio contenuto all\'interno dell\'area sottostante e premere OK.', title: 'Incolla' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ja.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ja.js index 54091aff..0fa244d7 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ja.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ja.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'ja', { copy: 'コピー', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'ja', { cut: '切り取り', cutError: 'ブラウザーのセキュリティ設定によりエディタの切り取り操作を自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+X)を使用してください。', paste: '貼り付け', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: '貼り付け場所', - pasteMsg: 'キーボード(Ctrl/Cmd+V)を使用して、次の入力エリア内で貼り付けて、OKを押してください。', - securityMsg: 'ブラウザのセキュリティ設定により、エディタはクリップボードデータに直接アクセスすることができません。このウィンドウは貼り付け操作を行う度に表示されます。', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: '貼り付け' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ka.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ka.js index 94f3d3d4..d8474aac 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ka.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ka.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'ka', { copy: 'ასლი', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'ka', { cut: 'ამოჭრა', cutError: 'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა ამოჭრის ოპერაციის ავტომატურად განხორციელების საშუალებას. გამოიყენეთ კლავიატურა ამისთვის (Ctrl/Cmd+X).', paste: 'ჩასმა', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'ჩასმის არე', - pasteMsg: 'ჩასვით ამ არის შიგნით კლავიატურის გამოყენებით (Ctrl/Cmd+V) და დააჭირეთ OK-ს', - securityMsg: 'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა clipboard-ის მონაცემების წვდომის უფლებას. კიდევ უნდა ჩასვათ ტექსტი ამ ფანჯარაში.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'ჩასმა' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/km.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/km.js index 85c726c7..f21a3ed8 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/km.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/km.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'km', { copy: 'ចម្លង', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'km', { cut: 'កាត់យក', cutError: 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ កាត់អត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl/Cmd+X) ។', paste: 'បិទ​ភ្ជាប់', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'តំបន់​បិទ​ភ្ជាប់', - pasteMsg: 'សូមចំលងអត្ថបទទៅដាក់ក្នុងប្រអប់ដូចខាងក្រោមដោយប្រើប្រាស់ ឃី ​(Ctrl/Cmd+V) ហើយចុច OK ។', - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'បិទ​ភ្ជាប់' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ko.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ko.js index 76d29433..1b22d192 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ko.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ko.js @@ -1,15 +1,15 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'ko', { - copy: '복사하기', - copyError: '브라우저의 보안설정때문에 복사하기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl/Cmd+C).', + copy: '복사', + copyError: '브라우저의 보안설정 때문에 복사할 수 없습니다. 키보드(Ctrl/Cmd+C)를 이용해서 복사하십시오.', cut: '잘라내기', - cutError: '브라우저의 보안설정때문에 잘라내기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl/Cmd+X).', + cutError: '브라우저의 보안설정 때문에 잘라내기 기능을 실행할 수 없습니다. 키보드(Ctrl/Cmd+X)를 이용해서 잘라내기 하십시오', paste: '붙여넣기', - pasteArea: '범위 붙여넣기', - pasteMsg: '키보드의 (Ctrl/Cmd+V) 를 이용해서 상자안에 붙여넣고 OK 를 누르세요.', - securityMsg: '브러우저 보안 설정으로 인해, 클립보드의 자료를 직접 접근할 수 없습니다. 이 창에 다시 붙여넣기 하십시오.', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING + pasteArea: '붙여넣기 범위', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: '붙여넣기' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ku.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ku.js index ffe87c57..c3abb68a 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ku.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ku.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'ku', { copy: 'لەبەرگرتنەوە', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'ku', { cut: 'بڕین', cutError: 'پارێزی وێبگەڕەکەت ڕێگەنادات بە سەرنووسەکە لەبڕینی خۆکارانە. تکایە لەبری ئەمە ئەم فەرمانە بەکاربهێنە بەداگرتنی کلیلی (Ctrl/Cmd+X).', paste: 'لکاندن', + pasteNotification: 'کلیک بکە لەسەر %1 بۆ لکاندنی. وێبگەڕەکەت پشتیوانی لکاندن ناکات بە دوگمەی تولامراز یان ئامرازی ناوەڕۆکی لیستە - کلیکی دەستی ڕاست. ', pasteArea: 'ناوچەی لکاندن', - pasteMsg: 'تکایە بیلکێنە لەناوەوەی ئەم سنوقە لەڕێی تەختەکلیلەکەت بە بەکارهێنانی کلیلی (Ctrl/Cmd+V) دووای کلیکی باشە بکە.', - securityMsg: 'بەهۆی شێوەپێدانی پارێزی وێبگەڕەکەت، سەرنووسەکه ناتوانێت دەستبگەیەنێت بەهەڵگیراوەکە ڕاستەوخۆ. بۆیه پێویسته دووباره بیلکێنیت لەم پەنجەرەیه.', + pasteMsg: 'ناوەڕۆکەکەت لەم پانتایی خوارەوە بلکێنە', title: 'لکاندن' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/lt.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/lt.js index bd70e471..f603164e 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/lt.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/lt.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'lt', { copy: 'Kopijuoti', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'lt', { cut: 'Iškirpti', cutError: 'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti iškirpimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl/Cmd+X).', paste: 'Įdėti', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Įkelti dalį', - pasteMsg: 'Žemiau esančiame įvedimo lauke įdėkite tekstą, naudodami klaviatūrą (Ctrl/Cmd+V) ir paspauskite mygtuką OK.', - securityMsg: 'Dėl jūsų naršyklės saugumo nustatymų, redaktorius negali tiesiogiai pasiekti laikinosios atminties. Jums reikia nukopijuoti dar kartą į šį langą.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Įdėti' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/lv.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/lv.js index 40da76f6..4ae47af7 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/lv.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/lv.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'lv', { copy: 'Kopēt', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'lv', { cut: 'Izgriezt', cutError: 'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj redaktoram automātiski veikt izgriezšanas darbību. Lūdzu, izmantojiet (Ctrl/Cmd+X), lai veiktu šo darbību.', paste: 'Ielīmēt', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Ielīmēšanas zona', - pasteMsg: 'Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatūru (Ctrl/Cmd+V) un apstipriniet ar Darīts!.', - securityMsg: 'Jūsu pārlūka drošības uzstādījumu dēļ, nav iespējams tieši piekļūt jūsu starpliktuvei. Jums jāielīmē atkārtoti šajā logā.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Ievietot' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/mk.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/mk.js index bb8cafeb..72ba96c7 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/mk.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/mk.js @@ -1,15 +1,15 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'mk', { - copy: 'Copy', // MISSING - copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', // MISSING - cut: 'Cut', // MISSING - cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', // MISSING - paste: 'Paste', // MISSING - pasteArea: 'Paste Area', // MISSING - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING - title: 'Paste' // MISSING + copy: 'Копирај (Copy)', + copyError: 'Опциите за безбедност на вашиот прелистувач не дозволуваат уредувачот автоматски да изврши копирање. Ве молиме употребете ја тастатурата. (Ctrl/Cmd+C)', + cut: 'Исечи (Cut)', + cutError: 'Опциите за безбедност на вашиот прелистувач не дозволуваат уредувачот автоматски да изврши сечење. Ве молиме употребете ја тастатурата. (Ctrl/Cmd+C)', + paste: 'Залепи (Paste)', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING + pasteArea: 'Простор за залепување', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING + title: 'Залепи (Paste)' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/mn.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/mn.js index 4c39990f..0e0a741d 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/mn.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/mn.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'mn', { copy: 'Хуулах', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'mn', { cut: 'Хайчлах', cutError: 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+X) товчны хослолыг ашиглана уу.', paste: 'Буулгах', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Paste Area', // MISSING - pasteMsg: '(Ctrl/Cmd+V) товчийг ашиглан paste хийнэ үү. Мөн OK дар.', - securityMsg: 'Таны үзүүлэгч/browser/-н хамгаалалтын тохиргооноос болоод editor clipboard өгөгдөлрүү шууд хандах боломжгүй. Энэ цонход дахин paste хийхийг оролд.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Буулгах' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ms.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ms.js index a0a37a6c..92aaa82d 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ms.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ms.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'ms', { copy: 'Salin', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'ms', { cut: 'Potong', cutError: 'Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+X).', paste: 'Tampal', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Paste Area', // MISSING - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Tampal' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/nb.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/nb.js index 9c0d9333..e51b2192 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/nb.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/nb.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'nb', { copy: 'Kopier', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'nb', { cut: 'Klipp ut', cutError: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk tastatursnarveien (Ctrl/Cmd+X).', paste: 'Lim inn', + pasteNotification: 'Trykk %1 for å lime inn. Nettleseren din støtter ikke å lime inn med knappen i verktøylinjen eller høyreklikkmenyen.', pasteArea: 'Innlimingsområde', - pasteMsg: 'Vennligst lim inn i følgende boks med tastaturet (Ctrl/Cmd+V) og trykk OK.', - securityMsg: 'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må derfor lime det inn på nytt i dette vinduet.', + pasteMsg: 'Lim inn innholdet i området nedenfor og klikk OK.', title: 'Lim inn' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/nl.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/nl.js index adc08d56..e37352fe 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/nl.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/nl.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'nl', { copy: 'Kopiëren', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'nl', { cut: 'Knippen', cutError: 'De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl/Cmd+X van het toetsenbord.', paste: 'Plakken', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Plakgebied', - pasteMsg: 'Plak de tekst in het volgende vak gebruikmakend van uw toetsenbord (Ctrl/Cmd+V) en klik op OK.', - securityMsg: 'Door de beveiligingsinstellingen van uw browser is het niet mogelijk om direct vanuit het klembord in de editor te plakken. Middels opnieuw plakken in dit venster kunt u de tekst alsnog plakken in de editor.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Plakken' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/no.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/no.js index 7e3b815f..5b7054bf 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/no.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/no.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'no', { copy: 'Kopier', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'no', { cut: 'Klipp ut', cutError: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk snarveien (Ctrl/Cmd+X).', paste: 'Lim inn', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Innlimingsområde', - pasteMsg: 'Vennligst lim inn i følgende boks med tastaturet (Ctrl/Cmd+V) og trykk OK.', - securityMsg: 'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må derfor lime det inn på nytt i dette vinduet.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Lim inn' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/oc.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/oc.js new file mode 100644 index 00000000..c641de55 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/oc.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'oc', { + copy: 'Copiar', + copyError: 'Los paramètres de seguretat de vòstre navigador autorizan pas l\'editor a executar automaticament l\'operacion « Copiar ». Utilizatz l\'acorchi de clavièr a aqueste efièit (Ctrl/Cmd+C).', + cut: 'Talhar', + cutError: 'Los paramètres de seguretat de vòstre navigador autorizan pas l\'editor a executar automaticament l\'operacion « Talhar ». Utilizatz l\'acorchi de clavièr a aqueste efièit (Ctrl/Cmd+X).', + paste: 'Pegar', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING + pasteArea: 'Paste Area', // MISSING + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING + title: 'Paste' // MISSING +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/pl.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/pl.js index 7ab465f5..5fcc2909 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/pl.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/pl.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'pl', { copy: 'Kopiuj', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'pl', { cut: 'Wytnij', cutError: 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+X.', paste: 'Wklej', - pasteArea: 'Obszar wklejania', - pasteMsg: 'Wklej tekst w poniższym polu, używając skrótu klawiaturowego (Ctrl/Cmd+V), i kliknij OK.', - securityMsg: 'Zabezpieczenia przeglądarki uniemożliwiają wklejenie danych bezpośrednio do edytora. Proszę ponownie wkleić dane w tym oknie.', + pasteNotification: 'Naciśnij %1 by wkleić tekst. Twoja przeglądarka nie pozwala na wklejanie za pomocą przycisku paska narzędzi lub opcji menu kontekstowego.', + pasteArea: 'Miejsce do wklejenia treści', + pasteMsg: 'Wklej treść do obszaru poniżej i naciśnij OK.', title: 'Wklej' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/pt-br.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/pt-br.js index 15a323ed..c0806bc2 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/pt-br.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/pt-br.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'pt-br', { copy: 'Copiar', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'pt-br', { cut: 'Recortar', cutError: 'As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl/Cmd+X).', paste: 'Colar', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Área para Colar', - pasteMsg: 'Transfira o link usado na caixa usando o teclado com (Ctrl/Cmd+V) e OK.', - securityMsg: 'As configurações de segurança do seu navegador não permitem que o editor acesse os dados da área de transferência diretamente. Por favor cole o conteúdo manualmente nesta janela.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Colar' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/pt.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/pt.js index cf4f5bc2..1745f196 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/pt.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/pt.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'pt', { copy: 'Copiar', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'pt', { cut: 'Cortar', cutError: 'A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl/Cmd+X).', paste: 'Colar', - pasteArea: 'Colar Área', - pasteMsg: 'Por favor, cole dentro da seguinte caixa usando o teclado (Ctrl/Cmd+V) e prima OK.', - securityMsg: 'Devido ás definições de segurança do teu browser, o editor não pode aceder ao clipboard diretamente. É necessário que voltes a colar as informações nesta janela.', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING + pasteArea: 'Colar área', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Colar' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ro.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ro.js index 0fb7a200..4f7d3581 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ro.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ro.js @@ -1,15 +1,15 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'ro', { copy: 'Copiază', copyError: 'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de copiere. Vă rugăm folosiţi tastatura (Ctrl/Cmd+C).', - cut: 'Taie', + cut: 'Decupează', cutError: 'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de tăiere. Vă rugăm folosiţi tastatura (Ctrl/Cmd+X).', - paste: 'Adaugă', + paste: 'Adaugă din clipboard', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Suprafața de adăugare', - pasteMsg: 'Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (Ctrl/Cmd+V) şi apăsaţi OK', - securityMsg: 'Din cauza setărilor de securitate ale programului dvs. cu care navigaţi pe internet (browser), editorul nu poate accesa direct datele din clipboard. Va trebui să adăugaţi din nou datele în această fereastră.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Adaugă' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ru.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ru.js index 969a1b75..529eecfa 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ru.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ru.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'ru', { copy: 'Копировать', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'ru', { cut: 'Вырезать', cutError: 'Настройки безопасности вашего браузера не разрешают редактору выполнять операции по вырезке текста. Пожалуйста, используйте для этого клавиатуру (Ctrl/Cmd+X).', paste: 'Вставить', - pasteArea: 'Зона для вставки', - pasteMsg: 'Пожалуйста, вставьте текст в зону ниже, используя клавиатуру (Ctrl/Cmd+V) и нажмите кнопку "OK".', - securityMsg: 'Настройки безопасности вашего браузера не разрешают редактору напрямую обращаться к буферу обмена. Вы должны вставить текст снова в это окно.', + pasteNotification: 'Для вставки нажмите %1. Ваш браузер не поддерживает возможность вставки через панель инструментов или контекстное меню', + pasteArea: 'Область вставки', + pasteMsg: 'Вставьте контент в эту область и нажмите OK', title: 'Вставить' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/si.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/si.js index 2ae74f59..2e199ae5 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/si.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/si.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'si', { copy: 'පිටපත් කරන්න', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'si', { cut: 'කපාගන්න', cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', // MISSING paste: 'අලවන්න', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'අලවන ප්‍රදේශ', - pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'අලවන්න' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sk.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sk.js index 05acd5da..91bcc0d0 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sk.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sk.js @@ -1,15 +1,15 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'sk', { copy: 'Kopírovať', - copyError: 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru automaticky spustiť operáciu kopírovania. Prosím, použite na to klávesnicu (Ctrl/Cmd+C).', + copyError: 'Bezpečnostné nastavenia vášho prehliadača nedovoľujú editoru automaticky spustiť operáciu kopírovania. Použite na to klávesnicu (Ctrl/Cmd+C).', cut: 'Vystrihnúť', - cutError: 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru automaticky spustiť operáciu vystrihnutia. Prosím, použite na to klávesnicu (Ctrl/Cmd+X).', + cutError: 'Bezpečnostné nastavenia vášho prehliadača nedovoľujú editoru automaticky spustiť operáciu vystrihnutia. Použite na to klávesnicu (Ctrl/Cmd+X).', paste: 'Vložiť', + pasteNotification: 'Stlačte %1 na vloženie. Váš prehliadač nepodporuje vloženie prostredníctvom tlačidla v nástrojovej lište alebo voľby v kontextovom menu.', pasteArea: 'Miesto pre vloženie', - pasteMsg: 'Prosím, vložte nasledovný rámček použitím klávesnice (Ctrl/Cmd+V) a stlačte OK.', - securityMsg: 'Kvôli vašim bezpečnostným nastaveniam prehliadača editor nie je schopný pristupovať k vašej schránke na kopírovanie priamo. Vložte to preto do tohto okna.', + pasteMsg: 'Vložte svoj obsah do nasledujúcej oblasti a stlačte OK.', title: 'Vložiť' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sl.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sl.js index c2334e39..088403ea 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sl.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sl.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'sl', { copy: 'Kopiraj', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'sl', { cut: 'Izreži', cutError: 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+X).', paste: 'Prilepi', - pasteArea: 'Prilepi Prostor', - pasteMsg: 'Prosim prilepite v sleči okvir s pomočjo tipkovnice (Ctrl/Cmd+V) in pritisnite V redu.', - securityMsg: 'Zaradi varnostnih nastavitev vašega brskalnika urejevalnik ne more neposredno dostopati do odložišča. Vsebino odložišča ponovno prilepite v to okno.', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING + pasteArea: 'Prilepi območje', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Prilepi' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sq.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sq.js index eaec33e1..daf7a61c 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sq.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sq.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'sq', { copy: 'Kopjo', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'sq', { cut: 'Preje', cutError: 'Të dhënat e sigurisë së shfletuesit tuaj nuk lejojnë që redaktuesi automatikisht të kryej veprimin e prerjes. Ju lutemi shfrytëzoni tastierën për këtë veprim (Ctrl/Cmd+X).', paste: 'Hidhe', - pasteArea: 'Hapësira Hedhëse', - pasteMsg: 'Ju lutemi hidhni brenda kutizës në vijim duke shfrytëzuar tastierën (Ctrl/Cmd+V) dhe shtypni Mirë.', - securityMsg: 'Për shkak të dhënave të sigurisë së shfletuesit tuaj, redaktuesi nuk është në gjendje të i qaset drejtpërdrejtë të dhanve të tabelës suaj të punës. Ju duhet të hidhni atë përsëri në këtë dritare.', + pasteNotification: 'Shtyp %1 për të hedhur tekstin. Shfletuesi juaj nuk mbështetë hedhjen me pullë shiriti ose alternativën e menysë kontekstuale.', + pasteArea: 'Hapësira e Hedhjes', + pasteMsg: 'Hidh përmbajtjen brenda hapësirës më poshtë dhe shtyp OK.', title: 'Hidhe' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sr-latn.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sr-latn.js index 30238b0e..5dad3e73 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sr-latn.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sr-latn.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'sr-latn', { copy: 'Kopiraj', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'sr-latn', { cut: 'Iseci', cutError: 'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog isecanja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl/Cmd+X).', paste: 'Zalepi', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Prostor za lepljenje', - pasteMsg: 'Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu prečicu (Ctrl/Cmd+V) i da pritisnete OK.', - securityMsg: 'Zbog sigurnosnih postavki vašeg pregledača, editor nije u mogućnosti da direktno pristupi podacima u klipbordu. Potrebno je da zalepite još jednom u ovom prozoru.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Zalepi' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sr.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sr.js index 2a6d9604..673f6cf0 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sr.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sr.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'sr', { copy: 'Копирај', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'sr', { cut: 'Исеци', cutError: 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског исецања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+X).', paste: 'Залепи', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Залепи зону', - pasteMsg: 'Молимо Вас да залепите унутар доње површине користећи тастатурну пречицу (Ctrl/Cmd+V) и да притиснете OK.', - securityMsg: 'Због сигурносних подешавања претраживача, едитор не може да приступи оставу. Требате да га поново залепите у овом прозору.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Залепи' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sv.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sv.js index 5b9489b6..1307571a 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sv.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/sv.js @@ -1,15 +1,15 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'sv', { copy: 'Kopiera', - copyError: 'Säkerhetsinställningar i Er webbläsare tillåter inte åtgärden kopiera. Använd (Ctrl/Cmd+C) istället.', + copyError: 'Säkerhetsinställningar i din webbläsare tillåter inte åtgärden kopiera. Använd (Ctrl/Cmd+C) istället.', cut: 'Klipp ut', - cutError: 'Säkerhetsinställningar i Er webbläsare tillåter inte åtgärden klipp ut. Använd (Ctrl/Cmd+X) istället.', + cutError: 'Säkerhetsinställningar i din webbläsare tillåter inte åtgärden klipp ut. Använd (Ctrl/Cmd+X) istället.', paste: 'Klistra in', - pasteArea: 'Paste Area', - pasteMsg: 'Var god och klistra in Er text i rutan nedan genom att använda (Ctrl/Cmd+V) klicka sen på OK.', - securityMsg: 'På grund av din webbläsares säkerhetsinställningar kan verktyget inte få åtkomst till urklippsdatan. Var god och använd detta fönster istället.', + pasteNotification: 'Tryck på %1 för att klistra in. Din webbläsare stödjer inte inklistring via verktygsfältet eller snabbmenyn.', + pasteArea: 'Inklistringsområde', + pasteMsg: 'Klistra in ditt innehåll i området nedan och tryck på OK.', title: 'Klistra in' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/th.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/th.js index 111bf900..81ac5040 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/th.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/th.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'th', { copy: 'สำเนา', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'th', { cut: 'ตัด', cutError: 'ไม่สามารถตัดข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว X พร้อมกัน).', paste: 'วาง', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Paste Area', // MISSING - pasteMsg: 'กรุณาใช้คีย์บอร์ดเท่านั้น โดยกดปุ๋ม (Ctrl/Cmd และ V)พร้อมๆกัน และกด OK.', - securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'วาง' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/tr.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/tr.js index 739bd50f..73f1cb3a 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/tr.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/tr.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'tr', { copy: 'Kopyala', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'tr', { cut: 'Kes', cutError: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kesme işlemine izin vermiyor. İşlem için (Ctrl/Cmd+X) tuşlarını kullanın.', paste: 'Yapıştır', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Yapıştırma Alanı', - pasteMsg: 'Lütfen aşağıdaki kutunun içine yapıştırın. (Ctrl/Cmd+V) ve Tamam butonunu tıklayın.', - securityMsg: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin direkt olarak panoya erişimine izin vermiyor. Bu pencere içine tekrar yapıştırmalısınız..', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Yapıştır' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/tt.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/tt.js new file mode 100644 index 00000000..1ad0db14 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/tt.js @@ -0,0 +1,15 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'clipboard', 'tt', { + copy: 'Күчермәләү', + copyError: 'Браузерыгызның иминлек үзлекләре автоматик рәвештә күчермәләү үтәүне тыя. Тиз төймәләрне (Ctrl/Cmd+C) кулланыгыз.', + cut: 'Кисеп алу', + cutError: 'Браузерыгызның иминлек үзлекләре автоматик рәвештә күчермәләү үтәүне тыя. Тиз төймәләрне (Ctrl/Cmd+C) кулланыгыз.', + paste: 'Өстәү', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING + pasteArea: 'Өстәү мәйданы', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING + title: 'Өстәү' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ug.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ug.js index cbb3fea6..8f2acfff 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ug.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/ug.js @@ -1,15 +1,15 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'ug', { - copy: 'نەشر ھوقۇقىغا ئىگە بەلگىسى', + copy: 'كۆچۈر', copyError: 'تور كۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى تەھرىرلىگۈچنىڭ كۆچۈر مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+C) ئارقىلىق تاماملاڭ', cut: 'كەس', cutError: 'تور كۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى تەھرىرلىگۈچنىڭ كەس مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+X) ئارقىلىق تاماملاڭ', paste: 'چاپلا', + pasteNotification: 'چاپلانغىنى 1% . سىزنىڭ تور كۆرگۈچىڭىز قۇرال تەكچىسى ۋە سىيرىلما تاللاپ چاپلاش ئىقتىدارىنى قوللىمايدىكەن .', pasteArea: 'چاپلاش دائىرىسى', - pasteMsg: 'ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+V) نى ئىشلىتىپ مەزمۇننى تۆۋەندىكى رامكىغا كۆچۈرۈڭ، ئاندىن جەزملەنى بېسىڭ', - securityMsg: 'توركۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى سەۋەبىدىن بۇ تەھرىرلىگۈچ چاپلاش تاختىسىدىكى مەزمۇننى بىۋاستە زىيارەت قىلالمايدۇ، بۇ كۆزنەكتە قايتا بىر قېتىم چاپلىشىڭىز كېرەك.', + pasteMsg: 'مەزمۇنىڭىزنى تۆۋەندىكى رايونغا چاپلاپ ئاندىن OK نى بېسىڭ .', title: 'چاپلا' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/uk.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/uk.js index 5013d3d6..792226b2 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/uk.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/uk.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'uk', { copy: 'Копіювати', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'uk', { cut: 'Вирізати', cutError: 'Налаштування безпеки Вашого браузера не дозволяють редактору автоматично виконувати операції вирізування. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+X)', paste: 'Вставити', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Область вставки', - pasteMsg: 'Будь ласка, вставте інформацію з буфера обміну в цю область, користуючись комбінацією клавіш (Ctrl/Cmd+V), та натисніть OK.', - securityMsg: 'Редактор не може отримати прямий доступ до буферу обміну у зв\'язку з налаштуваннями Вашого браузера. Вам потрібно вставити інформацію в це вікно.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Вставити' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/vi.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/vi.js index 8ba0e82b..c3a6f0e3 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/vi.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/vi.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'vi', { copy: 'Sao chép', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'vi', { cut: 'Cắt', cutError: 'Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh cắt. Hãy sử dụng bàn phím cho lệnh này (Ctrl/Cmd+X).', paste: 'Dán', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: 'Khu vực dán', - pasteMsg: 'Hãy dán nội dung vào trong khung bên dưới, sử dụng tổ hợp phím (Ctrl/Cmd+V) và nhấn vào nút Đồng ý.', - securityMsg: 'Do thiết lập bảo mật của trình duyệt nên trình biên tập không thể truy cập trực tiếp vào nội dung đã sao chép. Bạn cần phải dán lại nội dung vào cửa sổ này.', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: 'Dán' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/zh-cn.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/zh-cn.js index 7f676b63..bdb46292 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/zh-cn.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/zh-cn.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'zh-cn', { copy: '复制', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'zh-cn', { cut: '剪切', cutError: '您的浏览器安全设置不允许编辑器自动执行剪切操作,请使用键盘快捷键(Ctrl/Cmd+X)来完成。', paste: '粘贴', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: '粘贴区域', - pasteMsg: '请使用键盘快捷键(Ctrl/Cmd+V)把内容粘贴到下面的方框里,再按 确定', - securityMsg: '因为您的浏览器的安全设置原因,本编辑器不能直接访问您的剪贴板内容,你需要在本窗口重新粘贴一次。', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: '粘贴' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/zh.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/zh.js index c2175ec3..f2141578 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/zh.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/lang/zh.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'clipboard', 'zh', { copy: '複製', @@ -8,8 +8,8 @@ CKEDITOR.plugins.setLang( 'clipboard', 'zh', { cut: '剪下', cutError: '瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用鏐盤快捷鍵 (Ctrl/Cmd+X) 剪下。', paste: '貼上', + pasteNotification: 'Press %1 to paste. Your browser doesn‘t support pasting with the toolbar button or context menu option.', // MISSING pasteArea: '貼上區', - pasteMsg: '請使用鍵盤快捷鍵 (Ctrl/Cmd+V) 貼到下方區域中並按下「確定」。', - securityMsg: '因為瀏覽器的安全性設定,本編輯器無法直接存取您的剪貼簿資料,請您自行在本視窗進行貼上動作。', + pasteMsg: 'Paste your content inside the area below and press OK.', // MISSING title: '貼上' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/clipboard/plugin.js b/lam/templates/lib/extra/ckeditor/plugins/clipboard/plugin.js index 3118e3ac..c0fdc0f3 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/clipboard/plugin.js +++ b/lam/templates/lib/extra/ckeditor/plugins/clipboard/plugin.js @@ -1,6 +1,6 @@ /** - * @license Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license + * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ /** @@ -9,44 +9,49 @@ */ // -// EXECUTION FLOWS: +// COPY & PASTE EXECUTION FLOWS: // -- CTRL+C -// * browser's default behaviour -// -- CTRL+V -// * listen onKey (onkeydown) -// * simulate 'beforepaste' for non-IEs on editable -// * simulate 'paste' for Fx2/Opera on editable -// * listen 'onpaste' on editable ('onbeforepaste' for IE) -// * fire 'beforePaste' on editor -// * !canceled && getClipboardDataByPastebin -// * fire 'paste' on editor -// * !canceled && fire 'afterPaste' on editor +// * if ( isCustomCopyCutSupported ) +// * dataTransfer.setData( 'text/html', getSelectedHtml ) +// * else +// * browser's default behavior // -- CTRL+X // * listen onKey (onkeydown) // * fire 'saveSnapshot' on editor -// * browser's default behaviour +// * if ( isCustomCopyCutSupported ) +// * dataTransfer.setData( 'text/html', getSelectedHtml ) +// * extractSelectedHtml // remove selected contents +// * else +// * browser's default behavior // * deferred second 'saveSnapshot' event +// -- CTRL+V +// * listen onKey (onkeydown) +// * simulate 'beforepaste' for non-IEs on editable +// * listen 'onpaste' on editable ('onbeforepaste' for IE) +// * fire 'beforePaste' on editor +// * if ( !canceled && ( htmlInDataTransfer || !external paste) && dataTransfer is not empty ) getClipboardDataByPastebin +// * fire 'paste' on editor +// * !canceled && fire 'afterPaste' on editor // -- Copy command // * tryToCutCopy // * execCommand -// * !success && alert +// * !success && notification // -- Cut command // * fixCut // * tryToCutCopy // * execCommand -// * !success && alert +// * !success && notification // -- Paste command // * fire 'paste' on editable ('beforepaste' for IE) // * !canceled && execCommand 'paste' -// * !success && fire 'pasteDialog' on editor // -- Paste from native context menu & menubar -// (Fx & Webkits are handled in 'paste' default listner. +// (Fx & Webkits are handled in 'paste' default listener. // Opera cannot be handled at all because it doesn't fire any events // Special treatment is needed for IE, for which is this part of doc) // * listen 'onpaste' // * cancel native event // * fire 'beforePaste' on editor -// * !canceled && getClipboardDataByPastebin +// * if ( !canceled && ( htmlInDataTransfer || !external paste) && dataTransfer is not empty ) getClipboardDataByPastebin // * execIECommand( 'paste' ) -> this fires another 'paste' event, so cancel it // * fire 'paste' on editor // * !canceled && fire 'afterPaste' on editor @@ -56,7 +61,7 @@ // -- Possible dataValue types: auto, text, html. // -- Possible dataValue contents: // * text (possible \n\r) -// * htmlified text (text + br,div,p - no presentional markup & attrs - depends on browser) +// * htmlified text (text + br,div,p - no presentational markup & attrs - depends on browser) // * html // -- Possible flags: // * htmlified - if true then content is a HTML even if no markup inside. This flag is set @@ -67,33 +72,154 @@ // * content: html -> filter, set type: html // -- Type: text: // * content: htmlified text -> filter, unify text markup -// * content: html -> filter, strip presentional markup, unify text markup +// * content: html -> filter, strip presentational markup, unify text markup // -- Type: html: // * content: htmlified text -> filter, unify text markup // * content: html -> filter // // -- Phases: +// * if dataValue is empty copy data from dataTransfer to dataValue (priority 1) // * filtering (priorities 3-5) - e.g. pastefromword filters // * content type sniffing (priority 6) // * markup transformations for text (priority 6) // +// DRAG & DROP EXECUTION FLOWS: +// -- Drag +// * save to the global object: +// * drag timestamp (with 'cke-' prefix), +// * selected html, +// * drag range, +// * editor instance. +// * put drag timestamp into event.dataTransfer.text +// -- Drop +// * if events text == saved timestamp && editor == saved editor +// internal drag & drop occurred +// * getRangeAtDropPosition +// * create bookmarks for drag and drop ranges starting from the end of the document +// * dragRange.deleteContents() +// * fire 'paste' with saved html and drop range +// * if events text == saved timestamp && editor != saved editor +// cross editor drag & drop occurred +// * getRangeAtDropPosition +// * fire 'paste' with saved html +// * dragRange.deleteContents() +// * FF: refreshCursor on afterPaste +// * if events text != saved timestamp +// drop form external source occurred +// * getRangeAtDropPosition +// * if event contains html data then fire 'paste' with html +// * else if event contains text data then fire 'paste' with encoded text +// * FF: refreshCursor on afterPaste 'use strict'; ( function() { + var clipboardIdDataType; + // Register the plugin. CKEDITOR.plugins.add( 'clipboard', { - requires: 'dialog', - lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% + requires: 'dialog,notification,toolbar', + // jscs:disable maximumLineLength + 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% + // jscs:enable maximumLineLength icons: 'copy,copy-rtl,cut,cut-rtl,paste,paste-rtl', // %REMOVE_LINE_CORE% hidpi: true, // %REMOVE_LINE_CORE% init: function( editor ) { - var textificationFilter; + var filterType, + filtersFactory = filtersFactoryFactory(); - initClipboard( editor ); + if ( editor.config.forcePasteAsPlainText ) { + filterType = 'plain-text'; + } else if ( editor.config.pasteFilter ) { + filterType = editor.config.pasteFilter; + } + // On Webkit the pasteFilter defaults 'semantic-content' because pasted data is so terrible + // that it must be always filtered. + else if ( CKEDITOR.env.webkit && !( 'pasteFilter' in editor.config ) ) { + filterType = 'semantic-content'; + } + + editor.pasteFilter = filtersFactory.get( filterType ); + + initPasteClipboard( editor ); + initDragDrop( editor ); CKEDITOR.dialog.add( 'paste', CKEDITOR.getUrl( this.path + 'dialogs/paste.js' ) ); + // Convert image file (if present) to base64 string for Firefox. Do it as the first + // step as the conversion is asynchronous and should hold all further paste processing. + if ( CKEDITOR.env.gecko ) { + var supportedImageTypes = [ 'image/png', 'image/jpeg', 'image/gif' ], + latestId; + + editor.on( 'paste', function( evt ) { + var dataObj = evt.data, + data = dataObj.dataValue, + dataTransfer = dataObj.dataTransfer; + + // If data empty check for image content inside data transfer. https://dev.ckeditor.com/ticket/16705 + if ( !data && dataObj.method == 'paste' && dataTransfer && dataTransfer.getFilesCount() == 1 && latestId != dataTransfer.id ) { + var file = dataTransfer.getFile( 0 ); + + if ( CKEDITOR.tools.indexOf( supportedImageTypes, file.type ) != -1 ) { + var fileReader = new FileReader(); + + // Convert image file to img tag with base64 image. + fileReader.addEventListener( 'load', function() { + evt.data.dataValue = ''; + editor.fire( 'paste', evt.data ); + }, false ); + + // Proceed with normal flow if reading file was aborted. + fileReader.addEventListener( 'abort', function() { + editor.fire( 'paste', evt.data ); + }, false ); + + // Proceed with normal flow if reading file failed. + fileReader.addEventListener( 'error', function() { + editor.fire( 'paste', evt.data ); + }, false ); + + fileReader.readAsDataURL( file ); + + latestId = dataObj.dataTransfer.id; + + evt.stop(); + } + } + }, null, null, 1 ); + } + + editor.on( 'paste', function( evt ) { + // Init `dataTransfer` if `paste` event was fired without it, so it will be always available. + if ( !evt.data.dataTransfer ) { + evt.data.dataTransfer = new CKEDITOR.plugins.clipboard.dataTransfer(); + } + + // If dataValue is already set (manually or by paste bin), so do not override it. + if ( evt.data.dataValue ) { + return; + } + + var dataTransfer = evt.data.dataTransfer, + // IE support only text data and throws exception if we try to get html data. + // This html data object may also be empty if we drag content of the textarea. + value = dataTransfer.getData( 'text/html' ); + + if ( value ) { + evt.data.dataValue = value; + evt.data.type = 'html'; + } else { + // Try to get text data otherwise. + value = dataTransfer.getData( 'text/plain' ); + + if ( value ) { + evt.data.dataValue = editor.editable().transformPlainTextToHtml( value ); + evt.data.type = 'text'; + } + } + }, null, null, 1 ); + editor.on( 'paste', function( evt ) { var data = evt.data.dataValue, blockElements = CKEDITOR.dtd.$block; @@ -107,11 +233,12 @@ // Strip around white-spaces when not in forced 'html' content type. // This spans are created only when pasting plain text into Webkit, // but for safety reasons remove them always. - if ( evt.data.type != 'html' ) + if ( evt.data.type != 'html' ) { data = data.replace( /]*>([^<]*)<\/span>/gi, function( all, spaces ) { - // Replace tabs with 4 spaces like Fx does. - return spaces.replace( /\t/g, '    ' ); - } ); + // Replace tabs with 4 spaces like Fx does. + return spaces.replace( /\t/g, '    ' ); + } ); + } // This br is produced only when copying & pasting HTML content. if ( data.indexOf( '
' ) > -1 ) { @@ -124,14 +251,14 @@ data = data.replace( /(<[^>]+) class="Apple-[^"]*"/gi, '$1' ); } - // Strip editable that was copied from inside. (#9534) + // Strip editable that was copied from inside. (https://dev.ckeditor.com/ticket/9534) if ( data.match( /^<[^<]+cke_(editable|contents)/i ) ) { var tmp, editable_wrapper, wrapper = new CKEDITOR.dom.element( 'div' ); wrapper.setHtml( data ); - // Verify for sure and check for nested editor UI parts. (#9675) + // Verify for sure and check for nested editor UI parts. (https://dev.ckeditor.com/ticket/9675) while ( wrapper.getChildCount() == 1 && ( tmp = wrapper.getFirst() ) && tmp.type == CKEDITOR.NODE_ELEMENT && // Make sure first-child is element. @@ -173,34 +300,50 @@ editor.on( 'paste', function( evt ) { var dataObj = evt.data, - type = dataObj.type, + type = editor._.nextPasteType || dataObj.type, data = dataObj.dataValue, trueType, // Default is 'html'. - defaultType = editor.config.clipboard_defaultContentType || 'html'; + defaultType = editor.config.clipboard_defaultContentType || 'html', + transferType = dataObj.dataTransfer.getTransferType( editor ); // If forced type is 'html' we don't need to know true data type. - if ( type == 'html' || dataObj.preSniffing == 'html' ) + if ( type == 'html' || dataObj.preSniffing == 'html' ) { trueType = 'html'; - else + } else { trueType = recogniseContentType( data ); - - // Unify text markup. - if ( trueType == 'htmlifiedtext' ) - data = htmlifiedTextHtmlification( editor.config, data ); - // Strip presentional markup & unify text markup. - else if ( type == 'text' && trueType == 'html' ) { - // Init filter only if needed and cache it. - data = htmlTextification( editor.config, data, textificationFilter || ( textificationFilter = getTextificationFilter( editor ) ) ); } - if ( dataObj.startsWithEOL ) - data = '
' + data; - if ( dataObj.endsWithEOL ) - data += '
'; + delete editor._.nextPasteType; - if ( type == 'auto' ) + // Unify text markup. + if ( trueType == 'htmlifiedtext' ) { + data = htmlifiedTextHtmlification( editor.config, data ); + } + + // Strip presentational markup & unify text markup. + // Forced plain text (dialog or forcePAPT). + // Note: we do not check dontFilter option in this case, because forcePAPT was implemented + // before pasteFilter and pasteFilter is automatically used on Webkit&Blink since 4.5, so + // forcePAPT should have priority as it had before 4.5. + if ( type == 'text' && trueType == 'html' ) { + data = filterContent( editor, data, filtersFactory.get( 'plain-text' ) ); + } + // External paste and pasteFilter exists and filtering isn't disabled. + else if ( transferType == CKEDITOR.DATA_TRANSFER_EXTERNAL && editor.pasteFilter && !dataObj.dontFilter ) { + data = filterContent( editor, data, editor.pasteFilter ); + } + + if ( dataObj.startsWithEOL ) { + data = '
' + data; + } + if ( dataObj.endsWithEOL ) { + data += '
'; + } + + if ( type == 'auto' ) { type = ( trueType == 'html' || defaultType == 'html' ) ? 'html' : 'text'; + } dataObj.type = type; dataObj.dataValue = data; @@ -213,19 +356,21 @@ // events chain. editor.on( 'paste', function( evt ) { var data = evt.data; + if ( data.dataValue ) { + editor.insertHtml( data.dataValue, data.type, data.range ); - editor.insertHtml( data.dataValue, data.type ); - - // Deferr 'afterPaste' so all other listeners for 'paste' will be fired first. - setTimeout( function() { - editor.fire( 'afterPaste' ); - }, 0 ); + // Defer 'afterPaste' so all other listeners for 'paste' will be fired first. + // Fire afterPaste only if paste inserted some HTML. + setTimeout( function() { + editor.fire( 'afterPaste' ); + }, 0 ); + } }, null, null, 1000 ); editor.on( 'pasteDialog', function( evt ) { // TODO it's possible that this setTimeout is not needed any more, // because of changes introduced in the same commit as this comment. - // Editor.getClipboardData adds listner to the dialog's events which are + // Editor.getClipboardData adds listener to the dialog's events which are // fired after a while (not like 'showDialog'). setTimeout( function() { // Open default paste dialog. @@ -235,66 +380,93 @@ } } ); - function initClipboard( editor ) { - var preventBeforePasteEvent = 0, + function firePasteEvents( editor, data, withBeforePaste ) { + if ( !data.type ) { + data.type = 'auto'; + } + + if ( withBeforePaste ) { + // Fire 'beforePaste' event so clipboard flavor get customized + // by other plugins. + if ( editor.fire( 'beforePaste', data ) === false ) + return false; // Event canceled + } + + // Do not fire paste if there is no data (dataValue and dataTranfser are empty). + // This check should be done after firing 'beforePaste' because for native paste + // 'beforePaste' is by default fired even for empty clipboard. + if ( !data.dataValue && data.dataTransfer.isEmpty() ) { + return false; + } + + if ( !data.dataValue ) { + data.dataValue = ''; + } + + // Because of FF bug we need to use this hack, otherwise cursor is hidden + // or it is not possible to move it (https://dev.ckeditor.com/ticket/12420). + // Also, check that editor.toolbox exists, because the toolbar plugin might not be loaded (https://dev.ckeditor.com/ticket/13305). + if ( CKEDITOR.env.gecko && data.method == 'drop' && editor.toolbox ) { + editor.once( 'afterPaste', function() { + editor.toolbox.focus(); + } ); + } + + return editor.fire( 'paste', data ); + } + + function initPasteClipboard( editor ) { + var clipboard = CKEDITOR.plugins.clipboard, + preventBeforePasteEvent = 0, preventPasteEvent = 0, - inReadOnly = 0, - // Safari doesn't like 'beforepaste' event - it sometimes doesn't - // properly handles ctrl+c. Probably some race-condition between events. - // Chrome and Firefox works well with both events, so better to use 'paste' - // which will handle pasting from e.g. browsers' menu bars. - // IE7/8 doesn't like 'paste' event for which it's throwing random errors. - mainPasteEvent = CKEDITOR.env.ie ? 'beforepaste' : 'paste'; + inReadOnly = 0; addListeners(); addButtonsCommands(); /** - * Gets clipboard data by directly accessing the clipboard (IE only) or opening paste dialog. + * Gets clipboard data by directly accessing the clipboard (IE only) or opening the paste dialog window. * - * editor.getClipboardData( { title: 'Get my data' }, function( data ) { + * editor.getClipboardData( function( data ) { * if ( data ) * alert( data.type + ' ' + data.dataValue ); * } ); * * @member CKEDITOR.editor - * @param {Object} options - * @param {String} [options.title] Title of paste dialog. - * @param {Function} callback Function that will be executed with `data.type` and `data.dataValue` - * or `null` if none of the capturing method succeeded. + * @param {Function/Object} callbackOrOptions For function, see the `callback` parameter documentation. The object was used before 4.7.0 with the `title` property, to set the paste dialog's title. + * @param {Function} callback A function that will be executed with the `data` property of the + * {@link CKEDITOR.editor#event-paste paste event} or `null` if none of the capturing methods succeeded. + * Since 4.7.0 the `callback` should be provided as a first argument, just like in the example above. This parameter will be removed in + * an upcoming major release. */ - editor.getClipboardData = function( options, callback ) { + editor.getClipboardData = function( callbackOrOptions, callback ) { var beforePasteNotCanceled = false, - dataType = 'auto', - dialogCommited = false; + dataType = 'auto'; // Options are optional - args shift. if ( !callback ) { - callback = options; - options = null; + callback = callbackOrOptions; + callbackOrOptions = null; } + // Listen at the end of listeners chain to see if event wasn't canceled + // and to retrieve modified data.type. + editor.on( 'beforePaste', onBeforePaste, null, null, 1000 ); + // Listen with maximum priority to handle content before everyone else. // This callback will handle paste event that will be fired if direct // access to the clipboard succeed in IE. editor.on( 'paste', onPaste, null, null, 0 ); - // Listen at the end of listeners chain to see if event wasn't canceled - // and to retrieve modified data.type. - editor.on( 'beforePaste', onBeforePaste, null, null, 1000 ); - - // getClipboardDataDirectly() will fire 'beforePaste' synchronously, so we can - // check if it was canceled and if any listener modified data.type. - // If command didn't succeed (only IE allows to access clipboard and only if - // user agrees) open and handle paste dialog. + // user agrees) invoke callback with null, meaning that paste is not blocked. if ( getClipboardDataDirectly() === false ) { // Direct access to the clipboard wasn't successful so remove listener. editor.removeListener( 'paste', onPaste ); // If beforePaste was canceled do not open dialog. // Add listeners only if dialog really opened. 'pasteDialog' can be canceled. - if ( beforePasteNotCanceled && editor.fire( 'pasteDialog', onDialogOpen ) ) { + if ( editor._.forcePasteDialog && beforePasteNotCanceled && editor.fire( 'pasteDialog' ) ) { editor.on( 'pasteDialogCommit', onDialogCommit ); // 'dialogHide' will be fired after 'pasteDialogCommit'. @@ -302,15 +474,14 @@ evt.removeListener(); evt.data.removeListener( 'pasteDialogCommit', onDialogCommit ); - // Because Opera has to wait a while in pasteDialog we have to wait here. - setTimeout( function() { - // Notify even if user canceled dialog (clicked 'cancel', ESC, etc). - if ( !dialogCommited ) - callback( null ); - }, 10 ); + // Notify even if user canceled dialog (clicked 'cancel', ESC, etc). + if ( !evt.data._.committed ) { + callback( null ); + } } ); - } else + } else { callback( null ); + } } function onPaste( evt ) { @@ -330,12 +501,13 @@ // Cancel pasteDialogCommit so paste dialog won't automatically fire // 'paste' evt by itself. evt.cancel(); - dialogCommited = true; - callback( { type: dataType, dataValue: evt.data } ); - } - function onDialogOpen() { - this.customTitle = ( options && options.title ); + callback( { + type: dataType, + dataValue: evt.data.dataValue, + dataTransfer: evt.data.dataTransfer, + method: 'paste' + } ); } }; @@ -344,6 +516,12 @@ addButtonCommand( 'Copy', 'copy', createCutCopyCmd( 'copy' ), 20, 4 ); addButtonCommand( 'Paste', 'paste', createPasteCmd(), 30, 8 ); + // Force adding touchend handler to paste button (#595). + if ( !editor._.pasteButtons ) { + editor._.pasteButtons = []; + } + editor._.pasteButtons.push( 'Paste' ); + function addButtonCommand( buttonName, commandName, command, toolbarOrder, ctxMenuOrder ) { var lang = editor.lang.clipboard[ commandName ]; @@ -368,7 +546,7 @@ function addListeners() { editor.on( 'key', onKey ); - editor.on( 'contentDom', addListenersToEditable ); + editor.on( 'contentDom', addPasteListenersToEditable ); // For improved performance, we're checking the readOnly state on selectionChange instead of hooking a key event for that. editor.on( 'selectionChange', function( evt ) { @@ -386,19 +564,88 @@ paste: stateFromNamedCommand( 'paste' ) }; } ); + + // Adds 'touchend' integration with context menu paste item (#1347). + var pasteListener = null; + editor.on( 'menuShow', function() { + // Remove previous listener. + if ( pasteListener ) { + pasteListener.removeListener(); + pasteListener = null; + } + + // Attach new 'touchend' listeners to context menu paste items. + var item = editor.contextMenu.findItemByCommandName( 'paste' ); + if ( item && item.element ) { + pasteListener = item.element.on( 'touchend', function() { + editor._.forcePasteDialog = true; + } ); + } + } ); + } + + // Detect if any of paste buttons was touched. In such case we assume that user is using + // touch device and force displaying paste dialog (#595). + if ( editor.ui.addButton ) { + // Waiting for editor instance to be ready seems to be the most reliable way to + // be sure that paste buttons are already created. + editor.once( 'instanceReady', function() { + if ( !editor._.pasteButtons ) { + return; + } + + CKEDITOR.tools.array.forEach( editor._.pasteButtons, function( name ) { + var pasteButton = editor.ui.get( name ); + // Check if button was not removed by `removeButtons` config. + if ( pasteButton ) { + var buttonElement = CKEDITOR.document.getById( pasteButton._.id ); + + buttonElement.on( 'touchend', function() { + editor._.forcePasteDialog = true; + } ); + } + } ); + } ); } } // Add events listeners to editable. - function addListenersToEditable() { + function addPasteListenersToEditable() { var editable = editor.editable(); + if ( CKEDITOR.plugins.clipboard.isCustomCopyCutSupported ) { + var initOnCopyCut = function( evt ) { + // There shouldn't be anything to copy/cut when selection is collapsed (#869). + if ( editor.getSelection().isCollapsed() ) { + return; + } + + // If user tries to cut in read-only editor, we must prevent default action (https://dev.ckeditor.com/ticket/13872). + if ( !editor.readOnly || evt.name != 'cut' ) { + clipboard.initPasteDataTransfer( evt, editor ); + } + evt.data.preventDefault(); + }; + + editable.on( 'copy', initOnCopyCut ); + editable.on( 'cut', initOnCopyCut ); + + // Delete content with the low priority so one can overwrite cut data. + editable.on( 'cut', function() { + // If user tries to cut in read-only editor, we must prevent default action. (https://dev.ckeditor.com/ticket/13872) + if ( !editor.readOnly ) { + editor.extractSelectedHtml(); + } + }, null, null, 999 ); + } + // We'll be catching all pasted content in one line, regardless of whether // it's introduced by a document command execution (e.g. toolbar buttons) or // user paste behaviors (e.g. CTRL+V). - editable.on( mainPasteEvent, function( evt ) { - if ( CKEDITOR.env.ie && preventBeforePasteEvent ) + editable.on( clipboard.mainPasteEvent, function( evt ) { + if ( clipboard.mainPasteEvent == 'beforepaste' && preventBeforePasteEvent ) { return; + } // If you've just asked yourself why preventPasteEventNow() is not here, but // in listener for CTRL+V and exec method of 'paste' command @@ -446,32 +693,34 @@ // special flag, other than preventPasteEvent. But we still would have to // have preventPasteEvent for the second event fired by execIECommand. // Code would be longer and not cleaner. - CKEDITOR.env.ie && editable.on( 'paste', function( evt ) { - if ( preventPasteEvent ) - return; - // Cancel next 'paste' event fired by execIECommand( 'paste' ) - // at the end of this callback. - preventPasteEventNow(); + if ( clipboard.mainPasteEvent == 'beforepaste' ) { + editable.on( 'paste', function( evt ) { + if ( preventPasteEvent ) { + return; + } - // Prevent native paste. - evt.data.preventDefault(); + // Cancel next 'paste' event fired by execIECommand( 'paste' ) + // at the end of this callback. + preventPasteEventNow(); - pasteDataFromClipboard( evt ); + // Prevent native paste. + evt.data.preventDefault(); - // Force IE to paste content into pastebin so pasteDataFromClipboard will work. - if ( !execIECommand( 'paste' ) ) - editor.openDialog( 'paste' ); - } ); + pasteDataFromClipboard( evt ); - // [IE] Dismiss the (wrong) 'beforepaste' event fired on context/toolbar menu open. (#7953) - if ( CKEDITOR.env.ie ) { + // Force IE to paste content into pastebin so pasteDataFromClipboard will work. + execIECommand( 'paste' ); + } ); + + // If mainPasteEvent is 'beforePaste' (IE before Edge), + // dismiss the (wrong) 'beforepaste' event fired on context/toolbar menu open. (https://dev.ckeditor.com/ticket/7953) editable.on( 'contextmenu', preventBeforePasteEventNow, null, null, 0 ); editable.on( 'beforepaste', function( evt ) { - if ( evt.data && !evt.data.$.ctrlKey ) + // Do not prevent event on CTRL+V and SHIFT+INS because it blocks paste (https://dev.ckeditor.com/ticket/11970). + if ( evt.data && !evt.data.$.ctrlKey && !evt.data.$.shiftKey ) preventBeforePasteEventNow(); }, null, null, 0 ); - } editable.on( 'beforecut', function() { @@ -482,7 +731,7 @@ // Use editor.document instead of editable in non-IEs for observing mouseup // since editable won't fire the event if selection process started within - // iframe and ended out of the editor (#9851). + // iframe and ended out of the editor (https://dev.ckeditor.com/ticket/9851). editable.attachListener( CKEDITOR.env.ie ? editable : editor.document.getDocumentElement(), 'mouseup', function() { mouseupTimeout = setTimeout( function() { setToolbarStates(); @@ -491,7 +740,7 @@ // Make sure that deferred mouseup callback isn't executed after editor instance // had been destroyed. This may happen when editor.destroy() is called in parallel - // with mouseup event (i.e. a button with onclick callback) (#10219). + // with mouseup event (i.e. a button with onclick callback) (https://dev.ckeditor.com/ticket/10219). editor.on( 'destroy', function() { clearTimeout( mouseupTimeout ); } ); @@ -505,7 +754,8 @@ type: type, canUndo: type == 'cut', // We can't undo copy to clipboard. startDisabled: true, - exec: function( data ) { + fakeKeystroke: type == 'cut' ? CKEDITOR.CTRL + 88 /*X*/ : CKEDITOR.CTRL + 67 /*C*/, + exec: function() { // Attempts to execute the Cut and Copy operations. function tryToCutCopy( type ) { if ( CKEDITOR.env.ie ) @@ -524,8 +774,10 @@ var success = tryToCutCopy( this.type ); - if ( !success ) - alert( editor.lang.clipboard[ this.type + 'Error' ] ); // Show cutError or copyError. + if ( !success ) { + // Show cutError or copyError. + editor.showNotification( editor.lang.clipboard[ this.type + 'Error' ] ); // jshint ignore:line + } return success; } @@ -537,24 +789,77 @@ // Snapshots are done manually by editable.insertXXX methods. canUndo: false, async: true, + fakeKeystroke: CKEDITOR.CTRL + 86 /*V*/, + /** + * The default implementation of the paste command. + * + * @private + * @param {CKEDITOR.editor} editor An instance of the editor where the command is being executed. + * @param {Object/String} data If `data` is a string, then it is considered content that is being pasted. + * Otherwise it is treated as an object with options. + * @param {Boolean/String} [data.notification=true] Content for a notification shown after an unsuccessful + * paste attempt. If `false`, the notification will not be displayed. This parameter was added in 4.7.0. + * @param {String} [data.type='html'] The type of pasted content. There are two allowed values: + * * 'html' + * * 'text' + * @param {String/Object} data.dataValue Content being pasted. If this parameter is an object, it + * is supposed to be a `data` property of the {@link CKEDITOR.editor#paste} event. + * @param {CKEDITOR.plugins.clipboard.dataTransfer} data.dataTransfer Data transfer instance connected + * with the current paste action. + * @member CKEDITOR.editor.commands.paste + */ exec: function( editor, data ) { - var fire = function( data, withBeforePaste ) { - data && firePasteEvents( data.type, data.dataValue, !!withBeforePaste ); + data = typeof data !== 'undefined' && data !== null ? data : {}; - editor.fire( 'afterCommandExec', { - name: 'paste', - command: cmd, - returnValue: !!data - } ); - }, - cmd = this; + var cmd = this, + notification = typeof data.notification !== 'undefined' ? data.notification : true, + forcedType = data.type, + keystroke = CKEDITOR.tools.keystrokeToString( editor.lang.common.keyboard, + editor.getCommandKeystroke( this ) ), + msg = typeof notification === 'string' ? notification : editor.lang.clipboard.pasteNotification + .replace( /%1/, '' + keystroke.display + '' ), + pastedContent = typeof data === 'string' ? data : data.dataValue; - // Check data precisely - don't open dialog on empty string. - if ( typeof data == 'string' ) - fire( { type: 'auto', dataValue: data }, 1 ); - else - editor.getClipboardData( fire ); + function callback( data, withBeforePaste ) { + withBeforePaste = typeof withBeforePaste !== 'undefined' ? withBeforePaste : true; + + if ( data ) { + data.method = 'paste'; + + if ( !data.dataTransfer ) { + data.dataTransfer = clipboard.initPasteDataTransfer(); + } + + firePasteEvents( editor, data, withBeforePaste ); + } else if ( notification && !editor._.forcePasteDialog ) { + editor.showNotification( msg, 'info', editor.config.clipboard_notificationDuration ); + } + + // Reset dialog mode (#595). + editor._.forcePasteDialog = false; + + editor.fire( 'afterCommandExec', { + name: 'paste', + command: cmd, + returnValue: !!data + } ); + } + + // Force type for the next paste. Do not force if `config.forcePasteAsPlainText` set to true or 'allow-word' (#1013). + if ( forcedType && editor.config.forcePasteAsPlainText !== true && editor.config.forcePasteAsPlainText !== 'allow-word' ) { + editor._.nextPasteType = forcedType; + } else { + delete editor._.nextPasteType; + } + + if ( typeof pastedContent === 'string' ) { + callback( { + dataValue: pastedContent + } ); + } else { + editor.getClipboardData( callback ); + } } }; } @@ -563,7 +868,7 @@ preventPasteEvent = 1; // For safety reason we should wait longer than 0/1ms. // We don't know how long execution of quite complex getClipboardData will take - // and in for example 'paste' listner execCommand() (which fires 'paste') is called + // and in for example 'paste' listener execCommand() (which fires 'paste') is called // after getClipboardData finishes. // Luckily, it's impossible to immediately fire another 'paste' event we want to handle, // because we only handle there native context menu and menu bar. @@ -596,37 +901,19 @@ // the command to execute. body.on( command, onExec ); - // IE6/7: document.execCommand has problem to paste into positioned element. - ( CKEDITOR.env.version > 7 ? doc.$ : doc.$.selection.createRange() )[ 'execCommand' ]( command ); + // IE7: document.execCommand has problem to paste into positioned element. + if ( CKEDITOR.env.version > 7 ) { + doc.$.execCommand( command ); + } else { + doc.$.selection.createRange().execCommand( command ); + } body.removeListener( command, onExec ); return enabled; } - function firePasteEvents( type, data, withBeforePaste ) { - var eventData = { type: type }; - - if ( withBeforePaste ) { - // Fire 'beforePaste' event so clipboard flavor get customized - // by other plugins. - if ( editor.fire( 'beforePaste', eventData ) === false ) - return false; // Event canceled - } - - // The very last guard to make sure the paste has successfully happened. - // This check should be done after firing 'beforePaste' because for native paste - // 'beforePaste' is by default fired even for empty clipboard. - if ( !data ) - return false; - - // Reuse eventData.type because the default one could be changed by beforePaste listeners. - eventData.dataValue = data; - - return editor.fire( 'paste', eventData ); - } - - // Cutting off control type element in IE standards breaks the selection entirely. (#4881) + // Cutting off control type element in IE standards breaks the selection entirely. (https://dev.ckeditor.com/ticket/4881) function fixCut() { if ( !CKEDITOR.env.ie || CKEDITOR.env.quirks ) return; @@ -661,16 +948,24 @@ cancel = function( evt ) { evt.cancel(); }, - ff3x = CKEDITOR.env.gecko && CKEDITOR.env.version <= 10902, blurListener; - // Avoid recursions on 'paste' event or consequent paste too fast. (#5730) + // Avoid recursions on 'paste' event or consequent paste too fast. (https://dev.ckeditor.com/ticket/5730) if ( doc.getById( 'cke_pastebin' ) ) return; var sel = editor.getSelection(); var bms = sel.createBookmarks(); + // https://dev.ckeditor.com/ticket/11384. On IE9+ we use native selectionchange (i.e. editor#selectionCheck) to cache the most + // recent selection which we then lock on editable blur. See selection.js for more info. + // selectionchange fired before getClipboardDataByPastebin() cached selection + // before creating bookmark (cached selection will be invalid, because bookmarks modified the DOM), + // so we need to fire selectionchange one more time, to store current seleciton. + // Selection will be locked when we focus pastebin. + if ( CKEDITOR.env.ie ) + sel.root.fire( 'selectionchange' ); + // Create container to paste into. // For rich content we prefer to use "body" since it holds // the least possibility to be splitted by pasted content, while this may @@ -681,65 +976,59 @@ // what is indistinguishable from pasted
(copying
in Opera isn't possible, // but it can be copied from other browser). var pastebin = new CKEDITOR.dom.element( - ( CKEDITOR.env.webkit || editable.is( 'body' ) ) && !( CKEDITOR.env.ie || CKEDITOR.env.opera ) ? 'body' : 'div', doc ); + ( CKEDITOR.env.webkit || editable.is( 'body' ) ) && !CKEDITOR.env.ie ? 'body' : 'div', doc ); pastebin.setAttributes( { id: 'cke_pastebin', 'data-cke-temp': '1' } ); - // Append bogus to prevent Opera from doing this. (#9522) - if ( CKEDITOR.env.opera ) - pastebin.appendBogus(); - var containerOffset = 0, offsetParent, win = doc.getWindow(); - // Seems to be the only way to avoid page scroll in Fx 3.x. - if ( ff3x ) { - pastebin.insertAfter( bms[ 0 ].startNode ); - pastebin.setStyle( 'display', 'inline' ); - } else { - if ( CKEDITOR.env.webkit ) { - // It's better to paste close to the real paste destination, so inherited styles - // (which Webkits will try to compensate by styling span) differs less from the destination's one. - editable.append( pastebin ); - // Style pastebin like .cke_editable, to minimize differences between origin and destination. (#9754) - pastebin.addClass( 'cke_editable' ); + if ( CKEDITOR.env.webkit ) { + // It's better to paste close to the real paste destination, so inherited styles + // (which Webkits will try to compensate by styling span) differs less from the destination's one. + editable.append( pastebin ); + // Style pastebin like .cke_editable, to minimize differences between origin and destination. (https://dev.ckeditor.com/ticket/9754) + pastebin.addClass( 'cke_editable' ); - // Compensate position of offsetParent. - if ( !editable.is( 'body' ) ) { - // We're not able to get offsetParent from pastebin (body element), so check whether - // its parent (editable) is positioned. - if ( editable.getComputedStyle( 'position' ) != 'static' ) - offsetParent = editable; - // And if not - safely get offsetParent from editable. - else - offsetParent = CKEDITOR.dom.element.get( editable.$.offsetParent ); + // Compensate position of offsetParent. + if ( !editable.is( 'body' ) ) { + // We're not able to get offsetParent from pastebin (body element), so check whether + // its parent (editable) is positioned. + if ( editable.getComputedStyle( 'position' ) != 'static' ) + offsetParent = editable; + // And if not - safely get offsetParent from editable. + else + offsetParent = CKEDITOR.dom.element.get( editable.$.offsetParent ); - containerOffset = offsetParent.getDocumentPosition().y; - } - } else { - // Opera and IE doesn't allow to append to html element. - editable.getAscendant( CKEDITOR.env.ie || CKEDITOR.env.opera ? 'body' : 'html', 1 ).append( pastebin ); + containerOffset = offsetParent.getDocumentPosition().y; } - - pastebin.setStyles( { - position: 'absolute', - // Position the bin at the top (+10 for safety) of viewport to avoid any subsequent document scroll. - top: ( win.getScrollPosition().y - containerOffset + 10 ) + 'px', - width: '1px', - // Caret has to fit in that height, otherwise browsers like Chrome & Opera will scroll window to show it. - // Set height equal to viewport's height - 20px (safety gaps), minimum 1px. - height: Math.max( 1, win.getViewPaneSize().height - 20 ) + 'px', - overflow: 'hidden', - // Reset styles that can mess up pastebin position. - margin: 0, - padding: 0 - } ); + } else { + // Opera and IE doesn't allow to append to html element. + editable.getAscendant( CKEDITOR.env.ie ? 'body' : 'html', 1 ).append( pastebin ); } + pastebin.setStyles( { + position: 'absolute', + // Position the bin at the top (+10 for safety) of viewport to avoid any subsequent document scroll. + top: ( win.getScrollPosition().y - containerOffset + 10 ) + 'px', + width: '1px', + // Caret has to fit in that height, otherwise browsers like Chrome & Opera will scroll window to show it. + // Set height equal to viewport's height - 20px (safety gaps), minimum 1px. + height: Math.max( 1, win.getViewPaneSize().height - 20 ) + 'px', + overflow: 'hidden', + // Reset styles that can mess up pastebin position. + margin: 0, + padding: 0 + } ); + + // Paste fails in Safari when the body tag has 'user-select: none'. (https://dev.ckeditor.com/ticket/12506) + if ( CKEDITOR.env.safari ) + pastebin.setStyles( CKEDITOR.tools.cssVendorPrefix( 'user-select', 'text' ) ); + // Check if the paste bin now establishes new editing host. var isEditingHost = pastebin.getParent().isReadOnly(); @@ -751,15 +1040,16 @@ } // Transparency is not enough since positioned non-editing host always shows // resize handler, pull it off the screen instead. - else - pastebin.setStyle( editor.config.contentsLangDirection == 'ltr' ? 'left' : 'right', '-1000px' ); + else { + pastebin.setStyle( editor.config.contentsLangDirection == 'ltr' ? 'left' : 'right', '-10000px' ); + } editor.on( 'selectionChange', cancel, null, null, 0 ); // Webkit fill fire blur on editable when moving selection to // pastebin (if body is used). Cancel it because it causes incorrect - // selection lock in case of inline editor (#10644). - // The same seems to apply to Firefox (#10787). + // selection lock in case of inline editor (https://dev.ckeditor.com/ticket/10644). + // The same seems to apply to Firefox (https://dev.ckeditor.com/ticket/10787). if ( CKEDITOR.env.webkit || CKEDITOR.env.gecko ) blurListener = editable.once( 'blur', cancel, null, null, -100 ); @@ -772,9 +1062,9 @@ // If non-native paste is executed, IE will open security alert and blur editable. // Editable will then lock selection inside itself and after accepting security alert // this selection will be restored. We overwrite stored selection, so it's restored - // in pastebin. (#9552) + // in pastebin. (https://dev.ckeditor.com/ticket/9552) if ( CKEDITOR.env.ie ) { - blurListener = editable.once( 'blur', function( evt ) { + blurListener = editable.once( 'blur', function() { editor.lockSelection( selPastebin ); } ); } @@ -784,18 +1074,18 @@ // Wait a while and grab the pasted contents. setTimeout( function() { // Restore main window's scroll position which could have been changed - // by browser in cases described in #9771. - if ( CKEDITOR.env.webkit || CKEDITOR.env.opera ) - CKEDITOR.document[ CKEDITOR.env.webkit ? 'getBody' : 'getDocumentElement' ]().$.scrollTop = scrollTop; + // by browser in cases described in https://dev.ckeditor.com/ticket/9771. + if ( CKEDITOR.env.webkit ) + CKEDITOR.document.getBody().$.scrollTop = scrollTop; // Blur will be fired only on non-native paste. In other case manually remove listener. blurListener && blurListener.removeListener(); - // Restore properly the document focus. (#8849) + // Restore properly the document focus. (https://dev.ckeditor.com/ticket/8849) if ( CKEDITOR.env.ie ) editable.focus(); - // IE7: selection must go before removing pastebin. (#8691) + // IE7: selection must go before removing pastebin. (https://dev.ckeditor.com/ticket/8691) sel.selectBookmarks( bms ); pastebin.remove(); @@ -812,41 +1102,37 @@ }, 0 ); } - // Try to get content directly from clipboard, without native event - // being fired before. In other words - synthetically get clipboard data - // if it's possible. + // Try to get content directly on IE from clipboard, without native event + // being fired before. In other words - synthetically get clipboard data, if it's possible. // mainPasteEvent will be fired, so if forced native paste: // * worked, getClipboardDataByPastebin will grab it, - // * didn't work, pastebin will be empty and editor#paste won't be fired. + // * didn't work, dataValue and dataTransfer will be empty and editor#paste won't be fired. + // Clipboard data can be accessed directly only on IEs older than Edge. + // On other browsers we should fire beforePaste event and return false. function getClipboardDataDirectly() { - if ( CKEDITOR.env.ie ) { - // Prevent IE from pasting at the begining of the document. - editor.focus(); - - // Command will be handled by 'beforepaste', but as - // execIECommand( 'paste' ) will fire also 'paste' event - // we're canceling it. - preventPasteEventNow(); - - // #9247: Lock focus to prevent IE from hiding toolbar for inline editor. - var focusManager = editor.focusManager; - focusManager.lock(); - - if ( editor.editable().fire( mainPasteEvent ) && !execIECommand( 'paste' ) ) { - focusManager.unlock(); - return false; - } - focusManager.unlock(); - } else { - try { - if ( editor.editable().fire( mainPasteEvent ) && !editor.document.$.execCommand( 'Paste', false, null ) ) - throw 0; - - } catch ( e ) { - return false; - } + if ( clipboard.mainPasteEvent == 'paste' ) { + editor.fire( 'beforePaste', { type: 'auto', method: 'paste' } ); + return false; } + // Prevent IE from pasting at the begining of the document. + editor.focus(); + + // Command will be handled by 'beforepaste', but as + // execIECommand( 'paste' ) will fire also 'paste' event + // we're canceling it. + preventPasteEventNow(); + + // https://dev.ckeditor.com/ticket/9247: Lock focus to prevent IE from hiding toolbar for inline editor. + var focusManager = editor.focusManager; + focusManager.lock(); + + if ( editor.editable().fire( clipboard.mainPasteEvent ) && !execIECommand( 'paste' ) ) { + focusManager.unlock(); + return false; + } + focusManager.unlock(); + return true; } @@ -866,12 +1152,11 @@ // by 'beforepaste'. preventPasteEventNow(); - // Simulate 'beforepaste' event for all none-IEs. - !CKEDITOR.env.ie && editable.fire( 'beforepaste' ); + // Simulate 'beforepaste' event for all browsers using 'paste' as main event. + if ( clipboard.mainPasteEvent == 'paste' ) { + editable.fire( 'beforepaste' ); + } - // Simulate 'paste' event for Opera/Firefox2. - if ( CKEDITOR.env.opera || CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 ) - editable.fire( 'paste' ); return; // Cut @@ -881,27 +1166,42 @@ editor.fire( 'saveSnapshot' ); // Save before cut setTimeout( function() { editor.fire( 'saveSnapshot' ); // Save after cut - }, 50 ); // OSX is slow (#11416). + }, 50 ); // OSX is slow (https://dev.ckeditor.com/ticket/11416). } } function pasteDataFromClipboard( evt ) { // Default type is 'auto', but can be changed by beforePaste listeners. - var eventData = { type: 'auto' }; + var eventData = { + type: 'auto', + method: 'paste', + dataTransfer: clipboard.initPasteDataTransfer( evt ) + }; + + eventData.dataTransfer.cacheData(); + // Fire 'beforePaste' event so clipboard flavor get customized by other plugins. // If 'beforePaste' is canceled continue executing getClipboardDataByPastebin and then do nothing // (do not fire 'paste', 'afterPaste' events). This way we can grab all - synthetically // and natively pasted content and prevent its insertion into editor // after canceling 'beforePaste' event. - var beforePasteNotCanceled = editor.fire( 'beforePaste', eventData ); + var beforePasteNotCanceled = editor.fire( 'beforePaste', eventData ) !== false; - getClipboardDataByPastebin( evt, function( data ) { - // Clean up. - data = data.replace( /]+data-cke-bookmark[^<]*?<\/span>/ig, '' ); + // Do not use paste bin if the browser let us get HTML or files from dataTranfer. + if ( beforePasteNotCanceled && clipboard.canClipboardApiBeTrusted( eventData.dataTransfer, editor ) ) { + evt.data.preventDefault(); + setTimeout( function() { + firePasteEvents( editor, eventData ); + }, 0 ); + } else { + getClipboardDataByPastebin( evt, function( data ) { + // Clean up. + eventData.dataValue = data.replace( /]+data-cke-bookmark[^<]*?<\/span>/ig, '' ); - // Fire remaining events (without beforePaste) - beforePasteNotCanceled && firePasteEvents( eventData.type, data, 0, 1 ); - } ); + // Fire remaining events (without beforePaste) + beforePasteNotCanceled && firePasteEvents( editor, eventData ); + } ); + } } function setToolbarStates() { @@ -945,12 +1245,13 @@ // Text and
or ( text and
in

- paragraphs can be separated by new \r\n ). if ( !data.match( /^([^<]|)*$/gi ) && !data.match( /^(

([^<]|)*<\/p>|(\r\n))*$/gi ) ) return 'html'; - } else if ( CKEDITOR.env.gecko || CKEDITOR.env.opera ) { + } else if ( CKEDITOR.env.gecko ) { // Text or
. if ( !data.match( /^([^<]|)*$/gi ) ) return 'html'; - } else + } else { return 'html'; + } return 'htmlifiedtext'; } @@ -962,7 +1263,7 @@ function repeatParagraphs( repeats ) { // Repeat blocks floor((n+1)/2) times. // Even number of repeats - add
at the beginning of last

. - return CKEDITOR.tools.repeat( '

', ~~ ( repeats / 2 ) ) + ( repeats % 2 == 1 ? '
' : '' ); + return CKEDITOR.tools.repeat( '

', ~~( repeats / 2 ) ) + ( repeats % 2 == 1 ? '
' : '' ); } // Replace adjacent white-spaces (EOLs too - Fx sometimes keeps them) with one space. @@ -1003,7 +1304,7 @@ } // Opera and Firefox and enterMode != BR. - if ( ( CKEDITOR.env.gecko || CKEDITOR.env.opera ) && config.enterMode != CKEDITOR.ENTER_BR ) { + if ( CKEDITOR.env.gecko && config.enterMode != CKEDITOR.ENTER_BR ) { // Remove bogus
- Fx generates two for one line break. // For two line breaks it still produces two , but it's better to ignore this case than the first one. if ( CKEDITOR.env.gecko ) @@ -1023,155 +1324,71 @@ return switchEnterMode( config, data ); } - // Filter can be editor dependent. - function getTextificationFilter( editor ) { - var filter = new CKEDITOR.htmlParser.filter(); + function filtersFactoryFactory() { + var filters = {}; - // Elements which creates vertical breaks (have vert margins) - took from HTML5 spec. - // http://dev.w3.org/html5/markup/Overview.html#toc - var replaceWithParaIf = { blockquote: 1, dl: 1, fieldset: 1, h1: 1, h2: 1, h3: 1, h4: 1, h5: 1, h6: 1, ol: 1, p: 1, table: 1, ul: 1 }, + function setUpTags() { + var tags = {}; - // All names except of
. - stripInlineIf = CKEDITOR.tools.extend( { br: 0 }, CKEDITOR.dtd.$inline ), - - // What's finally allowed (cke:br will be removed later). - allowedIf = { p: 1, br: 1, 'cke:br': 1 }, - - knownIf = CKEDITOR.dtd, - - // All names that will be removed (with content). - removeIf = CKEDITOR.tools.extend( { area: 1, basefont: 1, embed: 1, iframe: 1, map: 1, object: 1, param: 1 }, CKEDITOR.dtd.$nonBodyContent, CKEDITOR.dtd.$cdata ); - - var flattenTableCell = function( element ) { - delete element.name; - element.add( new CKEDITOR.htmlParser.text( ' ' ) ); - }, - // Squash adjacent headers into one.

A

B

->

A
B

- // Empty ones will be removed later. - squashHeader = function( element ) { - var next = element, - br, el; - - while ( ( next = next.next ) && next.name && next.name.match( /^h\d$/ ) ) { - // TODO shitty code - waitin' for htmlParse.element fix. - br = new CKEDITOR.htmlParser.element( 'cke:br' ); - br.isEmpty = true; - element.add( br ); - while ( ( el = next.children.shift() ) ) - element.add( el ); - } - }; - - filter.addRules( { - elements: { - h1: squashHeader, - h2: squashHeader, - h3: squashHeader, - h4: squashHeader, - h5: squashHeader, - h6: squashHeader, - - img: function( element ) { - var alt = CKEDITOR.tools.trim( element.attributes.alt || '' ), - txt = ' '; - - // Replace image with its alt if it doesn't look like an url or is empty. - if ( alt && !alt.match( /(^http|\.(jpe?g|gif|png))/i ) ) - txt = ' [' + alt + '] '; - - return new CKEDITOR.htmlParser.text( txt ); - }, - - td: flattenTableCell, - th: flattenTableCell, - - $: function( element ) { - var initialName = element.name, - br; - - // Remove entirely. - if ( removeIf[ initialName ] ) - return false; - - // Remove all attributes. - element.attributes = {}; - - // Pass brs. - if ( initialName == 'br' ) - return element; - - // Elements that we want to replace with paragraphs. - if ( replaceWithParaIf[ initialName ] ) - element.name = 'p'; - - // Elements that we want to strip (tags only, without the content). - else if ( stripInlineIf[ initialName ] ) - delete element.name; - - // Surround other known element with and strip tags. - else if ( knownIf[ initialName ] ) { - // TODO shitty code - waitin' for htmlParse.element fix. - br = new CKEDITOR.htmlParser.element( 'cke:br' ); - br.isEmpty = true; - - // Replace hrs (maybe sth else too?) with only one br. - if ( CKEDITOR.dtd.$empty[ initialName ] ) - return br; - - element.add( br, 0 ); - br = br.clone(); - br.isEmpty = true; - element.add( br ); - delete element.name; - } - - // Final cleanup - if we can still find some not allowed elements then strip their names. - if ( !allowedIf[ element.name ] ) - delete element.name; - - return element; + for ( var tag in CKEDITOR.dtd ) { + if ( tag.charAt( 0 ) != '$' && tag != 'div' && tag != 'span' ) { + tags[ tag ] = 1; } } - }, { - // Apply this filter to every element. - applyToAll: true - } ); - return filter; + return tags; + } + + function createSemanticContentFilter() { + var filter = new CKEDITOR.filter(); + + filter.allow( { + $1: { + elements: setUpTags(), + attributes: true, + styles: false, + classes: false + } + } ); + + return filter; + } + + return { + get: function( type ) { + if ( type == 'plain-text' ) { + // Does this look confusing to you? Did we forget about enter mode? + // It is a trick that let's us creating one filter for edidtor, regardless of its + // activeEnterMode (which as the name indicates can change during runtime). + // + // How does it work? + // The active enter mode is passed to the filter.applyTo method. + // The filter first marks all elements except
as disallowed and then tries to remove + // them. However, it cannot remove e.g. a

element completely, because it's a basic structural element, + // so it tries to replace it with an element created based on the active enter mode, eventually doing nothing. + // + // Now you can sleep well. + return filters.plainText || ( filters.plainText = new CKEDITOR.filter( 'br' ) ); + } else if ( type == 'semantic-content' ) { + return filters.semanticContent || ( filters.semanticContent = createSemanticContentFilter() ); + } else if ( type ) { + // Create filter based on rules (string or object). + return new CKEDITOR.filter( type ); + } + + return null; + } + }; } - function htmlTextification( config, data, filter ) { - var fragment = new CKEDITOR.htmlParser.fragment.fromHtml( data ), + function filterContent( editor, data, filter ) { + var fragment = CKEDITOR.htmlParser.fragment.fromHtml( data ), writer = new CKEDITOR.htmlParser.basicWriter(); - fragment.writeHtml( writer, filter ); - data = writer.getHtml(); + filter.applyTo( fragment, true, false, editor.activeEnterMode ); + fragment.writeHtml( writer ); - // Cleanup cke:brs. - data = data.replace( /\s*(<\/?[a-z:]+ ?\/?>)\s*/g, '$1' ) // Remove spaces around tags. - .replace( /(){2,}/g, '' ) // Join multiple adjacent cke:brs - .replace( /()(<\/?p>|
)/g, '$2' ) // Strip cke:brs adjacent to original brs or ps. - .replace( /(<\/?p>|
)()/g, '$1' ) - .replace( /<(cke:)?br( \/)?>/g, '
' ) // Finally - rename cke:brs to brs and fix
to
. - .replace( /

<\/p>/g, '' ); // Remove empty paragraphs. - - // Fix nested ps. E.g.: - //

A

B

C

D

E

F

G - //

A

B

C

D

E

F

G - var nested = 0; - data = data.replace( /<\/?p>/g, function( match ) { - if ( match == '

' ) { - if ( ++nested > 1 ) - return '

'; - } else { - if ( --nested > 0 ) - return '

'; - } - - return match; - } ).replace( /

<\/p>/g, '' ); // Step before:

->

. Fix this here. - - return switchEnterMode( config, data ); + return writer.getHtml(); } function switchEnterMode( config, data ) { @@ -1179,47 +1396,1750 @@ data = data.replace( /(<\/p>

)+/g, function( match ) { return CKEDITOR.tools.repeat( '
', match.length / 7 * 2 ); } ).replace( /<\/?p>/g, '' ); - } else if ( config.enterMode == CKEDITOR.ENTER_DIV ) + } else if ( config.enterMode == CKEDITOR.ENTER_DIV ) { data = data.replace( /<(\/)?p>/g, '<$1div>' ); + } return data; } + + function preventDefaultSetDropEffectToNone( evt ) { + evt.data.preventDefault(); + evt.data.$.dataTransfer.dropEffect = 'none'; + } + + function initDragDrop( editor ) { + var clipboard = CKEDITOR.plugins.clipboard; + + editor.on( 'contentDom', function() { + var editable = editor.editable(), + dropTarget = CKEDITOR.plugins.clipboard.getDropTarget( editor ), + top = editor.ui.space( 'top' ), + bottom = editor.ui.space( 'bottom' ); + + // -------------- DRAGOVER TOP & BOTTOM -------------- + + // Not allowing dragging on toolbar and bottom (https://dev.ckeditor.com/ticket/12613). + clipboard.preventDefaultDropOnElement( top ); + clipboard.preventDefaultDropOnElement( bottom ); + + // -------------- DRAGSTART -------------- + // Listed on dragstart to mark internal and cross-editor drag & drop + // and save range and selected HTML. + + editable.attachListener( dropTarget, 'dragstart', fireDragEvent ); + + // Make sure to reset data transfer (in case dragend was not called or was canceled). + editable.attachListener( editor, 'dragstart', clipboard.resetDragDataTransfer, clipboard, null, 1 ); + + // Create a dataTransfer object and save it globally. + editable.attachListener( editor, 'dragstart', function( evt ) { + clipboard.initDragDataTransfer( evt, editor ); + }, null, null, 2 ); + + editable.attachListener( editor, 'dragstart', function() { + // Save drag range globally for cross editor D&D. + var dragRange = clipboard.dragRange = editor.getSelection().getRanges()[ 0 ]; + + // Store number of children, so we can later tell if any text node was split on drop. (https://dev.ckeditor.com/ticket/13011, https://dev.ckeditor.com/ticket/13447) + if ( CKEDITOR.env.ie && CKEDITOR.env.version < 10 ) { + clipboard.dragStartContainerChildCount = dragRange ? getContainerChildCount( dragRange.startContainer ) : null; + clipboard.dragEndContainerChildCount = dragRange ? getContainerChildCount( dragRange.endContainer ) : null; + } + }, null, null, 100 ); + + // -------------- DRAGEND -------------- + // Clean up on dragend. + + editable.attachListener( dropTarget, 'dragend', fireDragEvent ); + + // Init data transfer if someone wants to use it in dragend. + editable.attachListener( editor, 'dragend', clipboard.initDragDataTransfer, clipboard, null, 1 ); + + // When drag & drop is done we need to reset dataTransfer so the future + // external drop will be not recognize as internal. + editable.attachListener( editor, 'dragend', clipboard.resetDragDataTransfer, clipboard, null, 100 ); + + // -------------- DRAGOVER -------------- + // We need to call preventDefault on dragover because otherwise if + // we drop image it will overwrite document. + + editable.attachListener( dropTarget, 'dragover', function( evt ) { + // Edge requires this handler to have `preventDefault()` regardless of the situation. + if ( CKEDITOR.env.edge ) { + evt.data.preventDefault(); + return; + } + + var target = evt.data.getTarget(); + + // Prevent reloading page when dragging image on empty document (https://dev.ckeditor.com/ticket/12619). + if ( target && target.is && target.is( 'html' ) ) { + evt.data.preventDefault(); + return; + } + + // If we do not prevent default dragover on IE the file path + // will be loaded and we will lose content. On the other hand + // if we prevent it the cursor will not we shown, so we prevent + // dragover only on IE, on versions which support file API and only + // if the event contains files. + if ( CKEDITOR.env.ie && + CKEDITOR.plugins.clipboard.isFileApiSupported && + evt.data.$.dataTransfer.types.contains( 'Files' ) ) { + evt.data.preventDefault(); + } + } ); + + // -------------- DROP -------------- + + editable.attachListener( dropTarget, 'drop', function( evt ) { + // Do nothing if event was already prevented. (https://dev.ckeditor.com/ticket/13879) + if ( evt.data.$.defaultPrevented ) { + return; + } + + // Cancel native drop. + evt.data.preventDefault(); + + var target = evt.data.getTarget(), + readOnly = target.isReadOnly(); + + // Do nothing if drop on non editable element (https://dev.ckeditor.com/ticket/13015). + // The tag isn't editable (body is), but we want to allow drop on it + // (so it is possible to drop below editor contents). + if ( readOnly && !( target.type == CKEDITOR.NODE_ELEMENT && target.is( 'html' ) ) ) { + return; + } + + // Getting drop position is one of the most complex parts. + var dropRange = clipboard.getRangeAtDropPosition( evt, editor ), + dragRange = clipboard.dragRange; + + // Do nothing if it was not possible to get drop range. + if ( !dropRange ) { + return; + } + + // Fire drop. + fireDragEvent( evt, dragRange, dropRange ); + }, null, null, 9999 ); + + // Create dataTransfer or get it, if it was created before. + editable.attachListener( editor, 'drop', clipboard.initDragDataTransfer, clipboard, null, 1 ); + + // Execute drop action, fire paste. + editable.attachListener( editor, 'drop', function( evt ) { + var data = evt.data; + + if ( !data ) { + return; + } + + // Let user modify drag and drop range. + var dropRange = data.dropRange, + dragRange = data.dragRange, + dataTransfer = data.dataTransfer; + + if ( dataTransfer.getTransferType( editor ) == CKEDITOR.DATA_TRANSFER_INTERNAL ) { + // Execute drop with a timeout because otherwise selection, after drop, + // on IE is in the drag position, instead of drop position. + setTimeout( function() { + clipboard.internalDrop( dragRange, dropRange, dataTransfer, editor ); + }, 0 ); + } else if ( dataTransfer.getTransferType( editor ) == CKEDITOR.DATA_TRANSFER_CROSS_EDITORS ) { + crossEditorDrop( dragRange, dropRange, dataTransfer ); + } else { + externalDrop( dropRange, dataTransfer ); + } + }, null, null, 9999 ); + + // Cross editor drag and drop (drag in one Editor and drop in the other). + function crossEditorDrop( dragRange, dropRange, dataTransfer ) { + // Paste event should be fired before delete contents because otherwise + // Chrome have a problem with drop range (Chrome split the drop + // range container so the offset is bigger then container length). + dropRange.select(); + firePasteEvents( editor, { dataTransfer: dataTransfer, method: 'drop' }, 1 ); + + // Remove dragged content and make a snapshot. + dataTransfer.sourceEditor.fire( 'saveSnapshot' ); + + dataTransfer.sourceEditor.editable().extractHtmlFromRange( dragRange ); + + // Make some selection before saving snapshot, otherwise error will be thrown, because + // there will be no valid selection after content is removed. + dataTransfer.sourceEditor.getSelection().selectRanges( [ dragRange ] ); + dataTransfer.sourceEditor.fire( 'saveSnapshot' ); + } + + // Drop from external source. + function externalDrop( dropRange, dataTransfer ) { + // Paste content into the drop position. + dropRange.select(); + + firePasteEvents( editor, { dataTransfer: dataTransfer, method: 'drop' }, 1 ); + + // Usually we reset DataTranfer on dragend, + // but dragend is called on the same element as dragstart + // so it will not be called on on external drop. + clipboard.resetDragDataTransfer(); + } + + // Fire drag/drop events (dragstart, dragend, drop). + function fireDragEvent( evt, dragRange, dropRange ) { + var eventData = { + $: evt.data.$, + target: evt.data.getTarget() + }; + + if ( dragRange ) { + eventData.dragRange = dragRange; + } + if ( dropRange ) { + eventData.dropRange = dropRange; + } + + if ( editor.fire( evt.name, eventData ) === false ) { + evt.data.preventDefault(); + } + } + + function getContainerChildCount( container ) { + if ( container.type != CKEDITOR.NODE_ELEMENT ) { + container = container.getParent(); + } + + return container.getChildCount(); + } + } ); + } + + /** + * @singleton + * @class CKEDITOR.plugins.clipboard + */ + CKEDITOR.plugins.clipboard = { + /** + * True if the environment allows to set data on copy or cut manually. This value is false in IE, because this browser + * shows the security dialog window when the script tries to set clipboard data and on iOS, because custom data is + * not saved to clipboard there. + * + * @since 4.5 + * @readonly + * @property {Boolean} + */ + isCustomCopyCutSupported: ( !CKEDITOR.env.ie || CKEDITOR.env.version >= 16 ) && !CKEDITOR.env.iOS, + + /** + * True if the environment supports MIME types and custom data types in dataTransfer/cliboardData getData/setData methods. + * + * @since 4.5 + * @readonly + * @property {Boolean} + */ + isCustomDataTypesSupported: !CKEDITOR.env.ie || CKEDITOR.env.version >= 16, + + /** + * True if the environment supports File API. + * + * @since 4.5 + * @readonly + * @property {Boolean} + */ + isFileApiSupported: !CKEDITOR.env.ie || CKEDITOR.env.version > 9, + + /** + * Main native paste event editable should listen to. + * + * **Note:** Safari does not like the {@link CKEDITOR.editor#beforePaste} event — it sometimes does not + * handle Ctrl+C properly. This is probably caused by some race condition between events. + * Chrome, Firefox and Edge work well with both events, so it is better to use {@link CKEDITOR.editor#paste} + * which will handle pasting from e.g. browsers' menu bars. + * IE7/8 does not like the {@link CKEDITOR.editor#paste} event for which it is throwing random errors. + * + * @since 4.5 + * @readonly + * @property {String} + */ + mainPasteEvent: ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) ? 'beforepaste' : 'paste', + + /** + * Adds a new paste button to the editor. + * + * This method should be called for buttons that should display the Paste Dialog fallback in mobile environments. + * See [the rationale](https://github.com/ckeditor/ckeditor-dev/issues/595#issuecomment-345971174) for more + * details. + * + * @since 4.9.0 + * @param {CKEDITOR.editor} editor The editor instance. + * @param {String} name Name of the button. + * @param {Object} definition Definition of the button. + */ + addPasteButton: function( editor, name, definition ) { + if ( !editor.ui.addButton ) { + return; + } + + editor.ui.addButton( name, definition ); + + if ( !editor._.pasteButtons ) { + editor._.pasteButtons = []; + } + editor._.pasteButtons.push( name ); + }, + + /** + * Returns `true` if it is expected that a browser provides HTML data through the Clipboard API. + * If not, this method returns `false` and as a result CKEditor will use the paste bin. Read more in + * the [Clipboard Integration](https://docs.ckeditor.com/ckeditor4/docs/#!/guide/dev_clipboard-section-clipboard-api) guide. + * + * @since 4.5.2 + * @returns {Boolean} + */ + canClipboardApiBeTrusted: function( dataTransfer, editor ) { + // If it's an internal or cross-editor data transfer, then it means that custom cut/copy/paste support works + // and that the data were put manually on the data transfer so we can be sure that it's available. + if ( dataTransfer.getTransferType( editor ) != CKEDITOR.DATA_TRANSFER_EXTERNAL ) { + return true; + } + + // In Chrome we can trust Clipboard API, with the exception of Chrome on Android (in both - mobile and desktop modes), where + // clipboard API is not available so we need to check it (https://dev.ckeditor.com/ticket/13187). + if ( CKEDITOR.env.chrome && !dataTransfer.isEmpty() ) { + return true; + } + + // Because of a Firefox bug HTML data are not available in some cases (e.g. paste from Word), in such cases we + // need to use the pastebin (https://dev.ckeditor.com/ticket/13528, https://bugzilla.mozilla.org/show_bug.cgi?id=1183686). + if ( CKEDITOR.env.gecko && ( dataTransfer.getData( 'text/html' ) || dataTransfer.getFilesCount() ) ) { + return true; + } + + // Safari fixed clipboard in 10.1 (https://bugs.webkit.org/show_bug.cgi?id=19893) (https://dev.ckeditor.com/ticket/16982). + // However iOS version still doesn't work well enough (https://bugs.webkit.org/show_bug.cgi?id=19893#c34). + if ( CKEDITOR.env.safari && CKEDITOR.env.version >= 603 && !CKEDITOR.env.iOS ) { + return true; + } + + // Edge 15 added support for Clipboard API + // (https://wpdev.uservoice.com/forums/257854-microsoft-edge-developer/suggestions/6515107-clipboard-api), however it is + // usable for our case starting from Edge 16 (#468). + if ( CKEDITOR.env.edge && CKEDITOR.env.version >= 16 ) { + return true; + } + + // In older Safari and IE HTML data is not available through the Clipboard API. + // In older Edge version things are also a bit messy - + // https://connect.microsoft.com/IE/feedback/details/1572456/edge-clipboard-api-text-html-content-messed-up-in-event-clipboarddata + // It is safer to use the paste bin in unknown cases. + return false; + }, + + /** + * Returns the element that should be used as the target for the drop event. + * + * @since 4.5 + * @param {CKEDITOR.editor} editor The editor instance. + * @returns {CKEDITOR.dom.domObject} the element that should be used as the target for the drop event. + */ + getDropTarget: function( editor ) { + var editable = editor.editable(); + + // https://dev.ckeditor.com/ticket/11123 Firefox needs to listen on document, because otherwise event won't be fired. + // https://dev.ckeditor.com/ticket/11086 IE8 cannot listen on document. + if ( ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 ) || editable.isInline() ) { + return editable; + } else { + return editor.document; + } + }, + + /** + * IE 8 & 9 split text node on drop so the first node contains the + * text before the drop position and the second contains the rest. If you + * drag the content from the same node you will be not be able to get + * it (the range becomes invalid), so you need to join them back. + * + * Note that the first node in IE 8 & 9 is the original node object + * but with shortened content. + * + * Before: + * --- Text Node A ---------------------------------- + * /\ + * Drag position + * + * After (IE 8 & 9): + * --- Text Node A ----- --- Text Node B ----------- + * /\ /\ + * Drop position Drag position + * (invalid) + * + * After (other browsers): + * --- Text Node A ---------------------------------- + * /\ /\ + * Drop position Drag position + * + * **Note:** This function is in the public scope for tests usage only. + * + * @since 4.5 + * @private + * @param {CKEDITOR.dom.range} dragRange The drag range. + * @param {CKEDITOR.dom.range} dropRange The drop range. + * @param {Number} preDragStartContainerChildCount The number of children of the drag range start container before the drop. + * @param {Number} preDragEndContainerChildCount The number of children of the drag range end container before the drop. + */ + fixSplitNodesAfterDrop: function( dragRange, dropRange, preDragStartContainerChildCount, preDragEndContainerChildCount ) { + var dropContainer = dropRange.startContainer; + + if ( + typeof preDragEndContainerChildCount != 'number' || + typeof preDragStartContainerChildCount != 'number' + ) { + return; + } + + // We are only concerned about ranges anchored in elements. + if ( dropContainer.type != CKEDITOR.NODE_ELEMENT ) { + return; + } + + if ( handleContainer( dragRange.startContainer, dropContainer, preDragStartContainerChildCount ) ) { + return; + } + + if ( handleContainer( dragRange.endContainer, dropContainer, preDragEndContainerChildCount ) ) { + return; + } + + function handleContainer( dragContainer, dropContainer, preChildCount ) { + var dragElement = dragContainer; + if ( dragElement.type == CKEDITOR.NODE_TEXT ) { + dragElement = dragContainer.getParent(); + } + + if ( dragElement.equals( dropContainer ) && preChildCount != dropContainer.getChildCount() ) { + applyFix( dropRange ); + return true; + } + } + + function applyFix( dropRange ) { + var nodeBefore = dropRange.startContainer.getChild( dropRange.startOffset - 1 ), + nodeAfter = dropRange.startContainer.getChild( dropRange.startOffset ); + + if ( + nodeBefore && nodeBefore.type == CKEDITOR.NODE_TEXT && + nodeAfter && nodeAfter.type == CKEDITOR.NODE_TEXT + ) { + var offset = nodeBefore.getLength(); + + nodeBefore.setText( nodeBefore.getText() + nodeAfter.getText() ); + nodeAfter.remove(); + + dropRange.setStart( nodeBefore, offset ); + dropRange.collapse( true ); + } + } + }, + + /** + * Checks whether turning the drag range into bookmarks will invalidate the drop range. + * This usually happens when the drop range shares the container with the drag range and is + * located after the drag range, but there are countless edge cases. + * + * This function is stricly related to {@link #internalDrop} which toggles + * order in which it creates bookmarks for both ranges based on a value returned + * by this method. In some cases this method returns a value which is not necessarily + * true in terms of what it was meant to check, but it is convenient, because + * we know how it is interpreted in {@link #internalDrop}, so the correct + * behavior of the entire algorithm is assured. + * + * **Note:** This function is in the public scope for tests usage only. + * + * @since 4.5 + * @private + * @param {CKEDITOR.dom.range} dragRange The first range to compare. + * @param {CKEDITOR.dom.range} dropRange The second range to compare. + * @returns {Boolean} `true` if the first range is before the second range. + */ + isDropRangeAffectedByDragRange: function( dragRange, dropRange ) { + var dropContainer = dropRange.startContainer, + dropOffset = dropRange.endOffset; + + // Both containers are the same and drop offset is at the same position or later. + // " A L] A " " M A " + // ^ ^ + if ( dragRange.endContainer.equals( dropContainer ) && dragRange.endOffset <= dropOffset ) { + return true; + } + + // Bookmark for drag start container will mess up with offsets. + // " O [L A " " M A " + // ^ ^ + if ( + dragRange.startContainer.getParent().equals( dropContainer ) && + dragRange.startContainer.getIndex() < dropOffset + ) { + return true; + } + + // Bookmark for drag end container will mess up with offsets. + // " O] L A " " M A " + // ^ ^ + if ( + dragRange.endContainer.getParent().equals( dropContainer ) && + dragRange.endContainer.getIndex() < dropOffset + ) { + return true; + } + + return false; + }, + + /** + * Internal drag and drop (drag and drop in the same editor instance). + * + * **Note:** This function is in the public scope for tests usage only. + * + * @since 4.5 + * @private + * @param {CKEDITOR.dom.range} dragRange The first range to compare. + * @param {CKEDITOR.dom.range} dropRange The second range to compare. + * @param {CKEDITOR.plugins.clipboard.dataTransfer} dataTransfer + * @param {CKEDITOR.editor} editor + */ + internalDrop: function( dragRange, dropRange, dataTransfer, editor ) { + var clipboard = CKEDITOR.plugins.clipboard, + editable = editor.editable(), + dragBookmark, dropBookmark, isDropRangeAffected; + + // Save and lock snapshot so there will be only + // one snapshot for both remove and insert content. + editor.fire( 'saveSnapshot' ); + editor.fire( 'lockSnapshot', { dontUpdate: 1 } ); + + if ( CKEDITOR.env.ie && CKEDITOR.env.version < 10 ) { + this.fixSplitNodesAfterDrop( + dragRange, + dropRange, + clipboard.dragStartContainerChildCount, + clipboard.dragEndContainerChildCount + ); + } + + // Because we manipulate multiple ranges we need to do it carefully, + // changing one range (event creating a bookmark) may make other invalid. + // We need to change ranges into bookmarks so we can manipulate them easily in the future. + // We can change the range which is later in the text before we change the preceding range. + // We call isDropRangeAffectedByDragRange to test the order of ranges. + isDropRangeAffected = this.isDropRangeAffectedByDragRange( dragRange, dropRange ); + if ( !isDropRangeAffected ) { + dragBookmark = dragRange.createBookmark( false ); + } + dropBookmark = dropRange.clone().createBookmark( false ); + if ( isDropRangeAffected ) { + dragBookmark = dragRange.createBookmark( false ); + } + + // Check if drop range is inside range. + // This is an edge case when we drop something on editable's margin/padding. + // That space is not treated as a part of the range we drag, so it is possible to drop there. + // When we drop, browser tries to find closest drop position and it finds it inside drag range. (https://dev.ckeditor.com/ticket/13453) + var startNode = dragBookmark.startNode, + endNode = dragBookmark.endNode, + dropNode = dropBookmark.startNode, + dropInsideDragRange = + // Must check endNode because dragRange could be collapsed in some edge cases (simulated DnD). + endNode && + ( startNode.getPosition( dropNode ) & CKEDITOR.POSITION_PRECEDING ) && + ( endNode.getPosition( dropNode ) & CKEDITOR.POSITION_FOLLOWING ); + + // If the drop range happens to be inside drag range change it's position to the beginning of the drag range. + if ( dropInsideDragRange ) { + // We only change position of bookmark span that is connected with dropBookmark. + // dropRange will be overwritten and set to the dropBookmark later. + dropNode.insertBefore( startNode ); + } + + // No we can safely delete content for the drag range... + dragRange = editor.createRange(); + dragRange.moveToBookmark( dragBookmark ); + editable.extractHtmlFromRange( dragRange, 1 ); + + // ...and paste content into the drop position. + dropRange = editor.createRange(); + dropRange.moveToBookmark( dropBookmark ); + + // We do not select drop range, because of may be in the place we can not set the selection + // (e.g. between blocks, in case of block widget D&D). We put range to the paste event instead. + firePasteEvents( editor, { dataTransfer: dataTransfer, method: 'drop', range: dropRange }, 1 ); + + editor.fire( 'unlockSnapshot' ); + }, + + /** + * Gets the range from the `drop` event. + * + * @since 4.5 + * @param {Object} domEvent A native DOM drop event object. + * @param {CKEDITOR.editor} editor The source editor instance. + * @returns {CKEDITOR.dom.range} range at drop position. + */ + getRangeAtDropPosition: function( dropEvt, editor ) { + var $evt = dropEvt.data.$, + x = $evt.clientX, + y = $evt.clientY, + $range, + defaultRange = editor.getSelection( true ).getRanges()[ 0 ], + range = editor.createRange(); + + // Make testing possible. + if ( dropEvt.data.testRange ) + return dropEvt.data.testRange; + + // Webkits. + if ( document.caretRangeFromPoint && editor.document.$.caretRangeFromPoint( x, y ) ) { + $range = editor.document.$.caretRangeFromPoint( x, y ); + range.setStart( CKEDITOR.dom.node( $range.startContainer ), $range.startOffset ); + range.collapse( true ); + } + // FF. + else if ( $evt.rangeParent ) { + range.setStart( CKEDITOR.dom.node( $evt.rangeParent ), $evt.rangeOffset ); + range.collapse( true ); + } + // IEs 9+. + // We check if editable is focused to make sure that it's an internal DnD. External DnD must use the second + // mechanism because of https://dev.ckeditor.com/ticket/13472#comment:6. + else if ( CKEDITOR.env.ie && CKEDITOR.env.version > 8 && defaultRange && editor.editable().hasFocus ) { + // On IE 9+ range by default is where we expected it. + // defaultRange may be undefined if dragover was canceled (file drop). + return defaultRange; + } + // IE 8 and all IEs if !defaultRange or external DnD. + else if ( document.body.createTextRange ) { + // To use this method we need a focus (which may be somewhere else in case of external drop). + editor.focus(); + + $range = editor.document.getBody().$.createTextRange(); + try { + var sucess = false; + + // If user drop between text line IEs moveToPoint throws exception: + // + // Lorem ipsum pulvinar purus et euismod + // + // dolor sit amet,| consectetur adipiscing + // * + // vestibulum tincidunt augue eget tempus. + // + // * - drop position + // | - expected cursor position + // + // So we try to call moveToPoint with +-1px up to +-20px above or + // below original drop position to find nearest good drop position. + for ( var i = 0; i < 20 && !sucess; i++ ) { + if ( !sucess ) { + try { + $range.moveToPoint( x, y - i ); + sucess = true; + } catch ( err ) { + } + } + if ( !sucess ) { + try { + $range.moveToPoint( x, y + i ); + sucess = true; + } catch ( err ) { + } + } + } + + if ( sucess ) { + var id = 'cke-temp-' + ( new Date() ).getTime(); + $range.pasteHTML( '\u200b' ); + + var span = editor.document.getById( id ); + range.moveToPosition( span, CKEDITOR.POSITION_BEFORE_START ); + span.remove(); + } else { + // If the fist method does not succeed we might be next to + // the short element (like header): + // + // Lorem ipsum pulvinar purus et euismod. + // + // + // SOME HEADER| * + // + // + // vestibulum tincidunt augue eget tempus. + // + // * - drop position + // | - expected cursor position + // + // In such situation elementFromPoint returns proper element. Using getClientRect + // it is possible to check if the cursor should be at the beginning or at the end + // of paragraph. + var $element = editor.document.$.elementFromPoint( x, y ), + element = new CKEDITOR.dom.element( $element ), + rect; + + if ( !element.equals( editor.editable() ) && element.getName() != 'html' ) { + rect = element.getClientRect(); + + if ( x < rect.left ) { + range.setStartAt( element, CKEDITOR.POSITION_AFTER_START ); + range.collapse( true ); + } else { + range.setStartAt( element, CKEDITOR.POSITION_BEFORE_END ); + range.collapse( true ); + } + } + // If drop happens on no element elementFromPoint returns html or body. + // + // * |Lorem ipsum pulvinar purus et euismod. + // + // vestibulum tincidunt augue eget tempus. + // + // * - drop position + // | - expected cursor position + // + // In such case we can try to use default selection. If startContainer is not + // 'editable' element it is probably proper selection. + else if ( defaultRange && defaultRange.startContainer && + !defaultRange.startContainer.equals( editor.editable() ) ) { + return defaultRange; + + // Otherwise we can not find any drop position and we have to return null + // and cancel drop event. + } else { + return null; + } + + } + } catch ( err ) { + return null; + } + } else { + return null; + } + + return range; + }, + + /** + * This function tries to link the `evt.data.dataTransfer` property of the {@link CKEDITOR.editor#dragstart}, + * {@link CKEDITOR.editor#dragend} and {@link CKEDITOR.editor#drop} events to a single + * {@link CKEDITOR.plugins.clipboard.dataTransfer} object. + * + * This method is automatically used by the core of the drag and drop functionality and + * usually does not have to be called manually when using the drag and drop events. + * + * This method behaves differently depending on whether the drag and drop events were fired + * artificially (to represent a non-native drag and drop) or whether they were caused by the native drag and drop. + * + * If the native event is not available, then it will create a new {@link CKEDITOR.plugins.clipboard.dataTransfer} + * instance (if it does not exist already) and will link it to this and all following event objects until + * the {@link #resetDragDataTransfer} method is called. It means that all three drag and drop events must be fired + * in order to ensure that the data transfer is bound correctly. + * + * If the native event is available, then the {@link CKEDITOR.plugins.clipboard.dataTransfer} is identified + * by its ID and a new instance is assigned to the `evt.data.dataTransfer` only if the ID changed or + * the {@link #resetDragDataTransfer} method was called. + * + * @since 4.5 + * @param {CKEDITOR.dom.event} [evt] A drop event object. + * @param {CKEDITOR.editor} [sourceEditor] The source editor instance. + */ + initDragDataTransfer: function( evt, sourceEditor ) { + // Create a new dataTransfer object based on the drop event. + // If this event was used on dragstart to create dataTransfer + // both dataTransfer objects will have the same id. + var nativeDataTransfer = evt.data.$ ? evt.data.$.dataTransfer : null, + dataTransfer = new this.dataTransfer( nativeDataTransfer, sourceEditor ); + + // Set dataTransfer.id only for 'dragstart' event (so for events initializing dataTransfer inside editor) (#962). + if ( evt.name === 'dragstart' ) { + dataTransfer.storeId(); + } + + if ( !nativeDataTransfer ) { + // No native event. + if ( this.dragData ) { + dataTransfer = this.dragData; + } else { + this.dragData = dataTransfer; + } + } else { + // Native event. If there is the same id we will replace dataTransfer with the one + // created on drag, because it contains drag editor, drag content and so on. + // Otherwise (in case of drag from external source) we save new object to + // the global clipboard.dragData. + if ( this.dragData && dataTransfer.id == this.dragData.id ) { + dataTransfer = this.dragData; + } else { + this.dragData = dataTransfer; + } + } + + evt.data.dataTransfer = dataTransfer; + }, + + /** + * Removes the global {@link #dragData} so the next call to {@link #initDragDataTransfer} + * always creates a new instance of {@link CKEDITOR.plugins.clipboard.dataTransfer}. + * + * @since 4.5 + */ + resetDragDataTransfer: function() { + this.dragData = null; + }, + + /** + * Global object storing the data transfer of the current drag and drop operation. + * Do not use it directly, use {@link #initDragDataTransfer} and {@link #resetDragDataTransfer}. + * + * Note: This object is global (meaning that it is not related to a single editor instance) + * in order to handle drag and drop from one editor into another. + * + * @since 4.5 + * @private + * @property {CKEDITOR.plugins.clipboard.dataTransfer} dragData + */ + + /** + * Range object to save the drag range and remove its content after the drop. + * + * @since 4.5 + * @private + * @property {CKEDITOR.dom.range} dragRange + */ + + /** + * Initializes and links data transfer objects based on the paste event. If the data + * transfer object was already initialized on this event, the function will + * return that object. In IE it is not possible to link copy/cut and paste events + * so the method always returns a new object. The same happens if there is no paste event + * passed to the method. + * + * @since 4.5 + * @param {CKEDITOR.dom.event} [evt] A paste event object. + * @param {CKEDITOR.editor} [sourceEditor] The source editor instance. + * @returns {CKEDITOR.plugins.clipboard.dataTransfer} The data transfer object. + */ + initPasteDataTransfer: function( evt, sourceEditor ) { + if ( !this.isCustomCopyCutSupported ) { + // Edge < 16 does not support custom copy/cut, but it has some useful data in the clipboardData (https://dev.ckeditor.com/ticket/13755). + return new this.dataTransfer( ( CKEDITOR.env.edge && evt && evt.data.$ && evt.data.$.clipboardData ) || null, sourceEditor ); + } else if ( evt && evt.data && evt.data.$ ) { + var clipboardData = evt.data.$.clipboardData, + dataTransfer = new this.dataTransfer( clipboardData, sourceEditor ); + + // Set dataTransfer.id only for 'copy'/'cut' events (so for events initializing dataTransfer inside editor) (#962). + if ( evt.name === 'copy' || evt.name === 'cut' ) { + dataTransfer.storeId(); + } + + if ( this.copyCutData && dataTransfer.id == this.copyCutData.id ) { + dataTransfer = this.copyCutData; + dataTransfer.$ = clipboardData; + } else { + this.copyCutData = dataTransfer; + } + + return dataTransfer; + } else { + return new this.dataTransfer( null, sourceEditor ); + } + }, + + /** + * Prevents dropping on the specified element. + * + * @since 4.5 + * @param {CKEDITOR.dom.element} element The element on which dropping should be disabled. + */ + preventDefaultDropOnElement: function( element ) { + element && element.on( 'dragover', preventDefaultSetDropEffectToNone ); + } + }; + + // Data type used to link drag and drop events. + // + // In IE URL data type is buggie and there is no way to mark drag & drop without + // modifying text data (which would be displayed if user drop content to the textarea) + // so we just read dragged text. + // + // In Chrome and Firefox we can use custom data types. + clipboardIdDataType = CKEDITOR.plugins.clipboard.isCustomDataTypesSupported ? 'cke/id' : 'Text'; + + /** + * Facade for the native `dataTransfer`/`clipboadData` object to hide all differences + * between browsers. + * + * @since 4.5 + * @class CKEDITOR.plugins.clipboard.dataTransfer + * @constructor Creates a class instance. + * @param {Object} [nativeDataTransfer] A native data transfer object. + * @param {CKEDITOR.editor} [editor] The source editor instance. If the editor is defined, dataValue will + * be created based on the editor content and the type will be 'html'. + */ + CKEDITOR.plugins.clipboard.dataTransfer = function( nativeDataTransfer, editor ) { + if ( nativeDataTransfer ) { + this.$ = nativeDataTransfer; + } + + this._ = { + metaRegExp: /^/i, + bodyRegExp: /([\s\S]*)<\/body>/i, + fragmentRegExp: //g, + + data: {}, + files: [], + + // Stores full HTML so it can be accessed asynchronously with `getData( 'text/html', true )`. + nativeHtmlCache: '', + + normalizeType: function( type ) { + type = type.toLowerCase(); + + if ( type == 'text' || type == 'text/plain' ) { + return 'Text'; // IE support only Text and URL; + } else if ( type == 'url' ) { + return 'URL'; // IE support only Text and URL; + } else { + return type; + } + } + }; + this._.fallbackDataTransfer = new CKEDITOR.plugins.clipboard.fallbackDataTransfer( this ); + + // Check if ID is already created. + this.id = this.getData( clipboardIdDataType ); + + // If there is no ID we need to create it. Different browsers needs different ID. + if ( !this.id ) { + if ( clipboardIdDataType == 'Text' ) { + // For IE10+ only Text data type is supported and we have to compare dragged + // and dropped text. If the ID is not set it means that empty string was dragged + // (ex. image with no alt). We change null to empty string. + this.id = ''; + } else { + // String for custom data type. + this.id = 'cke-' + CKEDITOR.tools.getUniqueId(); + } + } + + if ( editor ) { + this.sourceEditor = editor; + + this.setData( 'text/html', editor.getSelectedHtml( 1 ) ); + + // Without setData( 'text', ... ) on dragstart there is no drop event in Safari. + // Also 'text' data is empty as drop to the textarea does not work if we do not put there text. + if ( clipboardIdDataType != 'Text' && !this.getData( 'text/plain' ) ) { + this.setData( 'text/plain', editor.getSelection().getSelectedText() ); + } + } + + /** + * Data transfer ID used to bind all dataTransfer + * objects based on the same event (e.g. in drag and drop events). + * + * @readonly + * @property {String} id + */ + + /** + * A native DOM event object. + * + * @readonly + * @property {Object} $ + */ + + /** + * Source editor — the editor where the drag starts. + * Might be undefined if the drag starts outside the editor (e.g. when dropping files to the editor). + * + * @readonly + * @property {CKEDITOR.editor} sourceEditor + */ + + /** + * Private properties and methods. + * + * @private + * @property {Object} _ + */ + }; + + /** + * Data transfer operation (drag and drop or copy and paste) started and ended in the same + * editor instance. + * + * @since 4.5 + * @readonly + * @property {Number} [=1] + * @member CKEDITOR + */ + CKEDITOR.DATA_TRANSFER_INTERNAL = 1; + + /** + * Data transfer operation (drag and drop or copy and paste) started in one editor + * instance and ended in another. + * + * @since 4.5 + * @readonly + * @property {Number} [=2] + * @member CKEDITOR + */ + CKEDITOR.DATA_TRANSFER_CROSS_EDITORS = 2; + + /** + * Data transfer operation (drag and drop or copy and paste) started outside of the editor. + * The source of the data may be a textarea, HTML, another application, etc. + * + * @since 4.5 + * @readonly + * @property {Number} [=3] + * @member CKEDITOR + */ + CKEDITOR.DATA_TRANSFER_EXTERNAL = 3; + + CKEDITOR.plugins.clipboard.dataTransfer.prototype = { + /** + * Facade for the native `getData` method. + * + * @param {String} type The type of data to retrieve. + * @param {Boolean} [getNative=false] Indicates if the whole, original content of the dataTransfer should be returned. + * Introduced in CKEditor 4.7.0. + * @returns {String} type Stored data for the given type or an empty string if the data for that type does not exist. + */ + getData: function( type, getNative ) { + function isEmpty( data ) { + return data === undefined || data === null || data === ''; + } + + function filterUnwantedCharacters( data ) { + if ( typeof data !== 'string' ) { + return data; + } + + var htmlEnd = data.indexOf( '' ); + + if ( htmlEnd !== -1 ) { + // Just cut everything after ``, so everything after htmlEnd index + length of ``. + // Required to workaround bug: https://bugs.chromium.org/p/chromium/issues/detail?id=696978 + return data.substring( 0, htmlEnd + 7 ); + } + + return data; + } + + type = this._.normalizeType( type ); + + var data = type == 'text/html' && getNative ? this._.nativeHtmlCache : this._.data[ type ]; + + if ( isEmpty( data ) ) { + if ( this._.fallbackDataTransfer.isRequired() ) { + data = this._.fallbackDataTransfer.getData( type, getNative ); + } else { + try { + data = this.$.getData( type ) || ''; + } catch ( e ) { + data = ''; + } + } + + if ( type == 'text/html' && !getNative ) { + data = this._stripHtml( data ); + } + } + + // Firefox on Linux put files paths as a text/plain data if there are files + // in the dataTransfer object. We need to hide it, because files should be + // handled on paste only if dataValue is empty. + if ( type == 'Text' && CKEDITOR.env.gecko && this.getFilesCount() && + data.substring( 0, 7 ) == 'file://' ) { + data = ''; + } + + return filterUnwantedCharacters( data ); + }, + + /** + * Facade for the native `setData` method. + * + * @param {String} type The type of data to retrieve. + * @param {String} value The data to add. + */ + setData: function( type, value ) { + type = this._.normalizeType( type ); + + if ( type == 'text/html' ) { + this._.data[ type ] = this._stripHtml( value ); + // If 'text/html' is set manually we also store it in `nativeHtmlCache` without modifications. + this._.nativeHtmlCache = value; + } else { + this._.data[ type ] = value; + } + + // There is "Unexpected call to method or property access." error if you try + // to set data of unsupported type on IE. + if ( !CKEDITOR.plugins.clipboard.isCustomDataTypesSupported && type != 'URL' && type != 'Text' ) { + return; + } + + // If we use the text type to bind the ID, then if someone tries to set the text, we must also + // update ID accordingly. https://dev.ckeditor.com/ticket/13468. + if ( clipboardIdDataType == 'Text' && type == 'Text' ) { + this.id = value; + } + + if ( this._.fallbackDataTransfer.isRequired() ) { + this._.fallbackDataTransfer.setData( type, value ); + } else { + try { + this.$.setData( type, value ); + } catch ( e ) {} + } + }, + + /** + * Stores dataTransfer id in native data transfer object + * so it can be retrieved by other events. + * + * @since 4.8.0 + */ + storeId: function() { + if ( clipboardIdDataType !== 'Text' ) { + this.setData( clipboardIdDataType, this.id ); + } + }, + + /** + * Gets the data transfer type. + * + * @param {CKEDITOR.editor} targetEditor The drop/paste target editor instance. + * @returns {Number} Possible values: {@link CKEDITOR#DATA_TRANSFER_INTERNAL}, + * {@link CKEDITOR#DATA_TRANSFER_CROSS_EDITORS}, {@link CKEDITOR#DATA_TRANSFER_EXTERNAL}. + */ + getTransferType: function( targetEditor ) { + if ( !this.sourceEditor ) { + return CKEDITOR.DATA_TRANSFER_EXTERNAL; + } else if ( this.sourceEditor == targetEditor ) { + return CKEDITOR.DATA_TRANSFER_INTERNAL; + } else { + return CKEDITOR.DATA_TRANSFER_CROSS_EDITORS; + } + }, + + /** + * Copies the data from the native data transfer to a private cache. + * This function is needed because the data from the native data transfer + * is available only synchronously to the event listener. It is not possible + * to get the data asynchronously, after a timeout, and the {@link CKEDITOR.editor#paste} + * event is fired asynchronously — hence the need for caching the data. + */ + cacheData: function() { + if ( !this.$ ) { + return; + } + + var that = this, + i, file; + + function getAndSetData( type ) { + type = that._.normalizeType( type ); + + var data = that.getData( type ); + + // Cache full html. + if ( type == 'text/html' ) { + that._.nativeHtmlCache = that.getData( type, true ); + data = that._stripHtml( data ); + } + + if ( data ) { + that._.data[ type ] = data; + } + } + + // Copy data. + if ( CKEDITOR.plugins.clipboard.isCustomDataTypesSupported ) { + if ( this.$.types ) { + for ( i = 0; i < this.$.types.length; i++ ) { + getAndSetData( this.$.types[ i ] ); + } + } + } else { + getAndSetData( 'Text' ); + getAndSetData( 'URL' ); + } + + // Copy files references. + file = this._getImageFromClipboard(); + if ( ( this.$ && this.$.files ) || file ) { + this._.files = []; + + // Edge have empty files property with no length (https://dev.ckeditor.com/ticket/13755). + if ( this.$.files && this.$.files.length ) { + for ( i = 0; i < this.$.files.length; i++ ) { + this._.files.push( this.$.files[ i ] ); + } + } + + // Don't include $.items if both $.files and $.items contains files, because, + // according to spec and browsers behavior, they contain the same files. + if ( this._.files.length === 0 && file ) { + this._.files.push( file ); + } + } + }, + + /** + * Gets the number of files in the dataTransfer object. + * + * @returns {Number} The number of files. + */ + getFilesCount: function() { + if ( this._.files.length ) { + return this._.files.length; + } + + if ( this.$ && this.$.files && this.$.files.length ) { + return this.$.files.length; + } + + return this._getImageFromClipboard() ? 1 : 0; + }, + + /** + * Gets the file at the index given. + * + * @param {Number} i Index. + * @returns {File} File instance. + */ + getFile: function( i ) { + if ( this._.files.length ) { + return this._.files[ i ]; + } + + if ( this.$ && this.$.files && this.$.files.length ) { + return this.$.files[ i ]; + } + + // File or null if the file was not found. + return i === 0 ? this._getImageFromClipboard() : undefined; + }, + + /** + * Checks if the data transfer contains any data. + * + * @returns {Boolean} `true` if the object contains no data. + */ + isEmpty: function() { + var typesToCheck = {}, + type; + + // If dataTransfer contains files it is not empty. + if ( this.getFilesCount() ) { + return false; + } + + CKEDITOR.tools.array.forEach( CKEDITOR.tools.objectKeys( this._.data ), function( type ) { + typesToCheck[ type ] = 1; + } ); + + // Add native types. + if ( this.$ ) { + if ( CKEDITOR.plugins.clipboard.isCustomDataTypesSupported ) { + if ( this.$.types ) { + for ( var i = 0; i < this.$.types.length; i++ ) { + typesToCheck[ this.$.types[ i ] ] = 1; + } + } + } else { + typesToCheck.Text = 1; + typesToCheck.URL = 1; + } + } + + // Remove ID. + if ( clipboardIdDataType != 'Text' ) { + typesToCheck[ clipboardIdDataType ] = 0; + } + + for ( type in typesToCheck ) { + if ( typesToCheck[ type ] && this.getData( type ) !== '' ) { + return false; + } + } + + return true; + }, + + /** + * When the content of the clipboard is pasted in Chrome, the clipboard data object has an empty `files` property, + * but it is possible to get the file as `items[0].getAsFile();` (https://dev.ckeditor.com/ticket/12961). + * + * @private + * @returns {File} File instance or `null` if not found. + */ + _getImageFromClipboard: function() { + var file; + + if ( this.$ && this.$.items && this.$.items[ 0 ] ) { + try { + file = this.$.items[ 0 ].getAsFile(); + // Duck typing + if ( file && file.type ) { + return file; + } + } catch ( err ) { + // noop + } + } + + return undefined; + }, + + /** + * This function removes this meta information and returns only the contents of the `` element if found. + * + * Various environments use miscellaneous meta tags in HTML clipboard, e.g. + * + * * `` at the begging of the HTML data. + * * Surrounding HTML with `` and `` nested within `` elements. + * + * @private + * @param {String} html + * @returns {String} + */ + _stripHtml: function( html ) { + var result = html; + + // Passed HTML may be empty or null. There is no need to strip such values (#1299). + if ( result && result.length ) { + // See https://dev.ckeditor.com/ticket/13583 for more details. + // Additionally https://dev.ckeditor.com/ticket/16847 adds a flag allowing to get the whole, original content. + result = result.replace( this._.metaRegExp, '' ); + + // Keep only contents of the element + var match = this._.bodyRegExp.exec( result ); + if ( match && match.length ) { + result = match[ 1 ]; + + // Remove also comments. + result = result.replace( this._.fragmentRegExp, '' ); + } + } + + return result; + } + }; + + /** + * Fallback dataTransfer object which is used together with {@link CKEDITOR.plugins.clipboard.dataTransfer} + * for browsers supporting Clipboard API, but not supporting custom + * MIME types (Edge 16+, see [ckeditor-dev/issues/#962](https://github.com/ckeditor/ckeditor-dev/issues/962)). + * + * @since 4.8.0 + * @class CKEDITOR.plugins.clipboard.fallbackDataTransfer + * @constructor + * @param {CKEDITOR.plugins.clipboard.dataTransfer} dataTransfer DataTransfer + * object which internal cache and + * {@link CKEDITOR.plugins.clipboard.dataTransfer#$ data transfer} objects will be reused. + */ + CKEDITOR.plugins.clipboard.fallbackDataTransfer = function( dataTransfer ) { + /** + * DataTransfer object which internal cache and + * {@link CKEDITOR.plugins.clipboard.dataTransfer#$ data transfer} objects will be modified if needed. + * + * @private + * @property {CKEDITOR.plugins.clipboard.dataTransfer} _dataTransfer + */ + this._dataTransfer = dataTransfer; + + /** + * A MIME type used for storing custom MIME types. + * + * @private + * @property {String} [_customDataFallbackType='text/html'] + */ + this._customDataFallbackType = 'text/html'; + }; + + /** + * True if the environment supports custom MIME types in {@link CKEDITOR.plugins.clipboard.dataTransfer#getData} + * and {@link CKEDITOR.plugins.clipboard.dataTransfer#setData} methods. + * + * Introduced to distinguish between browsers which support only some whitelisted types (like `text/html`, `application/xml`), + * but do not support custom MIME types (like `cke/id`). When the value of this property equals `null` + * it means it was not yet initialized. + * + * This property should not be accessed directly, use {@link #isRequired} method instead. + * + * @private + * @static + * @property {Boolean} + */ + CKEDITOR.plugins.clipboard.fallbackDataTransfer._isCustomMimeTypeSupported = null; + + /** + * Array containing MIME types which are not supported by native `setData`. Those types are + * recognized by error which is thrown when using native `setData` with a given type + * (see {@link CKEDITOR.plugins.clipboard.fallbackDataTransfer#_isUnsupportedMimeTypeError}). + * + * @private + * @static + * @property {String[]} + */ + CKEDITOR.plugins.clipboard.fallbackDataTransfer._customTypes = []; + + CKEDITOR.plugins.clipboard.fallbackDataTransfer.prototype = { + /** + * Whether {@link CKEDITOR.plugins.clipboard.fallbackDataTransfer fallbackDataTransfer object} should + * be used when operating on native `dataTransfer`. If `true` is returned, it means custom MIME types + * are not supported in the current browser (see {@link #_isCustomMimeTypeSupported}). + * + * @returns {Boolean} + */ + isRequired: function() { + var fallbackDataTransfer = CKEDITOR.plugins.clipboard.fallbackDataTransfer, + nativeDataTransfer = this._dataTransfer.$; + + if ( fallbackDataTransfer._isCustomMimeTypeSupported === null ) { + // If there is no `dataTransfer` we cannot detect if fallback is needed. + // Method returns `false` so regular flow will be applied. + if ( !nativeDataTransfer ) { + return false; + } else { + var testValue = 'cke test value', + testType = 'cke/mimetypetest'; + + fallbackDataTransfer._isCustomMimeTypeSupported = false; + + try { + nativeDataTransfer.setData( testType, testValue ); + fallbackDataTransfer._isCustomMimeTypeSupported = nativeDataTransfer.getData( testType ) === testValue; + nativeDataTransfer.clearData( testType ); + } catch ( e ) {} + } + } + return !fallbackDataTransfer._isCustomMimeTypeSupported; + }, + + /** + * Returns the data of the given MIME type if stored in a regular way or in a special comment. If given type + * is the same as {@link #_customDataFallbackType} the whole data without special comment is returned. + * + * @param {String} type + * @param {Boolean} [getNative=false] Indicates if the whole, original content of the dataTransfer should be returned. + * @returns {String} + */ + getData: function( type, getNative ) { + // As cache is already checked in CKEDITOR.plugins.clipboard.dataTransfer#getData it is skipped + // here. So the assumption is the given type is not in cache. + + var nativeData = this._getData( this._customDataFallbackType, true ); + if ( getNative ) { + return nativeData; + } + + var dataComment = this._extractDataComment( nativeData ), + value = null; + + // If we are getting the same type which may store custom data we need to extract content only. + if ( type === this._customDataFallbackType ) { + value = dataComment.content; + } else { + // If we are getting different type we need to check inside data comment if it is stored there. + if ( dataComment.data && dataComment.data[ type ] ) { + value = dataComment.data[ type ]; + } else { + // And then fallback to regular `getData`. + value = this._getData( type, true ); + } + } + + return value !== null ? value : ''; + }, + + /** + * Sets given data in native `dataTransfer` object. If given MIME type is not supported it uses + * {@link #_customDataFallbackType} MIME type to save data using special comment format: + * + * + * + * It is important to keep in mind that `{ type: value }` object is stringified (using `JSON.stringify`) + * and encoded (using `encodeURIComponent`). + * + * @param {String} type + * @param {String} value + * @returns {String} The value which was set. + */ + setData: function( type, value ) { + // In case of fallbackDataTransfer, cache does not reflect native data one-to-one. For example, having + // types like text/plain, text/html, cke/id will result in cache storing: + // + // { + // text/plain: value1, + // text/html: value2, + // cke/id: value3 + // } + // + // and native dataTransfer storing: + // + // { + // text/plain: value1, + // text/html: value2 + // } + // + // This way, accessing cache will always return proper value for a given type without a need for further processing. + // Cache is already set in CKEDITOR.plugins.clipboard.dataTransfer#setData so it is skipped here. + var isFallbackDataType = type === this._customDataFallbackType; + + if ( isFallbackDataType ) { + value = this._applyDataComment( value, this._getFallbackTypeData() ); + } + + var data = value, + nativeDataTransfer = this._dataTransfer.$; + + try { + nativeDataTransfer.setData( type, data ); + + if ( isFallbackDataType ) { + // If fallback type used, the native data is different so we overwrite `nativeHtmlCache` here. + this._dataTransfer._.nativeHtmlCache = data; + } + } catch ( e ) { + if ( this._isUnsupportedMimeTypeError( e ) ) { + var fallbackDataTransfer = CKEDITOR.plugins.clipboard.fallbackDataTransfer; + + if ( CKEDITOR.tools.indexOf( fallbackDataTransfer._customTypes, type ) === -1 ) { + fallbackDataTransfer._customTypes.push( type ); + } + + var fallbackTypeContent = this._getFallbackTypeContent(), + fallbackTypeData = this._getFallbackTypeData(); + + fallbackTypeData[ type ] = data; + + try { + data = this._applyDataComment( fallbackTypeContent, fallbackTypeData ); + nativeDataTransfer.setData( this._customDataFallbackType, data ); + // Again, fallback type was changed, so we need to refresh the cache. + this._dataTransfer._.nativeHtmlCache = data; + } catch ( e ) { + data = ''; + // Some dev logger should be added here. + } + } + } + + return data; + }, + + /** + * Native getData wrapper. + * + * @private + * @param {String} type + * @param {Boolean} [skipCache=false] + * @returns {String|null} + */ + _getData: function( type, skipCache ) { + var cache = this._dataTransfer._.data; + + if ( !skipCache && cache[ type ] ) { + return cache[ type ]; + } else { + try { + return this._dataTransfer.$.getData( type ); + } catch ( e ) { + return null; + } + } + }, + + /** + * Returns content stored in {@link #\_customDataFallbackType}. Content is always first retrieved + * from {@link #_dataTransfer} cache and then from native `dataTransfer` object. + * + * @private + * @returns {String} + */ + _getFallbackTypeContent: function() { + var fallbackTypeContent = this._dataTransfer._.data[ this._customDataFallbackType ]; + + if ( !fallbackTypeContent ) { + fallbackTypeContent = this._extractDataComment( this._getData( this._customDataFallbackType, true ) ).content; + } + return fallbackTypeContent; + }, + + /** + * Returns custom data stored in {@link #\_customDataFallbackType}. Custom data is always first retrieved + * from {@link #_dataTransfer} cache and then from native `dataTransfer` object. + * + * @private + * @returns {Object} + */ + _getFallbackTypeData: function() { + var fallbackTypes = CKEDITOR.plugins.clipboard.fallbackDataTransfer._customTypes, + fallbackTypeData = this._extractDataComment( this._getData( this._customDataFallbackType, true ) ).data || {}, + cache = this._dataTransfer._.data; + + CKEDITOR.tools.array.forEach( fallbackTypes, function( type ) { + if ( cache[ type ] !== undefined ) { + fallbackTypeData[ type ] = cache[ type ]; + + } else if ( fallbackTypeData[ type ] !== undefined ) { + fallbackTypeData[ type ] = fallbackTypeData[ type ]; + } + }, this ); + + return fallbackTypeData; + }, + + /** + * Whether provided error means that unsupported MIME type was used when calling native `dataTransfer.setData` method. + * + * @private + * @param {Error} error + * @returns {Boolean} + */ + _isUnsupportedMimeTypeError: function( error ) { + return error.message && error.message.search( /element not found/gi ) !== -1; + }, + + /** + * Extracts `cke-data` comment from the given content. + * + * @private + * @param {String} content + * @returns {Object} Returns an object containing extracted data as `data` + * and content (without `cke-data` comment) as `content`. + * @returns {Object|null} return.data Object containing `MIME type : value` pairs + * or null if `cke-data` comment is not present. + * @returns {String} return.content Regular content without `cke-data` comment. + */ + _extractDataComment: function( content ) { + var result = { + data: null, + content: content || '' + }; + + // At least 17 characters length: . + if ( content && content.length > 16 ) { + var matcher = //g, + matches; + + matches = matcher.exec( content ); + if ( matches && matches[ 1 ] ) { + result.data = JSON.parse( decodeURIComponent( matches[ 1 ] ) ); + result.content = content.replace( matches[ 0 ], '' ); + } + } + return result; + }, + + /** + * Creates `cke-data` comment containing stringified and encoded data object which is prepended to a given content. + * + * @private + * @param {String} content + * @param {Object} data + * @returns {String} + */ + _applyDataComment: function( content, data ) { + var customData = ''; + if ( data && CKEDITOR.tools.objectKeys( data ).length ) { + customData = ''; + } + return customData + ( content && content.length ? content : '' ); + } + }; + } )(); /** - * The default content type is used when pasted data cannot be clearly recognized as HTML or text. + * The default content type that is used when pasted data cannot be clearly recognized as HTML or text. * - * For example: `'foo'` may come from a plain text editor or a website. It isn't possible to recognize content - * type in this case, so default will be used. However, it's clear that `'example text'` is an HTML - * and its origin is webpage, email or other rich text editor. + * For example: `'foo'` may come from a plain text editor or a website. It is not possible to recognize the content + * type in this case, so the default type will be used. At the same time it is clear that `'example text'` is + * HTML and its origin is a web page, email or another rich text editor. * - * **Note:** If content type is text, then styles of context of paste are preserved. + * **Note:** If content type is text, then styles of the paste context are preserved. * * CKEDITOR.config.clipboard_defaultContentType = 'text'; * + * See also the {@link CKEDITOR.editor#paste} event and read more about the integration with clipboard + * in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard). + * * @since 4.0 * @cfg {'html'/'text'} [clipboard_defaultContentType='html'] * @member CKEDITOR.config */ /** - * Fired when a clipboard operation is about to be taken into the editor. - * Listeners can manipulate the data to be pasted before having it effectively - * inserted into the document. + * Fired after the user initiated a paste action, but before the data is inserted into the editor. + * The listeners to this event are able to process the content before its insertion into the document. + * + * Read more about the integration with clipboard in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard). + * + * See also: + * + * * the {@link CKEDITOR.config#pasteFilter} option, + * * the {@link CKEDITOR.editor#drop} event, + * * the {@link CKEDITOR.plugins.clipboard.dataTransfer} class. * * @since 3.1 * @event paste * @member CKEDITOR.editor * @param {CKEDITOR.editor} editor This editor instance. * @param data - * @param {String} data.type Type of data in `data.dataValue`. Usually `html` or `text`, but for listeners - * with priority less than 6 it may be also `auto`, what means that content type hasn't been recognised yet - * (this will be done by content type sniffer that listens with priority 6). + * @param {String} data.type The type of data in `data.dataValue`. Usually `'html'` or `'text'`, but for listeners + * with a priority smaller than `6` it may also be `'auto'` which means that the content type has not been recognised yet + * (this will be done by the content type sniffer that listens with priority `6`). * @param {String} data.dataValue HTML to be pasted. + * @param {String} data.method Indicates the data transfer method. It could be drag and drop or copy and paste. + * Possible values: `'drop'`, `'paste'`. Introduced in CKEditor 4.5. + * @param {CKEDITOR.plugins.clipboard.dataTransfer} data.dataTransfer Facade for the native dataTransfer object + * which provides access to various data types and files, and passes some data between linked events + * (like drag and drop). Introduced in CKEditor 4.5. + * @param {Boolean} [data.dontFilter=false] Whether the {@link CKEDITOR.editor#pasteFilter paste filter} should not + * be applied to data. This option has no effect when `data.type` equals `'text'` which means that for instance + * {@link CKEDITOR.config#forcePasteAsPlainText} has a higher priority. Introduced in CKEditor 4.5. */ /** - * Internal event to open the Paste dialog. + * Fired before the {@link #paste} event. Allows to preset data type. + * + * **Note:** This event is deprecated. Add a `0` priority listener for the + * {@link #paste} event instead. + * + * @deprecated + * @event beforePaste + * @member CKEDITOR.editor + */ + +/** + * Fired after the {@link #paste} event if content was modified. Note that if the paste + * event does not insert any data, the `afterPaste` event will not be fired. + * + * @event afterPaste + * @member CKEDITOR.editor + */ + +/** + * Internal event to open the Paste dialog window. + * + * + * This event was not available in 4.7.0-4.8.0 versions. * * @private * @event pasteDialog @@ -1227,3 +3147,172 @@ * @param {CKEDITOR.editor} editor This editor instance. * @param {Function} [data] Callback that will be passed to {@link CKEDITOR.editor#openDialog}. */ + +/** + * Facade for the native `drop` event. Fired when the native `drop` event occurs. + * + * **Note:** To manipulate dropped data, use the {@link CKEDITOR.editor#paste} event. + * Use the `drop` event only to control drag and drop operations (e.g. to prevent the ability to drop some content). + * + * Read more about integration with drag and drop in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard). + * + * See also: + * + * * The {@link CKEDITOR.editor#paste} event, + * * The {@link CKEDITOR.editor#dragstart} and {@link CKEDITOR.editor#dragend} events, + * * The {@link CKEDITOR.plugins.clipboard.dataTransfer} class. + * + * @since 4.5 + * @event drop + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + * @param data + * @param {Object} data.$ Native drop event. + * @param {CKEDITOR.dom.node} data.target Drop target. + * @param {CKEDITOR.plugins.clipboard.dataTransfer} data.dataTransfer DataTransfer facade. + * @param {CKEDITOR.dom.range} data.dragRange Drag range, lets you manipulate the drag range. + * Note that dragged HTML is saved as `text/html` data on `dragstart` so if you change the drag range + * on drop, dropped HTML will not change. You need to change it manually using + * {@link CKEDITOR.plugins.clipboard.dataTransfer#setData dataTransfer.setData}. + * @param {CKEDITOR.dom.range} data.dropRange Drop range, lets you manipulate the drop range. + */ + +/** + * Facade for the native `dragstart` event. Fired when the native `dragstart` event occurs. + * + * This event can be canceled in order to block the drag start operation. It can also be fired to mimic the start of the drag and drop + * operation. For instance, the `widget` plugin uses this option to integrate its custom block widget drag and drop with + * the entire system. + * + * Read more about integration with drag and drop in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard). + * + * See also: + * + * * The {@link CKEDITOR.editor#paste} event, + * * The {@link CKEDITOR.editor#drop} and {@link CKEDITOR.editor#dragend} events, + * * The {@link CKEDITOR.plugins.clipboard.dataTransfer} class. + * + * @since 4.5 + * @event dragstart + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + * @param data + * @param {Object} data.$ Native dragstart event. + * @param {CKEDITOR.dom.node} data.target Drag target. + * @param {CKEDITOR.plugins.clipboard.dataTransfer} data.dataTransfer DataTransfer facade. + */ + +/** + * Facade for the native `dragend` event. Fired when the native `dragend` event occurs. + * + * Read more about integration with drag and drop in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard). + * + * See also: + * + * * The {@link CKEDITOR.editor#paste} event, + * * The {@link CKEDITOR.editor#drop} and {@link CKEDITOR.editor#dragend} events, + * * The {@link CKEDITOR.plugins.clipboard.dataTransfer} class. + * + * @since 4.5 + * @event dragend + * @member CKEDITOR.editor + * @param {CKEDITOR.editor} editor This editor instance. + * @param data + * @param {Object} data.$ Native dragend event. + * @param {CKEDITOR.dom.node} data.target Drag target. + * @param {CKEDITOR.plugins.clipboard.dataTransfer} data.dataTransfer DataTransfer facade. + */ + +/** + * Defines a filter which is applied to external data pasted or dropped into the editor. Possible values are: + * + * * `'plain-text'` – Content will be pasted as a plain text. + * * `'semantic-content'` – Known tags (except `div`, `span`) with all attributes (except + * `style` and `class`) will be kept. + * * `'h1 h2 p div'` – Custom rules compatible with {@link CKEDITOR.filter}. + * * `null` – Content will not be filtered by the paste filter (but it still may be filtered + * by [Advanced Content Filter](#!/guide/dev_advanced_content_filter)). This value can be used to + * disable the paste filter in Chrome and Safari, where this option defaults to `'semantic-content'`. + * + * Example: + * + * config.pasteFilter = 'plain-text'; + * + * Custom setting: + * + * config.pasteFilter = 'h1 h2 p ul ol li; img[!src, alt]; a[!href]'; + * + * Based on this configuration option, a proper {@link CKEDITOR.filter} instance will be defined and assigned to the editor + * as a {@link CKEDITOR.editor#pasteFilter}. You can tweak the paste filter settings on the fly on this object + * as well as delete or replace it. + * + * var editor = CKEDITOR.replace( 'editor', { + * pasteFilter: 'semantic-content' + * } ); + * + * editor.on( 'instanceReady', function() { + * // The result of this will be that all semantic content will be preserved + * // except tables. + * editor.pasteFilter.disallow( 'table' ); + * } ); + * + * Note that the paste filter is applied only to **external** data. There are three data sources: + * + * * copied and pasted in the same editor (internal), + * * copied from one editor and pasted into another (cross-editor), + * * coming from all other sources like websites, MS Word, etc. (external). + * + * If {@link CKEDITOR.config#allowedContent Advanced Content Filter} is not disabled, then + * it will also be applied to pasted and dropped data. The paste filter job is to "normalize" + * external data which often needs to be handled differently than content produced by the editor. + * + * This setting defaults to `'semantic-content'` in Chrome, Opera and Safari (all Blink and Webkit based browsers) + * due to messy HTML which these browsers keep in the clipboard. In other browsers it defaults to `null`. + * + * @since 4.5 + * @cfg {String} [pasteFilter='semantic-content' in Chrome and Safari and `null` in other browsers] + * @member CKEDITOR.config + */ + +/** + * {@link CKEDITOR.filter Content filter} which is used when external data is pasted or dropped into the editor + * or a forced paste as plain text occurs. + * + * This object might be used on the fly to define rules for pasted external content. + * This object is available and used if the {@link CKEDITOR.plugins.clipboard clipboard} plugin is enabled and + * {@link CKEDITOR.config#pasteFilter} or {@link CKEDITOR.config#forcePasteAsPlainText} was defined. + * + * To enable the filter: + * + * var editor = CKEDITOR.replace( 'editor', { + * pasteFilter: 'plain-text' + * } ); + * + * You can also modify the filter on the fly later on: + * + * editor.pasteFilter = new CKEDITOR.filter( 'p h1 h2; a[!href]' ); + * + * Note that the paste filter is only applied to **external** data. There are three data sources: + * + * * copied and pasted in the same editor (internal), + * * copied from one editor and pasted into another (cross-editor), + * * coming from all other sources like websites, MS Word, etc. (external). + * + * If {@link CKEDITOR.config#allowedContent Advanced Content Filter} is not disabled, then + * it will also be applied to pasted and dropped data. The paste filter job is to "normalize" + * external data which often needs to be handled differently than content produced by the editor. + * + * @since 4.5 + * @readonly + * @property {CKEDITOR.filter} [pasteFilter] + * @member CKEDITOR.editor + */ + +/** + * Duration of the notification displayed after pasting was blocked by the browser. + * + * @since 4.7.0 + * @cfg {Number} [clipboard_notificationDuration=10000] + * @member CKEDITOR.config + */ +CKEDITOR.config.clipboard_notificationDuration = 10000; diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/icons/bgcolor.png b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/icons/bgcolor.png index a313938d..aa03f443 100644 Binary files a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/icons/bgcolor.png and b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/icons/bgcolor.png differ diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/icons/hidpi/bgcolor.png b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/icons/hidpi/bgcolor.png index 54b3e18c..9e52d1e5 100644 Binary files a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/icons/hidpi/bgcolor.png and b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/icons/hidpi/bgcolor.png differ diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/icons/hidpi/textcolor.png b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/icons/hidpi/textcolor.png index 8fc56bcb..67faa8e2 100644 Binary files a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/icons/hidpi/textcolor.png and b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/icons/hidpi/textcolor.png differ diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/icons/textcolor.png b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/icons/textcolor.png index 0d8e4590..88575c14 100644 Binary files a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/icons/textcolor.png and b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/icons/textcolor.png differ diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/af.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/af.js index 0c66d0a5..92442d1d 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/af.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/af.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'af', { auto: 'Outomaties', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'af', { F0FFFF: 'Asuur', F0F8FF: 'Ligte hemelsblou', E6E6FA: 'Laventel', - FFF: 'Wit' + FFF: 'Wit', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Meer Kleure...', panelTitle: 'Kleure', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ar.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ar.js index 00737726..1097b56b 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ar.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ar.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'ar', { auto: 'تلقائي', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'ar', { F0FFFF: 'سماوي', F0F8FF: 'لبني', E6E6FA: 'أرجواني', - FFF: 'أبيض' + FFF: 'أبيض', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'ألوان إضافية...', panelTitle: 'Colors', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/az.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/az.js new file mode 100644 index 00000000..6ce1f47e --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/az.js @@ -0,0 +1,75 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'az', { + auto: 'Avtomatik', + bgColorTitle: 'Doldurma rəngi', + colors: { + '000': 'Qara', + '800000': 'Şabalıdı', + '8B4513': 'Açıq şabalı', + '2F4F4F': 'Açıq boz', + '008080': 'Firuzəyi göy', + '000080': 'Tünd göy', + '4B0082': 'İndigo', + '696969': 'Tünd boz', + B22222: 'Kərpiç', + A52A2A: 'Şabalıdı', + DAA520: 'Qızıl ağcaqayın', + '006400': 'Tünd yaşıl', + '40E0D0': 'Firuzəyi', + '0000CD': 'Göy', + '800080': 'Bənövşəyi', + '808080': 'Boz', + F00: 'Qırmızı', + FF8C00: 'Tünd narıncı', + FFD700: 'Qızılı', + '008000': 'Yaşıl', + '0FF': 'Mavi', + '00F': 'Göy', + EE82EE: 'Açıq bənövşəyi', + A9A9A9: 'Asfalt rəngi', + FFA07A: 'Qızılbalıq', + FFA500: 'Narıncı', + FFFF00: 'Sarı', + '00FF00': 'Laym', + AFEEEE: 'Acıq firuzəyi', + ADD8E6: 'Acıq göy', + DDA0DD: 'Gavalı', + D3D3D3: 'Acıq boz', + FFF0F5: 'Yasəmən', + FAEBD7: 'Kağız', + FFFFE0: 'Acıq sarı', + F0FFF0: 'Yemişi', + F0FFFF: 'Gömgöy', + F0F8FF: 'Solğun göy', + E6E6FA: 'Lavanda', + FFF: 'Ağ', + '1ABC9C': 'Güclü mavi', + '2ECC71': 'Zümrüd', + '3498DB': 'Parlaq göy', + '9B59B6': 'Ametist', + '4E5F70': 'Bozlu göy', + 'F1C40F': 'Sapsarı', + '16A085': 'Tünd mavi', + '27AE60': 'Tünd zümrüd', + '2980B9': 'Güclü göy', + '8E44AD': 'Tünd bənövşəyi', + '2C3E50': 'Rəngsiz göy', + 'F39C12': 'Narıncı', + 'E67E22': 'Yerkökülü', + 'E74C3C': 'Solğun qırmızı', + 'ECF0F1': 'Parlaq gümüşü', + '95A5A6': 'Acıq bozlu mavi', + 'DDD': 'Acıq boz', + 'D35400': 'Balqabaqlı', + 'C0392B': 'Güclü qırmızı', + 'BDC3C7': 'Gümüşü', + '7F8C8D': 'Bozlu mavi', + '999': 'Tünd boz' + }, + more: 'Digər rənglər...', + panelTitle: 'Rənglər', + textColorTitle: 'Mətnin rəngi' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/bg.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/bg.js index a26d1c4c..06b59828 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/bg.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/bg.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'bg', { auto: 'Автоматично', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'bg', { F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'White' + FFF: 'White', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Още цветове', panelTitle: 'Цветове', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/bn.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/bn.js index 30ebb5b9..5b323be4 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/bn.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/bn.js @@ -1,10 +1,10 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'bn', { - auto: 'অটোমেটিক', - bgColorTitle: 'বেকগ্রাউন্ড রং', + auto: 'স্বয়ংক্রিয়ভাবে', + bgColorTitle: 'পৃষ্ঠতলের রং', colors: { '000': 'Black', '800000': 'Maroon', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'bn', { F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'White' + FFF: 'White', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'আরও রং...', panelTitle: 'Colors', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/bs.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/bs.js index 2211687a..9b66c001 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/bs.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/bs.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'bs', { auto: 'Automatska', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'bs', { F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'White' + FFF: 'White', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Više boja...', panelTitle: 'Colors', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ca.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ca.js index df1de45a..6cdb5f9f 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ca.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ca.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'ca', { auto: 'Automàtic', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'ca', { F0FFFF: 'Atzur', F0F8FF: 'Cian pàlid', E6E6FA: 'Lavanda', - FFF: 'Blanc' + FFF: 'Blanc', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Més Colors...', panelTitle: 'Colors', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/cs.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/cs.js index 1ed796de..6f0c4379 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/cs.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/cs.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'cs', { auto: 'Automaticky', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'cs', { F0FFFF: 'Azurová', F0F8FF: 'Alenčina modrá', E6E6FA: 'Levandulová', - FFF: 'Bílá' + FFF: 'Bílá', + '1ABC9C': 'Silná azurová', + '2ECC71': 'Emeraldová', + '3498DB': 'Jasně modrá', + '9B59B6': 'Ametystová', + '4E5F70': 'Šedomodrá', + 'F1C40F': 'Sytá žlutá', + '16A085': 'Tmavě azurová', + '27AE60': 'Tmavě emeraldová', + '2980B9': 'Silná modrá', + '8E44AD': 'Tmavě fialová', + '2C3E50': 'Odsycená modrá', + 'F39C12': 'Oranžová', + 'E67E22': 'Mrkvová', + 'E74C3C': 'Bledě červená', + 'ECF0F1': 'Světle stříbrná', + '95A5A6': 'Světlě šedoazurová', + 'DDD': 'Světle šedá', + 'D35400': 'Dýňová', + 'C0392B': 'Silná červená', + 'BDC3C7': 'Stříbrná', + '7F8C8D': 'Šedoazurová', + '999': 'Tmavošedá' }, more: 'Více barev...', panelTitle: 'Barvy', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/cy.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/cy.js index d0e3dc2d..de3949cc 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/cy.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/cy.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'cy', { auto: 'Awtomatig', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'cy', { F0FFFF: 'Aswr', F0F8FF: 'Glas Alys', E6E6FA: 'Lafant', - FFF: 'Gwyn' + FFF: 'Gwyn', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Mwy o Liwiau...', panelTitle: 'Lliwiau', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/da.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/da.js index 7dafba67..f6a9a66c 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/da.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/da.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'da', { auto: 'Automatisk', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'da', { F0FFFF: 'Himmeblå', F0F8FF: 'Alice blue', E6E6FA: 'Lavendel', - FFF: 'Hvid' + FFF: 'Hvid', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Flere farver...', panelTitle: 'Farver', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/de-ch.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/de-ch.js new file mode 100644 index 00000000..410207d1 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/de-ch.js @@ -0,0 +1,75 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'de-ch', { + auto: 'Automatisch', + bgColorTitle: 'Hintergrundfarbe', + colors: { + '000': 'Schwarz', + '800000': 'Kastanienbraun', + '8B4513': 'Braun', + '2F4F4F': 'Dunkles Schiefergrau', + '008080': 'Blaugrün', + '000080': 'Marineblau', + '4B0082': 'Indigo', + '696969': 'Dunkelgrau', + B22222: 'Ziegelrot', + A52A2A: 'Braun', + DAA520: 'Goldgelb', + '006400': 'Dunkelgrün', + '40E0D0': 'Türkis', + '0000CD': 'Mittelblau', + '800080': 'Lila', + '808080': 'Grau', + F00: 'Rot', + FF8C00: 'Dunkelorange', + FFD700: 'Gold', + '008000': 'Grün', + '0FF': 'Cyan', + '00F': 'Blau', + EE82EE: 'Violett', + A9A9A9: 'Dunkelgrau', + FFA07A: 'Helles Lachsrosa', + FFA500: 'Orange', + FFFF00: 'Gelb', + '00FF00': 'Lime', + AFEEEE: 'Blasstürkis', + ADD8E6: 'Hellblau', + DDA0DD: 'Pflaumenblau', + D3D3D3: 'Hellgrau', + FFF0F5: 'Lavendel', + FAEBD7: 'Antik Weiss', + FFFFE0: 'Hellgelb', + F0FFF0: 'Honigtau', + F0FFFF: 'Azurblau', + F0F8FF: 'Alice Blau', + E6E6FA: 'Lavendel', + FFF: 'Weiss', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING + }, + more: 'Weitere Farben...', + panelTitle: 'Farben', + textColorTitle: 'Textfarbe' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/de.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/de.js index 1adeed59..63ececf7 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/de.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/de.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'de', { auto: 'Automatisch', @@ -11,7 +11,7 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'de', { '8B4513': 'Braun', '2F4F4F': 'Dunkles Schiefergrau', '008080': 'Blaugrün', - '000080': 'Navy', + '000080': 'Marineblau', '4B0082': 'Indigo', '696969': 'Dunkelgrau', B22222: 'Ziegelrot', @@ -19,7 +19,7 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'de', { DAA520: 'Goldgelb', '006400': 'Dunkelgrün', '40E0D0': 'Türkis', - '0000CD': 'Medium Blau', + '0000CD': 'Mittelblau', '800080': 'Lila', '808080': 'Grau', F00: 'Rot', @@ -28,13 +28,13 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'de', { '008000': 'Grün', '0FF': 'Cyan', '00F': 'Blau', - EE82EE: 'Hellviolett', + EE82EE: 'Violett', A9A9A9: 'Dunkelgrau', FFA07A: 'Helles Lachsrosa', FFA500: 'Orange', FFFF00: 'Gelb', '00FF00': 'Lime', - AFEEEE: 'Blaß-Türkis', + AFEEEE: 'Blasstürkis', ADD8E6: 'Hellblau', DDA0DD: 'Pflaumenblau', D3D3D3: 'Hellgrau', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'de', { F0FFFF: 'Azurblau', F0F8FF: 'Alice Blau', E6E6FA: 'Lavendel', - FFF: 'Weiß' + FFF: 'Weiß', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Smaragdgrün', + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethystblau', + '4E5F70': 'Graublau', + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dunkelcyan', + '27AE60': 'Dunkelsmaragdgrün', + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dunkelviolett', + '2C3E50': 'Entsättigtes blau', + 'F39C12': 'Orange', + 'E67E22': 'Möhrenfarben', + 'E74C3C': 'Blassrot', + 'ECF0F1': 'Glänzendes Silber', + '95A5A6': 'Helles Graublau', + 'DDD': 'Hellgrau', + 'D35400': 'Kürbisfarben', + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silber', + '7F8C8D': 'Graucyan', + '999': 'Dunkelgrau' }, more: 'Weitere Farben...', panelTitle: 'Farben', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/el.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/el.js index 284b300b..34631835 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/el.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/el.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'el', { auto: 'Αυτόματα', @@ -8,18 +8,18 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'el', { colors: { '000': 'Μαύρο', '800000': 'Καστανέρυθρο', - '8B4513': 'Saddle Brown', // MISSING - '2F4F4F': 'Dark Slate Gray', // MISSING + '8B4513': 'Saddle Brown', + '2F4F4F': 'Dark Slate Gray', '008080': 'Βαθυκύανο', '000080': 'Μπλε μαρέν', '4B0082': 'Ινδικό', '696969': 'Σκούρο Γκρι', B22222: 'Ανοικτό Κόκκινο', A52A2A: 'Καφέ', - DAA520: 'Golden Rod', // MISSING + DAA520: 'Golden Rod', '006400': 'Σκούρο Πράσινο', '40E0D0': 'Τυρκουάζ', - '0000CD': 'Medium Blue', // MISSING + '0000CD': 'Medium Blue', '800080': 'Μοβ', '808080': 'Γκρι', F00: 'Κόκκινο', @@ -34,20 +34,42 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'el', { FFA500: 'Πορτοκαλί', FFFF00: 'Κίτρινο', '00FF00': 'Μοσχολέμονο', - AFEEEE: 'Pale Turquoise', // MISSING + AFEEEE: 'Pale Turquoise', ADD8E6: 'Γαλάζιο', - DDA0DD: 'Plum', // MISSING + DDA0DD: 'Δαμασκηνί', D3D3D3: 'Ανοικτό Γκρι', - FFF0F5: 'Lavender Blush', // MISSING - FAEBD7: 'Antique White', // MISSING + FFF0F5: 'Lavender Blush', + FAEBD7: 'Antique White', FFFFE0: 'Ανοικτό Κίτρινο', - F0FFF0: 'Honeydew', // MISSING + F0FFF0: 'Honeydew', F0FFFF: 'Γαλανό', - F0F8FF: 'Alice Blue', // MISSING + F0F8FF: 'Alice Blue', E6E6FA: 'Ελαφρός Ιώδες', - FFF: 'Λευκό' + FFF: 'Λευκό', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Πορτοκαλί', + 'E67E22': 'Καροτί', + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Αργυρό', + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, - more: 'Περισσότερα Χρώματα...', + more: 'Περισσότερα Χρώματα…', panelTitle: 'Χρώματα', textColorTitle: 'Χρώμα Κειμένου' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/en-au.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/en-au.js index 69f4e88b..053ee110 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/en-au.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/en-au.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'en-au', { auto: 'Automatic', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'en-au', { F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'White' + FFF: 'White', + '1ABC9C': 'Strong Cyan', + '2ECC71': 'Emerald', + '3498DB': 'Bright Blue', + '9B59B6': 'Amethyst', + '4E5F70': 'Greyish Blue', + 'F1C40F': 'Vivid Yellow', + '16A085': 'Dark Cyan', + '27AE60': 'Dark Emerald', + '2980B9': 'Strong Blue', + '8E44AD': 'Dark Violet', + '2C3E50': 'Desaturated Blue', + 'F39C12': 'Orange', + 'E67E22': 'Carrot', + 'E74C3C': 'Pale Red', + 'ECF0F1': 'Bright Silver', + '95A5A6': 'Light Greyish Cyan', + 'DDD': 'Light Grey', + 'D35400': 'Pumpkin', + 'C0392B': 'Strong Red', + 'BDC3C7': 'Silver', + '7F8C8D': 'Greyish Cyan', + '999': 'Dark Grey' }, more: 'More Colours...', panelTitle: 'Colors', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/en-ca.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/en-ca.js index 9b5d8089..cae90014 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/en-ca.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/en-ca.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'en-ca', { auto: 'Automatic', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'en-ca', { F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'White' + FFF: 'White', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'More Colours...', panelTitle: 'Colors', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/en-gb.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/en-gb.js index 174922dd..f35df8c2 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/en-gb.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/en-gb.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'en-gb', { auto: 'Automatic', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'en-gb', { F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'White' + FFF: 'White', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'More Colours...', panelTitle: 'Colours', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/en.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/en.js index 3118ec86..6e326c0e 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/en.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/en.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'en', { auto: 'Automatic', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'en', { F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'White' + FFF: 'White', + '1ABC9C': 'Strong Cyan', + '2ECC71': 'Emerald', + '3498DB': 'Bright Blue', + '9B59B6': 'Amethyst', + '4E5F70': 'Grayish Blue', + 'F1C40F': 'Vivid Yellow', + '16A085': 'Dark Cyan', + '27AE60': 'Dark Emerald', + '2980B9': 'Strong Blue', + '8E44AD': 'Dark Violet', + '2C3E50': 'Desaturated Blue', + 'F39C12': 'Orange', + 'E67E22': 'Carrot', + 'E74C3C': 'Pale Red', + 'ECF0F1': 'Bright Silver', + '95A5A6': 'Light Grayish Cyan', + 'DDD': 'Light Gray', + 'D35400': 'Pumpkin', + 'C0392B': 'Strong Red', + 'BDC3C7': 'Silver', + '7F8C8D': 'Grayish Cyan', + '999': 'Dark Gray' }, more: 'More Colors...', panelTitle: 'Colors', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/eo.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/eo.js index 2041ae79..e9d490eb 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/eo.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/eo.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'eo', { auto: 'Aŭtomata', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'eo', { F0FFFF: 'Lazura', F0F8FF: 'Aliceblua', E6E6FA: 'Lavendkolora', - FFF: 'Blanka' + FFF: 'Blanka', + '1ABC9C': 'Fortverdblua', + '2ECC71': 'Smeraldkolora', + '3498DB': 'Brilblua', + '9B59B6': 'Ametistkolora', + '4E5F70': 'Grizblua', + 'F1C40F': 'Brilflava', + '16A085': 'Malhelverdblua', + '27AE60': 'Malhelsmeraldkolora', + '2980B9': 'Fortblua', + '8E44AD': 'Malhelviola', + '2C3E50': 'Malsaturita Bluo', + 'F39C12': 'Oranĝkolora', + 'E67E22': 'Karotkolora', + 'E74C3C': 'Pale Ruĝa', + 'ECF0F1': 'Brile Arĝenta', + '95A5A6': 'Helgrizverdblua', + 'DDD': 'Helgriza', + 'D35400': 'Kukurbokolora', + 'C0392B': 'Forte ruĝa', + 'BDC3C7': 'Arĝenta', + '7F8C8D': 'Grizverdblua', + '999': 'Malhelgriza' }, more: 'Pli da Koloroj...', panelTitle: 'Koloroj', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/es-mx.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/es-mx.js new file mode 100644 index 00000000..5eaf5941 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/es-mx.js @@ -0,0 +1,75 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'es-mx', { + auto: 'Automático', + bgColorTitle: 'Color de fondo', + colors: { + '000': 'Negro', + '800000': 'Marrón', + '8B4513': 'Café sucio', + '2F4F4F': 'Gris pizarra oscuro', + '008080': 'Teal', + '000080': 'Armada', + '4B0082': 'Indigo', + '696969': 'Gris oscuro', + B22222: 'Ladrillo de fuego', + A52A2A: 'Café', + DAA520: 'Barra de oro', + '006400': 'Verde oscuro', + '40E0D0': 'Turquesa', + '0000CD': 'Azul medio', + '800080': 'Morado', + '808080': 'Gris', + F00: 'Rojo', + FF8C00: 'Naranja oscuro', + FFD700: 'Oro', + '008000': 'Verde', + '0FF': 'Cian', + '00F': 'Azul', + EE82EE: 'Violeta', + A9A9A9: 'Gris oscuro', + FFA07A: 'Salmón claro', + FFA500: 'Naranja', + FFFF00: 'Amarillo', + '00FF00': 'Lima', + AFEEEE: 'Turquesa pálido', + ADD8E6: 'Azul claro', + DDA0DD: 'Ciruela', + D3D3D3: 'Gris claro', + FFF0F5: 'Rubor de lavanda', + FAEBD7: 'Blanco antiguo', + FFFFE0: 'Amarillo claro', + F0FFF0: 'Gotas de miel', + F0FFFF: 'Azul celeste', + F0F8FF: 'Azul Alicia', + E6E6FA: 'Lavanda', + FFF: 'Blanco', + '1ABC9C': 'Cian fuerte', + '2ECC71': 'Esmeralda', + '3498DB': 'Azul brillante', + '9B59B6': 'Amatista', + '4E5F70': 'Azul grisáceo', + 'F1C40F': 'Amarillo vívido', + '16A085': 'Cian oscuro', + '27AE60': 'Esmeralda oscuro', + '2980B9': 'Azul fuerte', + '8E44AD': 'Violeta oscuro', + '2C3E50': 'Azul Desaturado', + 'F39C12': 'Naranja', + 'E67E22': 'Zanahoria', + 'E74C3C': 'Rojo pálido', + 'ECF0F1': 'Plata brillante', + '95A5A6': 'Cian grisáceo claro', + 'DDD': 'Gris claro', + 'D35400': 'Calabaza', + 'C0392B': 'Rojo fuerte', + 'BDC3C7': 'Plata', + '7F8C8D': 'Cian grisáceo', + '999': 'Gris oscuro' + }, + more: 'Más colores...', + panelTitle: 'Colores', + textColorTitle: 'Color de texto' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/es.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/es.js index 2437713f..ca49500a 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/es.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/es.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'es', { auto: 'Automático', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'es', { F0FFFF: 'Azul celeste', F0F8FF: 'Azul pálido', E6E6FA: 'Lavanda', - FFF: 'Blanco' + FFF: 'Blanco', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Más Colores...', panelTitle: 'Colores', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/et.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/et.js index a7492f4c..bddee58b 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/et.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/et.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'et', { auto: 'Automaatne', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'et', { F0FFFF: 'Taevasinine', F0F8FF: 'Beebisinine', E6E6FA: 'Lavendel', - FFF: 'Valge' + FFF: 'Valge', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Oraanž', + 'E67E22': 'Porgand', + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Tume hall' }, more: 'Rohkem värve...', panelTitle: 'Värvid', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/eu.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/eu.js index afeec68f..005f8918 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/eu.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/eu.js @@ -1,53 +1,75 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'eu', { auto: 'Automatikoa', - bgColorTitle: 'Atzeko kolorea', + bgColorTitle: 'Atzeko planoko kolorea', colors: { - '000': 'Black', - '800000': 'Maroon', - '8B4513': 'Saddle Brown', - '2F4F4F': 'Dark Slate Gray', - '008080': 'Teal', - '000080': 'Navy', - '4B0082': 'Indigo', - '696969': 'Dark Gray', - B22222: 'Fire Brick', - A52A2A: 'Brown', - DAA520: 'Golden Rod', - '006400': 'Dark Green', - '40E0D0': 'Turquoise', - '0000CD': 'Medium Blue', - '800080': 'Purple', - '808080': 'Gray', - F00: 'Red', - FF8C00: 'Dark Orange', - FFD700: 'Gold', - '008000': 'Green', - '0FF': 'Cyan', - '00F': 'Blue', - EE82EE: 'Violet', - A9A9A9: 'Dim Gray', - FFA07A: 'Light Salmon', - FFA500: 'Orange', - FFFF00: 'Yellow', - '00FF00': 'Lime', - AFEEEE: 'Pale Turquoise', - ADD8E6: 'Light Blue', - DDA0DD: 'Plum', - D3D3D3: 'Light Grey', - FFF0F5: 'Lavender Blush', - FAEBD7: 'Antique White', - FFFFE0: 'Light Yellow', - F0FFF0: 'Honeydew', - F0FFFF: 'Azure', - F0F8FF: 'Alice Blue', - E6E6FA: 'Lavender', - FFF: 'White' + '000': 'Beltza', + '800000': 'Granatea', + '8B4513': 'Zela marroia', + '2F4F4F': 'Arbel gris iluna', + '008080': 'Urdin berdexka', + '000080': 'Urdin iluna', + '4B0082': 'Indigoa', + '696969': 'Gris iluna', + B22222: 'Adreilu erregogorra', + A52A2A: 'Marroia', + DAA520: 'Urrezko makila', + '006400': 'Berde iluna', + '40E0D0': 'Turkesa', + '0000CD': 'Urdin ertaina', + '800080': 'Morea', + '808080': 'Grisa', + F00: 'Gorria', + FF8C00: 'Laranja iluna', + FFD700: 'Urrea', + '008000': 'Berdea', + '0FF': 'Ziana', + '00F': 'Urdina', + EE82EE: 'Bioleta', + A9A9A9: 'Gris ahula', + FFA07A: 'Izokin-kolore argia', + FFA500: 'Laranja', + FFFF00: 'Horia', + '00FF00': 'Lima', + AFEEEE: 'Turkesa argia', + ADD8E6: 'Urdin argia', + DDA0DD: 'Aran-kolorea', + D3D3D3: 'Gris argia', + FFF0F5: 'Izpiliku-gorrixka', + FAEBD7: 'Zuri zaharra', + FFFFE0: 'Hori argia', + F0FFF0: 'Ezti-ihintza', + F0FFFF: 'Zeru-urdina', + F0F8FF: 'Alizia urdina', + E6E6FA: 'Izpilikua', + FFF: 'Zuria', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Gris iluna' }, more: 'Kolore gehiago...', - panelTitle: 'Colors', - textColorTitle: 'Testu Kolorea' + panelTitle: 'Koloreak', + textColorTitle: 'Testu-kolorea' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fa.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fa.js index ed7c7687..c97b27f4 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fa.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fa.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'fa', { auto: 'خودکار', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'fa', { F0FFFF: 'لاجوردی', F0F8FF: 'آبی براق', E6E6FA: 'بنفش کمرنگ', - FFF: 'سفید' + FFF: 'سفید', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'رنگ​های بیشتر...', panelTitle: 'رنگها', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fi.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fi.js index 6fcf72ba..b19a128f 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fi.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fi.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'fi', { auto: 'Automaattinen', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'fi', { F0FFFF: 'Asurinsininen', F0F8FF: 'Alice Blue -sininen', E6E6FA: 'Lavanteli', - FFF: 'Valkoinen' + FFF: 'Valkoinen', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Lisää värejä...', panelTitle: 'Värit', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fo.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fo.js index 2a344681..51b9d457 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fo.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fo.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'fo', { auto: 'Automatiskt', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'fo', { F0FFFF: 'Azure', F0F8FF: 'Alice Blátt', E6E6FA: 'Lavender', - FFF: 'Hvítt' + FFF: 'Hvítt', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Fleiri litir...', panelTitle: 'Litir', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fr-ca.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fr-ca.js index 87ffd44a..1e952b3d 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fr-ca.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fr-ca.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'fr-ca', { auto: 'Automatique', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'fr-ca', { F0FFFF: 'Azure', F0F8FF: 'Bleu alice', E6E6FA: 'Lavande', - FFF: 'Blanc' + FFF: 'Blanc', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Plus de couleurs...', panelTitle: 'Couleurs', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fr.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fr.js index 0da76ab1..dae5997d 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fr.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/fr.js @@ -1,15 +1,15 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'fr', { auto: 'Automatique', - bgColorTitle: 'Couleur d\'arrière plan', + bgColorTitle: 'Couleur d\'arrière-plan', colors: { '000': 'Noir', '800000': 'Marron', - '8B4513': 'Brun moyen', - '2F4F4F': 'Vert sombre', + '8B4513': 'Brun de selle', + '2F4F4F': 'Gris sombre d\'ardoise', '008080': 'Canard', '000080': 'Bleu marine', '4B0082': 'Indigo', @@ -20,7 +20,7 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'fr', { '006400': 'Vert foncé', '40E0D0': 'Turquoise', '0000CD': 'Bleu royal', - '800080': 'Pourpre', + '800080': 'Violet', '808080': 'Gris', F00: 'Rouge', FF8C00: 'Orange foncé', @@ -29,8 +29,8 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'fr', { '0FF': 'Cyan', '00F': 'Bleu', EE82EE: 'Violet', - A9A9A9: 'Gris moyen', - FFA07A: 'Saumon', + A9A9A9: 'Gris tamisé', + FFA07A: 'Saumon clair', FFA500: 'Orange', FFFF00: 'Jaune', '00FF00': 'Lime', @@ -38,16 +38,38 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'fr', { ADD8E6: 'Bleu clair', DDA0DD: 'Prune', D3D3D3: 'Gris clair', - FFF0F5: 'Fard Lavande', + FFF0F5: 'Fard lavande', FAEBD7: 'Blanc antique', FFFFE0: 'Jaune clair', - F0FFF0: 'Honeydew', + F0FFF0: 'Vert rosée', F0FFFF: 'Azur', F0F8FF: 'Bleu Alice', E6E6FA: 'Lavande', - FFF: 'Blanc' + FFF: 'Blanc', + '1ABC9C': 'Cyan dur', + '2ECC71': 'Émeraude', + '3498DB': 'Bleu brillant', + '9B59B6': 'Améthyste', + '4E5F70': 'Bleu-gris', + 'F1C40F': 'Jaune vif', + '16A085': 'Cyan foncé', + '27AE60': 'Émeraude foncée', + '2980B9': 'Bleu dur', + '8E44AD': 'Violet foncé', + '2C3E50': 'Bleu désaturé', + 'F39C12': 'Orange', + 'E67E22': 'Carotte', + 'E74C3C': 'Rouge pâle', + 'ECF0F1': 'Argent brillant', + '95A5A6': 'Cyan-gris clair', + 'DDD': 'Gris clair', + 'D35400': 'Citrouille', + 'C0392B': 'Rouge dur', + 'BDC3C7': 'Argent', + '7F8C8D': 'Cyan-gris', + '999': 'Gris foncé' }, more: 'Plus de couleurs...', panelTitle: 'Couleurs', - textColorTitle: 'Couleur de texte' + textColorTitle: 'Couleur du texte' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/gl.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/gl.js index a0138860..7f0a1e38 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/gl.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/gl.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'gl', { auto: 'Automático', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'gl', { F0FFFF: 'Azul celeste', F0F8FF: 'Azul pálido', E6E6FA: 'Lavanda', - FFF: 'Branco' + FFF: 'Branco', + '1ABC9C': 'Cian forte', + '2ECC71': 'Esmeralda', + '3498DB': 'Azul brillante', + '9B59B6': 'Amatista', + '4E5F70': 'Azul agrisado', + 'F1C40F': 'Amarelo vívido', + '16A085': 'Cian escuro', + '27AE60': 'Esmeralda escuro', + '2980B9': 'Azul forte', + '8E44AD': 'Violeta escuro', + '2C3E50': 'Azul desaturado', + 'F39C12': 'Laranxa', + 'E67E22': 'Cenoria', + 'E74C3C': 'Vermello pálido', + 'ECF0F1': 'Plata brillante', + '95A5A6': 'Cian agrisado claro', + 'DDD': 'Gris claro', + 'D35400': 'Cabaza', + 'C0392B': 'Vermello forte', + 'BDC3C7': 'Plata', + '7F8C8D': 'Cian agrisado', + '999': 'Gris escuro' }, more: 'Máis cores...', panelTitle: 'Cores', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/gu.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/gu.js index f5b8b3a0..2bedc03d 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/gu.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/gu.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'gu', { auto: 'સ્વચાલિત', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'gu', { F0FFFF: 'અઝુરે', F0F8FF: 'એલીસ બ્લુ', E6E6FA: 'લવંડર', - FFF: 'સફેદ' + FFF: 'સફેદ', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'ઔર રંગ...', panelTitle: 'રંગ', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/he.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/he.js index d2d39c7c..b7788dcf 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/he.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/he.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'he', { auto: 'אוטומטי', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'he', { F0FFFF: 'תכלת', F0F8FF: 'כחול טיפת מים', E6E6FA: 'לבנדר', - FFF: 'לבן' + FFF: 'לבן', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'צבעים נוספים...', panelTitle: 'צבעים', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/hi.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/hi.js index b470e23f..9cf31357 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/hi.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/hi.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'hi', { auto: 'स्वचालित', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'hi', { F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'White' + FFF: 'White', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'और रंग...', panelTitle: 'Colors', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/hr.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/hr.js index 41e430ef..0e3ca629 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/hr.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/hr.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'hr', { auto: 'Automatski', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'hr', { F0FFFF: 'Azurna', F0F8FF: 'Alice plava', E6E6FA: 'Lavanda', - FFF: 'Bijela' + FFF: 'Bijela', + '1ABC9C': 'Jaka cijan', + '2ECC71': 'Emerald', + '3498DB': 'Svijetlo plava', + '9B59B6': 'Ametist', + '4E5F70': 'Sivkasto plava', + 'F1C40F': 'Žarka žuta', + '16A085': 'Tamna cijan', + '27AE60': 'Tamna emerald', + '2980B9': 'Jaka plava', + '8E44AD': 'Tamno ljubičasta', + '2C3E50': 'Desatuirarana plava', + 'F39C12': 'Narančasta', + 'E67E22': 'Mrkva', + 'E74C3C': 'Blijedo crvena', + 'ECF0F1': 'Sjana srebrna', + '95A5A6': 'Svijetlo sivkasta cijan', + 'DDD': 'Svijetlo siva', + 'D35400': 'Tikva', + 'C0392B': 'Jaka crvena', + 'BDC3C7': 'Srebrna', + '7F8C8D': 'Sivkasto cijan', + '999': 'Tamno siva' }, more: 'Više boja...', panelTitle: 'Boje', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/hu.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/hu.js index c02f196b..696b519f 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/hu.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/hu.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'hu', { auto: 'Automatikus', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'hu', { F0FFFF: 'Azúr kék', F0F8FF: 'Halvány kék', E6E6FA: 'Lavender', - FFF: 'Fehér' + FFF: 'Fehér', + '1ABC9C': 'Erős cián', + '2ECC71': 'Smaragd', + '3498DB': 'Fényes kék', + '9B59B6': 'Ametiszt', + '4E5F70': 'Szürkéskék', + 'F1C40F': 'Világossárga', + '16A085': 'Sötét cián', + '27AE60': 'Sötét smaragd', + '2980B9': 'Erős kék', + '8E44AD': 'Sötétlila', + '2C3E50': 'Világoskék', + 'F39C12': 'Narancs', + 'E67E22': 'Répa', + 'E74C3C': 'Sápadt vörös', + 'ECF0F1': 'Fényes ezüst', + '95A5A6': 'Világos szürkés cián', + 'DDD': 'Világosszürke', + 'D35400': 'Tök', + 'C0392B': 'Erős vörös', + 'BDC3C7': 'Ezüst', + '7F8C8D': 'Szürkés cián', + '999': 'Sötétszürke' }, more: 'További színek...', panelTitle: 'Színek', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/id.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/id.js index f017a40a..ac8b8669 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/id.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/id.js @@ -1,53 +1,75 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'id', { auto: 'Automatic', // MISSING bgColorTitle: 'Warna Latar Belakang', colors: { - '000': 'Black', // MISSING - '800000': 'Maroon', // MISSING + '000': 'Hitam', + '800000': 'Merah Tua', '8B4513': 'Saddle Brown', // MISSING '2F4F4F': 'Dark Slate Gray', // MISSING '008080': 'Teal', // MISSING '000080': 'Navy', // MISSING '4B0082': 'Indigo', // MISSING - '696969': 'Dark Gray', // MISSING - B22222: 'Fire Brick', // MISSING - A52A2A: 'Brown', // MISSING + '696969': 'Abu-abu Gelap', + B22222: 'Merah Bata', + A52A2A: 'Coklat', DAA520: 'Golden Rod', // MISSING - '006400': 'Dark Green', // MISSING + '006400': 'Hijau Gelap', '40E0D0': 'Turquoise', // MISSING - '0000CD': 'Medium Blue', // MISSING - '800080': 'Purple', // MISSING - '808080': 'Gray', // MISSING - F00: 'Red', // MISSING - FF8C00: 'Dark Orange', // MISSING - FFD700: 'Gold', // MISSING - '008000': 'Green', // MISSING + '0000CD': 'Biru Sedang', + '800080': 'Ungu', + '808080': 'Abu-abu', + F00: 'Merah', + FF8C00: 'Jingga Gelap', + FFD700: 'Emas', + '008000': 'Hijau', '0FF': 'Cyan', // MISSING - '00F': 'Blue', // MISSING + '00F': 'Biru', EE82EE: 'Violet', // MISSING - A9A9A9: 'Dim Gray', // MISSING - FFA07A: 'Light Salmon', // MISSING - FFA500: 'Orange', // MISSING - FFFF00: 'Yellow', // MISSING - '00FF00': 'Lime', // MISSING - AFEEEE: 'Pale Turquoise', // MISSING - ADD8E6: 'Light Blue', // MISSING + A9A9A9: 'Abu-abu Redup', + FFA07A: 'Salmon Cerah', + FFA500: 'Jingga', + FFFF00: 'Kuning', + '00FF00': 'Jeruk Lemon', + AFEEEE: 'Biru Hijau Pucat', + ADD8E6: 'Biru Cerah', DDA0DD: 'Plum', // MISSING - D3D3D3: 'Light Grey', // MISSING + D3D3D3: 'Abu-abu Cerah', FFF0F5: 'Lavender Blush', // MISSING FAEBD7: 'Antique White', // MISSING - FFFFE0: 'Light Yellow', // MISSING + FFFFE0: 'Kuning Cerah', F0FFF0: 'Honeydew', // MISSING F0FFFF: 'Azure', // MISSING F0F8FF: 'Alice Blue', // MISSING E6E6FA: 'Lavender', // MISSING - FFF: 'White' // MISSING + FFF: 'Putih', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, - more: 'More Colors...', // MISSING + more: 'Warna lainnya...', panelTitle: 'Warna', - textColorTitle: 'Text Color' // MISSING + textColorTitle: 'Warna Teks' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/is.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/is.js index 9c5ad7f3..18fbeac4 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/is.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/is.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'is', { auto: 'Sjálfval', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'is', { F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'White' + FFF: 'White', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Fleiri liti...', panelTitle: 'Colors', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/it.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/it.js index 43753e78..1a6bd302 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/it.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/it.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'it', { auto: 'Automatico', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'it', { F0FFFF: 'Azzurro', F0F8FF: 'Celeste', E6E6FA: 'Lavanda', - FFF: 'Bianco' + FFF: 'Bianco', + '1ABC9C': 'Ciano intenso', + '2ECC71': 'Smeraldo', + '3498DB': 'Blu luminoso', + '9B59B6': 'Ametista', + '4E5F70': 'Blu grigiastro', + 'F1C40F': 'Giallo vivido', + '16A085': 'Ciano scuro', + '27AE60': 'Smeraldo scuro', + '2980B9': 'Blu intenso', + '8E44AD': 'Viola scuro', + '2C3E50': 'Blu desaturato', + 'F39C12': 'Arancio', + 'E67E22': 'Carota', + 'E74C3C': 'Rosso pallido', + 'ECF0F1': 'Argento luminoso', + '95A5A6': 'Ciano grigiastro chiaro', + 'DDD': 'Grigio chiaro', + 'D35400': 'Zucca', + 'C0392B': 'Rosso intenso', + 'BDC3C7': 'Argento', + '7F8C8D': 'Ciano grigiastro', + '999': 'Grigio scuro' }, more: 'Altri colori...', panelTitle: 'Colori', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ja.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ja.js index b0a0b032..cd48fd32 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ja.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ja.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'ja', { auto: '自動', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'ja', { F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'White' + FFF: 'White', + '1ABC9C': 'Strong Cyan', + '2ECC71': 'Emerald', + '3498DB': 'Bright Blue', + '9B59B6': 'Amethyst', + '4E5F70': 'Grayish Blue', + 'F1C40F': 'Vivid Yellow', + '16A085': 'Dark Cyan', + '27AE60': 'Dark Emerald', + '2980B9': 'Strong Blue', + '8E44AD': 'Dark Violet', + '2C3E50': 'Desaturated Blue', + 'F39C12': 'Orange', + 'E67E22': 'Carrot', + 'E74C3C': 'Pale Red', + 'ECF0F1': 'Bright Silver', + '95A5A6': 'Light Grayish Cyan', + 'DDD': 'Light Gray', + 'D35400': 'Pumpkin', + 'C0392B': 'Strong Red', + 'BDC3C7': 'Silver', + '7F8C8D': 'Grayish Cyan', + '999': 'Dark Gray' }, more: 'その他の色...', panelTitle: '色', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ka.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ka.js index 6761c2f9..5bfcc093 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ka.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ka.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'ka', { auto: 'ავტომატური', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'ka', { F0FFFF: 'ღია ცისფერი 2', F0F8FF: 'ღია ცისფერი 3', E6E6FA: 'ღია იისფერი 2', - FFF: 'თეთრი' + FFF: 'თეთრი', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'მეტი ფერი...', panelTitle: 'ფერები', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/km.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/km.js index 084a68dc..5614e7e9 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/km.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/km.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'km', { auto: 'ស្វ័យប្រវត្តិ', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'km', { F0FFFF: 'ផ្ទៃមេឃ', F0F8FF: 'Alice Blue', E6E6FA: 'ឡាវិនដឺ', - FFF: 'ស' + FFF: 'ស', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'ពណ៌​ផ្សេង​ទៀត..', panelTitle: 'ពណ៌', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ko.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ko.js index 4f75867f..1aa652d3 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ko.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ko.js @@ -1,53 +1,75 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'ko', { - auto: '기본색상', + auto: '기본 색상', bgColorTitle: '배경 색상', colors: { - '000': 'Black', - '800000': 'Maroon', - '8B4513': 'Saddle Brown', - '2F4F4F': 'Dark Slate Gray', - '008080': 'Teal', - '000080': 'Navy', - '4B0082': 'Indigo', - '696969': 'Dark Gray', - B22222: 'Fire Brick', - A52A2A: 'Brown', - DAA520: 'Golden Rod', - '006400': 'Dark Green', - '40E0D0': 'Turquoise', - '0000CD': 'Medium Blue', - '800080': 'Purple', - '808080': 'Gray', - F00: 'Red', - FF8C00: 'Dark Orange', - FFD700: 'Gold', - '008000': 'Green', - '0FF': 'Cyan', - '00F': 'Blue', - EE82EE: 'Violet', - A9A9A9: 'Dim Gray', - FFA07A: 'Light Salmon', - FFA500: 'Orange', - FFFF00: 'Yellow', - '00FF00': 'Lime', - AFEEEE: 'Pale Turquoise', - ADD8E6: 'Light Blue', - DDA0DD: 'Plum', - D3D3D3: 'Light Grey', - FFF0F5: 'Lavender Blush', - FAEBD7: 'Antique White', - FFFFE0: 'Light Yellow', - F0FFF0: 'Honeydew', - F0FFFF: 'Azure', - F0F8FF: 'Alice Blue', - E6E6FA: 'Lavender', - FFF: 'White' + '000': '검정', + '800000': '밤색', + '8B4513': '새들 브라운', + '2F4F4F': '다크 슬레이트 그레이', + '008080': '틸', + '000080': '네이비', + '4B0082': '남색', + '696969': '짙은 회색', + B22222: '벽돌색', + A52A2A: '갈색', + DAA520: '골든 로드', + '006400': '암록색', + '40E0D0': '터코이즈', + '0000CD': '미디엄 블루', + '800080': '보라', + '808080': '회색', + F00: '빨강', + FF8C00: '짙은 주황', + FFD700: '금색', + '008000': '녹색', + '0FF': '시안', + '00F': '파랑', + EE82EE: '남보라', + A9A9A9: '딤 그레이', + FFA07A: '라이트 새먼', + FFA500: '주황', + FFFF00: '노랑', + '00FF00': '라임', + AFEEEE: '패일 터코이즈', + ADD8E6: '연한 파랑', + DDA0DD: '자두', + D3D3D3: '연한 회색', + FFF0F5: '라벤더 블러쉬', + FAEBD7: '앤틱 화이트', + FFFFE0: '연한 노랑', + F0FFF0: '허니듀', + F0FFFF: '하늘색', + F0F8FF: '앨리스 블루', + E6E6FA: '라벤더', + FFF: '흰색', + '1ABC9C': '진한 청록색', + '2ECC71': '에메랄드', + '3498DB': '밝은 파랑', + '9B59B6': '자수정', + '4E5F70': '회청색', + 'F1C40F': '선명한 노랑', + '16A085': '다크 시안', + '27AE60': '다크 에메랄드', + '2980B9': '진한 파랑', + '8E44AD': '다크 바이올렛', + '2C3E50': '탁한 파랑', + 'F39C12': '주황', + 'E67E22': '당근', + 'E74C3C': '창백한 빨강', + 'ECF0F1': '밝은 은색', + '95A5A6': '밝은 회청록', + 'DDD': '밝은 회색', + 'D35400': '호박', + 'C0392B': '진한 빨강', + 'BDC3C7': '은색', + '7F8C8D': '회청록', + '999': '암회색' }, - more: '색상선택...', - panelTitle: 'Colors', + more: '색상 선택...', + panelTitle: '색상', textColorTitle: '글자 색상' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ku.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ku.js index 86b42ed6..0be3a838 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ku.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ku.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'ku', { auto: 'خۆکار', @@ -29,7 +29,7 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'ku', { '0FF': 'شینی ئاسمانی', '00F': 'شین', EE82EE: 'پەمەیی', - A9A9A9: 'ڕەساسی ناتۆخ', + A9A9A9: 'ڕەساسی تاریک', FFA07A: 'نارەنجی ناتۆخ', FFA500: 'نارەنجی', FFFF00: 'زەرد', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'ku', { F0FFFF: 'شینێکی زۆر ناتۆخ', F0F8FF: 'شینێکی ئاسمانی زۆر ناتۆخ', E6E6FA: 'شیری', - FFF: 'سپی' + FFF: 'سپی', + '1ABC9C': 'شینی ئاسمانی بەهیز', + '2ECC71': 'زەمروتی سەوز', + '3498DB': 'شینی ناتۆخ', + '9B59B6': 'ئەرخەوانی، وەنەوشەیی', + '4E5F70': 'شینی ڕه‌ساسی', + 'F1C40F': 'زەردی زیندوو', + '16A085': 'شینی ئاسمانی تاریک', + '27AE60': 'زەمروتی سەوزی تاریک', + '2980B9': 'شینی تۆخ', + '8E44AD': 'پەمەیی تاریک', + '2C3E50': 'شینی ڕەشوسپی', + 'F39C12': 'نارنجی', + 'E67E22': 'گێزەر', + 'E74C3C': 'سوری زەرد هەڵگەڕاو', + 'ECF0F1': 'زیوی ڕووناک', + '95A5A6': 'شینی ئاسمانی ڕه‌ساسی بریسکه‌دار', + 'DDD': 'ڕەساسی بریسکەدار', + 'D35400': 'کولەکەی شیرین', + 'C0392B': 'سوری بەهێز', + 'BDC3C7': 'زیوی', + '7F8C8D': 'شینی ئاسمانی ڕه‌ساسی', + '999': 'ڕەساسی تۆخ' }, more: 'ڕەنگی زیاتر...', panelTitle: 'ڕەنگەکان', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/lt.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/lt.js index 72fa2ff7..1a542056 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/lt.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/lt.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'lt', { auto: 'Automatinis', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'lt', { F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'Balta' + FFF: 'Balta', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Daugiau spalvų...', panelTitle: 'Spalva', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/lv.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/lv.js index e2e1304e..a1798cf2 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/lv.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/lv.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'lv', { auto: 'Automātiska', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'lv', { F0FFFF: 'Debesszils', F0F8FF: 'Alises zils', E6E6FA: 'Lavanda', - FFF: 'Balts' + FFF: 'Balts', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Plašāka palete...', panelTitle: 'Krāsa', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/mk.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/mk.js index 82415c88..f598bfa7 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/mk.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/mk.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'mk', { auto: 'Automatic', // MISSING @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'mk', { F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'White' + FFF: 'White', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'More Colors...', // MISSING panelTitle: 'Colors', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/mn.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/mn.js index 0d0aa81c..b983b491 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/mn.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/mn.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'mn', { auto: 'Автоматаар', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'mn', { F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'Цагаан' + FFF: 'Цагаан', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Нэмэлт өнгөнүүд...', panelTitle: 'Өнгөнүүд', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ms.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ms.js index 85cae5a5..7107ccd4 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ms.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ms.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'ms', { auto: 'Otomatik', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'ms', { F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'White' + FFF: 'White', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Warna lain-lain...', panelTitle: 'Colors', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/nb.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/nb.js index c7ea2929..d479b581 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/nb.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/nb.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'nb', { auto: 'Automatisk', @@ -11,7 +11,7 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'nb', { '8B4513': 'Salbrun', '2F4F4F': 'Grønnsvart', '008080': 'Blågrønn', - '000080': 'Marineblått', + '000080': 'Marineblå', '4B0082': 'Indigo', '696969': 'Mørk grå', B22222: 'Mørkerød', @@ -35,17 +35,39 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'nb', { FFFF00: 'Gul', '00FF00': 'Lime', AFEEEE: 'Svak turkis', - ADD8E6: 'Lys Blå', + ADD8E6: 'Lys blå', DDA0DD: 'Plomme', D3D3D3: 'Lys grå', FFF0F5: 'Svak lavendelrosa', FAEBD7: 'Antikk-hvit', FFFFE0: 'Lys gul', F0FFF0: 'Honningmelon', - F0FFFF: 'Svakt asurblått', + F0FFFF: 'Svak asurblå', F0F8FF: 'Svak cyan', E6E6FA: 'Lavendel', - FFF: 'Hvit' + FFF: 'Hvit', + '1ABC9C': 'Sterk cyan', + '2ECC71': 'Smaragd', + '3498DB': 'Lys blå', + '9B59B6': 'Ametyst', + '4E5F70': 'Gråaktig blå', + 'F1C40F': 'Livaktig gul', + '16A085': 'Mørk cyan', + '27AE60': 'Mørk smaragd', + '2980B9': 'Sterk blå', + '8E44AD': 'Mørk fiolett', + '2C3E50': 'Desaturert blå', + 'F39C12': 'Oransje', + 'E67E22': 'Gulrot', + 'E74C3C': 'Blek rød', + 'ECF0F1': 'Klar sølv', + '95A5A6': 'Lys gråaktig cyan', + 'DDD': 'Lys grå', + 'D35400': 'Gresskar', + 'C0392B': 'Sterk rød', + 'BDC3C7': 'Sølv', + '7F8C8D': 'Gråaktig cyan', + '999': 'Mørk grå' }, more: 'Flere farger...', panelTitle: 'Farger', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/nl.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/nl.js index 0ef9a1cc..89342aad 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/nl.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/nl.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'nl', { auto: 'Automatisch', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'nl', { F0FFFF: 'Azuur', F0F8FF: 'Licht hemelsblauw', E6E6FA: 'Lavendel', - FFF: 'Wit' + FFF: 'Wit', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Meer kleuren...', panelTitle: 'Kleuren', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/no.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/no.js index 1778df46..ee2a2f4f 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/no.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/no.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'no', { auto: 'Automatisk', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'no', { F0FFFF: 'Svakt asurblått', F0F8FF: 'Svak cyan', E6E6FA: 'Lavendel', - FFF: 'Hvit' + FFF: 'Hvit', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Flere farger...', panelTitle: 'Farger', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/oc.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/oc.js new file mode 100644 index 00000000..9320eaa4 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/oc.js @@ -0,0 +1,75 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'oc', { + auto: 'Automatic', + bgColorTitle: 'Color de rèireplan', + colors: { + '000': 'Negre', + '800000': 'Marron', + '8B4513': 'Brun de sèla', + '2F4F4F': 'Gris escur de lausa', + '008080': 'Guit', + '000080': 'Blau marina', + '4B0082': 'Indigo', + '696969': 'Gris escur', + B22222: 'Roge teula', + A52A2A: 'Brun', + DAA520: 'Aur ternit', + '006400': 'Verd escur', + '40E0D0': 'Turquesa', + '0000CD': 'Blau reial', + '800080': 'Violet', + '808080': 'Gris', + F00: 'Roge', + FF8C00: 'Irange escur', + FFD700: 'Aur', + '008000': 'Verd', + '0FF': 'Cian', + '00F': 'Blau', + EE82EE: 'Violet', + A9A9A9: 'Gris tamisat', + FFA07A: 'Salmon clar', + FFA500: 'Irange', + FFFF00: 'Jaune', + '00FF00': 'Lima', + AFEEEE: 'Turquesa clar', + ADD8E6: 'Blau clar', + DDA0DD: 'Pruna', + D3D3D3: 'Gris clar', + FFF0F5: 'Fard lavanda', + FAEBD7: 'Blanc antic', + FFFFE0: 'Jaune clar', + F0FFF0: 'Verd rosada', + F0FFFF: 'Azur', + F0F8FF: 'Blau Alícia', + E6E6FA: 'Lavanda', + FFF: 'Blanc', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING + }, + more: 'Mai de colors...', + panelTitle: 'Colors', + textColorTitle: 'Color del tèxte' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/pl.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/pl.js index 61123a84..3d500cdc 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/pl.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/pl.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'pl', { auto: 'Automatycznie', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'pl', { F0FFFF: 'Jasnolazurowy', F0F8FF: 'Jasnobłękitny', E6E6FA: 'Lawendowy', - FFF: 'Biały' + FFF: 'Biały', + '1ABC9C': 'Cyjan', + '2ECC71': 'Szmaragdowy', + '3498DB': 'Jasnoniebieski', + '9B59B6': 'Ametystowy', + '4E5F70': 'Szaroniebieski', + 'F1C40F': 'Żółty', + '16A085': 'Ciemny cyjan', + '27AE60': 'Ciemnoszmaragdowy', + '2980B9': 'Ciemnoniebieski', + '8E44AD': 'Ciemnofioletowy', + '2C3E50': 'Nienasycony niebieski', + 'F39C12': 'Pomarańczowy', + 'E67E22': 'Marchewkowy', + 'E74C3C': 'Bladoczerwony', + 'ECF0F1': 'Jasnosrebrny', + '95A5A6': 'Szarocyjanowy', + 'DDD': 'Jasnoszary', + 'D35400': 'Dyniowy', + 'C0392B': 'Ciemnoczerwony', + 'BDC3C7': 'Srebrny', + '7F8C8D': 'Szarawy cyjan', + '999': 'Ciemnoszary' }, more: 'Więcej kolorów...', panelTitle: 'Kolory', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/pt-br.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/pt-br.js index c04c32e4..88bdd442 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/pt-br.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/pt-br.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'pt-br', { auto: 'Automático', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'pt-br', { F0FFFF: 'Azure', F0F8FF: 'Azul Alice', E6E6FA: 'Lavanda 2', - FFF: 'Branco' + FFF: 'Branco', + '1ABC9C': 'Ciano Forte', + '2ECC71': 'Esmeralda', + '3498DB': 'Azul Brilhante', + '9B59B6': 'Ametista', + '4E5F70': 'Azul acinzentado', + 'F1C40F': 'Amarelo Vívido', + '16A085': 'Ciano Escuro', + '27AE60': 'Esmeralda Escura', + '2980B9': 'Azul Forte', + '8E44AD': 'Violeta Escura', + '2C3E50': 'Azul Dessaturado', + 'F39C12': 'Laranja', + 'E67E22': 'Laranja Cenoura', + 'E74C3C': 'Vermelho Pálido', + 'ECF0F1': 'Prata Brilhante', + '95A5A6': 'Ciano Acinzentado Claro ', + 'DDD': 'Cinza Claro', + 'D35400': 'Abóbora', + 'C0392B': 'Vermelho Forte', + 'BDC3C7': 'Prata', + '7F8C8D': 'Ciano Acinzentado', + '999': 'Cinza Escuro' }, more: 'Mais Cores...', panelTitle: 'Cores', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/pt.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/pt.js index a1148e07..b9866bdb 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/pt.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/pt.js @@ -1,53 +1,75 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'pt', { auto: 'Automático', - bgColorTitle: 'Cor de Fundo', + bgColorTitle: 'Cor de fundo', colors: { '000': 'Black', - '800000': 'Maroon', + '800000': 'Castanho', '8B4513': 'Saddle Brown', - '2F4F4F': 'Dark Slate Gray', + '2F4F4F': 'Cinza lousa escuro', '008080': 'Teal', - '000080': 'Navy', + '000080': 'Azul naval', '4B0082': 'Indigo', - '696969': 'Dark Gray', - B22222: 'Fire Brick', - A52A2A: 'Brown', - DAA520: 'Golden Rod', - '006400': 'Dark Green', - '40E0D0': 'Turquoise', - '0000CD': 'Medium Blue', + '696969': 'Cinza escuro', + B22222: 'Vermelho tijolo', + A52A2A: 'Castanho', + DAA520: 'Dourado (daa520)', + '006400': 'Verde escuro (006400)', + '40E0D0': 'Turquesa', + '0000CD': 'Azul médio (0000cd)', '800080': 'Purple', - '808080': 'Gray', - F00: 'Red', - FF8C00: 'Dark Orange', - FFD700: 'Gold', - '008000': 'Green', - '0FF': 'Cyan', - '00F': 'Blue', - EE82EE: 'Violet', - A9A9A9: 'Dim Gray', - FFA07A: 'Light Salmon', - FFA500: 'Orange', - FFFF00: 'Yellow', - '00FF00': 'Lime', - AFEEEE: 'Pale Turquoise', + '808080': 'Cinza', + F00: 'Vermelho', + FF8C00: 'Laranja escuro', + FFD700: 'Dourado', + '008000': 'Verde', + '0FF': 'Ciano', + '00F': 'Azul', + EE82EE: 'Violeta', + A9A9A9: 'Cinza fosco', + FFA07A: 'Salmão claro', + FFA500: 'Laranja', + FFFF00: 'Amarelo', + '00FF00': 'Limão (Verde espectro)', + AFEEEE: 'Turquesa pálida (afeeee)', ADD8E6: 'Light Blue', - DDA0DD: 'Plum', - D3D3D3: 'Light Grey', - FFF0F5: 'Lavender Blush', - FAEBD7: 'Antique White', - FFFFE0: 'Light Yellow', - F0FFF0: 'Honeydew', - F0FFFF: 'Azure', - F0F8FF: 'Alice Blue', - E6E6FA: 'Lavender', - FFF: 'White' + DDA0DD: 'Ameixa', + D3D3D3: 'Cinza claro', + FFF0F5: 'Lavanda avermelhada', + FAEBD7: 'Branco velho', + FFFFE0: 'Amarelo claro', + F0FFF0: 'Maná (f0fff0)', + F0FFFF: 'Azul celeste', + F0F8FF: 'Azul Alice (f0f8ff)', + E6E6FA: 'Lavanda', + FFF: 'Branco', + '1ABC9C': 'Ciano forte', + '2ECC71': 'Esmeralda', + '3498DB': 'Azul brilhante', + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Azul acinzentado', + 'F1C40F': 'Amarelo vívido', + '16A085': 'Ciano escuro', + '27AE60': 'Esmeralda escuro', + '2980B9': 'Azul forte', + '8E44AD': 'Violeta escuro', + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Laranja', + 'E67E22': 'Cenoura', + 'E74C3C': 'Vermelho claro', + 'ECF0F1': 'Prateado brilhante', + '95A5A6': 'Ciano acinzentado claro', + 'DDD': 'Cinza claro', + 'D35400': 'Abóbora', + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Prateado', + '7F8C8D': 'Ciano acinzentado', + '999': 'Cinza escuro' }, - more: 'Mais Cores...', - panelTitle: 'Colors', - textColorTitle: 'Cor do Texto' + more: 'Mais cores...', + panelTitle: 'Cores', + textColorTitle: 'Cor do texto' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ro.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ro.js index 83b2acab..00990e02 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ro.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ro.js @@ -1,53 +1,75 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'ro', { - auto: 'Automatic', + auto: 'Automat', bgColorTitle: 'Coloarea fundalului', colors: { - '000': 'Black', - '800000': 'Maroon', - '8B4513': 'Saddle Brown', + '000': 'Negru', + '800000': 'Maro închis', + '8B4513': 'Maro închis', '2F4F4F': 'Dark Slate Gray', - '008080': 'Teal', - '000080': 'Navy', + '008080': 'Albastru verzui', + '000080': 'Bleumarin', '4B0082': 'Indigo', - '696969': 'Dark Gray', - B22222: 'Fire Brick', - A52A2A: 'Brown', - DAA520: 'Golden Rod', - '006400': 'Dark Green', - '40E0D0': 'Turquoise', - '0000CD': 'Medium Blue', - '800080': 'Purple', - '808080': 'Gray', - F00: 'Red', - FF8C00: 'Dark Orange', - FFD700: 'Gold', - '008000': 'Green', - '0FF': 'Cyan', - '00F': 'Blue', + '696969': 'Gri închis', + B22222: 'Cărămiziu (roșiatic)', + A52A2A: 'Maro', + DAA520: 'Galben muștar', + '006400': 'Verde închis', + '40E0D0': 'Turcoaz', + '0000CD': 'Albastru mediu', + '800080': 'Mov', + '808080': 'Gri', + F00: 'Roșu', + FF8C00: 'Portocaliu închis', + FFD700: 'Auriu', + '008000': 'Verde', + '0FF': 'Cyan (albstru-verzui)', + '00F': 'Albastru', EE82EE: 'Violet', - A9A9A9: 'Dim Gray', + A9A9A9: 'Gri roșiatic', FFA07A: 'Light Salmon', - FFA500: 'Orange', - FFFF00: 'Yellow', - '00FF00': 'Lime', - AFEEEE: 'Pale Turquoise', - ADD8E6: 'Light Blue', + FFA500: 'Portocaliu', + FFFF00: 'Galben', + '00FF00': 'Verde lime', + AFEEEE: 'Turcoaz deschis', + ADD8E6: 'Albastru deschis', DDA0DD: 'Plum', - D3D3D3: 'Light Grey', + D3D3D3: 'Gri deschis', FFF0F5: 'Lavender Blush', - FAEBD7: 'Antique White', - FFFFE0: 'Light Yellow', + FAEBD7: 'Alb vechi', + FFFFE0: 'Galben deschis', F0FFF0: 'Honeydew', - F0FFFF: 'Azure', + F0FFFF: 'Azuriu', F0F8FF: 'Alice Blue', - E6E6FA: 'Lavender', - FFF: 'White' + E6E6FA: 'Levănțică', + FFF: 'Alb', + '1ABC9C': 'Cyan închis', + '2ECC71': 'Verde deschis', + '3498DB': 'Albastru deschis', + '9B59B6': 'Mov roșiatic', + '4E5F70': 'Albastru gri', + 'F1C40F': 'Galben viu', + '16A085': 'Cyan închis', + '27AE60': 'Smarlad închis', + '2980B9': 'Albastru închis', + '8E44AD': 'Violet închis', + '2C3E50': 'Albastru desaturat', + 'F39C12': 'Portocaliu', + 'E67E22': 'Portocaliu morcov', + 'E74C3C': 'Roșu pal', + 'ECF0F1': 'Argintiu strălucitor', + '95A5A6': 'Cyan gri deschis', + 'DDD': 'Gri deschis', + 'D35400': 'Portocaliu roșcat', + 'C0392B': 'Roșu închis', + 'BDC3C7': 'Argintiu', + '7F8C8D': 'Cyan gri', + '999': 'Gri închis' }, more: 'Mai multe culori...', - panelTitle: 'Colors', + panelTitle: 'Culori', textColorTitle: 'Culoarea textului' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ru.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ru.js index 7e023abd..e99f5a41 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ru.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ru.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'ru', { auto: 'Автоматически', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'ru', { F0FFFF: 'Лазурный', F0F8FF: 'Бледно-голубой', E6E6FA: 'Лавандовый', - FFF: 'Белый' + FFF: 'Белый', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Изумрудный', + '3498DB': 'Светло-синий', + '9B59B6': 'Аметист', + '4E5F70': 'Сине-серый', + 'F1C40F': 'Ярко-желтый', + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Тёмно-изумрудный', + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Тёмно-фиолетовый', + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Оранжевый', + 'E67E22': 'Морковный', + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Светло-серый', + 'D35400': 'Цвет тыквы', + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Серебристый', + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Тёмно-серый' }, more: 'Ещё цвета...', panelTitle: 'Цвета', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/si.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/si.js index c897679c..b979a961 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/si.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/si.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'si', { auto: 'Automatic', // MISSING @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'si', { F0FFFF: 'Azure', // MISSING F0F8FF: 'Alice Blue', // MISSING E6E6FA: 'Lavender', // MISSING - FFF: 'White' // MISSING + FFF: 'White', // MISSING + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'More Colors...', // MISSING panelTitle: 'වර්ණය', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sk.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sk.js index aabda1f6..ced5c956 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sk.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sk.js @@ -1,13 +1,13 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'sk', { auto: 'Automaticky', bgColorTitle: 'Farba pozadia', colors: { '000': 'Čierna', - '800000': 'Maroon', + '800000': 'Gaštanová', '8B4513': 'Sedlová hnedá', '2F4F4F': 'Tmavo bridlicovo sivá', '008080': 'Modrozelená', @@ -30,22 +30,44 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'sk', { '00F': 'Modrá', EE82EE: 'Fialová', A9A9A9: 'Tmavá sivá', - FFA07A: 'Svetlo lososová', + FFA07A: 'Svetlá lososová', FFA500: 'Oranžová', FFFF00: 'Žltá', '00FF00': 'Vápenná', - AFEEEE: 'Svetlo tyrkysová', - ADD8E6: 'Svetlo modrá', + AFEEEE: 'Svetlá tyrkysová', + ADD8E6: 'Svetlá modrá', DDA0DD: 'Slivková', - D3D3D3: 'Svetlo sivá', + D3D3D3: 'Svetlá sivá', FFF0F5: 'Levanduľovo červená', FAEBD7: 'Antická biela', - FFFFE0: 'Svetlo žltá', + FFFFE0: 'Svetlá žltá', F0FFF0: 'Medová', F0FFFF: 'Azúrová', F0F8FF: 'Alicovo modrá', E6E6FA: 'Levanduľová', - FFF: 'Biela' + FFF: 'Biela', + '1ABC9C': 'Silno tyrkysová', + '2ECC71': 'Smaragdová', + '3498DB': 'Svetlo modrá', + '9B59B6': 'Ametystová', + '4E5F70': 'Sivo modrá', + 'F1C40F': 'Sýto žltá', + '16A085': 'Tmavo tyrkysová', + '27AE60': 'Tmavo smaragdová', + '2980B9': 'Silno modrá', + '8E44AD': 'Tmavo fialová', + '2C3E50': 'Nesýto modrá', + 'F39C12': 'Oranžová', + 'E67E22': 'Mrkvová', + 'E74C3C': 'Bledo červená', + 'ECF0F1': 'Svetlá bronzová', + '95A5A6': 'Svetlá sivo-tyrkysová', + 'DDD': 'Svetlo sivá', + 'D35400': 'Tekvicová', + 'C0392B': 'Silno červená', + 'BDC3C7': 'Strieborná', + '7F8C8D': 'Sivo tyrkysová', + '999': 'Tmavo sivá' }, more: 'Viac farieb...', panelTitle: 'Farby', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sl.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sl.js index 6397c7a6..09ef88c2 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sl.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sl.js @@ -1,12 +1,12 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'sl', { auto: 'Samodejno', bgColorTitle: 'Barva ozadja', colors: { - '000': 'Black', + '000': 'Črna', '800000': 'Maroon', '8B4513': 'Saddle Brown', '2F4F4F': 'Dark Slate Gray', @@ -15,39 +15,61 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'sl', { '4B0082': 'Indigo', '696969': 'Dark Gray', B22222: 'Fire Brick', - A52A2A: 'Brown', + A52A2A: 'Rjava', DAA520: 'Golden Rod', - '006400': 'Dark Green', - '40E0D0': 'Turquoise', - '0000CD': 'Medium Blue', - '800080': 'Purple', - '808080': 'Gray', - F00: 'Red', - FF8C00: 'Dark Orange', - FFD700: 'Gold', - '008000': 'Green', - '0FF': 'Cyan', - '00F': 'Blue', - EE82EE: 'Violet', + '006400': 'Temno zelena', + '40E0D0': 'Turkizna', + '0000CD': 'Srednje modra', + '800080': 'Škrlatna', + '808080': 'Siva', + F00: 'Rdeča', + FF8C00: 'Temno oranžna', + FFD700: 'Zlata', + '008000': 'Zelena', + '0FF': 'Sinja', + '00F': 'Modra', + EE82EE: 'Vijolična', A9A9A9: 'Dim Gray', FFA07A: 'Light Salmon', - FFA500: 'Orange', - FFFF00: 'Yellow', + FFA500: 'Oranžna', + FFFF00: 'Rumena', '00FF00': 'Lime', AFEEEE: 'Pale Turquoise', - ADD8E6: 'Light Blue', + ADD8E6: 'Svetlo modra', DDA0DD: 'Plum', - D3D3D3: 'Light Grey', + D3D3D3: 'Svetlo siva', FFF0F5: 'Lavender Blush', FAEBD7: 'Antique White', - FFFFE0: 'Light Yellow', + FFFFE0: 'Svetlo rumena', F0FFF0: 'Honeydew', F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'White' + FFF: 'Bela', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, - more: 'Več barv...', - panelTitle: 'Colors', + more: 'Več barv ...', + panelTitle: 'Barve', textColorTitle: 'Barva besedila' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sq.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sq.js index dbe5f992..60670517 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sq.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sq.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'sq', { auto: 'Automatik', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'sq', { F0FFFF: 'Ngjyrë Qielli', F0F8FF: 'E Kaltër Alice', E6E6FA: 'Ngjyrë Purpur e Zbetë', - FFF: 'E bardhë' + FFF: 'E bardhë', + '1ABC9C': 'Sian i Fortë', + '2ECC71': 'Smerald', + '3498DB': 'E kaltër e ndritur', + '9B59B6': 'Ametist', + '4E5F70': 'Kaltër në Gri', + 'F1C40F': 'E verdhë e gjallë', + '16A085': 'Sian e errët', + '27AE60': 'Smerald e errët', + '2980B9': 'E kaltër e fortë', + '8E44AD': 'Vjollcë e errët', + '2C3E50': 'E kaltër e njomë', + 'F39C12': 'E Portokalltë', + 'E67E22': 'Ngjyrë karote', + 'E74C3C': 'E kuqe e zbehtë', + 'ECF0F1': 'Ngjyrë argjendi e ndritshme', + '95A5A6': 'Sian në gri e lehtë', + 'DDD': 'Gri e lehtë', + 'D35400': 'Ngjyrë kungulli', + 'C0392B': 'E kuqe e fortë', + 'BDC3C7': 'Ngjyrë argjendi', + '7F8C8D': 'Sian në gri', + '999': 'Gri e Errët' }, more: 'Më Shumë Ngjyra...', panelTitle: 'Ngjyrat', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sr-latn.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sr-latn.js index 146bc6c7..23500d13 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sr-latn.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sr-latn.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'sr-latn', { auto: 'Automatski', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'sr-latn', { F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'White' + FFF: 'White', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Više boja...', panelTitle: 'Colors', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sr.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sr.js index f9c0f7ce..c6244705 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sr.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sr.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'sr', { auto: 'Аутоматски', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'sr', { F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'White' + FFF: 'White', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Више боја...', panelTitle: 'Colors', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sv.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sv.js index 2275f5f3..dfd5e5cc 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sv.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/sv.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'sv', { auto: 'Automatisk', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'sv', { F0FFFF: 'Azurblå', F0F8FF: 'Aliceblå', E6E6FA: 'Lavendel', - FFF: 'Vit' + FFF: 'Vit', + '1ABC9C': 'Stark turkos', + '2ECC71': 'Smaragd', + '3498DB': 'Klarblå', + '9B59B6': 'Ametist', + '4E5F70': 'Gråblå', + 'F1C40F': 'Klargul', + '16A085': 'Mörk turkos', + '27AE60': 'Mörk smaragd', + '2980B9': 'Stark blå', + '8E44AD': 'Mörk violett', + '2C3E50': 'Blek blå', + 'F39C12': 'Orange', + 'E67E22': 'Morot', + 'E74C3C': 'Blekröd', + 'ECF0F1': 'Stark silver', + '95A5A6': 'Ljus gråaktig turkos', + 'DDD': 'Ljusgrå', + 'D35400': 'Pumpa', + 'C0392B': 'Stark röd', + 'BDC3C7': 'Silver', + '7F8C8D': 'Gråaktig turkos', + '999': 'Mörkgrå' }, more: 'Fler färger...', panelTitle: 'Färger', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/th.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/th.js index 5a0ab166..a298a889 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/th.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/th.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'th', { auto: 'สีอัตโนมัติ', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'th', { F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'White' + FFF: 'White', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'เลือกสีอื่นๆ...', panelTitle: 'Colors', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/tr.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/tr.js index d32363c2..522aed74 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/tr.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/tr.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'tr', { auto: 'Otomatik', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'tr', { F0FFFF: 'Gök Mavisi', F0F8FF: 'Reha Mavi', E6E6FA: 'Eflatun', - FFF: 'Beyaz' + FFF: 'Beyaz', + '1ABC9C': 'Koyu Camgöbeği', + '2ECC71': 'Zümrüt Yeşili', + '3498DB': 'Parlak Mavi', + '9B59B6': 'Ametist Moru', + '4E5F70': 'Kirli Gri Mavi', + 'F1C40F': 'Canlı Sarı', + '16A085': 'Koyu Camgöbeği', + '27AE60': 'Koyu Zümrüt Yeşili', + '2980B9': 'Koyu Mavi', + '8E44AD': 'Koyu Menekşe', + '2C3E50': 'Koyu Lacivert', + 'F39C12': 'Turuncu', + 'E67E22': 'Havuç Turuncusu', + 'E74C3C': 'Soluk Kırmızı', + 'ECF0F1': 'Parlak Gümüş', + '95A5A6': 'Açık Kirli Gri Camgöbeği', + 'DDD': 'Açık Gri', + 'D35400': 'Balkabağı Turuncusu', + 'C0392B': 'Kan Kırmızı', + 'BDC3C7': 'Gümüş', + '7F8C8D': 'Kirli Gri Camgöbeği', + '999': 'Koyu Gri' }, more: 'Diğer renkler...', panelTitle: 'Renkler', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/tt.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/tt.js new file mode 100644 index 00000000..7fd6768e --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/tt.js @@ -0,0 +1,75 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colorbutton', 'tt', { + auto: 'Автоматик', + bgColorTitle: 'Фон төсе', + colors: { + '000': 'Кара', + '800000': 'Бордо', + '8B4513': 'Дарчин', + '2F4F4F': 'Аспид соры', + '008080': 'Күкле-яшелле', + '000080': 'Куе күк', + '4B0082': 'Индиго', + '696969': 'Куе соры', + B22222: 'Кармин', + A52A2A: 'Чия кызыл', + DAA520: 'Алтын каен', + '006400': 'Үлән', + '40E0D0': 'Фирәзә', + '0000CD': 'Фарсы күк', + '800080': 'Шәмәхә', + '808080': 'Соры', + F00: 'Кызыл', + FF8C00: 'Кабак', + FFD700: 'Алтын', + '008000': 'Яшел', + '0FF': 'Ачык зәңгәр', + '00F': 'Зәңгәр', + EE82EE: 'Миләүшә', + A9A9A9: 'Ачык соры', + FFA07A: 'Кызгылт сары алсу', + FFA500: 'Кызгылт сары', + FFFF00: 'Сары', + '00FF00': 'Лайм', + AFEEEE: 'Тонык күк', + ADD8E6: 'Тонык күкбаш', + DDA0DD: 'Аксыл шәмәхә', + D3D3D3: 'Ачык соры', + FFF0F5: 'Ал ала миләүшә', + FAEBD7: 'Җитен', + FFFFE0: 'Ачык сары', + F0FFF0: 'Аксыл көрән', + F0FFFF: 'Ап-ак', + F0F8FF: 'Аксыл зәңгәр диңгез', + E6E6FA: 'Ала миләүшә', + FFF: 'Ак', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING + }, + more: 'Башка төсләр...', + panelTitle: 'Төсләр', + textColorTitle: 'Текст төсе' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ug.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ug.js index 5c33474e..db69a225 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ug.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/ug.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'ug', { auto: 'ئۆزلۈكىدىن', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'ug', { F0FFFF: 'ئاسمان كۆكى', F0F8FF: 'سۇس كۆك', E6E6FA: 'سۇس بىنەپشە', - FFF: 'ئاق' + FFF: 'ئاق', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'باشقا رەڭ', panelTitle: 'رەڭ', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/uk.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/uk.js index af8990a6..73b5573d 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/uk.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/uk.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'uk', { auto: 'Авто', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'uk', { F0FFFF: 'Світлий синьо-зелений', F0F8FF: 'Світлоблакитний', E6E6FA: 'Лавандовий', - FFF: 'Білий' + FFF: 'Білий', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Кольори...', panelTitle: 'Кольори', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/vi.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/vi.js index 95661b02..8b4119e8 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/vi.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/vi.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'vi', { auto: 'Tự động', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'vi', { F0FFFF: 'Azure', F0F8FF: 'Alice Blue', E6E6FA: 'Lavender', - FFF: 'Trắng' + FFF: 'Trắng', + '1ABC9C': 'Strong Cyan', // MISSING + '2ECC71': 'Emerald', // MISSING + '3498DB': 'Bright Blue', // MISSING + '9B59B6': 'Amethyst', // MISSING + '4E5F70': 'Grayish Blue', // MISSING + 'F1C40F': 'Vivid Yellow', // MISSING + '16A085': 'Dark Cyan', // MISSING + '27AE60': 'Dark Emerald', // MISSING + '2980B9': 'Strong Blue', // MISSING + '8E44AD': 'Dark Violet', // MISSING + '2C3E50': 'Desaturated Blue', // MISSING + 'F39C12': 'Orange', // MISSING + 'E67E22': 'Carrot', // MISSING + 'E74C3C': 'Pale Red', // MISSING + 'ECF0F1': 'Bright Silver', // MISSING + '95A5A6': 'Light Grayish Cyan', // MISSING + 'DDD': 'Light Gray', // MISSING + 'D35400': 'Pumpkin', // MISSING + 'C0392B': 'Strong Red', // MISSING + 'BDC3C7': 'Silver', // MISSING + '7F8C8D': 'Grayish Cyan', // MISSING + '999': 'Dark Gray' // MISSING }, more: 'Màu khác...', panelTitle: 'Màu sắc', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/zh-cn.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/zh-cn.js index 4e6a7720..99413729 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/zh-cn.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/zh-cn.js @@ -1,51 +1,73 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'zh-cn', { auto: '自动', bgColorTitle: '背景颜色', colors: { - '000': '黑', - '800000': '褐红', - '8B4513': '深褐', - '2F4F4F': '墨绿', - '008080': '绿松石', - '000080': '海军蓝', - '4B0082': '靛蓝', - '696969': '暗灰', - B22222: '砖红', - A52A2A: '褐', - DAA520: '金黄', - '006400': '深绿', - '40E0D0': '蓝绿', - '0000CD': '中蓝', - '800080': '紫', - '808080': '灰', - F00: '红', - FF8C00: '深橙', - FFD700: '金', - '008000': '绿', - '0FF': '青', - '00F': '蓝', - EE82EE: '紫罗兰', - A9A9A9: '深灰', - FFA07A: '亮橙', - FFA500: '橙', - FFFF00: '黄', - '00FF00': '水绿', - AFEEEE: '粉蓝', - ADD8E6: '亮蓝', - DDA0DD: '梅红', - D3D3D3: '淡灰', - FFF0F5: '淡紫红', - FAEBD7: '古董白', - FFFFE0: '淡黄', - F0FFF0: '蜜白', - F0FFFF: '天蓝', - F0F8FF: '淡蓝', - E6E6FA: '淡紫', - FFF: '白' + '000': '黑色', + '800000': '栗色', + '8B4513': '鞍褐色', + '2F4F4F': '深岩灰色', + '008080': '凫绿色', + '000080': '海军蓝色', + '4B0082': '靛色', + '696969': '深灰色', + B22222: '火砖红色', + A52A2A: '褐色', + DAA520: '金菊色', + '006400': '深绿色', + '40E0D0': '绿松石色', + '0000CD': '中蓝色', + '800080': '紫色', + '808080': '灰色', + F00: '红色', + FF8C00: '深橙色', + FFD700: '金色', + '008000': '绿色', + '0FF': '青色', + '00F': '蓝色', + EE82EE: '紫罗兰色', + A9A9A9: '暗灰色', + FFA07A: '浅鲑红色', + FFA500: '橙色', + FFFF00: '黄色', + '00FF00': '鲜绿色', + AFEEEE: '灰绿松石色', + ADD8E6: '浅蓝色', + DDA0DD: '梅红色', + D3D3D3: '浅灰色', + FFF0F5: '薰衣草紫红色', + FAEBD7: '古董白色', + FFFFE0: '浅黄色', + F0FFF0: '蜜瓜绿色', + F0FFFF: '浅蓝色', + F0F8FF: '爱丽丝蓝色', + E6E6FA: '薰衣草紫色', + FFF: '白色', + '1ABC9C': '浓青色', + '2ECC71': '碧绿色', + '3498DB': '亮蓝色', + '9B59B6': '紫水晶色', + '4E5F70': '灰蓝色', + 'F1C40F': '鲜黄色', + '16A085': '深青色', + '27AE60': '深碧绿色', + '2980B9': '浓蓝色', + '8E44AD': '深紫罗兰色', + '2C3E50': '不饱和蓝色', + 'F39C12': '橙色', + 'E67E22': '红萝卜红色', + 'E74C3C': '灰红色', + 'ECF0F1': '亮银色', + '95A5A6': '浅灰青色', + 'DDD': '浅灰色', + 'D35400': '南瓜黄色', + 'C0392B': '浓红色', + 'BDC3C7': '银色', + '7F8C8D': '灰青色', + '999': '深灰色' }, more: '其它颜色...', panelTitle: '颜色', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/zh.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/zh.js index 5a287adf..3d6a0330 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/zh.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/lang/zh.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'colorbutton', 'zh', { auto: '自動', @@ -26,7 +26,7 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'zh', { FF8C00: '深橘色', FFD700: '金色', '008000': '綠色', - '0FF': '藍綠色', + '0FF': '青色', '00F': '藍色', EE82EE: '紫色', A9A9A9: '暗灰色', @@ -45,7 +45,29 @@ CKEDITOR.plugins.setLang( 'colorbutton', 'zh', { F0FFFF: '天藍色', F0F8FF: '愛麗斯蘭', E6E6FA: '淺紫色', - FFF: '白色' + FFF: '白色', + '1ABC9C': '深青色', + '2ECC71': '翠綠色', + '3498DB': '亮藍色', + '9B59B6': '紫色', + '4E5F70': '藍灰色', + 'F1C40F': '鮮黃色', + '16A085': '暗青色', + '27AE60': '暗綠色', + '2980B9': '深藍色', + '8E44AD': '暗紫色', + '2C3E50': '不飽和藍色', + 'F39C12': '橘色', + 'E67E22': '胡蘿蔔色', + 'E74C3C': '淡紅色', + 'ECF0F1': '亮銀色', + '95A5A6': '淺灰青色', + 'DDD': '淺灰色', + 'D35400': '南瓜色', + 'C0392B': '深紅色', + 'BDC3C7': '銀色', + '7F8C8D': '灰青色', + '999': '深灰色' }, more: '更多顏色', panelTitle: '顏色', diff --git a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/plugin.js b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/plugin.js index b11f7660..b3f6ef0e 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/colorbutton/plugin.js +++ b/lam/templates/lib/extra/ckeditor/plugins/colorbutton/plugin.js @@ -1,6 +1,6 @@ /** - * @license Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license + * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ /** @@ -10,23 +10,85 @@ */ CKEDITOR.plugins.add( 'colorbutton', { requires: 'panelbutton,floatpanel', - lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% + // jscs:disable maximumLineLength + 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% + // jscs:enable maximumLineLength icons: 'bgcolor,textcolor', // %REMOVE_LINE_CORE% hidpi: true, // %REMOVE_LINE_CORE% init: function( editor ) { var config = editor.config, lang = editor.lang.colorbutton; - var clickFn; - if ( !CKEDITOR.env.hc ) { - addButton( 'TextColor', 'fore', lang.textColorTitle, 10 ); - addButton( 'BGColor', 'back', lang.bgColorTitle, 20 ); + addButton( 'TextColor', 'fore', lang.textColorTitle, 10, { + contentTransformations: [ + [ + { + element: 'font', + check: 'span{color}', + left: function( element ) { + return !!element.attributes.color; + }, + right: function( element ) { + element.name = 'span'; + + element.attributes.color && ( element.styles.color = element.attributes.color ); + delete element.attributes.color; + } + } + ] + ] + } ); + + var bgOptions = {}, + normalizeBackground = editor.config.colorButton_normalizeBackground; + + if ( normalizeBackground === undefined || normalizeBackground ) { + // If background contains only color, then we want to convert it into background-color so that it's + // correctly picked by colorbutton plugin. + bgOptions.contentTransformations = [ + [ + { + // Transform span that specify background with color only to background-color. + element: 'span', + left: function( element ) { + var tools = CKEDITOR.tools; + if ( element.name != 'span' || !element.styles || !element.styles.background ) { + return false; + } + + var background = tools.style.parse.background( element.styles.background ); + + // We return true only if background specifies **only** color property, and there's only one background directive. + return background.color && tools.objectKeys( background ).length === 1; + }, + right: function( element ) { + var style = new CKEDITOR.style( editor.config.colorButton_backStyle, { + color: element.styles.background + } ), + definition = style.getDefinition(); + + // Align the output object with the template used in config. + element.name = definition.element; + element.styles = definition.styles; + element.attributes = definition.attributes || {}; + + return element; + } + } + ] + ]; + } + + addButton( 'BGColor', 'back', lang.bgColorTitle, 20, bgOptions ); } - function addButton( name, type, title, order ) { + function addButton( name, type, title, order, options ) { var style = new CKEDITOR.style( config[ 'colorButton_' + type + 'Style' ] ), - colorBoxId = CKEDITOR.tools.getNextId() + '_colorBox'; + colorBoxId = CKEDITOR.tools.getNextId() + '_colorBox', + panelBlock; + + options = options || {}; editor.ui.add( name, CKEDITOR.UI_PANELBUTTON, { label: title, @@ -36,6 +98,7 @@ CKEDITOR.plugins.add( 'colorbutton', { toolbar: 'colors,' + order, allowedContent: style, requiredContent: style, + contentTransformations: options.contentTransformations, panel: { css: CKEDITOR.skin.getPath( 'editor' ), @@ -43,10 +106,12 @@ CKEDITOR.plugins.add( 'colorbutton', { }, onBlock: function( panel, block ) { + panelBlock = block; + block.autoSize = true; block.element.addClass( 'cke_colorblock' ); block.element.setHtml( renderColors( panel, type, colorBoxId ) ); - // The block should not have scrollbars (#5933, #6056) + // The block should not have scrollbars (https://dev.ckeditor.com/ticket/5933, https://dev.ckeditor.com/ticket/6056) block.element.getDocument().getBody().setStyle( 'overflow', 'hidden' ); CKEDITOR.ui.fire( 'ready', this ); @@ -67,13 +132,13 @@ CKEDITOR.plugins.add( 'colorbutton', { this.setState( CKEDITOR.TRISTATE_DISABLED ); }, - // The automatic colorbox should represent the real color (#6010) + // The automatic colorbox should represent the real color (https://dev.ckeditor.com/ticket/6010) onOpen: function() { var selection = editor.getSelection(), block = selection && selection.getStartElement(), path = editor.elementPath( block ), - color; + automaticColor; if ( !path ) return; @@ -83,93 +148,116 @@ CKEDITOR.plugins.add( 'colorbutton', { // The background color might be transparent. In that case, look up the color in the DOM tree. do { - color = block && block.getComputedStyle( type == 'back' ? 'background-color' : 'color' ) || 'transparent'; + automaticColor = block && block.getComputedStyle( type == 'back' ? 'background-color' : 'color' ) || 'transparent'; } - while ( type == 'back' && color == 'transparent' && block && ( block = block.getParent() ) ); + while ( type == 'back' && automaticColor == 'transparent' && block && ( block = block.getParent() ) ); // The box should never be transparent. - if ( !color || color == 'transparent' ) - color = '#ffffff'; + if ( !automaticColor || automaticColor == 'transparent' ) + automaticColor = '#ffffff'; - this._.panel._.iframe.getFrameDocument().getById( colorBoxId ).setStyle( 'background-color', color ); + if ( config.colorButton_enableAutomatic !== false ) { + this._.panel._.iframe.getFrameDocument().getById( colorBoxId ).setStyle( 'background-color', automaticColor ); + } - return color; + var range = selection && selection.getRanges()[ 0 ]; + + if ( range ) { + var walker = new CKEDITOR.dom.walker( range ), + element = range.collapsed ? range.startContainer : walker.next(), + finalColor = '', + currentColor; + + while ( element ) { + if ( element.type === CKEDITOR.NODE_TEXT ) { + element = element.getParent(); + } + + currentColor = normalizeColor( element.getComputedStyle( type == 'back' ? 'background-color' : 'color' ) ); + finalColor = finalColor || currentColor; + + if ( finalColor !== currentColor ) { + finalColor = ''; + break; + } + + element = walker.next(); + } + + selectColor( panelBlock, finalColor ); + } + + return automaticColor; } } ); } - function renderColors( panel, type, colorBoxId ) { var output = [], - colors = config.colorButton_colors.split( ',' ); + colors = config.colorButton_colors.split( ',' ), + colorsPerRow = config.colorButton_colorsPerRow || 6, + // Tells if we should include "More Colors..." button. + moreColorsEnabled = editor.plugins.colordialog && config.colorButton_enableMore !== false, + // aria-setsize and aria-posinset attributes are used to indicate size of options, because + // screen readers doesn't play nice with table, based layouts (https://dev.ckeditor.com/ticket/12097). + total = colors.length + ( moreColorsEnabled ? 2 : 1 ); - var clickFn = CKEDITOR.tools.addFunction( function( color, type ) { - if ( color == '?' ) { - var applyColorStyle = arguments.callee; - - function onColorDialogClose( evt ) { - this.removeListener( 'ok', onColorDialogClose ); - this.removeListener( 'cancel', onColorDialogClose ); - - evt.name == 'ok' && applyColorStyle( this.getContentElement( 'picker', 'selectedColor' ).getValue(), type ); - } - - editor.openDialog( 'colordialog', function() { - this.on( 'ok', onColorDialogClose ); - this.on( 'cancel', onColorDialogClose ); - } ); - - return; - } + var clickFn = CKEDITOR.tools.addFunction( function applyColorStyle( color, type ) { editor.focus(); - - panel.hide(); - editor.fire( 'saveSnapshot' ); - // Clean up any conflicting style within the range. - editor.removeStyle( new CKEDITOR.style( config[ 'colorButton_' + type + 'Style' ], { color: 'inherit' } ) ); + if ( color == '?' ) { + editor.getColorFromDialog( function( color ) { + if ( color ) { + return applyColor( color ); + } + } ); + } else { + return applyColor( color ); + } - if ( color ) { + function applyColor( color ) { + // Clean up any conflicting style within the range. + editor.removeStyle( new CKEDITOR.style( config[ 'colorButton_' + type + 'Style' ], { color: 'inherit' } ) ); var colorStyle = config[ 'colorButton_' + type + 'Style' ]; colorStyle.childRule = type == 'back' ? function( element ) { - // It's better to apply background color as the innermost style. (#3599) - // Except for "unstylable elements". (#6103) + // It's better to apply background color as the innermost style. (https://dev.ckeditor.com/ticket/3599) + // Except for "unstylable elements". (https://dev.ckeditor.com/ticket/6103) return isUnstylable( element ); } : function( element ) { - // Fore color style must be applied inside links instead of around it. (#4772,#6908) + // Fore color style must be applied inside links instead of around it. (https://dev.ckeditor.com/ticket/4772,https://dev.ckeditor.com/ticket/6908) return !( element.is( 'a' ) || element.getElementsByTag( 'a' ).count() ) || isUnstylable( element ); }; + editor.focus(); editor.applyStyle( new CKEDITOR.style( colorStyle, { color: color } ) ); + editor.fire( 'saveSnapshot' ); } - editor.fire( 'saveSnapshot' ); } ); - // Render the "Automatic" button. - output.push( '' + - '' + - '' + - '' + - '' + - '' + - '
' + - '' + - '', lang.auto, '
' + - '
' + - '' ); + if ( config.colorButton_enableAutomatic !== false ) { + // Render the "Automatic" button. + output.push( '' + + '
' + + '' + + '' + + '' + + '
', lang.auto, '
' + + '' ); + } + output.push( '' ); // Render the color boxes. for ( var i = 0; i < colors.length; i++ ) { - if ( ( i % 8 ) === 0 ) + if ( ( i % colorsPerRow ) === 0 ) output.push( '' ); var parts = colors[ i ].split( '/' ), @@ -178,7 +266,7 @@ CKEDITOR.plugins.add( 'colorbutton', { // The data can be only a color code (without #) or colorName + color code // If only a color code is provided, then the colorName is the color with the hash - // Convert the color from RGB to RRGGBB for better compatibility with IE and . See #5676 + // Convert the color from RGB to RRGGBB for better compatibility with IE and . See https://dev.ckeditor.com/ticket/5676 if ( !parts[ 1 ] ) colorName = '#' + colorName.replace( /^(.)(.)(.)$/, '$1$1$2$2$3$3' ); @@ -188,21 +276,22 @@ CKEDITOR.plugins.add( 'colorbutton', { ' title="', colorLabel, '"' + ' onclick="CKEDITOR.tools.callFunction(', clickFn, ',\'', colorName, '\',\'', type, '\'); return false;"' + ' href="javascript:void(\'', colorLabel, '\')"' + - ' role="option">' + + ' data-value="' + colorCode + '"' + + ' role="option" aria-posinset="', ( i + 2 ), '" aria-setsize="', total, '">' + '' + '' + '' ); } // Render the "More Colors" button. - if ( editor.plugins.colordialog && config.colorButton_enableMore === undefined || config.colorButton_enableMore ) { + if ( moreColorsEnabled ) { output.push( '' + '' + - '' ); // tr is later in the code. } @@ -214,11 +303,49 @@ CKEDITOR.plugins.add( 'colorbutton', { function isUnstylable( ele ) { return ( ele.getAttribute( 'contentEditable' ) == 'false' ) || ele.getAttribute( 'data-nostyle' ); } + + /* + * Selects the specified color in the specified panel block. + * + * @private + * @member CKEDITOR.plugins.colorbutton + * @param {CKEDITOR.ui.panel.block} block + * @param {String} color + */ + function selectColor( block, color ) { + var items = block._.getItems(); + + for ( var i = 0; i < items.count(); i++ ) { + var item = items.getItem( i ); + + item.removeAttribute( 'aria-selected' ); + + if ( color && color == normalizeColor( item.getAttribute( 'data-value' ) ) ) { + item.setAttribute( 'aria-selected', true ); + } + } + } + + /* + * Converts a CSS color value to an easily comparable form. + * + * @private + * @member CKEDITOR.plugins.colorbutton + * @param {String} color + * @returns {String} + */ + function normalizeColor( color ) { + // Replace 3-character hexadecimal notation with a 6-character hexadecimal notation (#1008). + return CKEDITOR.tools.normalizeHex( '#' + CKEDITOR.tools.convertRgbToHex( color || '' ) ).replace( /#/g, '' ); + } } } ); /** - * Whether to enable the **More Colors*** button in the color selectors. + * Whether to enable the **More Colors** button in the color selectors. + * + * Read more in the [documentation](#!/guide/dev_colorbutton) + * and see the [SDK sample](https://sdk.ckeditor.com/samples/colorbutton.html). * * config.colorButton_enableMore = false; * @@ -234,23 +361,39 @@ CKEDITOR.plugins.add( 'colorbutton', { * a name and the slash character. For example, `'FontColor1/FF9900'` will be * displayed as the color `#FF9900` in the selector, but will be output as `'FontColor1'`. * + * **Since 4.6.2:** The default color palette has changed. It contains fewer colors in more + * pastel shades than the previous one. + * + * Read more in the [documentation](#!/guide/dev_colorbutton) + * and see the [SDK sample](https://sdk.ckeditor.com/samples/colorbutton.html). + * * // Brazil colors only. * config.colorButton_colors = '00923E,F8C100,28166F'; * * config.colorButton_colors = 'FontColor1/FF9900,FontColor2/0066CC,FontColor3/F00'; * + * // CKEditor color palette available before version 4.6.2. + * config.colorButton_colors = + * '000,800000,8B4513,2F4F4F,008080,000080,4B0082,696969,' + + * 'B22222,A52A2A,DAA520,006400,40E0D0,0000CD,800080,808080,' + + * 'F00,FF8C00,FFD700,008000,0FF,00F,EE82EE,A9A9A9,' + + * 'FFA07A,FFA500,FFFF00,00FF00,AFEEEE,ADD8E6,DDA0DD,D3D3D3,' + + * 'FFF0F5,FAEBD7,FFFFE0,F0FFF0,F0FFFF,F0F8FF,E6E6FA,FFF'; + * * @cfg {String} [colorButton_colors=see source] * @member CKEDITOR.config */ -CKEDITOR.config.colorButton_colors = '000,800000,8B4513,2F4F4F,008080,000080,4B0082,696969,' + - 'B22222,A52A2A,DAA520,006400,40E0D0,0000CD,800080,808080,' + - 'F00,FF8C00,FFD700,008000,0FF,00F,EE82EE,A9A9A9,' + - 'FFA07A,FFA500,FFFF00,00FF00,AFEEEE,ADD8E6,DDA0DD,D3D3D3,' + - 'FFF0F5,FAEBD7,FFFFE0,F0FFF0,F0FFFF,F0F8FF,E6E6FA,FFF'; +CKEDITOR.config.colorButton_colors = '1ABC9C,2ECC71,3498DB,9B59B6,4E5F70,F1C40F,' + + '16A085,27AE60,2980B9,8E44AD,2C3E50,F39C12,' + + 'E67E22,E74C3C,ECF0F1,95A5A6,DDD,FFF,' + + 'D35400,C0392B,BDC3C7,7F8C8D,999,000'; /** * Stores the style definition that applies the text foreground color. * + * Read more in the [documentation](#!/guide/dev_colorbutton) + * and see the [SDK sample](https://sdk.ckeditor.com/samples/colorbutton.html). + * * // This is actually the default value. * config.colorButton_foreStyle = { * element: 'span', @@ -271,6 +414,9 @@ CKEDITOR.config.colorButton_foreStyle = { /** * Stores the style definition that applies the text background color. * + * Read more in the [documentation](#!/guide/dev_colorbutton) + * and see the [SDK sample](https://sdk.ckeditor.com/samples/colorbutton.html). + * * // This is actually the default value. * config.colorButton_backStyle = { * element: 'span', @@ -284,3 +430,39 @@ CKEDITOR.config.colorButton_backStyle = { element: 'span', styles: { 'background-color': '#(color)' } }; + +/** + * Whether to enable the **Automatic** button in the color selectors. + * + * Read more in the [documentation](#!/guide/dev_colorbutton) + * and see the [SDK sample](https://sdk.ckeditor.com/samples/colorbutton.html). + * + * config.colorButton_enableAutomatic = false; + * + * @cfg {Boolean} [colorButton_enableAutomatic=true] + * @member CKEDITOR.config + */ + +/** + * Defines how many colors will be shown per row in the color selectors. + * + * Read more in the [documentation](#!/guide/dev_colorbutton) + * and see the [SDK sample](https://sdk.ckeditor.com/samples/colorbutton.html). + * + * config.colorButton_colorsPerRow = 8; + * + * @since 4.6.2 + * @cfg {Number} [colorButton_colorsPerRow=6] + * @member CKEDITOR.config + */ + +/** + * Whether the plugin should convert `background` CSS properties with color only, to a `background-color` property, + * allowing the [Color Button](https://ckeditor.com/cke4/addon/colorbutton) plugin to edit these styles. + * + * config.colorButton_normalizeBackground = false; + * + * @since 4.6.1 + * @cfg {Boolean} [colorButton_normalizeBackground=true] + * @member CKEDITOR.config + */ diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/dialogs/colordialog.css b/lam/templates/lib/extra/ckeditor/plugins/colordialog/dialogs/colordialog.css new file mode 100644 index 00000000..c5c39524 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/dialogs/colordialog.css @@ -0,0 +1,20 @@ +/** + * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license + */ + +.cke_colordialog_colorcell { + width: 12px; /* All cells have equal width which depends on parent width (in this case table parent). Width works more like max-width. */ + height: 14px; + padding: 1px; /* Padding is replaced by border for focused cells. Prevents 'jumping' when adding borders. */ +} + +.cke_colordialog_colorcell.cke_colordialog_focused_light, +.cke_colordialog_colorcell.cke_colordialog_focused_dark { + padding: 0; /* Shrink cell to allow 1px border indicating focus. */ + border: 1px dotted #000; +} + +.cke_colordialog_colorcell.cke_colordialog_focused_dark { + border-color: #FFF; +} diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/dialogs/colordialog.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/dialogs/colordialog.js new file mode 100644 index 00000000..a81a2274 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/dialogs/colordialog.js @@ -0,0 +1,345 @@ +/** + * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license + */ + +CKEDITOR.dialog.add( 'colordialog', function( editor ) { + // Define some shorthands. + var $el = CKEDITOR.dom.element, + $doc = CKEDITOR.document, + lang = editor.lang.colordialog, + colorCellCls = 'cke_colordialog_colorcell', + focusedColorLightCls = 'cke_colordialog_focused_light', + focusedColorDarkCls = 'cke_colordialog_focused_dark', + selectedColorCls = 'cke_colordialog_selected'; + + // Reference the dialog. + var dialog, + selected; + + var spacer = { + type: 'html', + html: ' ' + }; + + var numbering = function( id ) { + return CKEDITOR.tools.getNextId() + '_' + id; + }, + hicolorId = numbering( 'hicolor' ), + hicolorTextId = numbering( 'hicolortext' ), + selHiColorId = numbering( 'selhicolor' ), + table; + + function clearSelected() { + $doc.getById( selHiColorId ).removeStyle( 'background-color' ); + dialog.getContentElement( 'picker', 'selectedColor' ).setValue( '' ); + removeSelected(); + } + + function updateSelected( evt ) { + var target = evt.data.getTarget(), + color; + + if ( target.getName() == 'td' && ( color = target.getChild( 0 ).getHtml() ) ) { + removeSelected(); + + selected = target; + selected.setAttribute( 'aria-selected', true ); + selected.addClass( selectedColorCls ); + dialog.getContentElement( 'picker', 'selectedColor' ).setValue( color ); + } + } + + function removeSelected() { + if ( selected ) { + selected.removeClass( selectedColorCls ); + selected.removeAttribute( 'aria-selected' ); // Attribute aria-selected should also be removed when selection changes. + selected = null; + } + } + + // Basing black-white decision off of luma scheme using the Rec. 709 version. + function isLightColor( color ) { + color = color.replace( /^#/, '' ); + for ( var i = 0, rgb = []; i <= 2; i++ ) + rgb[ i ] = parseInt( color.substr( i * 2, 2 ), 16 ); + var luma = ( 0.2126 * rgb[ 0 ] ) + ( 0.7152 * rgb[ 1 ] ) + ( 0.0722 * rgb[ 2 ] ); + return luma >= 165; + } + + // Distinguish focused and hover states. + var focused, hovered; + + // Apply highlight style. + function updateHighlight( event ) { + // Convert to event. + !event.name && ( event = new CKEDITOR.event( event ) ); + + var isFocus = !( /mouse/ ).test( event.name ), + target = event.data.getTarget(), + color; + + if ( target.getName() == 'td' && ( color = target.getChild( 0 ).getHtml() ) ) { + removeHighlight( event ); + + isFocus ? focused = target : hovered = target; + + // Apply CSS class to show focus. + if ( isFocus ) { + target.addClass( isLightColor( color ) ? focusedColorLightCls : focusedColorDarkCls ); + } + setHighlight( color ); + } + } + + function clearHighlight() { + if ( focused ) { + focused.removeClass( focusedColorLightCls ); + focused.removeClass( focusedColorDarkCls ); + } + setHighlight( false ); + focused = null; + } + + // Remove previously focused style. + function removeHighlight( event ) { + var isFocus = !( /mouse/ ).test( event.name ), + target = isFocus && focused; + + if ( target ) { + target.removeClass( focusedColorLightCls ); + target.removeClass( focusedColorDarkCls ); + } + + if ( !( focused || hovered ) ) { + setHighlight( false ); + } + } + + function setHighlight( color ) { + if ( color ) { + $doc.getById( hicolorId ).setStyle( 'background-color', color ); + $doc.getById( hicolorTextId ).setHtml( color ); + + } else { + $doc.getById( hicolorId ).removeStyle( 'background-color' ); + $doc.getById( hicolorTextId ).setHtml( ' ' ); + } + } + + function onKeyStrokes( evt ) { + var domEvt = evt.data; + + var element = domEvt.getTarget(); + var relative, nodeToMove; + var keystroke = domEvt.getKeystroke(), + rtl = editor.lang.dir == 'rtl'; + + switch ( keystroke ) { + // UP-ARROW + case 38: + // relative is TR + if ( ( relative = element.getParent().getPrevious() ) ) { + nodeToMove = relative.getChild( [ element.getIndex() ] ); + nodeToMove.focus(); + } + domEvt.preventDefault(); + break; + // DOWN-ARROW + case 40: + // relative is TR + if ( ( relative = element.getParent().getNext() ) ) { + nodeToMove = relative.getChild( [ element.getIndex() ] ); + if ( nodeToMove && nodeToMove.type == 1 ) + nodeToMove.focus(); + + } + domEvt.preventDefault(); + break; + + // SPACE + // ENTER + case 32: + case 13: + updateSelected( evt ); + domEvt.preventDefault(); + break; + + // RIGHT-ARROW + case rtl ? 37 : 39: + // relative is TD + if ( ( nodeToMove = element.getNext() ) ) { + if ( nodeToMove.type == 1 ) { + nodeToMove.focus(); + domEvt.preventDefault( true ); + } + } + // relative is TR + else if ( ( relative = element.getParent().getNext() ) ) { + nodeToMove = relative.getChild( [ 0 ] ); + if ( nodeToMove && nodeToMove.type == 1 ) { + nodeToMove.focus(); + domEvt.preventDefault( true ); + } + } + break; + + // LEFT-ARROW + case rtl ? 39 : 37: + // relative is TD + if ( ( nodeToMove = element.getPrevious() ) ) { + nodeToMove.focus(); + domEvt.preventDefault( true ); + } + // relative is TR + else if ( ( relative = element.getParent().getPrevious() ) ) { + nodeToMove = relative.getLast(); + nodeToMove.focus(); + domEvt.preventDefault( true ); + } + break; + default: + // Do not stop not handled events. + return; + } + } + + function createColorTable() { + table = CKEDITOR.dom.element.createFromHtml( '
' + + '' + '', lang.more, '' + + ' href="javascript:void(\'', lang.more, '\')"', ' role="option" aria-posinset="', total, '" aria-setsize="', total, '">', lang.more, '' + '
' + + '' + + '
' + lang.options + '
' ); + + table.on( 'mouseover', updateHighlight ); + table.on( 'mouseout', removeHighlight ); + + // Create the base colors array. + var aColors = [ '00', '33', '66', '99', 'cc', 'ff' ]; + + // This function combines two ranges of three values from the color array into a row. + function appendColorRow( rangeA, rangeB ) { + for ( var i = rangeA; i < rangeA + 3; i++ ) { + var row = new $el( table.$.insertRow( -1 ) ); + row.setAttribute( 'role', 'row' ); + + for ( var j = rangeB; j < rangeB + 3; j++ ) { + for ( var n = 0; n < 6; n++ ) { + appendColorCell( row.$, '#' + aColors[ j ] + aColors[ n ] + aColors[ i ] ); + } + } + } + } + + // This function create a single color cell in the color table. + function appendColorCell( targetRow, color ) { + var cell = new $el( targetRow.insertCell( -1 ) ); + cell.setAttribute( 'class', 'ColorCell ' + colorCellCls ); + cell.setAttribute( 'tabIndex', -1 ); + cell.setAttribute( 'role', 'gridcell' ); + + cell.on( 'keydown', onKeyStrokes ); + cell.on( 'click', updateSelected ); + cell.on( 'focus', updateHighlight ); + cell.on( 'blur', removeHighlight ); + + cell.setStyle( 'background-color', color ); + + var colorLabel = numbering( 'color_table_cell' ); + cell.setAttribute( 'aria-labelledby', colorLabel ); + cell.append( CKEDITOR.dom.element.createFromHtml( '' + color + '', CKEDITOR.document ) ); + } + + appendColorRow( 0, 0 ); + appendColorRow( 3, 0 ); + appendColorRow( 0, 3 ); + appendColorRow( 3, 3 ); + + // Create the last row. + var oRow = new $el( table.$.insertRow( -1 ) ); + oRow.setAttribute( 'role', 'row' ); + + // Create the gray scale colors cells. + appendColorCell( oRow.$, '#000000' ); + for ( var n = 0; n < 16; n++ ) { + var c = n.toString( 16 ); + appendColorCell( oRow.$, '#' + c + c + c + c + c + c ); + } + appendColorCell( oRow.$, '#ffffff' ); + } + + createColorTable(); + + // Load CSS. + CKEDITOR.document.appendStyleSheet( CKEDITOR.getUrl( CKEDITOR.plugins.get( 'colordialog' ).path + 'dialogs/colordialog.css' ) ); + + return { + title: lang.title, + minWidth: 360, + minHeight: 220, + onLoad: function() { + // Update reference. + dialog = this; + }, + onHide: function() { + clearSelected(); + clearHighlight(); + }, + contents: [ { + id: 'picker', + label: lang.title, + accessKey: 'I', + elements: [ { + type: 'hbox', + padding: 0, + widths: [ '70%', '10%', '30%' ], + children: [ { + type: 'html', + html: '

', + onLoad: function() { + CKEDITOR.document.getById( this.domId ).append( table ); + }, + focus: function() { + // Restore the previously focused cell, + // otherwise put the initial focus on the first table cell. + ( focused || this.getElement().getElementsByTag( 'td' ).getItem( 0 ) ).focus(); + } + }, + spacer, + { + type: 'vbox', + padding: 0, + widths: [ '70%', '5%', '25%' ], + children: [ { + type: 'html', + html: '' + lang.highlight + '' + + '
' + + '
 
' + lang.selected + '' + + '
' + }, + { + type: 'text', + label: lang.selected, + labelStyle: 'display:none', + id: 'selectedColor', + style: 'width: 76px;margin-top:4px', + onChange: function() { + // Try to update color preview with new value. If fails, then set it no none. + try { + $doc.getById( selHiColorId ).setStyle( 'background-color', this.getValue() ); + } catch ( e ) { + clearSelected(); + } + } + }, + spacer, + { + type: 'button', + id: 'clear', + label: lang.clear, + onClick: clearSelected + } ] + } ] + } ] + } ] + }; +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/af.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/af.js new file mode 100644 index 00000000..f486cd2c --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/af.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'af', { + clear: 'Herstel', + highlight: 'Aktief', + options: 'Kleuropsies', + selected: 'Geselekteer', + title: 'Kies kleur' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ar.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ar.js new file mode 100644 index 00000000..3a87155a --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ar.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ar', { + clear: 'مسح', + highlight: 'تحديد', + options: 'اختيارات الألوان', + selected: 'اللون المختار', + title: 'اختر اللون' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/az.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/az.js new file mode 100644 index 00000000..52290dc8 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/az.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'az', { + clear: 'Təmizlə', + highlight: 'Ayırmaq', + options: 'Rəng seçimləri', + selected: 'Seçilmiş rəng', + title: 'Rəngi seç' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/bg.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/bg.js new file mode 100644 index 00000000..96af92b9 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/bg.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'bg', { + clear: 'Изчистване', + highlight: 'Осветяване', + options: 'Цветови опции', + selected: 'Изберете цвят', + title: 'Изберете цвят' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/bn.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/bn.js new file mode 100644 index 00000000..d9b59e46 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/bn.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'bn', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/bs.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/bs.js new file mode 100644 index 00000000..eb941419 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/bs.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'bs', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ca.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ca.js new file mode 100644 index 00000000..6ce17d51 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ca.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ca', { + clear: 'Neteja', + highlight: 'Destacat', + options: 'Opcions del color', + selected: 'Color Seleccionat', + title: 'Seleccioni el color' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/cs.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/cs.js new file mode 100644 index 00000000..4736d206 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/cs.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'cs', { + clear: 'Vyčistit', + highlight: 'Zvýraznit', + options: 'Nastavení barvy', + selected: 'Vybráno', + title: 'Výběr barvy' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/cy.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/cy.js new file mode 100644 index 00000000..2acf5f9d --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/cy.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'cy', { + clear: 'Clirio', + highlight: 'Uwcholeuo', + options: 'Opsiynau Lliw', + selected: 'Lliw a Ddewiswyd', + title: 'Dewis lliw' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/da.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/da.js new file mode 100644 index 00000000..cb3a1ce1 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/da.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'da', { + clear: 'Nulstil', + highlight: 'Markér', + options: 'Farvemuligheder', + selected: 'Valgt farve', + title: 'Vælg farve' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/de-ch.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/de-ch.js new file mode 100644 index 00000000..75d0d91b --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/de-ch.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'de-ch', { + clear: 'Entfernen', + highlight: 'Hervorheben', + options: 'Farboptionen', + selected: 'Ausgewählte Farbe', + title: 'Farbe auswählen' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/de.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/de.js new file mode 100644 index 00000000..0ed3b18f --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/de.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'de', { + clear: 'Entfernen', + highlight: 'Hervorheben', + options: 'Farboptionen', + selected: 'Ausgewählte Farbe', + title: 'Farbe auswählen' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/el.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/el.js new file mode 100644 index 00000000..7462cbc9 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/el.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'el', { + clear: 'Εκκαθάριση', + highlight: 'Σήμανση', + options: 'Επιλογές Χρωμάτων', + selected: 'Επιλεγμένο Χρώμα', + title: 'Επιλογή χρώματος' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/en-au.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/en-au.js new file mode 100644 index 00000000..ab14e0f5 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/en-au.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'en-au', { + clear: 'Clear', + highlight: 'Highlight', + options: 'Colour Options', + selected: 'Selected Colour', + title: 'Select colour' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/en-ca.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/en-ca.js new file mode 100644 index 00000000..0535d4d0 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/en-ca.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'en-ca', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/en-gb.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/en-gb.js new file mode 100644 index 00000000..68734071 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/en-gb.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'en-gb', { + clear: 'Clear', + highlight: 'Highlight', + options: 'Colour Options', + selected: 'Selected Colour', + title: 'Select colour' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/en.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/en.js new file mode 100644 index 00000000..24eed9a4 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/en.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'en', { + clear: 'Clear', + highlight: 'Highlight', + options: 'Color Options', + selected: 'Selected Color', + title: 'Select color' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/eo.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/eo.js new file mode 100644 index 00000000..a2ee470d --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/eo.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'eo', { + clear: 'Forigi', + highlight: 'Detaloj', + options: 'Opcioj pri koloroj', + selected: 'Selektita koloro', + title: 'Selekti koloron' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/es-mx.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/es-mx.js new file mode 100644 index 00000000..eb1f8569 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/es-mx.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'es-mx', { + clear: 'Borrar', + highlight: 'Realce', + options: 'Opciones de color', + selected: 'Color seleccionado', + title: 'Selecciona un color' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/es.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/es.js new file mode 100644 index 00000000..a5f068d3 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/es.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'es', { + clear: 'Borrar', + highlight: 'Muestra', + options: 'Opciones de colores', + selected: 'Elegido', + title: 'Elegir color' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/et.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/et.js new file mode 100644 index 00000000..5c74af74 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/et.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'et', { + clear: 'Eemalda', + highlight: 'Näidis', + options: 'Värvi valikud', + selected: 'Valitud värv', + title: 'Värvi valimine' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/eu.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/eu.js new file mode 100644 index 00000000..6ca5b978 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/eu.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'eu', { + clear: 'Garbitu', + highlight: 'Nabarmendu', + options: 'Kolore aukerak', + selected: 'Hautatutako kolorea', + title: 'Hautatu kolorea' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/fa.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/fa.js new file mode 100644 index 00000000..b462034a --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/fa.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'fa', { + clear: 'پاک کردن', + highlight: 'متمایز', + options: 'گزینه​های رنگ', + selected: 'رنگ انتخاب شده', + title: 'انتخاب رنگ' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/fi.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/fi.js new file mode 100644 index 00000000..cd0cda37 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/fi.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'fi', { + clear: 'Poista', + highlight: 'Korostus', + options: 'Värin ominaisuudet', + selected: 'Valittu', + title: 'Valitse väri' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/fo.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/fo.js new file mode 100644 index 00000000..8ec035ea --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/fo.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'fo', { + clear: 'Strika', + highlight: 'Framheva', + options: 'Litmøguleikar', + selected: 'Valdur litur', + title: 'Vel lit' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/fr-ca.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/fr-ca.js new file mode 100644 index 00000000..e938e3bb --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/fr-ca.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'fr-ca', { + clear: 'Effacer', + highlight: 'Surligner', + options: 'Options de couleur', + selected: 'Couleur sélectionnée', + title: 'Choisir une couleur' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/fr.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/fr.js new file mode 100644 index 00000000..aa455f3b --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/fr.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'fr', { + clear: 'Effacer', + highlight: 'Pointée', + options: 'Options de couleur', + selected: 'Couleur choisie', + title: 'Sélectionner une couleur' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/gl.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/gl.js new file mode 100644 index 00000000..ed9257a8 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/gl.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'gl', { + clear: 'Limpar', + highlight: 'Resaltar', + options: 'Opcións de cor', + selected: 'Cor seleccionado', + title: 'Seleccione unha cor' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/gu.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/gu.js new file mode 100644 index 00000000..a9bdc35f --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/gu.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'gu', { + clear: 'સાફ કરવું', + highlight: 'હાઈઈટ', + options: 'રંગના વિકલ્પ', + selected: 'પસંદ કરેલો રંગ', + title: 'રંગ પસંદ કરો' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/he.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/he.js new file mode 100644 index 00000000..41c834ec --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/he.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'he', { + clear: 'ניקוי', + highlight: 'סימון', + options: 'אפשרויות צבע', + selected: 'בחירה', + title: 'בחירת צבע' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/hi.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/hi.js new file mode 100644 index 00000000..7b5e34c9 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/hi.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'hi', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/hr.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/hr.js new file mode 100644 index 00000000..40e4d050 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/hr.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'hr', { + clear: 'Očisti', + highlight: 'Istaknuto', + options: 'Opcije boje', + selected: 'Odabrana boja', + title: 'Odaberi boju' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/hu.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/hu.js new file mode 100644 index 00000000..29dc8e4c --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/hu.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'hu', { + clear: 'Ürítés', + highlight: 'Nagyítás', + options: 'Szín opciók', + selected: 'Kiválasztott', + title: 'Válasszon színt' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/id.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/id.js new file mode 100644 index 00000000..e1fb1c07 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/id.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'id', { + clear: 'Hapus', + highlight: 'Sorot', + options: 'Pilihan Warna', + selected: 'Warna Dipilih', + title: 'Pilih Warna' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/is.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/is.js new file mode 100644 index 00000000..50774da0 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/is.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'is', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/it.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/it.js new file mode 100644 index 00000000..a60fd5cc --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/it.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'it', { + clear: 'cancella', + highlight: 'Evidenzia', + options: 'Opzioni colore', + selected: 'Seleziona il colore', + title: 'Selezionare il colore' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ja.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ja.js new file mode 100644 index 00000000..a1d6899c --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ja.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ja', { + clear: 'クリア', + highlight: 'ハイライト', + options: 'カラーオプション', + selected: '選択された色', + title: '色選択' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ka.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ka.js new file mode 100644 index 00000000..ec4ab584 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ka.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ka', { + clear: 'გასუფთავება', + highlight: 'ჩვენება', + options: 'ფერის პარამეტრები', + selected: 'არჩეული ფერი', + title: 'ფერის შეცვლა' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/km.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/km.js new file mode 100644 index 00000000..d62baa74 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/km.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'km', { + clear: 'សម្អាត', + highlight: 'បន្លិច​ពណ៌', + options: 'ជម្រើស​ពណ៌', + selected: 'ពណ៌​ដែល​បាន​រើស', + title: 'រើស​ពណ៌' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ko.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ko.js new file mode 100644 index 00000000..f86c63f1 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ko.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ko', { + clear: '비우기', + highlight: '강조', + options: '색상 옵션', + selected: '선택된 색상', + title: '색상 선택' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ku.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ku.js new file mode 100644 index 00000000..9fd35841 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ku.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ku', { + clear: 'پاکیکەوە', + highlight: 'نیشانکردن', + options: 'هەڵبژاردەی ڕەنگەکان', + selected: 'ڕەنگی هەڵبژێردراو', + title: 'هەڵبژاردنی ڕەنگ' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/lt.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/lt.js new file mode 100644 index 00000000..62c1b157 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/lt.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'lt', { + clear: 'Išvalyti', + highlight: 'Paryškinti', + options: 'Spalvos nustatymai', + selected: 'Pasirinkta spalva', + title: 'Pasirinkite spalvą' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/lv.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/lv.js new file mode 100644 index 00000000..9694d7b0 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/lv.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'lv', { + clear: 'Notīrīt', + highlight: 'Paraugs', + options: 'Krāsas uzstādījumi', + selected: 'Izvēlētā krāsa', + title: 'Izvēlies krāsu' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/mk.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/mk.js new file mode 100644 index 00000000..39b5c07b --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/mk.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'mk', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/mn.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/mn.js new file mode 100644 index 00000000..042f2f82 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/mn.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'mn', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ms.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ms.js new file mode 100644 index 00000000..d368f045 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ms.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ms', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/nb.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/nb.js new file mode 100644 index 00000000..58b42b74 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/nb.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'nb', { + clear: 'Nullstill', + highlight: 'Fremhevet', + options: 'Alternativer for farge', + selected: 'Valgt farge', + title: 'Velg farge' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/nl.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/nl.js new file mode 100644 index 00000000..eb57070e --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/nl.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'nl', { + clear: 'Wissen', + highlight: 'Actief', + options: 'Kleuropties', + selected: 'Geselecteerde kleur', + title: 'Selecteer kleur' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/no.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/no.js new file mode 100644 index 00000000..51db6dd3 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/no.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'no', { + clear: 'Tøm', + highlight: 'Merk', + options: 'Alternativer for farge', + selected: 'Valgt', + title: 'Velg farge' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/oc.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/oc.js new file mode 100644 index 00000000..13746f65 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/oc.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'oc', { + clear: 'Escafar', + highlight: 'Puntada', + options: 'Opcions de color', + selected: 'Color seleccionada', + title: 'Seleccionar una color' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/pl.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/pl.js new file mode 100644 index 00000000..45b6efb7 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/pl.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'pl', { + clear: 'Wyczyść', + highlight: 'Zaznacz', + options: 'Opcje koloru', + selected: 'Wybrany', + title: 'Wybierz kolor' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/pt-br.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/pt-br.js new file mode 100644 index 00000000..cc64f079 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/pt-br.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'pt-br', { + clear: 'Limpar', + highlight: 'Grifar', + options: 'Opções de Cor', + selected: 'Cor Selecionada', + title: 'Selecione uma Cor' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/pt.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/pt.js new file mode 100644 index 00000000..15439d96 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/pt.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'pt', { + clear: 'Limpar', + highlight: 'Realçar', + options: 'Opções de cor', + selected: 'Cor selecionada', + title: 'Selecionar cor' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ro.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ro.js new file mode 100644 index 00000000..d691600d --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ro.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ro', { + clear: 'Clar', + highlight: 'Evidențiat', + options: 'Opțiuni culoare', + selected: 'Culoare selectată', + title: 'Selectează culoarea' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ru.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ru.js new file mode 100644 index 00000000..abd1c85e --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ru.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ru', { + clear: 'Очистить', + highlight: 'Под курсором', + options: 'Настройки цвета', + selected: 'Выбранный цвет', + title: 'Выберите цвет' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/si.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/si.js new file mode 100644 index 00000000..4f239884 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/si.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'si', { + clear: 'පැහැදිලි', + highlight: 'මතුකර පෙන්වන්න', + options: 'වර්ණ විකල්ප', + selected: 'තෙරු වර්ණ', + title: 'වර්ණ තෝරන්න' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/sk.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/sk.js new file mode 100644 index 00000000..783f58bb --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/sk.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'sk', { + clear: 'Vyčistiť', + highlight: 'Zvýrazniť', + options: 'Možnosti farby', + selected: 'Vybraná farba', + title: 'Vybrať farbu' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/sl.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/sl.js new file mode 100644 index 00000000..23d356ab --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/sl.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'sl', { + clear: 'Počisti', + highlight: 'Poudarjeno', + options: 'Možnosti barve', + selected: 'Izbrana barva', + title: 'Izberi barvo' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/sq.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/sq.js new file mode 100644 index 00000000..344146df --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/sq.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'sq', { + clear: 'Pastro', + highlight: 'Thekso', + options: 'Përzgjedhjet e Ngjyrave', + selected: 'Ngjyra e Përzgjedhur', + title: 'Përzgjidh një ngjyrë' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/sr-latn.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/sr-latn.js new file mode 100644 index 00000000..5d16579f --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/sr-latn.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'sr-latn', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/sr.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/sr.js new file mode 100644 index 00000000..a2fd9311 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/sr.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'sr', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/sv.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/sv.js new file mode 100644 index 00000000..14e111ec --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/sv.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'sv', { + clear: 'Rensa', + highlight: 'Markera', + options: 'Färgalternativ', + selected: 'Vald färg', + title: 'Välj färg' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/th.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/th.js new file mode 100644 index 00000000..392228ea --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/th.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'th', { + clear: 'Clear', // MISSING + highlight: 'Highlight', // MISSING + options: 'Color Options', // MISSING + selected: 'Selected Color', // MISSING + title: 'Select color' // MISSING +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/tr.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/tr.js new file mode 100644 index 00000000..a3644287 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/tr.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'tr', { + clear: 'Temizle', + highlight: 'İşaretle', + options: 'Renk Seçenekleri', + selected: 'Seçilmiş', + title: 'Renk seç' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/tt.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/tt.js new file mode 100644 index 00000000..705611a9 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/tt.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'tt', { + clear: 'Бушату', + highlight: 'Билгеләү', + options: 'Төс көйләүләре', + selected: 'Сайланган төсләр', + title: 'Төс сайлау' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ug.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ug.js new file mode 100644 index 00000000..95d89f3f --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/ug.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'ug', { + clear: 'تازىلا', + highlight: 'يورۇت', + options: 'رەڭ تاللانمىسى', + selected: 'رەڭ تاللاڭ', + title: 'رەڭ تاللاڭ' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/uk.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/uk.js new file mode 100644 index 00000000..0627e9f3 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/uk.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'uk', { + clear: 'Очистити', + highlight: 'Колір, на який вказує курсор', + options: 'Опції кольорів', + selected: 'Обраний колір', + title: 'Обрати колір' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/vi.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/vi.js new file mode 100644 index 00000000..de08c819 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/vi.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'vi', { + clear: 'Xóa bỏ', + highlight: 'Màu chọn', + options: 'Tùy chọn màu', + selected: 'Màu đã chọn', + title: 'Chọn màu' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/zh-cn.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/zh-cn.js new file mode 100644 index 00000000..ee8fe5fd --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/zh-cn.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'zh-cn', { + clear: '清除', + highlight: '高亮', + options: '颜色选项', + selected: '选择颜色', + title: '选择颜色' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/zh.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/zh.js new file mode 100644 index 00000000..04329ac5 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/lang/zh.js @@ -0,0 +1,11 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'colordialog', 'zh', { + clear: '清除', + highlight: '高亮', + options: '色彩選項', + selected: '選取的色彩', + title: '選取色彩' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/colordialog/plugin.js b/lam/templates/lib/extra/ckeditor/plugins/colordialog/plugin.js new file mode 100644 index 00000000..f36a4c3b --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/colordialog/plugin.js @@ -0,0 +1,79 @@ +/** + * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license + */ + +CKEDITOR.plugins.colordialog = { + requires: 'dialog', + // jscs:disable maximumLineLength + 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% + // jscs:enable maximumLineLength + init: function( editor ) { + var cmd = new CKEDITOR.dialogCommand( 'colordialog' ); + cmd.editorFocus = false; + + editor.addCommand( 'colordialog', cmd ); + + CKEDITOR.dialog.add( 'colordialog', this.path + 'dialogs/colordialog.js' ); + + /** + * Open up color dialog and to receive the selected color. + * + * @param {Function} callback The callback when color dialog is closed + * @param {String} callback.color The color value received if selected on the dialog. + * @param [scope] The scope in which the callback will be bound. + * @member CKEDITOR.editor + */ + editor.getColorFromDialog = function( callback, scope ) { + var onClose, + releaseHandlers, + bindToDialog; + + onClose = function( evt ) { + releaseHandlers( this ); + var color = evt.name == 'ok' ? this.getValueOf( 'picker', 'selectedColor' ) : null; + // Adding `#` character to hexadecimal 3 or 6 digit numbers to have proper color value (#565). + if ( /^[0-9a-f]{3}([0-9a-f]{3})?$/i.test( color ) ) { + color = '#' + color; + } + callback.call( scope, color ); + }; + releaseHandlers = function( dialog ) { + dialog.removeListener( 'ok', onClose ); + dialog.removeListener( 'cancel', onClose ); + }; + bindToDialog = function( dialog ) { + dialog.on( 'ok', onClose ); + dialog.on( 'cancel', onClose ); + }; + + editor.execCommand( 'colordialog' ); + + if ( editor._.storedDialogs && editor._.storedDialogs.colordialog ) + bindToDialog( editor._.storedDialogs.colordialog ); + else { + CKEDITOR.on( 'dialogDefinition', function( e ) { + if ( e.data.name != 'colordialog' ) + return; + + var definition = e.data.definition; + + e.removeListener(); + definition.onLoad = CKEDITOR.tools.override( definition.onLoad, + function( orginal ) { + return function() { + bindToDialog( this ); + definition.onLoad = orginal; + if ( typeof orginal == 'function' ) + orginal.call( this ); + }; + } ); + } ); + } + }; + + + } +}; + +CKEDITOR.plugins.add( 'colordialog', CKEDITOR.plugins.colordialog ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/af.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/af.js index 35633514..7f8f9c6c 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/af.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/af.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'af', { options: 'Konteks Spyskaart-opsies' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ar.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ar.js index 62311fc4..754ba27b 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ar.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ar.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'ar', { options: 'خصائص قائمة السياق' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/az.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/az.js new file mode 100644 index 00000000..089f548a --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/az.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'az', { + options: 'Əlavə əməliyyatlar' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/bg.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/bg.js index ae0ceb0a..1788230a 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/bg.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/bg.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'bg', { options: 'Опции на контекстното меню' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/bn.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/bn.js index 0c7dd357..1e4b8f76 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/bn.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/bn.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'bn', { options: 'Context Menu Options' // MISSING diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/bs.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/bs.js index 38e2aef5..6b6042c7 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/bs.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/bs.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'bs', { options: 'Context Menu Options' // MISSING diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ca.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ca.js index ed986085..638a54ed 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ca.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ca.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'ca', { options: 'Opcions del menú contextual' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/cs.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/cs.js index 95692de7..a3aa09fa 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/cs.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/cs.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'cs', { options: 'Nastavení kontextové nabídky' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/cy.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/cy.js index 5e0da0fe..19f0935c 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/cy.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/cy.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'cy', { options: 'Opsiynau Dewislen Cyd-destun' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/da.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/da.js index d6abf2e2..ba87774f 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/da.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/da.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'da', { options: 'Muligheder for hjælpemenu' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/de-ch.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/de-ch.js new file mode 100644 index 00000000..81d0d0d2 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/de-ch.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'de-ch', { + options: 'Kontextmenüoptionen' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/de.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/de.js index e99dc995..5afbbde2 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/de.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/de.js @@ -1,7 +1,7 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'de', { - options: 'Kontextmenü Optionen' + options: 'Kontextmenüoptionen' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/el.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/el.js index 392a45eb..35ee9008 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/el.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/el.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'el', { options: 'Επιλογές Αναδυόμενου Μενού' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/en-au.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/en-au.js index 6a1ca8a2..db75c5e8 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/en-au.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/en-au.js @@ -1,7 +1,7 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'en-au', { - options: 'Context Menu Options' // MISSING + options: 'Context Menu Options' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/en-ca.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/en-ca.js index 1fcbdfbd..47bce917 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/en-ca.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/en-ca.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'en-ca', { options: 'Context Menu Options' // MISSING diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/en-gb.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/en-gb.js index aab3a770..9ad16e7a 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/en-gb.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/en-gb.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'en-gb', { options: 'Context Menu Options' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/en.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/en.js index da42b758..5e615920 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/en.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/en.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'en', { options: 'Context Menu Options' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/eo.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/eo.js index 3182026c..8ae121a5 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/eo.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/eo.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'eo', { options: 'Opcioj de Kunteksta Menuo' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/es-mx.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/es-mx.js new file mode 100644 index 00000000..b16de863 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/es-mx.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'es-mx', { + options: 'Opciones del menú contextual' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/es.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/es.js index f7212f6c..23f02c9b 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/es.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/es.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'es', { options: 'Opciones del menú contextual' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/et.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/et.js index 6fa3bf23..d2518f89 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/et.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/et.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'et', { options: 'Kontekstimenüü valikud' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/eu.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/eu.js index 932ed2f5..113de77d 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/eu.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/eu.js @@ -1,7 +1,7 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'eu', { - options: 'Testuingurko Menuaren Aukerak' + options: 'Testuinguru-menuaren aukerak' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fa.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fa.js index 686e63e9..32694092 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fa.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fa.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'fa', { options: 'گزینه​های منوی زمینه' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fi.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fi.js index 82806e47..3769c8c1 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fi.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fi.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'fi', { options: 'Pikavalikon ominaisuudet' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fo.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fo.js index 9cfd8bd5..dd0ab3a9 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fo.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fo.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'fo', { options: 'Context Menu Options' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fr-ca.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fr-ca.js index 399748f3..027009e6 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fr-ca.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fr-ca.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'fr-ca', { options: 'Options du menu contextuel' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fr.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fr.js index 8360eaca..57c5e42f 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fr.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/fr.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'fr', { options: 'Options du menu contextuel' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/gl.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/gl.js index 8aa09c32..eb289fb0 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/gl.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/gl.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'gl', { options: 'Opcións do menú contextual' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/gu.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/gu.js index e8b1fa8d..9f0dd420 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/gu.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/gu.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'gu', { options: 'કોન્તેક્ષ્ત્ મેનુના વિકલ્પો' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/he.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/he.js index 6f4a0a3e..1b49ac53 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/he.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/he.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'he', { options: 'אפשרויות תפריט ההקשר' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/hi.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/hi.js index 38a54f4a..cb7805d8 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/hi.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/hi.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'hi', { options: 'Context Menu Options' // MISSING diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/hr.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/hr.js index 11d3d9d8..e9f78e2c 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/hr.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/hr.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'hr', { options: 'Opcije izbornika' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/hu.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/hu.js index b96c1627..0d3cc7f2 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/hu.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/hu.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'hu', { options: 'Helyi menü opciók' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/id.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/id.js index 817c718c..9cdc4993 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/id.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/id.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'id', { options: 'Opsi Konteks Pilihan' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/is.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/is.js index ab5b9e7e..86efd79b 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/is.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/is.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'is', { options: 'Context Menu Options' // MISSING diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/it.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/it.js index 58475804..abfd4a5a 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/it.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/it.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'it', { options: 'Opzioni del menù contestuale' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ja.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ja.js index 428caefa..cac1c850 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ja.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ja.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'ja', { options: 'コンテキストメニューオプション' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ka.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ka.js index 44f859ff..a06b8a79 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ka.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ka.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'ka', { options: 'კონტექსტური მენიუს პარამეტრები' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/km.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/km.js index a61ec6f7..b7ee530e 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/km.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/km.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'km', { options: 'ជម្រើស​ម៉ឺនុយ​បរិបទ' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ko.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ko.js index d20281ac..3af61c6c 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ko.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ko.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'ko', { options: '컨텍스트 메뉴 옵션' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ku.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ku.js index d5f4b28f..028a0b0d 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ku.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ku.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'ku', { options: 'هەڵبژاردەی لیستەی کلیکی دەستی ڕاست' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/lt.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/lt.js index 5584169d..4658f07d 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/lt.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/lt.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'lt', { options: 'Kontekstinio meniu parametrai' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/lv.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/lv.js index a2ec78ac..f5c6a385 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/lv.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/lv.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'lv', { options: 'Uznirstošās izvēlnes uzstādījumi' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/mk.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/mk.js index b7d4f82e..72fa7865 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/mk.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/mk.js @@ -1,7 +1,7 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'mk', { - options: 'Context Menu Options' // MISSING + options: 'Контекст-мени опции' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/mn.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/mn.js index 7c9303e1..c3aca4f2 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/mn.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/mn.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'mn', { options: 'Context Menu Options' // MISSING diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ms.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ms.js index 37afeb5f..dba92cfe 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ms.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ms.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'ms', { options: 'Context Menu Options' // MISSING diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/nb.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/nb.js index 0c5797b8..4c37a91e 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/nb.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/nb.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'nb', { options: 'Alternativer for høyreklikkmeny' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/nl.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/nl.js index 43aa679c..e7f67db4 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/nl.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/nl.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'nl', { options: 'Contextmenu opties' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/no.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/no.js index 96d02c58..84ca88c0 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/no.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/no.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'no', { options: 'Alternativer for høyreklikkmeny' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/oc.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/oc.js new file mode 100644 index 00000000..dfdbfabb --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/oc.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'oc', { + options: 'Opcions del menú contextual' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/pl.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/pl.js index dfb51cd3..93fd7fc1 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/pl.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/pl.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'pl', { options: 'Opcje menu kontekstowego' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/pt-br.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/pt-br.js index d28c764a..f70bf98d 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/pt-br.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/pt-br.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'pt-br', { options: 'Opções Menu de Contexto' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/pt.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/pt.js index 90ad6ee8..91add042 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/pt.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/pt.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'pt', { options: 'Menu de opções de contexto' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ro.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ro.js index 264a84fb..a4a714ce 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ro.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ro.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'ro', { options: 'Opțiuni Meniu Contextual' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ru.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ru.js index 7703c8a2..23a94f62 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ru.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ru.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'ru', { options: 'Параметры контекстного меню' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/si.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/si.js index 1731099a..a6273fc0 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/si.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/si.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'si', { options: 'අනතර්ග ලේඛණ විකල්ප' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sk.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sk.js index c8df781c..5dd1fa4a 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sk.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sk.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'sk', { options: 'Možnosti kontextového menu' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sl.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sl.js index 3bc5261e..127f0256 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sl.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sl.js @@ -1,7 +1,7 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'sl', { - options: 'Možnosti Kontekstnega Menija' + options: 'Možnosti kontekstnega menija' } ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sq.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sq.js index 3ddf46f7..d39fcb8a 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sq.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sq.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'sq', { options: 'Mundësitë e Menysë së Kontekstit' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sr-latn.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sr-latn.js index 4afee2b3..ca54b71f 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sr-latn.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sr-latn.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'sr-latn', { options: 'Context Menu Options' // MISSING diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sr.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sr.js index fb7f0d82..c09ca51f 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sr.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sr.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'sr', { options: 'Context Menu Options' // MISSING diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sv.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sv.js index fb94a7fa..dc0d74bf 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sv.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/sv.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'sv', { options: 'Context Menu Options' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/th.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/th.js index d18524d1..b090a0a3 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/th.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/th.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'th', { options: 'Context Menu Options' // MISSING diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/tr.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/tr.js index 3c755588..e168878d 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/tr.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/tr.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'tr', { options: 'İçerik Menüsü Seçenekleri' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/tt.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/tt.js new file mode 100644 index 00000000..6938e6c6 --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/tt.js @@ -0,0 +1,7 @@ +/* +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license +*/ +CKEDITOR.plugins.setLang( 'contextmenu', 'tt', { + options: 'Контекст меню үзлекләре' +} ); diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ug.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ug.js index 652c1305..76f3b7fd 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ug.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/ug.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'ug', { options: 'قىسقا يول تىزىملىك تاللانمىسى' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/uk.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/uk.js index 316d858f..7bed839f 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/uk.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/uk.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'uk', { options: 'Опції контекстного меню' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/vi.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/vi.js index f6264d14..128af6eb 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/vi.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/vi.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'vi', { options: 'Tùy chọn menu bổ xung' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/zh-cn.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/zh-cn.js index b5943e00..a885096b 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/zh-cn.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/zh-cn.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'zh-cn', { options: '快捷菜单选项' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/zh.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/zh.js index b92e49ef..252f67c8 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/zh.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/lang/zh.js @@ -1,6 +1,6 @@ /* -Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.md or http://ckeditor.com/license +Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.setLang( 'contextmenu', 'zh', { options: '內容功能表選項' diff --git a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/plugin.js b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/plugin.js index 06cb74b2..bdbd81e8 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/contextmenu/plugin.js +++ b/lam/templates/lib/extra/ckeditor/plugins/contextmenu/plugin.js @@ -1,16 +1,19 @@ /** - * @license Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license + * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ CKEDITOR.plugins.add( 'contextmenu', { requires: 'menu', - lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en,en-au,en-ca,en-gb,eo,es,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,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% - // Make sure the base class (CKEDITOR.menu) is loaded before it (#3318). + // jscs:disable maximumLineLength + 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% + // jscs:enable maximumLineLength + + // Make sure the base class (CKEDITOR.menu) is loaded before it (https://dev.ckeditor.com/ticket/3318). onLoad: function() { /** - * Class replacing the non-configurable native context menu with configurable CKEditor's equivalent. + * Class replacing the non-configurable native context menu with a configurable CKEditor's equivalent. * * @class * @extends CKEDITOR.menu @@ -37,18 +40,18 @@ CKEDITOR.plugins.add( 'contextmenu', { proto: { /** - * Starts watching on native context menu triggers (option key, right click) on given element. + * Starts watching on native context menu triggers (Option key, right click) on the given element. * * @param {CKEDITOR.dom.element} element - * @param {Boolean} [nativeContextMenuOnCtrl] Whether to open native context menu if - * *Ctrl* key is hold on opening the context menu. See {@link CKEDITOR.config#browserContextMenuOnCtrl}. + * @param {Boolean} [nativeContextMenuOnCtrl] Whether to open native context menu if the + * Ctrl key is held on opening the context menu. See {@link CKEDITOR.config#browserContextMenuOnCtrl}. */ addTarget: function( element, nativeContextMenuOnCtrl ) { element.on( 'contextmenu', function( event ) { var domEvent = event.data, isCtrlKeyDown = // Safari on Windows always show 'ctrlKey' as true in 'contextmenu' event, - // which make this property unreliable. (#4826) + // which make this property unreliable. (https://dev.ckeditor.com/ticket/4826) ( CKEDITOR.env.webkit ? holdCtrlKey : ( CKEDITOR.env.mac ? domEvent.$.metaKey : domEvent.$.ctrlKey ) ); if ( nativeContextMenuOnCtrl && isCtrlKeyDown ) @@ -57,6 +60,19 @@ CKEDITOR.plugins.add( 'contextmenu', { // Cancel the browser context menu. domEvent.preventDefault(); + // Fix selection when non-editable element in Webkit/Blink (Mac) (https://dev.ckeditor.com/ticket/11306). + if ( CKEDITOR.env.mac && CKEDITOR.env.webkit ) { + var editor = this.editor, + contentEditableParent = new CKEDITOR.dom.elementPath( domEvent.getTarget(), editor.editable() ).contains( function( el ) { + // Return when non-editable or nested editable element is found. + return el.hasAttribute( 'contenteditable' ); + }, true ); // Exclude editor's editable. + + // Fake selection for non-editables only (to exclude nested editables). + if ( contentEditableParent && contentEditableParent.getAttribute( 'contenteditable' ) == 'false' ) + editor.getSelection().fake( contentEditableParent ); + } + var doc = domEvent.getTarget().getDocument(), offsetParent = domEvent.getTarget().getDocument().getDocumentElement(), fromFrame = !doc.equals( CKEDITOR.document ), @@ -67,7 +83,7 @@ CKEDITOR.plugins.add( 'contextmenu', { CKEDITOR.tools.setTimeout( function() { this.open( offsetParent, null, offsetX, offsetY ); - // IE needs a short while to allow selection change before opening menu. (#7908) + // IE needs a short while to allow selection change before opening menu. (https://dev.ckeditor.com/ticket/7908) }, CKEDITOR.env.ie ? 200 : 0, this ); }, this ); @@ -87,7 +103,7 @@ CKEDITOR.plugins.add( 'contextmenu', { }, /** - * Opens context menu in given location. See the {@link CKEDITOR.menu#show} method. + * Opens the context menu in the given location. See the {@link CKEDITOR.menu#show} method. * * @param {CKEDITOR.dom.element} offsetParent * @param {Number} [corner] @@ -95,10 +111,14 @@ CKEDITOR.plugins.add( 'contextmenu', { * @param {Number} [offsetY] */ open: function( offsetParent, corner, offsetX, offsetY ) { + if ( this.editor.config.enableContextMenu === false ) { + return; + } + this.editor.focus(); offsetParent = offsetParent || CKEDITOR.document.getDocumentElement(); - // #9362: Force selection check to update commands' states in the new context. + // https://dev.ckeditor.com/ticket/9362: Force selection check to update commands' states in the new context. this.editor.selectionChange( 1 ); this.show( offsetParent, corner, offsetX, offsetY ); @@ -131,9 +151,9 @@ CKEDITOR.plugins.add( 'contextmenu', { } ); /** - * Whether to show the browser native context menu when the *Ctrl* or - * *Meta* (Mac) key is pressed on opening the context menu with the - * right mouse button click or the *Menu* key. + * Whether to show the browser native context menu when the Ctrl or + * Meta (Mac) key is pressed on opening the context menu with the + * right mouse button click or the Menu key. * * config.browserContextMenuOnCtrl = false; * @@ -141,3 +161,14 @@ CKEDITOR.plugins.add( 'contextmenu', { * @cfg {Boolean} [browserContextMenuOnCtrl=true] * @member CKEDITOR.config */ + +/** + * Whether to enable the context menu. Regardless of the setting the [Context Menu](https://ckeditor.com/cke4/addon/contextmenu) + * plugin is still loaded. + * + * config.enableContextMenu = false; + * + * @since 4.7.0 + * @cfg {Boolean} [enableContextMenu=true] + * @member CKEDITOR.config + */ diff --git a/lam/templates/lib/extra/ckeditor/plugins/dialog/dialogDefinition.js b/lam/templates/lib/extra/ckeditor/plugins/dialog/dialogDefinition.js index 9d51fcf0..fb4c62c4 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/dialog/dialogDefinition.js +++ b/lam/templates/lib/extra/ckeditor/plugins/dialog/dialogDefinition.js @@ -1,6 +1,7 @@ -/** - * @license Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license +// jscs:disable disallowMixedSpacesAndTabs +/** + * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ /** @@ -947,6 +948,11 @@ * @property {Function} validate */ +/** + * @property bidi + * @inheritdoc CKEDITOR.dialog.definition.textarea#bidi + */ + // ----- textarea ------------------------------------------------------------- /** @@ -1004,3 +1010,23 @@ * * @property {String} default */ + +/** + * Whether the text direction of this input should be togglable using the following keystrokes: + * + * * *Shift+Alt+End* – switch to Right-To-Left, + * * *Shift+Alt+Home* – switch to Left-To-Right. + * + * By default the input will be loaded without any text direction set, which means that + * the direction will be inherited from the editor's text direction. + * + * If the direction was set, a marker will be prepended to every non-empty value of this input: + * + * * [`\u202A`](http://unicode.org/cldr/utility/character.jsp?a=202A) – for Right-To-Left, + * * [`\u202B`](http://unicode.org/cldr/utility/character.jsp?a=202B) – for Left-To-Right. + * + * This marker allows for restoring the same text direction upon the next dialog opening. + * + * @since 4.5 + * @property {Boolean} bidi + */ diff --git a/lam/templates/lib/extra/ckeditor/plugins/dialog/plugin.js b/lam/templates/lib/extra/ckeditor/plugins/dialog/plugin.js index c848eb38..7caa6bf9 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/dialog/plugin.js +++ b/lam/templates/lib/extra/ckeditor/plugins/dialog/plugin.js @@ -1,6 +1,6 @@ /** - * @license Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license + * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ /** @@ -43,6 +43,24 @@ CKEDITOR.DIALOG_RESIZE_HEIGHT = 2; */ CKEDITOR.DIALOG_RESIZE_BOTH = 3; +/** + * Dialog state when idle. + * + * @readonly + * @property {Number} [=1] + * @member CKEDITOR + */ +CKEDITOR.DIALOG_STATE_IDLE = 1; + +/** + * Dialog state when busy. + * + * @readonly + * @property {Number} [=2] + * @member CKEDITOR + */ +CKEDITOR.DIALOG_STATE_BUSY = 2; + ( function() { var cssLength = CKEDITOR.tools.cssLength; @@ -107,7 +125,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; this.focus(); } - msg && alert( msg ); + msg && alert( msg ); // jshint ignore:line this.fire( 'validated', { valid: isValid, msg: msg } ); } @@ -159,9 +177,12 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; title = body.getChild( 0 ), close = body.getChild( 1 ); - // IFrame shim for dialog that masks activeX in IE. (#7619) - if ( CKEDITOR.env.ie && !CKEDITOR.env.ie6Compat ) { - var src = 'javascript:void(function(){' + encodeURIComponent( 'document.open();(' + CKEDITOR.tools.fixDomain + ')();document.close();' ) + '}())', + // Don't allow dragging on dialog (https://dev.ckeditor.com/ticket/13184). + editor.plugins.clipboard && CKEDITOR.plugins.clipboard.preventDefaultDropOnElement( body ); + + // IFrame shim for dialog that masks activeX in IE. (https://dev.ckeditor.com/ticket/7619) + if ( CKEDITOR.env.ie && !CKEDITOR.env.quirks && !CKEDITOR.env.edge ) { + var src = 'javascript:void(function(){' + encodeURIComponent( 'document.open();(' + CKEDITOR.tools.fixDomain + ')();document.close();' ) + '}())', // jshint ignore:line iframe = CKEDITOR.dom.element.createFromHtml( ' 1; + + do { + currentIndex = currentIndex + offset; + + if ( hasTabs && !me._.tabBarMode && ( currentIndex == focusList.length || currentIndex == -1 ) ) { + // If the dialog was not in tab mode, then focus the first tab (https://dev.ckeditor.com/ticket/13027). + me._.tabBarMode = true; + me._.tabs[ me._.currentTabId ][ 0 ].focus(); + me._.currentFocusIndex = -1; + + // Early return, in order to avoid accessing focusList[ -1 ]. + return; + } + + currentIndex = ( currentIndex + focusList.length ) % focusList.length; + + if ( currentIndex == startIndex ) { break; - } + } + } while ( offset && !focusList[ currentIndex ].isFocusable() ); focusList[ currentIndex ].focus(); @@ -440,33 +484,31 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; var keystroke = evt.data.getKeystroke(), rtl = editor.lang.dir == 'rtl', + arrowKeys = [ 37, 38, 39, 40 ], button; processed = stopPropagation = 0; if ( keystroke == 9 || keystroke == CKEDITOR.SHIFT + 9 ) { var shiftPressed = ( keystroke == CKEDITOR.SHIFT + 9 ); - - // Handling Tab and Shift-Tab. - if ( me._.tabBarMode ) { - // Change tabs. - var nextId = shiftPressed ? getPreviousVisibleTab.call( me ) : getNextVisibleTab.call( me ); - me.selectPage( nextId ); - me._.tabs[ nextId ][ 0 ].focus(); - } else { - // Change the focus of inputs. - changeFocus( shiftPressed ? -1 : 1 ); - } - + changeFocus( shiftPressed ? -1 : 1 ); processed = 1; } else if ( keystroke == CKEDITOR.ALT + 121 && !me._.tabBarMode && me.getPageCount() > 1 ) { // Alt-F10 puts focus into the current tab item in the tab bar. me._.tabBarMode = true; me._.tabs[ me._.currentTabId ][ 0 ].focus(); + me._.currentFocusIndex = -1; processed = 1; - } else if ( ( keystroke == 37 || keystroke == 39 ) && me._.tabBarMode ) { - // Arrow keys - used for changing tabs. - nextId = ( keystroke == ( rtl ? 39 : 37 ) ? getPreviousVisibleTab.call( me ) : getNextVisibleTab.call( me ) ); + } else if ( CKEDITOR.tools.indexOf( arrowKeys, keystroke ) != -1 && me._.tabBarMode ) { + // Array with key codes that activate previous tab. + var prevKeyCodes = [ + // Depending on the lang dir: right or left key + rtl ? 39 : 37, + // Top/bot arrow: actually for both cases it's the same. + 38 + ], + nextId = CKEDITOR.tools.indexOf( prevKeyCodes, keystroke ) != -1 ? getPreviousVisibleTab.call( me ) : getNextVisibleTab.call( me ); + me.selectPage( nextId ); me._.tabs[ nextId ][ 0 ].focus(); processed = 1; @@ -486,7 +528,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; button && CKEDITOR.tools.setTimeout( button.click, 0, button ); processed = 1; } - stopPropagation = 1; // Always block the propagation (#4269) + stopPropagation = 1; // Always block the propagation (https://dev.ckeditor.com/ticket/4269) } else if ( keystroke == 27 /*ESC*/ ) { button = this.getButton( 'cancel' ); @@ -497,9 +539,10 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; if ( this.fire( 'cancel', { hide: true } ).hide !== false ) this.hide(); } - stopPropagation = 1; // Always block the propagation (#4269) - } else + stopPropagation = 1; // Always block the propagation (https://dev.ckeditor.com/ticket/4269) + } else { return; + } keypressHandler( evt ); } @@ -520,14 +563,14 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; dialogElement.on( 'keydown', keydownHandler, this ); // Some browsers instead, don't cancel key events in the keydown, but in the - // keypress. So we must do a longer trip in those cases. (#4531,#8985) - if ( CKEDITOR.env.opera || CKEDITOR.env.gecko ) + // keypress. So we must do a longer trip in those cases. (https://dev.ckeditor.com/ticket/4531,https://dev.ckeditor.com/ticket/8985) + if ( CKEDITOR.env.gecko ) dialogElement.on( 'keypress', keypressHandler, this ); } ); this.on( 'hide', function() { dialogElement.removeListener( 'keydown', keydownHandler ); - if ( CKEDITOR.env.opera || CKEDITOR.env.gecko ) + if ( CKEDITOR.env.gecko ) dialogElement.removeListener( 'keypress', keypressHandler ); // Reset fields state when closing dialog. @@ -546,11 +589,15 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; // to allow dynamic tab order happen in dialog definition. setupFocus(); - if ( editor.config.dialog_startupFocusTab && me._.pageCount > 1 ) { + var hasTabs = me._.pageCount > 1; + + if ( editor.config.dialog_startupFocusTab && hasTabs ) { me._.tabBarMode = true; me._.tabs[ me._.currentTabId ][ 0 ].focus(); + me._.currentFocusIndex = -1; } else if ( !this._.hasFocus ) { - this._.currentFocusIndex = -1; + // https://dev.ckeditor.com/ticket/13114#comment:4. + this._.currentFocusIndex = hasTabs ? -1 : this._.focusList.length - 1; // Decide where to put the initial focus. if ( definition.onFocus ) { @@ -559,15 +606,16 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; initialFocus && initialFocus.focus(); } // Focus the first field in layout order. - else + else { changeFocus( 1 ); + } } }, this, null, 0xffffffff ); - // IE6 BUG: Text fields and text areas are only half-rendered the first time the dialog appears in IE6 (#2661). + // IE6 BUG: Text fields and text areas are only half-rendered the first time the dialog appears in IE6 (https://dev.ckeditor.com/ticket/2661). // This is still needed after [2708] and [2709] because text fields in hidden TR tags are still broken. if ( CKEDITOR.env.ie6Compat ) { - this.on( 'load', function( evt ) { + this.on( 'load', function() { var outer = this.getElement(), inner = outer.getFirst(); inner.remove(); @@ -587,7 +635,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; page && this.addPage( page ); } - this.parts[ 'tabs' ].on( 'click', function( evt ) { + this.parts.tabs.on( 'click', function( evt ) { var target = evt.data.getTarget(); // If we aren't inside a tab, bail out. if ( target.hasClass( 'cke_dialog_tab' ) ) { @@ -616,6 +664,14 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; for ( i = 0; i < buttons.length; i++ ) this._.buttons[ buttons[ i ].id ] = buttons[ i ]; + + /** + * Current state of the dialog. Use the {@link #setState} method to update it. + * See the {@link #event-state} event to know more. + * + * @readonly + * @property {Number} [state=CKEDITOR.DIALOG_STATE_IDLE] + */ }; // Focusable interface. Use it via dialog.addFocusable. @@ -647,9 +703,13 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; // Re-layout the dialog on window resize. function resizeWithWindow( dialog ) { var win = CKEDITOR.document.getWindow(); - function resizeHandler() { dialog.layout(); } + function resizeHandler() { + dialog.layout(); + } win.on( 'resize', resizeHandler ); - dialog.on( 'hide', function() { win.removeListener( 'resize', resizeHandler ); } ); + dialog.on( 'hide', function() { + win.removeListener( 'resize', resizeHandler ); + } ); } CKEDITOR.dialog.prototype = { @@ -728,7 +788,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; var element = this._.element.getFirst(), rtl = this._.editor.lang.dir == 'rtl'; var isFixed = element.getComputedStyle( 'position' ) == 'fixed'; - // (#8888) In some cases of a very small viewport, dialog is incorrectly + // (https://dev.ckeditor.com/ticket/8888) In some cases of a very small viewport, dialog is incorrectly // positioned in IE7. It also happens that it remains sticky and user cannot // scroll down/up to reveal dialog's content below/above the viewport; this is // cumbersome. @@ -793,24 +853,19 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; else element.setStyle( 'display', 'block' ); - // FIREFOX BUG: Fix vanishing caret for Firefox 2 or Gecko 1.8. - if ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 ) { - var dialogElement = this.parts.dialog; - dialogElement.setStyle( 'position', 'absolute' ); - setTimeout( function() { - dialogElement.setStyle( 'position', 'fixed' ); - }, 0 ); - } - - // First, set the dialog to an appropriate size. - this.resize( this._.contentSize && this._.contentSize.width || definition.width || definition.minWidth, this._.contentSize && this._.contentSize.height || definition.height || definition.minHeight ); + this.resize( + this._.contentSize && this._.contentSize.width || definition.width || definition.minWidth, + this._.contentSize && this._.contentSize.height || definition.height || definition.minHeight + ); // Reset all inputs back to their default value. this.reset(); - // Select the first tab by default. - this.selectPage( this.definition.contents[ 0 ].id ); + // Selects the first tab if no tab is already selected. + if ( this._.currentTabId === null ) { + this.selectPage( this.definition.contents[ 0 ].id ); + } // Set z-index. if ( CKEDITOR.dialog._.currentZIndex === null ) @@ -831,7 +886,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; } element.on( 'keydown', accessKeyDownHandler ); - element.on( CKEDITOR.env.opera ? 'keypress' : 'keyup', accessKeyUpHandler ); + element.on( 'keyup', accessKeyUpHandler ); // Reset the hasFocus state. this._.hasFocus = false; @@ -908,15 +963,14 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; // Switch to absolute position when viewport is smaller than dialog size. if ( !CKEDITOR.env.ie6Compat ) { - if ( dialogSize.height + ( posY > 0 ? posY : 0 ) > viewSize.height || - dialogSize.width + ( posX > 0 ? posX : 0 ) > viewSize.width ) + if ( dialogSize.height + ( posY > 0 ? posY : 0 ) > viewSize.height || dialogSize.width + ( posX > 0 ? posX : 0 ) > viewSize.width ) { el.setStyle( 'position', 'absolute' ); - else + } else { el.setStyle( 'position', 'fixed' ); + } } - this.move( this._.moved ? this._.position.x : posX, - this._.moved ? this._.position.y : posY ); + this.move( this._.moved ? this._.position.x : posX, this._.moved ? this._.position.y : posY ); }, /** @@ -927,9 +981,11 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; */ foreach: function( fn ) { for ( var i in this._.contents ) { - for ( var j in this._.contents[ i ] ) - fn.call( this, this._.contents[ i ][ j ] ); + for ( var j in this._.contents[ i ] ) { + fn.call( this, this._.contents[i][j] ); + } } + return this; }, @@ -984,7 +1040,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; commitContent: function() { var args = arguments; this.foreach( function( widget ) { - // Make sure IE triggers "change" event on last focused input before closing the dialog. (#7915) + // Make sure IE triggers "change" event on last focused input before closing the dialog. (https://dev.ckeditor.com/ticket/7915) if ( CKEDITOR.env.ie && this._.currentFocusIndex == widget.focusIndex ) widget.getInputElement().$.blur(); @@ -1031,22 +1087,34 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; // Remove access key handlers. element.removeListener( 'keydown', accessKeyDownHandler ); - element.removeListener( CKEDITOR.env.opera ? 'keypress' : 'keyup', accessKeyUpHandler ); + element.removeListener( 'keyup', accessKeyUpHandler ); var editor = this._.editor; editor.focus(); - // Give a while before unlock, waiting for focus to return to the editable. (#172) - setTimeout( function() { editor.focusManager.unlock(); }, 0 ); + // Give a while before unlock, waiting for focus to return to the editable. (https://dev.ckeditor.com/ticket/172) + setTimeout( function() { + editor.focusManager.unlock(); - } else + // Fixed iOS focus issue (https://dev.ckeditor.com/ticket/12381). + // Keep in mind that editor.focus() does not work in this case. + if ( CKEDITOR.env.iOS ) { + editor.window.focus(); + } + }, 0 ); + + } else { CKEDITOR.dialog._.currentZIndex -= 10; + } delete this._.parentDialog; // Reset the initial values of the dialog. this.foreach( function( contentObj ) { contentObj.resetInitValue && contentObj.resetInitValue(); } ); + + // Reset dialog state back to IDLE, if busy (https://dev.ckeditor.com/ticket/13213). + this.setState( CKEDITOR.DIALOG_STATE_IDLE ); }, /** @@ -1060,7 +1128,6 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; var pageHtml = [], titleHtml = contents.label ? ' title="' + CKEDITOR.tools.htmlEncode( contents.label ) + '"' : '', - elements = contents.elements, vbox = CKEDITOR.dialog._.uiElementBuilders.vbox.build( this, { type: 'vbox', className: 'cke_dialog_page_contents', @@ -1081,7 +1148,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; enabledFields++; contentMap[ cursor.id ] = cursor; - if ( typeof( cursor.getChild ) == 'function' ) + if ( typeof cursor.getChild == 'function' ) children.push.apply( children, cursor.getChild() ); } @@ -1097,17 +1164,17 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; var tabId = 'cke_' + contents.id + '_' + CKEDITOR.tools.getNextNumber(), tab = CKEDITOR.dom.element.createFromHtml( [ ' 0 ? ' cke_last' : 'cke_first' ), - titleHtml, - ( !!contents.hidden ? ' style="display:none"' : '' ), - ' id="', tabId, '"', - env.gecko && env.version >= 10900 && !env.hc ? '' : ' href="javascript:void(0)"', - ' tabIndex="-1"', - ' hidefocus="true"', - ' role="tab">', - contents.label, + ( this._.pageCount > 0 ? ' cke_last' : 'cke_first' ), + titleHtml, + ( !!contents.hidden ? ' style="display:none"' : '' ), + ' id="', tabId, '"', + env.gecko && !env.hc ? '' : ' href="javascript:void(0)"', + ' tabIndex="-1"', + ' hidefocus="true"', + ' role="tab">', + contents.label, '' - ].join( '' ) ); + ].join( '' ) ); page.setAttribute( 'aria-labelledby', tabId ); @@ -1167,15 +1234,16 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; // [IE] an invisible input[type='text'] will enlarge it's width // if it's value is long when it shows, so we clear it's value - // before it shows and then recover it (#5649) + // before it shows and then recover it (https://dev.ckeditor.com/ticket/5649) if ( CKEDITOR.env.ie6Compat || CKEDITOR.env.ie7Compat ) { clearOrRecoverTextInputValue( selected[ 1 ] ); selected[ 1 ].show(); setTimeout( function() { clearOrRecoverTextInputValue( selected[ 1 ], 1 ); }, 0 ); - } else + } else { selected[ 1 ].show(); + } this._.currentTabId = id; this._.currentTabIndex = CKEDITOR.tools.indexOf( this._.tabIdList, id ); @@ -1370,6 +1438,56 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; for ( var i = index + 1; i < this._.focusList.length; i++ ) this._.focusList[ i ].focusIndex++; } + }, + + /** + * Sets the dialog {@link #property-state}. + * + * @since 4.5 + * @param {Number} state Either {@link CKEDITOR#DIALOG_STATE_IDLE} or {@link CKEDITOR#DIALOG_STATE_BUSY}. + */ + setState: function( state ) { + var oldState = this.state; + + if ( oldState == state ) { + return; + } + + this.state = state; + + if ( state == CKEDITOR.DIALOG_STATE_BUSY ) { + // Insert the spinner on demand. + if ( !this.parts.spinner ) { + var dir = this.getParentEditor().lang.dir, + spinnerDef = { + attributes: { + 'class': 'cke_dialog_spinner' + }, + styles: { + 'float': dir == 'rtl' ? 'right' : 'left' + } + }; + + spinnerDef.styles[ 'margin-' + ( dir == 'rtl' ? 'left' : 'right' ) ] = '8px'; + + this.parts.spinner = CKEDITOR.document.createElement( 'div', spinnerDef ); + + this.parts.spinner.setHtml( '⌛' ); + this.parts.spinner.appendTo( this.parts.title, 1 ); + } + + // Finally, show the spinner. + this.parts.spinner.show(); + + this.getButton( 'ok' ).disable(); + } else if ( state == CKEDITOR.DIALOG_STATE_IDLE ) { + // Hide the spinner. But don't do anything if there is no spinner yet. + this.parts.spinner && this.parts.spinner.hide(); + + this.getButton( 'ok' ).enable(); + } + + this.fire( 'state', state ); } }; @@ -1798,7 +1916,6 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; function initDragAndDrop( dialog ) { var lastCoords = null, abstractDialogCoords = null, - element = dialog.getElement().getFirst(), editor = dialog.getParentEditor(), magnetDistance = editor.config.dialog_magnetDistance, margins = CKEDITOR.skin.margins || [ 0, 0, 0, 0 ]; @@ -1838,7 +1955,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; evt.data.preventDefault(); } - function mouseUpHandler( evt ) { + function mouseUpHandler() { CKEDITOR.document.removeListener( 'mousemove', mouseMoveHandler ); CKEDITOR.document.removeListener( 'mouseup', mouseUpHandler ); @@ -1889,7 +2006,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; } // Calculate the offset between content and chrome size. - wrapperHeight = startSize.height - dialog.parts.contents.getSize( 'height', !( CKEDITOR.env.gecko || CKEDITOR.env.opera || CKEDITOR.env.ie && CKEDITOR.env.quirks ) ); + wrapperHeight = startSize.height - dialog.parts.contents.getSize( 'height', !( CKEDITOR.env.gecko || CKEDITOR.env.ie && CKEDITOR.env.quirks ) ); wrapperWidth = startSize.width - dialog.parts.contents.getSize( 'width', 1 ); origin = { x: $event.screenX, y: $event.screenY }; @@ -1991,9 +2108,10 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; } function showCover( editor ) { - var win = CKEDITOR.document.getWindow(); - var config = editor.config, - backgroundColorStyle = config.dialog_backgroundCoverColor || 'white', + var win = CKEDITOR.document.getWindow(), + config = editor.config, + skinName = ( CKEDITOR.skinName || editor.config.skin ), + backgroundColorStyle = config.dialog_backgroundCoverColor || ( skinName == 'moono-lisa' ? 'black' : 'white' ), backgroundCoverOpacity = config.dialog_backgroundCoverOpacity, baseFloatZIndex = config.baseFloatZIndex, coverKey = CKEDITOR.tools.genKey( backgroundColorStyle, backgroundCoverOpacity, baseFloatZIndex ), @@ -2006,7 +2124,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; '; top: 0px; left: 0px; ', ( !CKEDITOR.env.ie6Compat ? 'background-color: ' + backgroundColorStyle : '' ), '" class="cke_dialog_background_cover">' - ]; + ]; if ( CKEDITOR.env.ie6Compat ) { // Support for custom document.domain in IE. @@ -2040,7 +2158,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; html.push( '
' ); coverElement = CKEDITOR.dom.element.createFromHtml( html.join( '' ) ); - coverElement.setOpacity( backgroundCoverOpacity != undefined ? backgroundCoverOpacity : 0.5 ); + coverElement.setOpacity( backgroundCoverOpacity !== undefined ? backgroundCoverOpacity : 0.5 ); coverElement.on( 'keydown', cancelEvent ); coverElement.on( 'keypress', cancelEvent ); @@ -2048,8 +2166,9 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; coverElement.appendTo( CKEDITOR.document.getBody() ); covers[ coverKey ] = coverElement; - } else + } else { coverElement.show(); + } // Makes the dialog cover a focus holder as well. editor.focusManager.add( coverElement ); @@ -2082,7 +2201,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; resizeCover = resizeFunc; win.on( 'resize', resizeFunc ); resizeFunc(); - // Using Safari/Mac, focus must be kept where it is (#7027) + // Using Safari/Mac, focus must be kept where it is (https://dev.ckeditor.com/ticket/7027) if ( !( CKEDITOR.env.mac && CKEDITOR.env.webkit ) ) coverElement.focus(); @@ -2188,7 +2307,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; dialog.selectPage( dialog._.accessKeyMap[ key ] ); }; - var tabAccessKeyDown = function( dialog, key ) {}; + var tabAccessKeyDown = function() {}; ( function() { CKEDITOR.ui.dialog = { @@ -2250,7 +2369,6 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; attributes = ( attributesArg && attributesArg.call ? attributesArg( elementDefinition ) : attributesArg ) || {}, innerHTML = ( contentsArg && contentsArg.call ? contentsArg.call( this, dialog, elementDefinition ) : contentsArg ) || '', domId = this.domId = attributes.id || CKEDITOR.tools.getNextId() + '_uiElement', - id = this.id = elementDefinition.id, i; if ( elementDefinition.requiredContent && !dialog.getParentEditor().filter.check( elementDefinition.requiredContent ) ) { @@ -2268,7 +2386,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; if ( elementDefinition.className ) classes[ elementDefinition.className ] = 1; if ( elementDefinition.disabled ) - classes[ 'cke_disabled' ] = 1; + classes.cke_disabled = 1; var attributeClasses = ( attributes[ 'class' ] && attributes[ 'class' ].split ) ? attributes[ 'class' ].split( ' ' ) : []; for ( i = 0; i < attributeClasses.length; i++ ) { @@ -2318,15 +2436,15 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; ( this._ || ( this._ = {} ) ).dialog = dialog; // Override isChanged if it is defined in element definition. - if ( typeof( elementDefinition.isChanged ) == 'boolean' ) + if ( typeof elementDefinition.isChanged == 'boolean' ) this.isChanged = function() { - return elementDefinition.isChanged; - }; - if ( typeof( elementDefinition.isChanged ) == 'function' ) + return elementDefinition.isChanged; + }; + if ( typeof elementDefinition.isChanged == 'function' ) this.isChanged = elementDefinition.isChanged; // Overload 'get(set)Value' on definition. - if ( typeof( elementDefinition.setValue ) == 'function' ) { + if ( typeof elementDefinition.setValue == 'function' ) { this.setValue = CKEDITOR.tools.override( this.setValue, function( org ) { return function( val ) { org.call( this, elementDefinition.setValue.call( this, val ) ); @@ -2334,7 +2452,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; } ); } - if ( typeof( elementDefinition.getValue ) == 'function' ) { + if ( typeof elementDefinition.getValue == 'function' ) { this.getValue = CKEDITOR.tools.override( this.getValue, function( org ) { return function() { return elementDefinition.getValue.call( this, org.call( this ) ); @@ -2423,25 +2541,34 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; for ( i = 0; i < childHtmlList.length; i++ ) { var className = 'cke_dialog_ui_hbox_child', styles = []; - if ( i === 0 ) + if ( i === 0 ) { className = 'cke_dialog_ui_hbox_first'; - if ( i == childHtmlList.length - 1 ) + } + if ( i == childHtmlList.length - 1 ) { className = 'cke_dialog_ui_hbox_last'; + } + html.push( ' 0 ) + } + if ( styles.length > 0 ) { html.push( 'style="' + styles.join( '; ' ) + '" ' ); + } html.push( '>', childHtmlList[ i ], '' ); } html.push( '' ); @@ -2494,7 +2621,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; html.push( 'height:100%;' ); html.push( 'width:' + cssLength( width || '100%' ), ';' ); - // (#10123) Temp fix for dialog broken layout in latest webkit. + // (https://dev.ckeditor.com/ticket/10123) Temp fix for dialog broken layout in latest webkit. if ( CKEDITOR.env.webkit ) html.push( 'float:none;' ); @@ -2512,9 +2639,9 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; styles.push( 'height:' + cssLength( heights[ i ] ) ); else if ( elementDefinition && elementDefinition.expand ) styles.push( 'height:' + Math.floor( 100 / childHtmlList.length ) + '%' ); - if ( elementDefinition && elementDefinition.padding != undefined ) + if ( elementDefinition && elementDefinition.padding !== undefined ) styles.push( 'padding:' + cssLength( elementDefinition.padding ) ); - // In IE Quirks alignment has to be done on table cells. (#7324) + // In IE Quirks alignment has to be done on table cells. (https://dev.ckeditor.com/ticket/7324) if ( CKEDITOR.env.ie && CKEDITOR.env.quirks && children[ i ].align ) styles.push( 'text-align:' + children[ i ].align ); if ( styles.length > 0 ) @@ -2622,7 +2749,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; cursor = element, tabId; while ( ( cursor = cursor.getParent() ) && cursor.$.className.search( 'cke_dialog_page_contents' ) == -1 ) { - /*jsl:pass*/ + } // Some widgets don't have parent tabs (e.g. OK and Cancel buttons). @@ -2735,7 +2862,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; * are defined to always include the `CTRL` key, its value should always * include a `'CTRL+'` prefix. */ - accessKeyDown: function( dialog, key ) { + accessKeyDown: function() { this.focus(); }, @@ -2750,7 +2877,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; * are defined to always include the `CTRL` key, its value should always * include a `'CTRL+'` prefix. */ - accessKeyUp: function( dialog, key ) {}, + accessKeyUp: function() {}, /** * Disables a UI element. @@ -2804,7 +2931,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; }; /** @class CKEDITOR.ui.dialog.hbox */ - CKEDITOR.ui.dialog.hbox.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement, { + CKEDITOR.ui.dialog.hbox.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { /** * Gets a child UI element inside this container. * @@ -2859,7 +2986,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; /** * Generic dialog command. It opens a specific dialog when executed. * - * // Register the "link" command, which opens the "link" dialog. + * // Register the "link" command which opens the "link" dialog. * editor.addCommand( 'link', new CKEDITOR.dialogCommand( 'link' ) ); * * @class @@ -2868,6 +2995,10 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; * @param {String} dialogName The name of the dialog to open when executing * this command. * @param {Object} [ext] Additional command definition's properties. + * @param {String} [ext.tabId] You can provide additional property (`tabId`) if you wish to open the dialog on a specific tabId. + * + * // Open the dialog on the 'keystroke' tabId. + * editor.addCommand( 'keystroke', new CKEDITOR.dialogCommand( 'a11yHelp', { tabId: 'keystroke' } ) ); */ CKEDITOR.dialogCommand = function( dialogName, ext ) { this.dialogName = dialogName; @@ -2876,10 +3007,13 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; CKEDITOR.dialogCommand.prototype = { exec: function( editor ) { - // Special treatment for Opera. (#8031) - CKEDITOR.env.opera ? CKEDITOR.tools.setTimeout( function() { - editor.openDialog( this.dialogName ); - }, 0, this ) : editor.openDialog( this.dialogName ); + var tabId = this.tabId; + editor.openDialog( this.dialogName, function( dialog ) { + // Select different tab if it's provided (#830). + if ( tabId ) { + dialog.selectPage( tabId ); + } + } ); }, // Dialog commands just open a dialog ui, thus require no undo logic, @@ -2912,24 +3046,24 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; */ var value = this && this.getValue ? this.getValue() : args[ 0 ]; - var msg = undefined, + var msg, relation = CKEDITOR.VALIDATE_AND, functions = [], i; for ( i = 0; i < args.length; i++ ) { - if ( typeof( args[ i ] ) == 'function' ) + if ( typeof args[ i ] == 'function' ) functions.push( args[ i ] ); else break; } - if ( i < args.length && typeof( args[ i ] ) == 'string' ) { + if ( i < args.length && typeof args[ i ] == 'string' ) { msg = args[ i ]; i++; } - if ( i < args.length && typeof( args[ i ] ) == 'number' ) + if ( i < args.length && typeof args[ i ] == 'number' ) relation = args[ i ]; var passed = ( relation == CKEDITOR.VALIDATE_AND ? true : false ); @@ -3162,7 +3296,7 @@ CKEDITOR.plugins.add( 'dialog', { */ /** - * Fired when a dialog definition is about to be used to create a dialog into + * Event fired when a dialog definition is about to be used to create a dialog into * an editor instance. This event makes it possible to customize the definition * before creating it. * @@ -3178,7 +3312,7 @@ CKEDITOR.plugins.add( 'dialog', { */ /** - * Fired when a tab is going to be selected in a dialog. + * Event fired when a tab is going to be selected in a dialog. * * @event selectPage * @member CKEDITOR.dialog @@ -3188,7 +3322,7 @@ CKEDITOR.plugins.add( 'dialog', { */ /** - * Fired when the user tries to dismiss a dialog. + * Event fired when the user tries to dismiss a dialog. * * @event cancel * @member CKEDITOR.dialog @@ -3197,7 +3331,7 @@ CKEDITOR.plugins.add( 'dialog', { */ /** - * Fired when the user tries to confirm a dialog. + * Event fired when the user tries to confirm a dialog. * * @event ok * @member CKEDITOR.dialog @@ -3206,14 +3340,14 @@ CKEDITOR.plugins.add( 'dialog', { */ /** - * Fired when a dialog is shown. + * Event fired when a dialog is shown. * * @event show * @member CKEDITOR.dialog */ /** - * Fired when a dialog is shown. + * Event fired when a dialog is shown. * * @event dialogShow * @member CKEDITOR.editor @@ -3222,14 +3356,14 @@ CKEDITOR.plugins.add( 'dialog', { */ /** - * Fired when a dialog is hidden. + * Event fired when a dialog is hidden. * * @event hide * @member CKEDITOR.dialog */ /** - * Fired when a dialog is hidden. + * Event fired when a dialog is hidden. * * @event dialogHide * @member CKEDITOR.editor @@ -3238,25 +3372,25 @@ CKEDITOR.plugins.add( 'dialog', { */ /** - * Fired when a dialog is being resized. The event is fired on + * Event fired when a dialog is being resized. The event is fired on * both the {@link CKEDITOR.dialog} object and the dialog instance - * since 3.5.3, previously it's available only in the global object. + * since 3.5.3, previously it was only available in the global object. * * @static * @event resize * @member CKEDITOR.dialog * @param data * @param {CKEDITOR.dialog} data.dialog The dialog being resized (if - * it's fired on the dialog itself, this parameter isn't sent). + * it is fired on the dialog itself, this parameter is not sent). * @param {String} data.skin The skin name. * @param {Number} data.width The new width. * @param {Number} data.height The new height. */ /** - * Fired when a dialog is being resized. The event is fired on + * Event fired when a dialog is being resized. The event is fired on * both the {@link CKEDITOR.dialog} object and the dialog instance - * since 3.5.3, previously it's available only in the global object. + * since 3.5.3, previously it was only available in the global object. * * @since 3.5 * @event resize @@ -3265,3 +3399,13 @@ CKEDITOR.plugins.add( 'dialog', { * @param {Number} data.width The new width. * @param {Number} data.height The new height. */ + +/** + * Event fired when the dialog state changes, usually by {@link CKEDITOR.dialog#setState}. + * + * @since 4.5 + * @event state + * @member CKEDITOR.dialog + * @param data + * @param {Number} data The new state. Either {@link CKEDITOR#DIALOG_STATE_IDLE} or {@link CKEDITOR#DIALOG_STATE_BUSY}. + */ diff --git a/lam/templates/lib/extra/ckeditor/plugins/dialog/samples/assets/my_dialog.js b/lam/templates/lib/extra/ckeditor/plugins/dialog/samples/assets/my_dialog.js new file mode 100644 index 00000000..c7f5e66f --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/dialog/samples/assets/my_dialog.js @@ -0,0 +1,49 @@ +/** + * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license + */ + +CKEDITOR.dialog.add( 'myDialog', function() { + return { + title: 'My Dialog', + minWidth: 400, + minHeight: 200, + contents: [ + { + id: 'tab1', + label: 'First Tab', + title: 'First Tab', + elements: [ + { + id: 'input1', + type: 'text', + label: 'Text Field' + }, + { + id: 'select1', + type: 'select', + label: 'Select Field', + items: [ + [ 'option1', 'value1' ], + [ 'option2', 'value2' ] + ] + } + ] + }, + { + id: 'tab2', + label: 'Second Tab', + title: 'Second Tab', + elements: [ + { + id: 'button1', + type: 'button', + label: 'Button Field' + } + ] + } + ] + }; +} ); + +// %LEAVE_UNMINIFIED% %REMOVE_LINE% diff --git a/lam/templates/lib/extra/ckeditor/plugins/dialog/samples/dialog.html b/lam/templates/lib/extra/ckeditor/plugins/dialog/samples/dialog.html new file mode 100644 index 00000000..4a6174dc --- /dev/null +++ b/lam/templates/lib/extra/ckeditor/plugins/dialog/samples/dialog.html @@ -0,0 +1,190 @@ + + + + + + Using API to Customize Dialog Windows — CKEditor Sample + + + + + + + + + +

+ CKEditor Samples » Using CKEditor Dialog API +

+
+ This sample is not maintained anymore. Check out the brand new samples in CKEditor SDK. +
+
+

+ This sample shows how to use the + CKEditor Dialog API + to customize CKEditor dialog windows without changing the original editor code. + The following customizations are being done in the example below: +

+

+ For details on how to create this setup check the source code of this sample page. +

+
+

A custom dialog is added to the editors using the pluginsLoaded event, from an external dialog definition file:

+
    +
  1. Creating a custom dialog window – "My Dialog" dialog window opened with the "My Dialog" toolbar button.
  2. +
  3. Creating a custom button – Add button to open the dialog with "My Dialog" toolbar button.
  4. +
+ + +

The below editor modify the dialog definition of the above added dialog using the dialogDefinition event:

+
    +
  1. Adding dialog tab – Add new tab "My Tab" to dialog window.
  2. +
  3. Removing a dialog window tab – Remove "Second Tab" page from the dialog window.
  4. +
  5. Adding dialog window fields – Add "My Custom Field" to the dialog window.
  6. +
  7. Removing dialog window field – Remove "Select Field" selection field from the dialog window.
  8. +
  9. Setting default values for dialog window fields – Set default value of "Text Field" text field.
  10. +
  11. Setup initial focus for dialog window – Put initial focus on "My Custom Field" text field.
  12. +
+ + + + + diff --git a/lam/templates/lib/extra/ckeditor/plugins/dialogui/plugin.js b/lam/templates/lib/extra/ckeditor/plugins/dialogui/plugin.js index 96568ce6..e872dd0d 100644 --- a/lam/templates/lib/extra/ckeditor/plugins/dialogui/plugin.js +++ b/lam/templates/lib/extra/ckeditor/plugins/dialogui/plugin.js @@ -1,10 +1,10 @@ /** - * @license Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved. - * For licensing, see LICENSE.md or http://ckeditor.com/license + * @license Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ /** - * @fileOverview The "dialogui" plugin. + * @fileOverview The Dialog User Interface plugin. */ CKEDITOR.plugins.add( 'dialogui', { @@ -13,7 +13,7 @@ CKEDITOR.plugins.add( 'dialogui', { var initPrivateObject = function( elementDefinition ) { this._ || ( this._ = {} ); this._[ 'default' ] = this._.initValue = elementDefinition[ 'default' ] || ''; - this._.required = elementDefinition[ 'required' ] || false; + this._.required = elementDefinition.required || false; var args = [ this._ ]; for ( var i = 1; i < arguments.length; i++ ) args.push( arguments[ i ] ); @@ -72,7 +72,7 @@ CKEDITOR.plugins.add( 'dialogui', { if ( !this._.domOnChangeRegistered ) { dialog.on( 'load', function() { this.getInputElement().on( 'change', function() { - // Make sure 'onchange' doesn't get fired after dialog closed. (#5719) + // Make sure 'onchange' doesn't get fired after dialog closed. (https://dev.ckeditor.com/ticket/5719) if ( !dialog.parts.dialog.isVisible() ) return; @@ -93,28 +93,44 @@ CKEDITOR.plugins.add( 'dialogui', { delete def[ i ]; } return def; + }, + // @context {CKEDITOR.dialog.uiElement} UI element (textarea or textInput) + // @param {CKEDITOR.dom.event} evt + toggleBidiKeyUpHandler = function( evt ) { + var keystroke = evt.data.getKeystroke(); + + // ALT + SHIFT + Home for LTR direction. + if ( keystroke == CKEDITOR.SHIFT + CKEDITOR.ALT + 36 ) + this.setDirectionMarker( 'ltr' ); + + // ALT + SHIFT + End for RTL direction. + else if ( keystroke == CKEDITOR.SHIFT + CKEDITOR.ALT + 35 ) + this.setDirectionMarker( 'rtl' ); }; CKEDITOR.tools.extend( CKEDITOR.ui.dialog, { /** - * Base class for all dialog elements with a textual label on the left. + * Base class for all dialog window elements with a textual label on the left. * * @class CKEDITOR.ui.dialog.labeledElement * @extends CKEDITOR.ui.dialog.uiElement * @constructor Creates a labeledElement class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog object. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * * * `label` (Required) The label string. * * `labelLayout` (Optional) Put 'horizontal' here if the - * label element is to be layed out horizontally. Otherwise a vertical + * label element is to be laid out horizontally. Otherwise a vertical * layout will be used. - * * `widths` (Optional) This applies only for horizontal - * layouts - an 2-element array of lengths to specify the widths of the + * * `widths` (Optional) This applies only to horizontal + * layouts — a two-element array of lengths to specify the widths of the * label and the content element. + * * `role` (Optional) Value for the `role` attribute. + * * `includeLabel` (Optional) If set to `true`, the `aria-labelledby` attribute + * will be included. * - * @param {Array} htmlList List of HTML code to output to. + * @param {Array} htmlList The list of HTML code to output to. * @param {Function} contentHtml * A function returning the HTML code string to be added inside the content * cell. @@ -125,7 +141,7 @@ CKEDITOR.plugins.add( 'dialogui', { var _ = initPrivateObject.call( this, elementDefinition ); _.labelId = CKEDITOR.tools.getNextId() + '_label'; - var children = this._.children = []; + this._.children = []; var innerHTML = function() { var html = [], @@ -139,7 +155,7 @@ CKEDITOR.plugins.add( 'dialogui', { '', '
', + ' role="presentation">', contentHtml.call( this, dialog, elementDefinition ), '
' ); } else { @@ -147,29 +163,32 @@ CKEDITOR.plugins.add( 'dialogui', { type: 'hbox', widths: elementDefinition.widths, padding: 0, - children: [ - { + children: [ { type: 'html', html: '' }, - { + { type: 'html', html: '' + contentHtml.call( this, dialog, elementDefinition ) + '' - } - ] + } ] }; CKEDITOR.dialog._.uiElementBuilders.hbox.build( dialog, hboxDefinition, html ); } return html.join( '' ); }; - CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'div', null, { role: 'presentation' }, innerHTML ); + var attributes = { role: elementDefinition.role || 'presentation' }; + + if ( elementDefinition.includeLabel ) + attributes[ 'aria-labelledby' ] = _.labelId; + + CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'div', null, attributes, innerHTML ); }, /** @@ -179,7 +198,7 @@ CKEDITOR.plugins.add( 'dialogui', { * @class CKEDITOR.ui.dialog.textInput * @extends CKEDITOR.ui.dialog.labeledElement * @constructor Creates a textInput class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog object. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * @@ -187,7 +206,7 @@ CKEDITOR.plugins.add( 'dialogui', { * * `validate` (Optional) The validation function. * * `maxLength` (Optional) The maximum length of text box contents. * * `size` (Optional) The size of the text box. This is - * usually overridden by the size defined by the skin, however. + * usually overridden by the size defined by the skin, though. * * @param {Array} htmlList List of HTML code to output to. */ @@ -197,8 +216,7 @@ CKEDITOR.plugins.add( 'dialogui', { initPrivateObject.call( this, elementDefinition ); var domId = this._.inputId = CKEDITOR.tools.getNextId() + '_textInput', - attributes = { 'class': 'cke_dialog_ui_input_' + elementDefinition.type, id: domId, type: elementDefinition.type }, - i; + attributes = { 'class': 'cke_dialog_ui_input_' + elementDefinition.type, id: domId, type: elementDefinition.type }; // Set the validator, if any. if ( elementDefinition.validate ) @@ -222,7 +240,7 @@ CKEDITOR.plugins.add( 'dialogui', { keyPressedOnMe = true; } ); - // Lower the priority this 'keyup' since 'ok' will close the dialog.(#3749) + // Lower the priority this 'keyup' since 'ok' will close the dialog.(https://dev.ckeditor.com/ticket/3749) me.getInputElement().on( 'keyup', function( evt ) { if ( evt.data.getKeystroke() == 13 && keyPressedOnMe ) { dialog.getButton( 'ok' ) && setTimeout( function() { @@ -230,6 +248,9 @@ CKEDITOR.plugins.add( 'dialogui', { }, 0 ); keyPressedOnMe = false; } + + if ( me.bidi ) + toggleBidiKeyUpHandler.call( me, evt ); }, null, null, 1000 ); } ); @@ -254,12 +275,12 @@ CKEDITOR.plugins.add( 'dialogui', { }, /** - * A text area with a label on the top or left. + * A text area with a label at the top or on the left. * * @class CKEDITOR.ui.dialog.textarea * @extends CKEDITOR.ui.dialog.labeledElement * @constructor Creates a textarea class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog object. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * * The element definition. Accepted fields: @@ -297,6 +318,12 @@ CKEDITOR.plugins.add( 'dialogui', { if ( elementDefinition.dir ) attributes.dir = elementDefinition.dir; + if ( me.bidi ) { + dialog.on( 'load', function() { + me.getInputElement().on( 'keyup', toggleBidiKeyUpHandler ); + }, me ); + } + var innerHTML = function() { attributes[ 'aria-labelledby' ] = this._.labelId; this._.required && ( attributes[ 'aria-required' ] = this._.required ); @@ -315,12 +342,12 @@ CKEDITOR.plugins.add( 'dialogui', { * @class CKEDITOR.ui.dialog.checkbox * @extends CKEDITOR.ui.dialog.uiElement * @constructor Creates a checkbox class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog object. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * * * `checked` (Optional) Whether the checkbox is checked - * on instantiation. Defaults to false. + * on instantiation. Defaults to `false`. * * `validate` (Optional) The validation function. * * `label` (Optional) The checkbox label. * @@ -336,9 +363,14 @@ CKEDITOR.plugins.add( 'dialogui', { this.validate = elementDefinition.validate; var innerHTML = function() { - var myDefinition = CKEDITOR.tools.extend( {}, elementDefinition, { - id: elementDefinition.id ? elementDefinition.id + '_checkbox' : CKEDITOR.tools.getNextId() + '_checkbox' - }, true ), + var myDefinition = CKEDITOR.tools.extend( + {}, + elementDefinition, + { + id: elementDefinition.id ? elementDefinition.id + '_checkbox' : CKEDITOR.tools.getNextId() + '_checkbox' + }, + true + ), html = []; var labelId = CKEDITOR.tools.getNextId() + '_label'; @@ -351,7 +383,15 @@ CKEDITOR.plugins.add( 'dialogui', { myDefinition.style = myDefinition.inputStyle; _.checkbox = new CKEDITOR.ui.dialog.uiElement( dialog, myDefinition, html, 'input', null, attributes ); - html.push( ' ' ); + html.push( + ' ' + ); return html.join( '' ); }; @@ -364,14 +404,14 @@ CKEDITOR.plugins.add( 'dialogui', { * @class CKEDITOR.ui.dialog.radio * @extends CKEDITOR.ui.dialog.labeledElement * @constructor Creates a radio class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog object. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * * * `default` (Required) The default value. * * `validate` (Optional) The validation function. * * `items` (Required) An array of options. Each option - * is a 1- or 2-item array of format `[ 'Description', 'Value' ]`. If `'Value'` + * is a one- or two-item array of format `[ 'Description', 'Value' ]`. If `'Value'` * is missing, then the value would be assumed to be the same as the description. * * @param {Array} htmlList List of HTML code to output to. @@ -386,7 +426,7 @@ CKEDITOR.plugins.add( 'dialogui', { this._[ 'default' ] = this._.initValue = elementDefinition.items[ 0 ][ 1 ]; if ( elementDefinition.validate ) - this.validate = elementDefinition.valdiate; + this.validate = elementDefinition.validate; var children = [], me = this; @@ -432,7 +472,7 @@ CKEDITOR.plugins.add( 'dialogui', { if ( typeof inputDefinition.inputStyle != 'undefined' ) inputDefinition.style = inputDefinition.inputStyle; - // Make inputs of radio type focusable (#10866). + // Make inputs of radio type focusable (https://dev.ckeditor.com/ticket/10866). inputDefinition.keyboardFocusable = true; children.push( new CKEDITOR.ui.dialog.uiElement( dialog, inputDefinition, inputHtml, 'input', null, inputAttributes ) ); @@ -452,6 +492,10 @@ CKEDITOR.plugins.add( 'dialogui', { return html.join( '' ); }; + // Adding a role="radiogroup" to definition used for wrapper. + elementDefinition.role = 'radiogroup'; + elementDefinition.includeLabel = true; + CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML ); this._.children = children; }, @@ -462,13 +506,13 @@ CKEDITOR.plugins.add( 'dialogui', { * @class CKEDITOR.ui.dialog.button * @extends CKEDITOR.ui.dialog.uiElement * @constructor Creates a button class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog object. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * * * `label` (Required) The button label. - * * `disabled` (Optional) Set to true if you want the - * button to appear in disabled state. + * * `disabled` (Optional) Set to `true` if you want the + * button to appear in the disabled state. * * @param {Array} htmlList List of HTML code to output to. */ @@ -487,13 +531,13 @@ CKEDITOR.plugins.add( 'dialogui', { var me = this; // Register an event handler for processing button clicks. - dialog.on( 'load', function( eventInfo ) { + dialog.on( 'load', function() { var element = this.getElement(); ( function() { element.on( 'click', function( evt ) { me.click(); - // #9958 + // https://dev.ckeditor.com/ticket/9958 evt.data.preventDefault(); } ); @@ -514,7 +558,7 @@ CKEDITOR.plugins.add( 'dialogui', { var labelId = CKEDITOR.tools.getNextId() + '_label'; CKEDITOR.ui.dialog.uiElement.call( this, dialog, outerDefinition, htmlList, 'a', null, { style: elementDefinition.style, - href: 'javascript:void(0)', + href: 'javascript:void(0)', // jshint ignore:line title: elementDefinition.label, hidefocus: 'true', 'class': elementDefinition[ 'class' ], @@ -531,17 +575,17 @@ CKEDITOR.plugins.add( 'dialogui', { * @class CKEDITOR.ui.dialog.select * @extends CKEDITOR.ui.dialog.uiElement * @constructor Creates a button class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog object. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * * * `default` (Required) The default value. * * `validate` (Optional) The validation function. * * `items` (Required) An array of options. Each option - * is a 1- or 2-item array of format `[ 'Description', 'Value' ]`. If `'Value'` + * is a one- or two-item array of format `[ 'Description', 'Value' ]`. If `'Value'` * is missing, then the value would be assumed to be the same as the * description. - * * `multiple` (Optional) Set this to true if you'd like + * * `multiple` (Optional) Set this to `true` if you would like * to have a multiple-choice select box. * * `size` (Optional) The number of items to display in * the select box. @@ -560,9 +604,14 @@ CKEDITOR.plugins.add( 'dialogui', { _.inputId = CKEDITOR.tools.getNextId() + '_select'; var innerHTML = function() { - var myDefinition = CKEDITOR.tools.extend( {}, elementDefinition, { - id: elementDefinition.id ? elementDefinition.id + '_select' : CKEDITOR.tools.getNextId() + '_select' - }, true ), + var myDefinition = CKEDITOR.tools.extend( + {}, + elementDefinition, + { + id: ( elementDefinition.id ? elementDefinition.id + '_select' : CKEDITOR.tools.getNextId() + '_select' ) + }, + true + ), html = [], innerHTML = [], attributes = { 'id': _.inputId, 'class': 'cke_dialog_ui_input_select', 'aria-labelledby': this._.labelId }; @@ -573,9 +622,9 @@ CKEDITOR.plugins.add( 'dialogui', { html.push( '>' ); // Add multiple and size attributes from element definition. - if ( elementDefinition.size != undefined ) + if ( elementDefinition.size !== undefined ) attributes.size = elementDefinition.size; - if ( elementDefinition.multiple != undefined ) + if ( elementDefinition.multiple !== undefined ) attributes.multiple = elementDefinition.multiple; cleanInnerDefinition( myDefinition ); @@ -602,7 +651,7 @@ CKEDITOR.plugins.add( 'dialogui', { * @class CKEDITOR.ui.dialog.file * @extends CKEDITOR.ui.dialog.labeledElement * @constructor Creates a file class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog object. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * @@ -624,33 +673,34 @@ CKEDITOR.plugins.add( 'dialogui', { /** @ignore */ var innerHTML = function() { - _.frameId = CKEDITOR.tools.getNextId() + '_fileInput'; + _.frameId = CKEDITOR.tools.getNextId() + '_fileInput'; - var html = [ - '' + - '' ); + html.push( ')">' ); - return html.join( '' ); - }; + return html.join( '' ); + }; // IE BUG: Parent container does not resize to contain the iframe automatically. dialog.on( 'load', function() { @@ -668,22 +718,22 @@ CKEDITOR.plugins.add( 'dialogui', { * @class CKEDITOR.ui.dialog.fileButton * @extends CKEDITOR.ui.dialog.button * @constructor Creates a fileButton class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog object. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * - * * `for` (Required) The file input's page and element Id - * to associate to, in a 2-item array format: `[ 'page_id', 'element_id' ]`. + * * `for` (Required) The file input's page and element ID + * to associate with, in a two-item array format: `[ 'page_id', 'element_id' ]`. * * `validate` (Optional) The validation function. * * @param {Array} htmlList List of HTML code to output to. */ fileButton: function( dialog, elementDefinition, htmlList ) { + var me = this; if ( arguments.length < 3 ) return; - var _ = initPrivateObject.call( this, elementDefinition ), - me = this; + initPrivateObject.call( this, elementDefinition ); if ( elementDefinition.validate ) this.validate = elementDefinition.validate; @@ -693,8 +743,15 @@ CKEDITOR.plugins.add( 'dialogui', { myDefinition.className = ( myDefinition.className ? myDefinition.className + ' ' : '' ) + 'cke_dialog_ui_button'; myDefinition.onClick = function( evt ) { var target = elementDefinition[ 'for' ]; // [ pageId, elementId ] - if ( !onClick || onClick.call( this, evt ) !== false ) { - dialog.getContentElement( target[ 0 ], target[ 1 ] ).submit(); + + // If exists onClick in elementDefinition, then it is called and checked response type. + // If it's possible, then XHR is used, what prevents of using submit. + var responseType = onClick ? onClick.call( this, evt ) : false; + + if ( responseType !== false ) { + if ( responseType !== 'xhr' ) { + dialog.getContentElement( target[ 0 ], target[ 1 ] ).submit(); + } this.disable(); } }; @@ -711,12 +768,12 @@ CKEDITOR.plugins.add( 'dialogui', { theirHtmlRe = /^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/, emptyTagRe = /\/$/; /** - * A dialog element made from raw HTML code. + * A dialog window element made from raw HTML code. * * @class CKEDITOR.ui.dialog.html * @extends CKEDITOR.ui.dialog.uiElement * @constructor Creates a html class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog object. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition Element definition. * Accepted fields: * @@ -774,17 +831,17 @@ CKEDITOR.plugins.add( 'dialogui', { * @class CKEDITOR.ui.dialog.fieldset * @extends CKEDITOR.ui.dialog.uiElement * @constructor Creates a fieldset class instance. - * @param {CKEDITOR.dialog} dialog Parent dialog object. + * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {Array} childObjList * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. - * @param {Array} childHtmlList Array of HTML code that correspond to the HTML output of all the + * @param {Array} childHtmlList Array of HTML code that corresponds to the HTML output of all the * objects in childObjList. * @param {Array} htmlList Array of HTML code that this element will output to. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * * * `label` (Optional) The legend of the this fieldset. - * * `children` (Required) An array of dialog field definitions which will be grouped inside this fieldset. + * * `children` (Required) An array of dialog window field definitions which will be grouped inside this fieldset. * */ fieldset: function( dialog, childObjList, childHtmlList, htmlList, elementDefinition ) { @@ -806,10 +863,10 @@ CKEDITOR.plugins.add( 'dialogui', { }, true ); - CKEDITOR.ui.dialog.html.prototype = new CKEDITOR.ui.dialog.uiElement; + CKEDITOR.ui.dialog.html.prototype = new CKEDITOR.ui.dialog.uiElement(); /** @class CKEDITOR.ui.dialog.labeledElement */ - CKEDITOR.ui.dialog.labeledElement.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement, { + CKEDITOR.ui.dialog.labeledElement.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { /** * Sets the label text of the element. * @@ -839,14 +896,14 @@ CKEDITOR.plugins.add( 'dialogui', { }, /** - * Defines the onChange event for UI element definitions. + * Defines the `onChange` event for UI element definitions. * @property {Object} */ eventProcessors: commonEventProcessors }, true ); /** @class CKEDITOR.ui.dialog.button */ - CKEDITOR.ui.dialog.button.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement, { + CKEDITOR.ui.dialog.button.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { /** * Simulates a click to the button. * @@ -876,21 +933,26 @@ CKEDITOR.plugins.add( 'dialogui', { }, /** - * @todo + * Checks whether a field is visible. + * + * @returns {Boolean} */ isVisible: function() { return this.getElement().getFirst().isVisible(); }, /** - * @todo + * Checks whether a field is enabled. Fields can be disabled by using the + * {@link #disable} method and enabled by using the {@link #enable} method. + * + * @returns {Boolean} */ isEnabled: function() { return !this._.disabled; }, /** - * Defines the onChange event and onClick for button element definitions. + * Defines the `onChange` event and `onClick` for button element definitions. * * @property {Object} */ @@ -922,7 +984,7 @@ CKEDITOR.plugins.add( 'dialogui', { }, true ); /** @class CKEDITOR.ui.dialog.textInput */ - CKEDITOR.ui.dialog.textInput.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement, { + CKEDITOR.ui.dialog.textInput.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement(), { /** * Gets the text input DOM element under this UI object. * @@ -978,17 +1040,81 @@ CKEDITOR.plugins.add( 'dialogui', { * @returns {CKEDITOR.ui.dialog.textInput} The current UI element. */ setValue: function( value ) { - !value && ( value = '' ); + if ( this.bidi ) { + var marker = value && value.charAt( 0 ), + dir = ( marker == '\u202A' ? 'ltr' : marker == '\u202B' ? 'rtl' : null ); + + if ( dir ) { + value = value.slice( 1 ); + } + + // Set the marker or reset it (if dir==null). + this.setDirectionMarker( dir ); + } + + if ( !value ) { + value = ''; + } + return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply( this, arguments ); }, + /** + * Gets the value of this text input object. + * + * @returns {String} The value. + */ + getValue: function() { + var value = CKEDITOR.ui.dialog.uiElement.prototype.getValue.call( this ); + + if ( this.bidi && value ) { + var dir = this.getDirectionMarker(); + if ( dir ) { + value = ( dir == 'ltr' ? '\u202A' : '\u202B' ) + value; + } + } + + return value; + }, + + /** + * Sets the text direction marker and the `dir` attribute of the input element. + * + * @since 4.5 + * @param {String} dir The text direction. Pass `null` to reset. + */ + setDirectionMarker: function( dir ) { + var inputElement = this.getInputElement(); + + if ( dir ) { + inputElement.setAttributes( { + dir: dir, + 'data-cke-dir-marker': dir + } ); + // Don't remove the dir attribute if this field hasn't got the marker, + // because the dir attribute could be set independently. + } else if ( this.getDirectionMarker() ) { + inputElement.removeAttributes( [ 'dir', 'data-cke-dir-marker' ] ); + } + }, + + /** + * Gets the value of the text direction marker. + * + * @since 4.5 + * @returns {String} `'ltr'`, `'rtl'` or `null` if the marker is not set. + */ + getDirectionMarker: function() { + return this.getInputElement().data( 'cke-dir-marker' ); + }, + keyboardFocusable: true }, commonPrototype, true ); CKEDITOR.ui.dialog.textarea.prototype = new CKEDITOR.ui.dialog.textInput(); /** @class CKEDITOR.ui.dialog.select */ - CKEDITOR.ui.dialog.select.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement, { + CKEDITOR.ui.dialog.select.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement(), { /** * Gets the DOM element of the select box. * @@ -1002,10 +1128,10 @@ CKEDITOR.plugins.add( 'dialogui', { * Adds an option to the select box. * * @param {String} label Option label. - * @param {String} value (Optional) Option value, if not defined it'll be + * @param {String} value (Optional) Option value, if not defined it will be * assumed to be the same as the label. * @param {Number} index (Optional) Position of the option to be inserted - * to. If not defined the new option will be inserted to the end of list. + * to. If not defined, the new option will be inserted to the end of list. * @returns {CKEDITOR.ui.dialog.select} The current select UI element. */ add: function( label, value, index ) { @@ -1014,12 +1140,14 @@ CKEDITOR.plugins.add( 'dialogui', { option.$.text = label; option.$.value = ( value === undefined || value === null ) ? label : value; if ( index === undefined || index === null ) { - if ( CKEDITOR.env.ie ) + if ( CKEDITOR.env.ie ) { selectElement.add( option.$ ); - else + } else { selectElement.add( option.$, null ); - } else + } + } else { selectElement.add( option.$, index ); + } return this; }, @@ -1051,7 +1179,7 @@ CKEDITOR.plugins.add( 'dialogui', { }, commonPrototype, true ); /** @class CKEDITOR.ui.dialog.checkbox */ - CKEDITOR.ui.dialog.checkbox.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement, { + CKEDITOR.ui.dialog.checkbox.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { /** * Gets the checkbox DOM element. * @@ -1075,7 +1203,7 @@ CKEDITOR.plugins.add( 'dialogui', { /** * Gets the state of the checkbox. * - * @returns {Boolean} true means the checkbox is ticked, false means it's not ticked. + * @returns {Boolean} `true` means that the checkbox is ticked, `false` means it is not ticked. */ getValue: function() { return this.getInputElement().$.checked; @@ -1089,7 +1217,7 @@ CKEDITOR.plugins.add( 'dialogui', { }, /** - * Defines the onChange event for UI element definitions. + * Defines the `onChange` event for UI element definitions. * * @property {Object} */ @@ -1116,12 +1244,12 @@ CKEDITOR.plugins.add( 'dialogui', { }, commonPrototype, true ); /** @class CKEDITOR.ui.dialog.radio */ - CKEDITOR.ui.dialog.radio.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement, { + CKEDITOR.ui.dialog.radio.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { /** - * Checks one of the radio buttons in this button group. + * Selects one of the radio buttons in this button group. * * @param {String} value The value of the button to be chcked. - * @param {Boolean} noChangeEvent Internal commit, to supress `change` event on this element. + * @param {Boolean} noChangeEvent Internal commit, to supress the `change` event on this element. */ setValue: function( value, noChangeEvent ) { var children = this._.children, @@ -1133,9 +1261,9 @@ CKEDITOR.plugins.add( 'dialogui', { }, /** - * Gets the value of the currently checked radio button. + * Gets the value of the currently selected radio button. * - * @returns {String} The currently checked button's value. + * @returns {String} The currently selected button's value. */ getValue: function() { var children = this._.children; @@ -1163,13 +1291,13 @@ CKEDITOR.plugins.add( 'dialogui', { }, /** - * Defines the onChange event for UI element definitions. + * Defines the `onChange` event for UI element definitions. * * @property {Object} */ eventProcessors: { onChange: function( dialog, func ) { - if ( !CKEDITOR.env.ie ) + if ( !CKEDITOR.env.ie || ( CKEDITOR.env.version > 8 ) ) return commonEventProcessors.onChange.apply( this, arguments ); else { dialog.on( 'load', function() { @@ -1192,7 +1320,7 @@ CKEDITOR.plugins.add( 'dialogui', { }, commonPrototype, true ); /** @class CKEDITOR.ui.dialog.file */ - CKEDITOR.ui.dialog.file.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement, commonPrototype, { + CKEDITOR.ui.dialog.file.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement(), commonPrototype, { /** * Gets the `` element of this file input. * @@ -1214,7 +1342,7 @@ CKEDITOR.plugins.add( 'dialogui', { }, /** - * Get the action assigned to the form. + * Gets the action assigned to the form. * * @returns {String} The value of the action. */ @@ -1223,8 +1351,8 @@ CKEDITOR.plugins.add( 'dialogui', { }, /** - * The events must be applied on the inner input element, and - * that must be done when the iframe & form has been loaded. + * The events must be applied to the inner input element, and + * this must be done when the iframe and form have been loaded. */ registerEvents: function( definition ) { var regex = /^on([A-Z]\w+)/, @@ -1251,8 +1379,8 @@ CKEDITOR.plugins.add( 'dialogui', { /** * Redraws the file input and resets the file path in the file input. - * The redraw logic is necessary because non-IE browsers tend to clear - * the `' ); iframe.setStyles( { width: '100%', height: '100%' } ); - iframe.addClass( 'cke_wysiwyg_frame cke_reset' ); + iframe.addClass( 'cke_wysiwyg_frame' ).addClass( 'cke_reset' ); var contentSpace = editor.ui.space( 'contents' ); contentSpace.append( iframe ); @@ -41,33 +48,36 @@ // Asynchronous iframe loading is only required in IE>8 and Gecko (other reasons probably). // Do not use it on WebKit as it'll break the browser-back navigation. - var useOnloadEvent = CKEDITOR.env.ie || CKEDITOR.env.gecko; + var useOnloadEvent = ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) || CKEDITOR.env.gecko; if ( useOnloadEvent ) iframe.on( 'load', onLoad ); var frameLabel = editor.title, - frameDesc = editor.lang.common.editorHelp; + helpLabel = editor.fire( 'ariaEditorHelpLabel', {} ).label; if ( frameLabel ) { - if ( CKEDITOR.env.ie ) - frameLabel += ', ' + frameDesc; + if ( CKEDITOR.env.ie && helpLabel ) + frameLabel += ', ' + helpLabel; iframe.setAttribute( 'title', frameLabel ); } - var labelId = CKEDITOR.tools.getNextId(), - desc = CKEDITOR.dom.element.createFromHtml( '' + frameDesc + '' ); + if ( helpLabel ) { + var labelId = CKEDITOR.tools.getNextId(), + desc = CKEDITOR.dom.element.createFromHtml( '' + helpLabel + '' ); - contentSpace.append( desc, 1 ); + contentSpace.append( desc, 1 ); + iframe.setAttribute( 'aria-describedby', labelId ); + } // Remove the ARIA description. editor.on( 'beforeModeUnload', function( evt ) { evt.removeListener(); - desc.remove(); + if ( desc ) + desc.remove(); } ); iframe.setAttributes( { - 'aria-describedby': labelId, tabIndex: editor.tabIndex, allowTransparency: 'true' } ); @@ -75,23 +85,6 @@ // Execute onLoad manually for all non IE||Gecko browsers. !useOnloadEvent && onLoad(); - if ( CKEDITOR.env.webkit ) { - // Webkit: iframe size doesn't auto fit well. (#7360) - var onResize = function() { - // Hide the iframe to get real size of the holder. (#8941) - contentSpace.setStyle( 'width', '100%' ); - - iframe.hide(); - iframe.setSize( 'width', contentSpace.getSize( 'width' ) ); - contentSpace.removeStyle( 'width' ); - iframe.show(); - }; - - iframe.setCustomData( 'onResize', onResize ); - - CKEDITOR.document.getWindow().on( 'resize', onResize ); - } - editor.fire( 'ariaWidget', iframe ); function onLoad( evt ) { @@ -103,6 +96,29 @@ } } ); + /** + * Adds the path to a stylesheet file to the exisiting {@link CKEDITOR.config#contentsCss} value. + * + * **Note:** This method is available only with the `wysiwygarea` plugin and only affects + * classic editors based on it (so it does not affect inline editors). + * + * editor.addContentsCss( 'assets/contents.css' ); + * + * @since 4.4 + * @param {String} cssPath The path to the stylesheet file which should be added. + * @member CKEDITOR.editor + */ + CKEDITOR.editor.prototype.addContentsCss = function( cssPath ) { + var cfg = this.config, + curContentsCss = cfg.contentsCss; + + // Convert current value into array. + if ( !CKEDITOR.tools.isArray( curContentsCss ) ) + cfg.contentsCss = curContentsCss ? [ curContentsCss ] : []; + + cfg.contentsCss.push( cssPath ); + }; + function onDomReady( win ) { var editor = this.editor, doc = win.document, @@ -113,30 +129,8 @@ script && script.parentNode.removeChild( script ); script = doc.getElementById( 'cke_shimscrpt' ); script && script.parentNode.removeChild( script ); - - if ( CKEDITOR.env.gecko ) { - // Force Gecko to change contentEditable from false to true on domReady - // (because it's previously set to true on iframe's body creation). - // Otherwise del/backspace and some other editable features will be broken in Fx <4 - // See: #107 and https://bugzilla.mozilla.org/show_bug.cgi?id=440916 - body.contentEditable = false; - - // Remove any leading
which is between the and the comment. - // This one fixes Firefox 3.6 bug: the browser inserts a leading
- // on document.write if the body has contenteditable="true". - if ( CKEDITOR.env.version < 20000 ) { - body.innerHTML = body.innerHTML.replace( /^.*/, '' ); - - // The above hack messes up the selection in FF36. - // To clean this up, manually select collapsed range that - // starts within the body. - setTimeout( function() { - var range = new CKEDITOR.dom.range( new CKEDITOR.dom.document( doc ) ); - range.setStart( new CKEDITOR.dom.node( body ), 0 ); - editor.getSelection().selectRanges( [ range ] ); - }, 0 ); - } - } + script = doc.getElementById( 'cke_basetagscrpt' ); + script && script.parentNode.removeChild( script ); body.contentEditable = true; @@ -145,7 +139,7 @@ body.hideFocus = true; // Disable and re-enable the body to avoid IE from - // taking the editing focus at startup. (#141 / #523) + // taking the editing focus at startup. (https://dev.ckeditor.com/ticket/141 / https://dev.ckeditor.com/ticket/523) body.disabled = true; body.removeAttribute( 'disabled' ); } @@ -158,31 +152,25 @@ doc = new CKEDITOR.dom.document( doc ); this.setup(); + this.fixInitialSelection(); - if ( CKEDITOR.env.ie ) { + var editable = this; + + // Without it IE8 has problem with removing selection in nested editable. (https://dev.ckeditor.com/ticket/13785) + if ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) { doc.getDocumentElement().addClass( doc.$.compatMode ); - - // Prevent IE from leaving new paragraph after deleting all contents in body. (#6966) - editor.config.enterMode != CKEDITOR.ENTER_P && this.attachListener( doc, 'selectionchange', function() { - var body = doc.getBody(), - sel = editor.getSelection(), - range = sel && sel.getRanges()[ 0 ]; - - if ( range && body.getHtml().match( /^

(?: |
)<\/p>$/i ) && range.startContainer.equals( body ) ) { - // Avoid the ambiguity from a real user cursor position. - setTimeout( function() { - range = editor.getSelection().getRanges()[ 0 ]; - if ( !range.startContainer.equals( 'body' ) ) { - body.getFirst().remove( 1 ); - range.moveToElementEditEnd( body ); - range.select(); - } - }, 0 ); - } - } ); } - // Fix problem with cursor not appearing in Webkit and IE11+ when clicking below the body (#10945, #10906). + // Prevent IE/Edge from leaving a new paragraph/div after deleting all contents in body (https://dev.ckeditor.com/ticket/6966, https://dev.ckeditor.com/ticket/13142). + if ( CKEDITOR.env.ie && !CKEDITOR.env.edge && editor.enterMode != CKEDITOR.ENTER_P ) { + removeSuperfluousElement( 'p' ); + } + // Starting from Edge 15 additional `div` is not added to the editor. + else if ( CKEDITOR.env.edge && CKEDITOR.env.version < 15 && editor.enterMode != CKEDITOR.ENTER_DIV ) { + removeSuperfluousElement( 'div' ); + } + + // Fix problem with cursor not appearing in Webkit and IE11+ when clicking below the body (https://dev.ckeditor.com/ticket/10945, https://dev.ckeditor.com/ticket/10906). // Fix for older IEs (8-10 and QM) is placed inside selection.js. if ( CKEDITOR.env.webkit || ( CKEDITOR.env.ie && CKEDITOR.env.version > 10 ) ) { doc.getDocumentElement().on( 'mousedown', function( evt ) { @@ -195,29 +183,14 @@ } ); } - // ## START : disableNativeTableHandles and disableObjectResizing settings. + // Config props: disableObjectResizing and disableNativeTableHandles handler. + objectResizeDisabler( editor ); // Enable dragging of position:absolute elements in IE. try { editor.document.$.execCommand( '2D-position', false, true ); } catch ( e ) {} - // IE, Opera and Safari may not support it and throw errors. - try { - editor.document.$.execCommand( 'enableInlineTableEditing', false, !editor.config.disableNativeTableHandles ); - } catch ( e ) {} - - if ( editor.config.disableObjectResizing ) { - try { - this.getDocument().$.execCommand( 'enableObjectResizing', false, false ); - } catch ( e ) { - // For browsers in which the above method failed, we can cancel the resizing on the fly (#4208) - this.attachListener( this, CKEDITOR.env.ie ? 'resizestart' : 'resize', function( evt ) { - evt.data.preventDefault(); - } ); - } - } - if ( CKEDITOR.env.gecko || CKEDITOR.env.ie && editor.document.$.compatMode == 'CSS1Compat' ) { this.attachListener( this, 'keydown', function( evt ) { var keyCode = evt.data.getKeystroke(); @@ -225,7 +198,7 @@ // PageUp OR PageDown if ( keyCode == 33 || keyCode == 34 ) { // PageUp/PageDown scrolling is broken in document - // with standard doctype, manually fix it. (#4736) + // with standard doctype, manually fix it. (https://dev.ckeditor.com/ticket/4736) if ( CKEDITOR.env.ie ) { setTimeout( function() { editor.getSelection().scrollIntoView(); @@ -234,7 +207,7 @@ // Page up/down cause editor selection to leak // outside of editable thus we try to intercept // the behavior, while it affects only happen - // when editor contents are not overflowed. (#7955) + // when editor contents are not overflowed. (https://dev.ckeditor.com/ticket/7955) else if ( editor.window.$.innerHeight > this.$.offsetHeight ) { var range = editor.createRange(); range[ keyCode == 33 ? 'moveToElementEditStart' : 'moveToElementEditEnd' ]( this ); @@ -250,25 +223,31 @@ // focus is moved onto a non-editing host, e.g. link or button, but // it becomes a problem for the object type selection, since the resizer // handler attached on it will mark other part of the UI, especially - // for the dialog. (#8157) + // for the dialog. (https://dev.ckeditor.com/ticket/8157) // [IE<8 & Opera] Even worse For old IEs, the cursor will not vanish even if - // the selection has been moved to another text input in some cases. (#4716) + // the selection has been moved to another text input in some cases. (https://dev.ckeditor.com/ticket/4716) // // Now the range restore is disabled, so we simply force IE to clean // up the selection before blur. this.attachListener( doc, 'blur', function() { - // Error proof when the editor is not visible. (#6375) + // Error proof when the editor is not visible. (https://dev.ckeditor.com/ticket/6375) try { doc.$.selection.empty(); } catch ( er ) {} } ); } - // ## END - + if ( CKEDITOR.env.iOS ) { + // [iOS] If touch is bound to any parent of the iframe blur happens on any touch + // event and body becomes the focused element (https://dev.ckeditor.com/ticket/10714). + this.attachListener( doc, 'touchend', function() { + win.focus(); + } ); + } var title = editor.document.getElementsByTag( 'title' ).getItem( 0 ); - title.data( 'cke-title', editor.document.$.title ); + // document.title is malfunctioning on Chrome, so get value from the element (https://dev.ckeditor.com/ticket/12402). + title.data( 'cke-title', title.getText() ); // [IE] JAWS will not recognize the aria label we used on the iframe // unless the frame window title string is used as the voice label, @@ -277,6 +256,10 @@ editor.document.$.title = this._.docTitle; CKEDITOR.tools.setTimeout( function() { + // Editable is ready after first setData. + if ( this.status == 'unloaded' ) + this.status = 'ready'; + editor.fire( 'contentDom' ); if ( this._.isPendingFocus ) { @@ -287,32 +270,51 @@ setTimeout( function() { editor.fire( 'dataReady' ); }, 0 ); - - // IE BUG: IE might have rendered the iframe with invisible contents. - // (#3623). Push some inconsequential CSS style changes to force IE to - // refresh it. - // - // Also, for some unknown reasons, short timeouts (e.g. 100ms) do not - // fix the problem. :( - if ( CKEDITOR.env.ie ) { - setTimeout( function() { - if ( editor.document ) { - var $body = editor.document.$.body; - $body.runtimeStyle.marginBottom = '0px'; - $body.runtimeStyle.marginBottom = ''; - } - }, 1000 ); - } }, 0, this ); + + function removeSuperfluousElement( tagName ) { + var lockRetain = false; + + // Superfluous elements appear after keydown + // and before keyup, so the procedure is as follows: + // 1. On first keydown mark all elements with + // a specified tag name as non-superfluous. + editable.attachListener( editable, 'keydown', function() { + var body = doc.getBody(), + retained = body.getElementsByTag( tagName ); + + if ( !lockRetain ) { + for ( var i = 0; i < retained.count(); i++ ) { + retained.getItem( i ).setCustomData( 'retain', true ); + } + lockRetain = true; + } + }, null, null, 1 ); + + // 2. On keyup remove all elements that were not marked + // as non-superfluous (which means they must have had appeared in the meantime). + // Also we should preserve all temporary elements inserted by editor – otherwise we'd likely + // leak fake selection's content into editable due to removing hidden selection container (https://dev.ckeditor.com/ticket/14831). + editable.attachListener( editable, 'keyup', function() { + var elements = doc.getElementsByTag( tagName ); + if ( lockRetain ) { + if ( elements.count() == 1 && !elements.getItem( 0 ).getCustomData( 'retain' ) && + CKEDITOR.tools.isEmpty( elements.getItem( 0 ).getAttributes() ) ) { + elements.getItem( 0 ).remove( 1 ); + } + lockRetain = false; + } + } ); + } } - var framedWysiwyg = CKEDITOR.tools.createClass( { - $: function( editor ) { + framedWysiwyg = CKEDITOR.tools.createClass( { + $: function() { this.base.apply( this, arguments ); this._.frameLoadedHandler = CKEDITOR.tools.addFunction( function( win ) { // Avoid opening design mode in a frame window thread, - // which will cause host page scrolling.(#4397) + // which will cause host page scrolling.(https://dev.ckeditor.com/ticket/4397) CKEDITOR.tools.setTimeout( onDomReady, 0, this, win ); }, this ); @@ -327,8 +329,10 @@ if ( isSnapshot ) { this.setHtml( data ); + this.fixInitialSelection(); + // Fire dataReady for the consistency with inline editors - // and because it makes sense. (#10370) + // and because it makes sense. (https://dev.ckeditor.com/ticket/10370) editor.fire( 'dataReady' ); } else { @@ -340,8 +344,7 @@ docType = config.docType; // Build the additional stuff to be included into . - var headExtra = CKEDITOR.tools.buildStyleHtml( iframeCssFixes() ) - .replace( /