From e7789c1ad838194d45eeee6ac2eb6e55f5cf35a1 Mon Sep 17 00:00:00 2001 From: Jason Woofenden Date: Thu, 4 Nov 2010 01:29:19 -0400 Subject: [PATCH] vanilla ckeditor-3.2.1 --- CHANGES.html | 104 +++++++ _samples/ajax.html | 19 +- _samples/assets/output_xhtml.css | 204 +++++++++++++ _samples/index.html | 1 + _samples/output_xhtml.html | 159 ++++++++++ _samples/ui_languages.html | 31 +- _source/core/_bootstrap.js | 9 +- _source/core/ckeditor_base.js | 11 +- _source/core/ckeditor_basic.js | 9 +- _source/core/commanddefinition.js | 16 + _source/core/config.js | 12 + _source/core/dom/domobject.js | 36 +++ _source/core/dom/elementpath.js | 2 +- _source/core/dom/range.js | 105 ++++++- _source/core/dom/walker.js | 4 +- _source/core/dtd.js | 2 +- _source/core/editor.js | 38 ++- _source/core/editor_basic.js | 11 +- _source/core/env.js | 5 +- _source/core/htmlparser/basicwriter.js | 4 +- _source/core/htmlparser/fragment.js | 1 + _source/core/imagecacher.js | 1 + _source/core/loader.js | 2 +- _source/core/tools.js | 15 +- _source/lang/_translationstatus.txt | 114 +++---- _source/lang/af.js | 19 +- _source/lang/ar.js | 19 +- _source/lang/bg.js | 19 +- _source/lang/bn.js | 19 +- _source/lang/bs.js | 19 +- _source/lang/ca.js | 189 ++++++------ _source/lang/cs.js | 19 +- _source/lang/cy.js | 19 +- _source/lang/da.js | 19 +- _source/lang/de.js | 13 +- _source/lang/el.js | 19 +- _source/lang/en-au.js | 19 +- _source/lang/en-ca.js | 19 +- _source/lang/en-gb.js | 19 +- _source/lang/en.js | 19 +- _source/lang/eo.js | 19 +- _source/lang/es.js | 19 +- _source/lang/et.js | 19 +- _source/lang/eu.js | 19 +- _source/lang/fa.js | 19 +- _source/lang/fi.js | 59 ++-- _source/lang/fo.js | 265 ++++++++-------- _source/lang/fr-ca.js | 19 +- _source/lang/fr.js | 19 +- _source/lang/gl.js | 19 +- _source/lang/gu.js | 19 +- _source/lang/he.js | 19 +- _source/lang/hi.js | 19 +- _source/lang/hr.js | 19 +- _source/lang/hu.js | 319 ++++++++++---------- _source/lang/is.js | 19 +- _source/lang/it.js | 19 +- _source/lang/ja.js | 19 +- _source/lang/km.js | 19 +- _source/lang/ko.js | 19 +- _source/lang/lt.js | 19 +- _source/lang/lv.js | 19 +- _source/lang/mn.js | 19 +- _source/lang/ms.js | 19 +- _source/lang/nb.js | 135 +++++---- _source/lang/nl.js | 19 +- _source/lang/no.js | 135 +++++---- _source/lang/pl.js | 19 +- _source/lang/pt-br.js | 19 +- _source/lang/pt.js | 19 +- _source/lang/ro.js | 19 +- _source/lang/ru.js | 19 +- _source/lang/sk.js | 19 +- _source/lang/sl.js | 19 +- _source/lang/sr-latn.js | 19 +- _source/lang/sr.js | 19 +- _source/lang/sv.js | 19 +- _source/lang/th.js | 19 +- _source/lang/tr.js | 19 +- _source/lang/uk.js | 19 +- _source/lang/vi.js | 19 +- _source/lang/zh-cn.js | 19 +- _source/lang/zh.js | 19 +- _source/plugins/basicstyles/plugin.js | 30 +- _source/plugins/button/plugin.js | 22 +- _source/plugins/clipboard/plugin.js | 31 +- _source/plugins/colorbutton/plugin.js | 46 ++- _source/plugins/contextmenu/plugin.js | 6 +- _source/plugins/dialog/plugin.js | 75 +++-- _source/plugins/div/dialogs/div.js | 58 ++-- _source/plugins/elementspath/plugin.js | 106 ++++--- _source/plugins/enterkey/plugin.js | 28 +- _source/plugins/filebrowser/plugin.js | 28 +- _source/plugins/find/dialogs/find.js | 50 +-- _source/plugins/flash/dialogs/flash.js | 16 +- _source/plugins/font/plugin.js | 3 +- _source/plugins/forms/dialogs/checkbox.js | 14 +- _source/plugins/htmldataprocessor/plugin.js | 7 +- _source/plugins/htmlwriter/plugin.js | 4 +- _source/plugins/image/dialogs/image.js | 10 +- _source/plugins/image/plugin.js | 9 + _source/plugins/indent/plugin.js | 38 ++- _source/plugins/link/dialogs/link.js | 42 ++- _source/plugins/link/plugin.js | 35 ++- _source/plugins/list/plugin.js | 14 +- _source/plugins/listblock/plugin.js | 9 +- _source/plugins/maximize/plugin.js | 22 ++ _source/plugins/menubutton/plugin.js | 1 + _source/plugins/pagebreak/plugin.js | 5 + _source/plugins/panel/plugin.js | 18 ++ _source/plugins/resize/plugin.js | 4 +- _source/plugins/richcombo/plugin.js | 5 +- _source/plugins/scayt/dialogs/options.js | 6 +- _source/plugins/scayt/plugin.js | 306 ++++++++++++++----- _source/plugins/selection/plugin.js | 82 +++-- _source/plugins/showborders/plugin.js | 45 ++- _source/plugins/smiley/dialogs/smiley.js | 9 +- _source/plugins/smiley/plugin.js | 5 +- _source/plugins/sourcearea/plugin.js | 1 + _source/plugins/specialchar/dialogs/specialchar.js | 40 ++- _source/plugins/styles/plugin.js | 252 +++++++++++++--- _source/plugins/styles/styles/default.js | 88 ++++++ _source/plugins/stylescombo/plugin.js | 162 +++------- _source/plugins/stylescombo/styles/default.js | 85 ------ _source/plugins/table/dialogs/table.js | 2 + _source/plugins/tabletools/dialogs/tableCell.js | 5 + _source/plugins/tabletools/plugin.js | 50 ++- _source/plugins/templates/dialogs/templates.js | 43 +-- _source/plugins/templates/templates/default.js | 2 +- _source/plugins/toolbar/plugin.js | 13 +- _source/plugins/wysiwygarea/plugin.js | 95 ++++-- _source/skins/kama/dialog.css | 15 +- _source/skins/kama/menu.css | 14 - _source/skins/kama/toolbar.css | 44 +-- _source/skins/office2003/dialog.css | 12 +- _source/skins/office2003/mainui.css | 6 + _source/skins/office2003/menu.css | 15 +- _source/skins/office2003/toolbar.css | 50 ++- _source/skins/v2/dialog.css | 12 +- _source/skins/v2/menu.css | 16 +- _source/skins/v2/toolbar.css | 46 ++- _source/themes/default/theme.js | 7 +- ckeditor.js | 223 +++++++------- ckeditor_basic.js | 6 +- ckeditor_basic_source.js | 2 +- ckeditor_php4.php | 6 +- ckeditor_php5.php | 6 +- ckeditor_source.js | 2 +- lang/_translationstatus.txt | 114 +++---- lang/af.js | 2 +- lang/ar.js | 2 +- lang/bg.js | 2 +- lang/bn.js | 2 +- lang/bs.js | 2 +- lang/ca.js | 2 +- lang/cs.js | 2 +- lang/cy.js | 2 +- lang/da.js | 2 +- lang/de.js | 2 +- lang/el.js | 2 +- lang/en-au.js | 2 +- lang/en-ca.js | 2 +- lang/en-gb.js | 2 +- lang/en.js | 2 +- lang/eo.js | 2 +- lang/es.js | 2 +- lang/et.js | 2 +- lang/eu.js | 2 +- lang/fa.js | 2 +- lang/fi.js | 2 +- lang/fo.js | 2 +- lang/fr-ca.js | 2 +- lang/fr.js | 2 +- lang/gl.js | 2 +- lang/gu.js | 2 +- lang/he.js | 2 +- lang/hi.js | 2 +- lang/hr.js | 2 +- lang/hu.js | 2 +- lang/is.js | 2 +- lang/it.js | 2 +- lang/ja.js | 2 +- lang/km.js | 2 +- lang/ko.js | 2 +- lang/lt.js | 2 +- lang/lv.js | 2 +- lang/mn.js | 2 +- lang/ms.js | 2 +- lang/nb.js | 2 +- lang/nl.js | 2 +- lang/no.js | 2 +- lang/pl.js | 2 +- lang/pt-br.js | 2 +- lang/pt.js | 2 +- lang/ro.js | 2 +- lang/ru.js | 2 +- lang/sk.js | 2 +- lang/sl.js | 2 +- lang/sr-latn.js | 2 +- lang/sr.js | 2 +- lang/sv.js | 2 +- lang/th.js | 2 +- lang/tr.js | 2 +- lang/uk.js | 2 +- lang/vi.js | 2 +- lang/zh-cn.js | 2 +- lang/zh.js | 2 +- plugins/div/dialogs/div.js | 2 +- plugins/find/dialogs/find.js | 8 +- plugins/flash/dialogs/flash.js | 6 +- plugins/forms/dialogs/checkbox.js | 2 +- plugins/image/dialogs/image.js | 2 +- plugins/link/dialogs/link.js | 12 +- plugins/scayt/dialogs/options.js | 4 +- plugins/smiley/dialogs/smiley.js | 4 +- plugins/specialchar/dialogs/specialchar.js | 4 +- plugins/styles/styles/default.js | 6 + plugins/stylescombo/styles/default.js | 6 - plugins/table/dialogs/table.js | 2 +- plugins/tabletools/dialogs/tableCell.js | 2 +- plugins/templates/dialogs/templates.js | 4 +- plugins/templates/templates/default.js | 2 +- skins/kama/dialog.css | 4 +- skins/kama/editor.css | 12 +- skins/office2003/dialog.css | 4 +- skins/office2003/editor.css | 16 +- skins/v2/dialog.css | 2 +- skins/v2/editor.css | 12 +- themes/default/theme.js | 4 +- 229 files changed, 3853 insertions(+), 2005 deletions(-) create mode 100644 _samples/assets/output_xhtml.css create mode 100644 _samples/output_xhtml.html create mode 100644 _source/plugins/styles/styles/default.js delete mode 100644 _source/plugins/stylescombo/styles/default.js create mode 100644 plugins/styles/styles/default.js delete mode 100644 plugins/stylescombo/styles/default.js diff --git a/CHANGES.html b/CHANGES.html index 9b763b0..93a1af1 100644 --- a/CHANGES.html +++ b/CHANGES.html @@ -35,6 +35,110 @@ For licensing, see LICENSE.html or http://ckeditor.com/license CKEditor Changelog

+ CKEditor 3.2.1

+

+ New features:

+ +

+ Fixed issues:

+ +

CKEditor 3.2

New features:

diff --git a/_samples/ajax.html b/_samples/ajax.html index 0cd8ce8..153e546 100644 --- a/_samples/ajax.html +++ b/_samples/ajax.html @@ -22,22 +22,9 @@ function createEditor() var html = document.getElementById( 'editorcontents' ).innerHTML; - // Create a new editor inside the
- editor = CKEDITOR.appendTo( 'editor' ); - editor.setData( html ); - - // This sample may break here if the ckeditor_basic.js is used. In such case, the following code should be used instead: - /* - if ( editor.setData ) - editor.setData( html ); - else - { - CKEDITOR.on( 'loaded', function() - { - editor.setData( html ); - }); - } - */ + // Create a new editor inside the
, setting its value to html + var config = {}; + editor = CKEDITOR.appendTo( 'editor', config, html ); } function removeEditor() diff --git a/_samples/assets/output_xhtml.css b/_samples/assets/output_xhtml.css new file mode 100644 index 0000000..620ac64 --- /dev/null +++ b/_samples/assets/output_xhtml.css @@ -0,0 +1,204 @@ +/* + * Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. + * For licensing, see LICENSE.html or http://ckeditor.com/license + * + * Styles used by the XHTML 1.1 sample page (xhtml.html). + */ + +/** + * Basic definitions for the editing area. + */ +body +{ + font-family: Arial, Verdana, sans-serif; + font-size: 80%; + color: #000000; + background-color: #ffffff; + padding: 5px; + margin: 0px; +} + +/** + * Core styles. + */ + +.Bold +{ + font-weight: bold; +} + +.Italic +{ + font-style: italic; +} + +.Underline +{ + text-decoration: underline; +} + +.StrikeThrough +{ + text-decoration: line-through; +} + +.Subscript +{ + vertical-align: sub; + font-size: smaller; +} + +.Superscript +{ + vertical-align: super; + font-size: smaller; +} + +/** + * Font faces. + */ + +.FontComic +{ + font-family: 'Comic Sans MS'; +} + +.FontCourier +{ + font-family: 'Courier New'; +} + +.FontTimes +{ + font-family: 'Times New Roman'; +} + +/** + * Font sizes. + */ + +.FontSmaller +{ + font-size: smaller; +} + +.FontLarger +{ + font-size: larger; +} + +.FontSmall +{ + font-size: 8pt; +} + +.FontBig +{ + font-size: 14pt; +} + +.FontDouble +{ + font-size: 200%; +} + +/** + * Font colors. + */ +.FontColor1 +{ + color: #ff9900; +} + +.FontColor2 +{ + color: #0066cc; +} + +.FontColor3 +{ + color: #ff0000; +} + +.FontColor1BG +{ + background-color: #ff9900; +} + +.FontColor2BG +{ + background-color: #0066cc; +} + +.FontColor3BG +{ + background-color: #ff0000; +} + +/** + * Indentation. + */ + +.Indent1 +{ + margin-left: 40px; +} + +.Indent2 +{ + margin-left: 80px; +} + +.Indent3 +{ + margin-left: 120px; +} + +/** + * Alignment. + */ + +.JustifyLeft +{ + text-align: left; +} + +.JustifyRight +{ + text-align: right; +} + +.JustifyCenter +{ + text-align: center; +} + +.JustifyFull +{ + text-align: justify; +} + +/** + * Other. + */ + +code +{ + font-family: courier, monospace; + background-color: #eeeeee; + padding-left: 1px; + padding-right: 1px; + border: #c0c0c0 1px solid; +} + +kbd +{ + padding: 0px 1px 0px 1px; + border-width: 1px 2px 2px 1px; + border-style: solid; +} + +blockquote +{ + color: #808080; +} diff --git a/_samples/index.html b/_samples/index.html index 148db02..84fa75d 100644 --- a/_samples/index.html +++ b/_samples/index.html @@ -39,6 +39,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
  • Using the "Enter" key in CKEditor
  • Shared toolbars
  • jQuery adapter example
  • +
  • Output XHTML
  • -
    - + Available languages ( languages!):
    +
    (You may see strange characters if your system doesn't support the selected language) diff --git a/_source/core/_bootstrap.js b/_source/core/_bootstrap.js index 9b9d081..f351ce6 100644 --- a/_source/core/_bootstrap.js +++ b/_source/core/_bootstrap.js @@ -9,13 +9,19 @@ For licensing, see LICENSE.html or http://ckeditor.com/license (function() { + // Disable HC detaction in WebKit. (#5429) + if ( CKEDITOR.env.webkit ) + { + CKEDITOR.env.hc = false; + return; + } + // Check is High Contrast is active by creating a temporary element with a // background image. var useSpacer = CKEDITOR.env.ie && CKEDITOR.env.version < 7, useBlank = CKEDITOR.env.ie && CKEDITOR.env.version == 7; - var backgroundImageUrl = useSpacer ? ( CKEDITOR.basePath + 'images/spacer.gif' ) : useBlank ? 'about:blank' : 'data:image/png;base64,'; @@ -36,6 +42,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license { CKEDITOR.env.hc = false; } + if ( CKEDITOR.env.hc ) CKEDITOR.env.cssClass += ' cke_hc'; diff --git a/_source/core/ckeditor_base.js b/_source/core/ckeditor_base.js index e32ec34..f608e0f 100644 --- a/_source/core/ckeditor_base.js +++ b/_source/core/ckeditor_base.js @@ -12,7 +12,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license // Must be updated on changes in the script, as well as updated in the // ckeditor_source.js and ckeditor_basic_source.js files. -// if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'3.2',rev:'5205',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})(); +// if(!window.CKEDITOR)window.CKEDITOR=(function(){var a={timestamp:'',version:'3.2.1',rev:'5372',_:{},status:'unloaded',basePath:(function(){var d=window.CKEDITOR_BASEPATH||'';if(!d){var e=document.getElementsByTagName('script');for(var f=0;f=0?'&':'?')+('t=')+this.timestamp;return d;}},b=window.CKEDITOR_GETURL;if(b){var c=a.getUrl;a.getUrl=function(d){return b.call(a,d)||c.call(a,d);};}return a;})(); // #### Raw code // ATTENTION: read the above "Compressed Code" notes when changing this code. @@ -43,7 +43,7 @@ if ( !window.CKEDITOR ) // The production implementation contains a fixed timestamp, unique // for each release, generated by the releaser. // (Base 36 value of each component of YYMMDDHH - 4 chars total - e.g. 87bm == 08071122) - timestamp : 'A1QD', + timestamp : 'A39E', /** * Contains the CKEditor version number. @@ -51,7 +51,7 @@ if ( !window.CKEDITOR ) * @example * alert( CKEDITOR.version ); // e.g. 'CKEditor 3.0 Beta' */ - version : '3.2', + version : '3.2.1', /** * Contains the CKEditor revision number. @@ -60,7 +60,7 @@ if ( !window.CKEDITOR ) * @example * alert( CKEDITOR.revision ); // e.g. '3975' */ - revision : '5205', + revision : '5372', /** * Private object used to hold core stuff. It should not be used out of @@ -133,6 +133,9 @@ if ( !window.CKEDITOR ) path = location.href.match( /^[^\?]*\/(?:)/ )[0] + path; } + if ( !path ) + throw 'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.'; + return path; })(), diff --git a/_source/core/ckeditor_basic.js b/_source/core/ckeditor_basic.js index 177d7c5..723d34c 100644 --- a/_source/core/ckeditor_basic.js +++ b/_source/core/ckeditor_basic.js @@ -79,7 +79,7 @@ if ( CKEDITOR.status == 'unloaded' ) */ CKEDITOR.replaceByClassEnabled = true; - var createInstance = function( elementOrIdOrName, config, creationFunction ) + var createInstance = function( elementOrIdOrName, config, creationFunction, data ) { if ( CKEDITOR.env.isCompatible ) { @@ -87,7 +87,7 @@ if ( CKEDITOR.status == 'unloaded' ) if ( CKEDITOR.loadFullCore ) CKEDITOR.loadFullCore(); - var editor = creationFunction( elementOrIdOrName, config ); + var editor = creationFunction( elementOrIdOrName, config, data ); CKEDITOR.add( editor ); return editor; } @@ -125,15 +125,16 @@ if ( CKEDITOR.status == 'unloaded' ) * @param {Object} [config] The specific configurations to apply to this * editor instance. Configurations set here will override global CKEditor * settings. + * @param {String} [data] Since 3.3. Initial value for the instance. * @returns {CKEDITOR.editor} The editor instance created. * @example * <div id="editorSpace"><:/div> * ... * CKEDITOR.appendTo( 'editorSpace' ); */ - CKEDITOR.appendTo = function( elementOrId, config ) + CKEDITOR.appendTo = function( elementOrId, config, data ) { - return createInstance( elementOrId, config, CKEDITOR.editor.appendTo ); + return createInstance( elementOrId, config, CKEDITOR.editor.appendTo, data ); }; /** diff --git a/_source/core/commanddefinition.js b/_source/core/commanddefinition.js index bd8989c..c451274 100644 --- a/_source/core/commanddefinition.js +++ b/_source/core/commanddefinition.js @@ -84,3 +84,19 @@ For licensing, see LICENSE.html or http://ckeditor.com/license * editorFocus : false // The command doesn't require focusing the editing document. * }); */ + + +/** + * Whether the command state should be set to {@link CKEDITOR.TRISTATE_DISABLED} on startup. + * @name CKEDITOR.commandDefinition.startDisabled + * @type {Boolean} + * @default false + * @example + * editorInstance.addCommand( 'unlink', + * { + * exec : function( editor ) + * { + * }, + * startDisabled : true // Command is unavailable until selection is inside a link. + * }); + */ diff --git a/_source/core/config.js b/_source/core/config.js index d83e0e3..c53892d 100644 --- a/_source/core/config.js +++ b/_source/core/config.js @@ -130,6 +130,18 @@ CKEDITOR.config = enterMode : CKEDITOR.ENTER_P, /** + * Force the respect of {@link CKEDITOR.config.enterMode} as line break regardless of the context, + * E.g. If {@link CKEDITOR.config.enterMode} is set to {@link CKEDITOR.ENTER_P}, + * press enter key inside a 'div' will create a new paragraph with 'p' instead of 'div'. + * @since 3.2.1 + * @default false + * @example + * // Not recommended. + * config.forceEnterMode = true; + */ + forceEnterMode : false, + + /** * Just like the {@link CKEDITOR.config.enterMode} setting, it defines the behavior for the SHIFT+ENTER key. * The allowed values are the following constants, and their relative * behavior: diff --git a/_source/core/dom/domobject.js b/_source/core/dom/domobject.js index 6962fdb..e510397 100644 --- a/_source/core/dom/domobject.js +++ b/_source/core/dom/domobject.js @@ -115,6 +115,26 @@ CKEDITOR.dom.domObject.prototype = (function() delete nativeListeners[ eventName ]; } } + }, + + /** + * Removes any listener set on this object. + * To avoid memory leaks we must assure that there are no + * references left after the object is no longer needed. + */ + removeAllListeners : function() + { + var nativeListeners = this.getCustomData( '_cke_nativeListeners' ); + for ( var eventName in nativeListeners ) + { + var listener = nativeListeners[ eventName ]; + if ( this.$.removeEventListener ) + this.$.removeEventListener( eventName, listener, false ); + else if ( this.$.detachEvent ) + this.$.detachEvent( 'on' + eventName, listener ); + + delete nativeListeners[ eventName ]; + } } }; })(); @@ -197,6 +217,22 @@ CKEDITOR.dom.domObject.prototype = (function() }; /** + * Removes any data stored on this object. + * To avoid memory leaks we must assure that there are no + * references left after the object is no longer needed. + * @name CKEDITOR.dom.domObject.prototype.clearCustomData + * @function + */ + domObjectProto.clearCustomData = function() + { + // Clear all event listeners + this.removeAllListeners(); + + var expandoNumber = this.$._cke_expando; + expandoNumber && delete customData[ expandoNumber ]; + }; + + /** * @name CKEDITOR.dom.domObject.prototype.getCustomData */ domObjectProto.getUniqueId = function() diff --git a/_source/core/dom/elementpath.js b/_source/core/dom/elementpath.js index 090f7d7..974685f 100644 --- a/_source/core/dom/elementpath.js +++ b/_source/core/dom/elementpath.js @@ -6,7 +6,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license (function() { // Elements that may be considered the "Block boundary" in an element path. - var pathBlockElements = { address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,de:1 }; + var pathBlockElements = { address:1,blockquote:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,li:1,dt:1,dd:1 }; // Elements that may be considered the "Block limit" in an element path. var pathBlockLimitElements = { body:1,div:1,table:1,tbody:1,tr:1,td:1,th:1,caption:1,form:1 }; diff --git a/_source/core/dom/range.js b/_source/core/dom/range.js index 8d30b4f..127f7aa 100644 --- a/_source/core/dom/range.js +++ b/_source/core/dom/range.js @@ -925,7 +925,7 @@ CKEDITOR.dom.range = function( document ) siblingText = sibling.getText(); - if ( !(/[^\s\ufeff]/).test( siblingText ) ) // Spaces + Zero Width No-Break Space (U+FEFF) + if ( (/[^\s\ufeff]/).test( siblingText ) ) // Spaces + Zero Width No-Break Space (U+FEFF) sibling = null; else { @@ -1084,7 +1084,7 @@ CKEDITOR.dom.range = function( document ) siblingText = sibling.getText(); - if ( !(/[^\s\ufeff]/).test( siblingText ) ) + if ( (/[^\s\ufeff]/).test( siblingText ) ) sibling = null; else { @@ -1236,6 +1236,100 @@ CKEDITOR.dom.range = function( document ) }, /** + * Descrease the range to make sure that boundaries + * always anchor beside text nodes or innermost element. + * @param {Number} mode ( CKEDITOR.SHRINK_ELEMENT | CKEDITOR.SHRINK_TEXT ) The shrinking mode. + */ + shrink : function( mode ) + { + // Unable to shrink a collapsed range. + if ( !this.collapsed ) + { + mode = mode || CKEDITOR.SHRINK_TEXT; + + var walkerRange = this.clone(); + + var startContainer = this.startContainer, + endContainer = this.endContainer, + startOffset = this.startOffset, + endOffset = this.endOffset, + collapsed = this.collapsed; + + // Whether the start/end boundary is moveable. + var moveStart = 1, + moveEnd = 1; + + if ( startContainer && startContainer.type == CKEDITOR.NODE_TEXT ) + { + if ( !startOffset ) + walkerRange.setStartBefore( startContainer ); + else if ( startOffset >= startContainer.getLength( ) ) + walkerRange.setStartAfter( startContainer ); + else + { + // Enlarge the range properly to avoid walker making + // DOM changes caused by triming the text nodes later. + walkerRange.setStartBefore( startContainer ); + moveStart = 0; + } + } + + if ( endContainer && endContainer.type == CKEDITOR.NODE_TEXT ) + { + if ( !endOffset ) + walkerRange.setEndBefore( endContainer ); + else if ( endOffset >= endContainer.getLength( ) ) + walkerRange.setEndAfter( endContainer ); + else + { + walkerRange.setEndAfter( endContainer ); + moveEnd = 0; + } + } + + var walker = new CKEDITOR.dom.walker( walkerRange ); + + walker.evaluator = function( node ) + { + return node.type == ( mode == CKEDITOR.SHRINK_ELEMENT ? + CKEDITOR.NODE_ELEMENT : CKEDITOR.NODE_TEXT ); + }; + + var currentElement; + walker.guard = function( node, movingOut ) + { + // Stop when we're shrink in element mode while encountering a text node. + if ( mode == CKEDITOR.SHRINK_ELEMENT && node.type == CKEDITOR.NODE_TEXT ) + return false; + + // Stop when we've already walked "through" an element. + if ( movingOut && node.equals( currentElement ) ) + return false; + + if ( !movingOut && node.type == CKEDITOR.NODE_ELEMENT ) + currentElement = node; + + return true; + }; + + if ( moveStart ) + { + var textStart = walker[ mode == CKEDITOR.SHRINK_ELEMENT ? 'lastForward' : 'next'](); + textStart && this.setStartBefore( textStart ); + } + + if ( moveEnd ) + { + walker.reset(); + var textEnd = walker[ mode == CKEDITOR.SHRINK_ELEMENT ? 'lastBackward' : 'previous'](); + textEnd && this.setEndAfter( textEnd ); + } + + return !!( moveStart || moveEnd ); + } + }, + + /** * Inserts a node at the start of the range. The range will be expanded * the contain the node. */ @@ -1623,6 +1717,10 @@ CKEDITOR.dom.range = function( document ) { var isEditable; + // Empty elements are rejected. + if ( CKEDITOR.dtd.$empty[ el.getName() ] ) + return false; + while ( el && el.type == CKEDITOR.NODE_ELEMENT ) { isEditable = el.isEditable(); @@ -1733,3 +1831,6 @@ CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS = 3; CKEDITOR.START = 1; CKEDITOR.END = 2; CKEDITOR.STARTEND = 3; + +CKEDITOR.SHRINK_ELEMENT = 1; +CKEDITOR.SHRINK_TEXT = 2; diff --git a/_source/core/dom/walker.js b/_source/core/dom/walker.js index 04ff21e..1ef87f5 100644 --- a/_source/core/dom/walker.js +++ b/_source/core/dom/walker.js @@ -101,7 +101,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license node = null; } else - node = ( guard ( node ) === false ) ? + node = ( guard ( node, true ) === false ) ? null : node.getPreviousSourceNode( true, type, guard ); } else @@ -115,7 +115,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license node = null; } else - node = ( guard ( range.startContainer ) === false ) ? + node = ( guard ( range.startContainer, true ) === false ) ? null : range.startContainer.getNextSourceNode( true, type, guard ) ; } } diff --git a/_source/core/dtd.js b/_source/core/dtd.js index f569ed0..d5af5bf 100644 --- a/_source/core/dtd.js +++ b/_source/core/dtd.js @@ -39,7 +39,7 @@ CKEDITOR.dtd = (function() C = X({a:1},B), D = X({iframe:1},C), E = {hr:1,ul:1,menu:1,div:1,blockquote:1,noscript:1,table:1,center:1,address:1,dir:1,pre:1,h5:1,dl:1,h4:1,noframes:1,h6:1,ol:1,h1:1,h3:1,h2:1}, - F = {ins:1,del:1,script:1}, + F = {ins:1,del:1,script:1,style:1}, G = X({b:1,acronym:1,bdo:1,'var':1,'#':1,abbr:1,code:1,br:1,i:1,cite:1,kbd:1,u:1,strike:1,s:1,tt:1,strong:1,q:1,samp:1,em:1,dfn:1,span:1},F), H = X({sub:1,img:1,object:1,sup:1,basefont:1,map:1,applet:1,font:1,big:1,small:1},G), I = X({p:1},H), diff --git a/_source/core/editor.js b/_source/core/editor.js index 7168ad0..f0f3682 100644 --- a/_source/core/editor.js +++ b/_source/core/editor.js @@ -331,7 +331,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license for ( var name in commands ) { command = commands[ name ]; - command[ command.modes[ mode ] ? 'enable' : 'disable' ](); + command[ command.startDisabled ? 'disable' : command.modes[ mode ] ? 'enable' : 'disable' ](); } } @@ -468,7 +468,43 @@ CKEDITOR.tools.extend( CKEDITOR.editor.prototype, if ( !noUpdate ) this.updateElement(); + if ( this.mode ) + { + // -> currentMode.unload( holderElement ); + this._.modes[ this.mode ].unload( this.getThemeSpace( 'contents' ) ); + } + this.theme.destroy( this ); + + var toolbars, + index = 0, + j, + items, + instance; + + if ( this.toolbox ) + { + toolbars = this.toolbox.toolbars; + for ( ; index < toolbars.length ; index++ ) + { + items = toolbars[ index ].items; + for ( j = 0 ; j < items.length ; j++ ) + { + instance = items[ j ]; + if ( instance.clickFn ) CKEDITOR.tools.removeFunction( instance.clickFn ); + if ( instance.keyDownFn ) CKEDITOR.tools.removeFunction( instance.keyDownFn ); + + if ( instance.index ) CKEDITOR.ui.button._.instances[ instance.index ] = null; + } + } + } + + if ( this.contextMenu ) + CKEDITOR.tools.removeFunction( this.contextMenu._.functionId ); + + if ( this._.filebrowserFn ) + CKEDITOR.tools.removeFunction( this._.filebrowserFn ); + this.fire( 'destroy' ); CKEDITOR.remove( this ); CKEDITOR.fire( 'instanceDestroyed', null, this ); diff --git a/_source/core/editor_basic.js b/_source/core/editor_basic.js index 3c4c5e3..ec90bf7 100644 --- a/_source/core/editor_basic.js +++ b/_source/core/editor_basic.js @@ -36,16 +36,18 @@ if ( !CKEDITOR.editor ) * instance. * @param {Number} [mode] The mode in which the element is linked to this * instance. + * @param {String} [data] Since 3.3. Initial value for the instance. * @augments CKEDITOR.event * @example */ - CKEDITOR.editor = function( instanceConfig, element, mode ) + CKEDITOR.editor = function( instanceConfig, element, mode, data ) { this._ = { // Save the config to be processed later by the full core code. instanceConfig : instanceConfig, - element : element + element : element, + data : data }; /** @@ -126,10 +128,11 @@ if ( !CKEDITOR.editor ) * @param {Object} [config] The specific configurations to apply to this * editor instance. Configurations set here will override global CKEditor * settings. + * @param {String} [data] Since 3.3. Initial value for the instance. * @returns {CKEDITOR.editor} The editor instance created. * @example */ - CKEDITOR.editor.appendTo = function( elementOrId, config ) + CKEDITOR.editor.appendTo = function( elementOrId, config, data ) { var element = elementOrId; if ( typeof element != 'object' ) @@ -141,7 +144,7 @@ if ( !CKEDITOR.editor ) } // Create the editor instance. - return new CKEDITOR.editor( config, element, CKEDITOR.ELEMENT_MODE_APPENDTO ); + return new CKEDITOR.editor( config, element, CKEDITOR.ELEMENT_MODE_APPENDTO, data ); }; CKEDITOR.editor.prototype = diff --git a/_source/core/env.js b/_source/core/env.js index 2e6a0ff..b289538 100644 --- a/_source/core/env.js +++ b/_source/core/env.js @@ -71,6 +71,8 @@ if ( !CKEDITOR.env ) quirks : ( document.compatMode == 'BackCompat' ), + mobile : ( agent.indexOf( 'mobile' ) > -1 ), + isCustomDomain : function() { return this.ie && document.domain != window.location.hostname; @@ -176,12 +178,13 @@ if ( !CKEDITOR.env ) * alert( "Your browser is pretty cool!" ); */ env.isCompatible = + !env.mobile && ( ( env.ie && version >= 6 ) || ( env.gecko && version >= 10801 ) || ( env.opera && version >= 9.5 ) || ( env.air && version >= 1 ) || ( env.webkit && version >= 522 ) || - false; + false ); // The CSS class to be appended on the main UI containers, making it // easy to apply browser specific styles to it. diff --git a/_source/core/htmlparser/basicwriter.js b/_source/core/htmlparser/basicwriter.js index 5d67891..3a0231c 100644 --- a/_source/core/htmlparser/basicwriter.js +++ b/_source/core/htmlparser/basicwriter.js @@ -60,9 +60,9 @@ CKEDITOR.htmlParser.basicWriter = CKEDITOR.tools.createClass( */ attribute : function( attName, attValue ) { - // Browsers don't always escape quote in attribute values. (#4683) + // Browsers don't always escape special character in attribute values. (#4683, #4719). if ( typeof attValue == 'string' ) - attValue = attValue.replace( /"/g, '"' ); + attValue = CKEDITOR.tools.htmlEncodeAttr( attValue ); this._.output.push( ' ', attName, '="', attValue, '"' ); }, diff --git a/_source/core/htmlparser/fragment.js b/_source/core/htmlparser/fragment.js index ad1c93e..244e298 100644 --- a/_source/core/htmlparser/fragment.js +++ b/_source/core/htmlparser/fragment.js @@ -274,6 +274,7 @@ CKEDITOR.htmlParser.fragment = function() } checkPending( tagName ); + sendPendingBRs(); element.parent = currentNode; element.returnPoint = returnPoint; diff --git a/_source/core/imagecacher.js b/_source/core/imagecacher.js index 3a635bb..0704556 100644 --- a/_source/core/imagecacher.js +++ b/_source/core/imagecacher.js @@ -11,6 +11,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license { var doCallback = function() { + img.removeAllListeners(); loaded[ image ] = 1; callback(); }; diff --git a/_source/core/loader.js b/_source/core/loader.js index ccc9701..4c408fb 100644 --- a/_source/core/loader.js +++ b/_source/core/loader.js @@ -107,7 +107,7 @@ if ( !CKEDITOR.loader ) return path; })(); - var timestamp = 'A1QD'; + var timestamp = 'A39E'; var getUrl = function( resource ) { diff --git a/_source/core/tools.js b/_source/core/tools.js index 0fd703f..fc82904 100644 --- a/_source/core/tools.js +++ b/_source/core/tools.js @@ -323,6 +323,19 @@ For licensing, see LICENSE.html or http://ckeditor.com/license }, /** + * Replace special HTML characters in HTMLElement's attribute with their relative HTML entity values. + * @param {String} The attribute's value to be encoded. + * @returns {String} The encode value. + * @example + * element.setAttribute( 'title', '' ); + * alert( CKEDITOR.tools.htmlEncodeAttr( element.getAttribute( 'title' ) ); // ">a " b <" + */ + htmlEncodeAttr : function( text ) + { + return text.replace( /"/g, '"' ).replace( //, '>' ); + }, + + /** * Replace characters can't be represented through CSS Selectors string * by CSS Escape Notation where the character escape sequence consists * of a backslash character (\) followed by the orginal characters. @@ -540,7 +553,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license *

  • Public (prototype) fields
  • *
  • Chainable base class constructor
  • * - * @param {Object} definiton The class definiton object. + * @param {Object} definition The class definition object. * @returns {Function} A class-like JavaScript function. */ createClass : function( definition ) diff --git a/_source/lang/_translationstatus.txt b/_source/lang/_translationstatus.txt index fbca9ad..1c9c2a4 100644 --- a/_source/lang/_translationstatus.txt +++ b/_source/lang/_translationstatus.txt @@ -1,60 +1,60 @@ Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license -af.js Found: 286 Missing: 203 -ar.js Found: 450 Missing: 39 -bg.js Found: 279 Missing: 210 -bn.js Found: 281 Missing: 208 -bs.js Found: 187 Missing: 302 -ca.js Found: 403 Missing: 86 -cs.js Found: 410 Missing: 79 -cy.js Found: 451 Missing: 38 -da.js Found: 403 Missing: 86 -de.js Found: 443 Missing: 46 -el.js Found: 285 Missing: 204 -en-au.js Found: 368 Missing: 121 -en-ca.js Found: 368 Missing: 121 -en-gb.js Found: 369 Missing: 120 -eo.js Found: 259 Missing: 230 -es.js Found: 466 Missing: 23 -et.js Found: 300 Missing: 189 -eu.js Found: 403 Missing: 86 -fa.js Found: 301 Missing: 188 -fi.js Found: 466 Missing: 23 -fo.js Found: 300 Missing: 189 -fr-ca.js Found: 301 Missing: 188 -fr.js Found: 402 Missing: 87 -gl.js Found: 282 Missing: 207 -gu.js Found: 300 Missing: 189 -he.js Found: 466 Missing: 23 -hi.js Found: 301 Missing: 188 -hr.js Found: 403 Missing: 86 -hu.js Found: 300 Missing: 189 -is.js Found: 306 Missing: 183 -it.js Found: 403 Missing: 86 -ja.js Found: 412 Missing: 77 -km.js Found: 275 Missing: 214 -ko.js Found: 292 Missing: 197 -lt.js Found: 305 Missing: 184 -lv.js Found: 282 Missing: 207 -mn.js Found: 300 Missing: 189 -ms.js Found: 264 Missing: 225 -nb.js Found: 409 Missing: 80 -nl.js Found: 466 Missing: 23 -no.js Found: 409 Missing: 80 -pl.js Found: 410 Missing: 79 -pt-br.js Found: 402 Missing: 87 -pt.js Found: 281 Missing: 208 -ro.js Found: 300 Missing: 189 -ru.js Found: 466 Missing: 23 -sk.js Found: 301 Missing: 188 -sl.js Found: 409 Missing: 80 -sr-latn.js Found: 275 Missing: 214 -sr.js Found: 275 Missing: 214 -sv.js Found: 298 Missing: 191 -th.js Found: 286 Missing: 203 -tr.js Found: 306 Missing: 183 -uk.js Found: 403 Missing: 86 -vi.js Found: 403 Missing: 86 -zh-cn.js Found: 403 Missing: 86 -zh.js Found: 403 Missing: 86 +af.js Found: 287 Missing: 207 +ar.js Found: 451 Missing: 43 +bg.js Found: 280 Missing: 214 +bn.js Found: 281 Missing: 213 +bs.js Found: 187 Missing: 307 +ca.js Found: 490 Missing: 4 +cs.js Found: 411 Missing: 83 +cy.js Found: 452 Missing: 42 +da.js Found: 404 Missing: 90 +de.js Found: 444 Missing: 50 +el.js Found: 286 Missing: 208 +en-au.js Found: 369 Missing: 125 +en-ca.js Found: 369 Missing: 125 +en-gb.js Found: 370 Missing: 124 +eo.js Found: 259 Missing: 235 +es.js Found: 467 Missing: 27 +et.js Found: 301 Missing: 193 +eu.js Found: 403 Missing: 91 +fa.js Found: 302 Missing: 192 +fi.js Found: 489 Missing: 5 +fo.js Found: 420 Missing: 74 +fr-ca.js Found: 301 Missing: 193 +fr.js Found: 403 Missing: 91 +gl.js Found: 283 Missing: 211 +gu.js Found: 300 Missing: 194 +he.js Found: 467 Missing: 27 +hi.js Found: 302 Missing: 192 +hr.js Found: 404 Missing: 90 +hu.js Found: 445 Missing: 49 +is.js Found: 307 Missing: 187 +it.js Found: 404 Missing: 90 +ja.js Found: 413 Missing: 81 +km.js Found: 275 Missing: 219 +ko.js Found: 293 Missing: 201 +lt.js Found: 306 Missing: 188 +lv.js Found: 283 Missing: 211 +mn.js Found: 300 Missing: 194 +ms.js Found: 265 Missing: 229 +nb.js Found: 470 Missing: 24 +nl.js Found: 467 Missing: 27 +no.js Found: 470 Missing: 24 +pl.js Found: 411 Missing: 83 +pt-br.js Found: 402 Missing: 92 +pt.js Found: 282 Missing: 212 +ro.js Found: 301 Missing: 193 +ru.js Found: 467 Missing: 27 +sk.js Found: 302 Missing: 192 +sl.js Found: 410 Missing: 84 +sr-latn.js Found: 276 Missing: 218 +sr.js Found: 275 Missing: 219 +sv.js Found: 299 Missing: 195 +th.js Found: 287 Missing: 207 +tr.js Found: 307 Missing: 187 +uk.js Found: 404 Missing: 90 +vi.js Found: 404 Missing: 90 +zh-cn.js Found: 404 Missing: 90 +zh.js Found: 404 Missing: 90 diff --git a/_source/lang/af.js b/_source/lang/af.js index 345cdf7..30d4e01 100644 --- a/_source/lang/af.js +++ b/_source/lang/af.js @@ -110,17 +110,24 @@ CKEDITOR.lang['af'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Spesiaale Karakter byvoeg', - title : 'Kies spesiale karakter' + title : 'Kies spesiale karakter', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Skakel byvoeg/verander', + other : '', menu : 'Verander skakel', title : 'Skakel', info : 'Skakel informasie', @@ -476,7 +483,8 @@ CKEDITOR.lang['af'] = smiley : { toolbar : 'Smiley', - title : 'Voeg Smiley by' + title : 'Voeg Smiley by', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['af'] = clipboard : { title : 'Byvoeg', - cutError : 'U browser se sekuriteit instelling behinder die uitsny aksie. Gebruik asseblief die sleutel kombenasie(Ctrl+X).', - copyError : 'U browser se sekuriteit instelling behinder die kopieerings aksie. Gebruik asseblief die sleutel kombenasie(Ctrl+C).', - pasteMsg : 'Voeg asseblief die inhoud in die gegewe box by met sleutel kombenasie(Ctrl+V) en druk OK.', + cutError : 'U browser se sekuriteit instelling behinder die uitsny aksie. Gebruik asseblief die sleutel kombenasie(Ctrl/Cmd+X).', + copyError : 'U browser se sekuriteit instelling behinder die kopieerings aksie. Gebruik asseblief die sleutel kombenasie(Ctrl/Cmd+C).', + pasteMsg : 'Voeg asseblief die inhoud in die gegewe box by met sleutel kombenasie(Ctrl/Cmd+V) en druk 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 pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['af'] = { button : 'Templates', title : 'Inhoud Templates', + options : 'Template Options', // MISSING insertOption : 'Vervang bestaande inhoud', selectPromptMsg : 'Kies die template om te gebruik in die editor
    (Inhoud word vervang!):', emptyListMsg : '(Geen templates gedefinieerd)' diff --git a/_source/lang/ar.js b/_source/lang/ar.js index 1729936..c7bf593 100644 --- a/_source/lang/ar.js +++ b/_source/lang/ar.js @@ -110,17 +110,24 @@ CKEDITOR.lang['ar'] = unavailable : '%1, غير متاح' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'إدراج خاص.ِ', - title : 'اختر الخواص' + title : 'اختر الخواص', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'رابط', + other : '<أخرى>', menu : 'تحرير رابط', title : 'إرتباط تشعبي', info : 'معلومات الرابط', @@ -476,7 +483,8 @@ CKEDITOR.lang['ar'] = smiley : { toolbar : 'ابتسامات', - title : 'إدراج ابتسامات' + title : 'إدراج ابتسامات', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['ar'] = clipboard : { title : 'لصق', - cutError : 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl+X).', - copyError : 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع النسخ التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl+C).', - pasteMsg : 'الصق داخل الصندوق بإستخدام زرائر (Ctrl+V) في لوحة المفاتيح، ثم اضغط زر موافق.', + cutError : 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+X).', + copyError : 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع النسخ التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+C).', + pasteMsg : 'الصق داخل الصندوق بإستخدام زرائر (Ctrl/Cmd+V) في لوحة المفاتيح، ثم اضغط زر موافق.', securityMsg : 'نظراً لإعدادات الأمان الخاصة بمتصفحك، لن يتمكن هذا المحرر من الوصول لمحتوى حافظتك، لذلك يجب عليك لصق المحتوى مرة أخرى في هذه النافذة.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['ar'] = { button : 'القوالب', title : 'قوالب المحتوى', + options : 'Template Options', // MISSING insertOption : 'استبدال المحتوى', selectPromptMsg : 'اختر القالب الذي تود وضعه في المحرر', emptyListMsg : '(لم يتم تعريف أي قالب)' diff --git a/_source/lang/bg.js b/_source/lang/bg.js index e8c4df3..b342c52 100644 --- a/_source/lang/bg.js +++ b/_source/lang/bg.js @@ -110,17 +110,24 @@ CKEDITOR.lang['bg'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Вмъкни специален символ', - title : 'Изберете специален символ' + title : 'Изберете специален символ', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Добави/Редактирай връзка', + other : '<друг>', menu : 'Редактирай връзка', title : 'Връзка', info : 'Информация за връзката', @@ -476,7 +483,8 @@ CKEDITOR.lang['bg'] = smiley : { toolbar : 'Усмивка', - title : 'Добави усмивка' + title : 'Добави усмивка', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['bg'] = clipboard : { title : 'Вмъкни', - cutError : 'Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни изрязването. За целта използвайте клавиатурата (Ctrl+X).', - copyError : 'Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни запаметяването. За целта използвайте клавиатурата (Ctrl+C).', - pasteMsg : 'Вмъкнете тук съдъжанието с клавиатуарата (Ctrl+V) и натиснете OK.', + cutError : 'Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни изрязването. За целта използвайте клавиатурата (Ctrl/Cmd+X).', + copyError : 'Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни запаметяването. За целта използвайте клавиатурата (Ctrl/Cmd+C).', + 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 pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['bg'] = { button : 'Шаблони', title : 'Шаблони', + options : 'Template Options', // MISSING insertOption : 'Replace actual contents', // MISSING selectPromptMsg : 'Изберете шаблон
    (текущото съдържание на редактора ще бъде загубено):', emptyListMsg : '(Няма дефинирани шаблони)' diff --git a/_source/lang/bn.js b/_source/lang/bn.js index decec21..84e2614 100644 --- a/_source/lang/bn.js +++ b/_source/lang/bn.js @@ -110,17 +110,24 @@ CKEDITOR.lang['bn'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'বিশেষ অক্ষর যুক্ত কর', - title : 'বিশেষ ক্যারেক্টার বাছাই কর' + title : 'বিশেষ ক্যারেক্টার বাছাই কর', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'লিংক যুক্ত কর', + other : '', // MISSING menu : 'লিংক সম্পাদন', title : 'লিংক', info : 'লিংক তথ্য', @@ -476,7 +483,8 @@ CKEDITOR.lang['bn'] = smiley : { toolbar : 'স্মাইলী', - title : 'স্মাইলী যুক্ত কর' + title : 'স্মাইলী যুক্ত কর', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['bn'] = clipboard : { title : 'পেস্ট', - cutError : 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কাট করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl+X)।', - copyError : 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কপি করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl+C)।', - pasteMsg : 'অনুগ্রহ করে নীচের বাক্সে কিবোর্ড ব্যবহার করে (Ctrl+V) পেস্ট করুন এবং OK চাপ দিন', + cutError : 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কাট করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+X)।', + copyError : 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কপি করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+C)।', + 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 pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['bn'] = { button : 'টেমপ্লেট', title : 'কনটেন্ট টেমপ্লেট', + options : 'Template Options', // MISSING insertOption : 'Replace actual contents', // MISSING selectPromptMsg : 'অনুগ্রহ করে এডিটরে ওপেন করার জন্য টেমপ্লেট বাছাই করুন
    (আসল কনটেন্ট হারিয়ে যাবে):', emptyListMsg : '(কোন টেমপ্লেট ডিফাইন করা নেই)' diff --git a/_source/lang/bs.js b/_source/lang/bs.js index 49b6c74..12b960d 100644 --- a/_source/lang/bs.js +++ b/_source/lang/bs.js @@ -110,17 +110,24 @@ CKEDITOR.lang['bs'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Ubaci specijalni karater', - title : 'Izaberi specijalni karakter' + title : 'Izaberi specijalni karakter', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Ubaci/Izmjeni link', + other : '', // MISSING menu : 'Izmjeni link', title : 'Link', info : 'Link info', @@ -476,7 +483,8 @@ CKEDITOR.lang['bs'] = smiley : { toolbar : 'Smješko', - title : 'Ubaci smješka' + title : 'Ubaci smješka', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['bs'] = clipboard : { title : 'Zalijepi', - cutError : 'Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl+X).', - copyError : 'Sigurnosne postavke Vašeg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl+C).', - pasteMsg : 'Please paste inside the following box using the keyboard (Ctrl+V) and hit OK', // MISSING + cutError : 'Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+X).', + copyError : 'Sigurnosne postavke Vašeg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+C).', + 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 pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['bs'] = { button : 'Templates', // MISSING title : 'Content Templates', // MISSING + options : 'Template Options', // MISSING insertOption : 'Replace actual contents', // MISSING selectPromptMsg : 'Please select the template to open in the editor', // MISSING emptyListMsg : '(No templates defined)' // MISSING diff --git a/_source/lang/ca.js b/_source/lang/ca.js index 26eebda..56a0f04 100644 --- a/_source/lang/ca.js +++ b/_source/lang/ca.js @@ -31,15 +31,15 @@ CKEDITOR.lang['ca'] = * Screenreader titles. Please note that screenreaders are not always capable * of reading non-English words. So be careful while translating it. */ - editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING + editorTitle : 'Editor de text enriquit, %1, prem ALT 0 per obtenir ajuda.', // ARIA descriptions. - toolbar : 'Toolbar', // MISSING - editor : 'Rich Text Editor', // MISSING + toolbar : 'Barra d\'eines', + editor : 'Editor de text enriquit', // Toolbar buttons without dialogs. source : 'Codi font', - newPage : 'Nova Pàgina', + newPage : 'Nova pàgina', save : 'Desa', preview : 'Visualització prèvia', cut : 'Retalla', @@ -92,35 +92,42 @@ CKEDITOR.lang['ca'] = cssStyle : 'Estil', ok : 'D\'acord', cancel : 'Cancel·la', - close : 'Close', // MISSING - preview : 'Preview', // MISSING + close : 'Tanca', + preview : 'Previsualitza', generalTab : 'General', advancedTab : 'Avançat', validateNumberFailed : 'Aquest valor no és un número.', confirmNewPage : 'Els canvis en aquest contingut que no es desin es perdran. Esteu segur que voleu carregar una pàgina nova?', confirmCancel : 'Algunes opcions s\'han canviat. Esteu segur que voleu tancar la finestra de diàleg?', - options : 'Options', // MISSING - target : 'Target', // MISSING - targetNew : 'New Window (_blank)', // MISSING - targetTop : 'Topmost Window (_top)', // MISSING - targetSelf : 'Same Window (_self)', // MISSING - targetParent : 'Parent Window (_parent)', // MISSING + options : 'Opcions', + target : 'Destí', + targetNew : 'Nova finestra (_blank)', + targetTop : 'Finestra major (_top)', + targetSelf : 'Mateixa finestra (_self)', + targetParent : 'Finestra pare (_parent)', // Put the voice-only part of the label in the span. unavailable : '%1, no disponible' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Insereix caràcter especial', - title : 'Selecciona el caràcter especial' + title : 'Selecciona el caràcter especial', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Insereix/Edita enllaç', + other : '', menu : 'Edita l\'enllaç', title : 'Enllaç', info : 'Informació de l\'enllaç', @@ -128,7 +135,7 @@ CKEDITOR.lang['ca'] = upload : 'Puja', advanced : 'Avançat', type : 'Tipus d\'enllaç', - toUrl : 'URL', // MISSING + toUrl : 'URL', toAnchor : 'Àncora en aquesta pàgina', toEmail : 'Correu electrònic', targetFrame : '', @@ -215,7 +222,7 @@ CKEDITOR.lang['ca'] = width : 'Amplada', widthPx : 'píxels', widthPc : 'percentatge', - widthUnit : 'width unit', // MISSING + widthUnit : 'unitat d\'amplada', height : 'Alçada', cellSpace : 'Espaiat de cel·les', cellPad : 'Encoixinament de cel·les', @@ -266,7 +273,7 @@ CKEDITOR.lang['ca'] = invalidHeight : 'L\'alçada de cel·la ha de ser un nombre.', invalidRowSpan : 'L\'expansió de files ha de ser un nombre enter.', invalidColSpan : 'L\'expansió de columnes ha de ser un nombre enter.', - chooseColor : 'Choose' // MISSING + chooseColor : 'Trieu' }, row : @@ -378,7 +385,7 @@ CKEDITOR.lang['ca'] = width : 'Amplada', height : 'Alçada', lockRatio : 'Bloqueja les proporcions', - unlockRatio : 'Unlock Ratio', // MISSING + unlockRatio : 'Desbloqueja el ràtio', resetSize : 'Restaura la mida', border : 'Vora', hSpace : 'Espaiat horit.', @@ -390,12 +397,12 @@ CKEDITOR.lang['ca'] = linkTab : 'Enllaç', button2Img : 'Voleu transformar el botó d\'imatge seleccionat en una simple imatge?', img2Button : 'Voleu transformar la imatge seleccionada en un botó d\'imatge?', - urlMissing : 'Image source URL is missing.', // MISSING - validateWidth : 'Width must be a whole number.', // MISSING - validateHeight : 'Height must be a whole number.', // MISSING - validateBorder : 'Border must be a whole number.', // MISSING - validateHSpace : 'HSpace must be a whole number.', // MISSING - validateVSpace : 'VSpace must be a whole number.' // MISSING + urlMissing : 'Falta la URL de la imatge.', + validateWidth : 'L\'amplada ha de ser un nombre enter.', + validateHeight : 'L\'alçada ha de ser un nombre enter.', + validateBorder : 'La vora ha de ser un nombre enter.', + validateHSpace : 'HSpace ha de ser un nombre enter.', + validateVSpace : 'VSpace ha de ser un nombre enter.' }, // Flash Dialog @@ -476,12 +483,13 @@ CKEDITOR.lang['ca'] = smiley : { toolbar : 'Icona', - title : 'Insereix una icona' + title : 'Insereix una icona', + options : 'Smiley Options' // MISSING }, elementsPath : { - eleLabel : 'Elements path', // MISSING + eleLabel : 'Elements path', eleTitle : '%1 element' }, @@ -507,7 +515,7 @@ CKEDITOR.lang['ca'] = copyError : 'La seguretat del vostre navegador no permet executar automàticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl+C).', pasteMsg : 'Si us plau, enganxeu dins del següent camp utilitzant el teclat (Ctrl+V) i premeu OK.', securityMsg : 'A causa de la configuració de seguretat del vostre navegador, l\'editor no pot accedir al porta-retalls directament. Enganxeu-ho un altre cop en aquesta finestra.', - pasteArea : 'Paste Area' // MISSING + pasteArea : 'Àrea d\'enganxat' }, pastefromword : @@ -515,7 +523,7 @@ CKEDITOR.lang['ca'] = confirmCleanup : 'El text que voleu enganxar sembla provenir de Word. Voleu netejar aquest text abans que sigui enganxat?', toolbar : 'Enganxa des del Word', title : 'Enganxa des del Word', - error : 'It was not possible to clean up the pasted data due to an internal error' // MISSING + error : 'No ha estat possible netejar les dades enganxades degut a un error intern' }, pasteText : @@ -528,6 +536,7 @@ CKEDITOR.lang['ca'] = { button : 'Plantilles', title : 'Contingut plantilles', + options : 'Template Options', // MISSING insertOption : 'Reemplaça el contingut actual', selectPromptMsg : 'Si us plau, seleccioneu la plantilla per obrir a l\'editor
    (el contingut actual no serà enregistrat):', emptyListMsg : '(No hi ha plantilles definides)' @@ -538,7 +547,7 @@ CKEDITOR.lang['ca'] = stylesCombo : { label : 'Estil', - panelTitle : 'Formatting Styles', // MISSING + panelTitle : 'Estils de format', panelTitle1 : 'Estils de bloc', panelTitle2 : 'Estils incrustats', panelTitle3 : 'Estils d\'objecte' @@ -563,19 +572,19 @@ CKEDITOR.lang['ca'] = div : { - title : 'Create Div Container', // MISSING - toolbar : 'Create Div Container', // MISSING - cssClassInputLabel : 'Stylesheet Classes', // MISSING - styleSelectLabel : 'Style', // MISSING - IdInputLabel : 'Id', // MISSING - languageCodeInputLabel : ' Language Code', // MISSING - inlineStyleInputLabel : 'Inline Style', // MISSING - advisoryTitleInputLabel : 'Advisory Title', // MISSING - langDirLabel : 'Language Direction', // MISSING - langDirLTRLabel : 'Left to Right (LTR)', // MISSING - langDirRTLLabel : 'Right to Left (RTL)', // MISSING - edit : 'Edit Div', // MISSING - remove : 'Remove Div' // MISSING + title : 'Crea un contenidor Div', + toolbar : 'Crea un contenidor Div', + cssClassInputLabel : 'Classes de la fulla d\'estils', + styleSelectLabel : 'Estil', + IdInputLabel : 'Id', + languageCodeInputLabel : ' Codi d\'idioma', + inlineStyleInputLabel : 'Estil en línia', + advisoryTitleInputLabel : 'Títol de guia', + langDirLabel : 'Direcció de l\'idioma', + langDirLTRLabel : 'D\'esquerra a dreta (LTR)', + langDirRTLLabel : 'De dreta a esquerra (RTL)', + edit : 'Edita Div', + remove : 'Elimina Div' }, font : @@ -596,53 +605,53 @@ CKEDITOR.lang['ca'] = { textColorTitle : 'Color de Text', bgColorTitle : 'Color de Fons', - panelTitle : 'Colors', // MISSING + panelTitle : 'Colors', auto : 'Automàtic', more : 'Més colors...' }, colors : { - '000' : 'Black', // MISSING - '800000' : 'Maroon', // MISSING - '8B4513' : 'Saddle Brown', // MISSING - '2F4F4F' : 'Dark Slate Gray', // MISSING - '008080' : 'Teal', // MISSING - '000080' : 'Navy', // MISSING - '4B0082' : 'Indigo', // MISSING - '696969' : 'Dim Gray', // MISSING - 'B22222' : 'Fire Brick', // MISSING - 'A52A2A' : 'Brown', // MISSING - 'DAA520' : 'Golden Rod', // MISSING - '006400' : 'Dark Green', // MISSING - '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 - '0FF' : 'Cyan', // MISSING - '00F' : 'Blue', // MISSING - 'EE82EE' : 'Violet', // MISSING - 'A9A9A9' : 'Dark Gray', // MISSING - 'FFA07A' : 'Light Salmon', // MISSING - 'FFA500' : 'Orange', // MISSING - 'FFFF00' : 'Yellow', // MISSING - '00FF00' : 'Lime', // MISSING - 'AFEEEE' : 'Pale Turquoise', // MISSING - 'ADD8E6' : 'Light Blue', // MISSING - 'DDA0DD' : 'Plum', // MISSING - 'D3D3D3' : 'Light Grey', // MISSING - 'FFF0F5' : 'Lavender Blush', // MISSING - 'FAEBD7' : 'Antique White', // MISSING - 'FFFFE0' : 'Light Yellow', // MISSING - 'F0FFF0' : 'Honeydew', // MISSING - 'F0FFFF' : 'Azure', // MISSING - 'F0F8FF' : 'Alice Blue', // MISSING - 'E6E6FA' : 'Lavender', // MISSING - 'FFF' : 'White' // MISSING + '000' : 'Negre', + '800000' : 'Granat', + '8B4513' : 'Marró sella', + '2F4F4F' : 'Gris pissarra fosca', + '008080' : 'Blau xarxet', + '000080' : 'Blau marí', + '4B0082' : 'Indi', + '696969' : 'Gris intens', + 'B22222' : 'Maó', + 'A52A2A' : 'Marró (web)', + 'DAA520' : 'Solidago', + '006400' : 'Verd fosc', + '40E0D0' : 'Turquesa', + '0000CD' : 'Atzur', + '800080' : 'Lila', + '808080' : 'Gris', + 'F00' : 'Vermell', + 'FF8C00' : 'Taronja fosc', + 'FFD700' : 'Or', + '008000' : 'Verd', + '0FF' : 'Cian', + '00F' : 'Blau', + 'EE82EE' : 'Lavanda rosat', + 'A9A9A9' : 'Gris clar', + 'FFA07A' : 'Salmó clar', + 'FFA500' : 'Taronja', + 'FFFF00' : 'Groc', + '00FF00' : 'Verd llima', + 'AFEEEE' : 'Blau pàlid', + 'ADD8E6' : 'Blau clar', + 'DDA0DD' : 'Pruna', + 'D3D3D3' : 'Gris clar', + 'FFF0F5' : 'Lavanda rosat', + 'FAEBD7' : 'Blanc antic', + 'FFFFE0' : 'Groc clar', + 'F0FFF0' : 'Verd pàlid', + 'F0FFFF' : 'Blau cel pàlid', + 'F0F8FF' : 'Cian pàlid', + 'E6E6FA' : 'Lavanda', + 'FFF' : 'Blanc' }, scayt : @@ -673,8 +682,8 @@ CKEDITOR.lang['ca'] = copy : 'Copyright © $1. All rights reserved.' }, - maximize : 'Maximiza', - minimize : 'Minimize', // MISSING + maximize : 'Maximitza', + minimize : 'Minimitza', fakeobjects : { @@ -688,12 +697,12 @@ CKEDITOR.lang['ca'] = colordialog : { - title : 'Select color', // MISSING - highlight : 'Highlight', // MISSING - selected : 'Selected', // MISSING - clear : 'Clear' // MISSING + title : 'Selecciona el color', + highlight : 'Destacat', + selected : 'Seleccionat', + clear : 'Neteja' }, - toolbarCollapse : 'Collapse Toolbar', // MISSING - toolbarExpand : 'Expand Toolbar' // MISSING + toolbarCollapse : 'Redueix la barra d\'eines', + toolbarExpand : 'Amplia la barra d\'eines' }; diff --git a/_source/lang/cs.js b/_source/lang/cs.js index e8fc379..69ba63c 100644 --- a/_source/lang/cs.js +++ b/_source/lang/cs.js @@ -110,17 +110,24 @@ CKEDITOR.lang['cs'] = unavailable : '%1, nedostupné' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Vložit speciální znaky', - title : 'Výběr speciálního znaku' + title : 'Výběr speciálního znaku', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Vložit/změnit odkaz', + other : '', menu : 'Změnit odkaz', title : 'Odkaz', info : 'Informace o odkazu', @@ -476,7 +483,8 @@ CKEDITOR.lang['cs'] = smiley : { toolbar : 'Smajlíky', - title : 'Vkládání smajlíků' + title : 'Vkládání smajlíků', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['cs'] = clipboard : { title : 'Vložit', - 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+X).', - copyError : 'Bezpečnostní nastavení VaÅ¡eho prohlížeče nedovolují editoru spustit funkci pro kopírování zvoleného textu do schránky. Prosím zkopírujte zvolený text do schránky pomocí klávesnice (Ctrl+C).', - pasteMsg : 'Do následujícího pole vložte požadovaný obsah pomocí klávesnice (Ctrl+V) a stiskněte OK.', + 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).', + copyError : 'Bezpečnostní nastavení VaÅ¡eho prohlížeče nedovolují editoru spustit funkci pro kopírování zvoleného textu do schránky. Prosím zkopírujte zvolený text do schránky pomocí klávesnice (Ctrl/Cmd+C).', + 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.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['cs'] = { button : 'Å ablony', title : 'Å ablony obsahu', + options : 'Template Options', // MISSING insertOption : 'Nahradit aktuální obsah', selectPromptMsg : 'Prosím zvolte Å¡ablonu pro otevření v editoru
    (aktuální obsah editoru bude ztracen):', emptyListMsg : '(Není definována žádná šablona)' diff --git a/_source/lang/cy.js b/_source/lang/cy.js index 18dbf66..9c4d2f1 100644 --- a/_source/lang/cy.js +++ b/_source/lang/cy.js @@ -110,17 +110,24 @@ CKEDITOR.lang['cy'] = unavailable : '%1, ddim ar gael' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Mewnosod Nodau Arbennig', - title : 'Dewis Nod Arbennig' + title : 'Dewis Nod Arbennig', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Dolen', + other : '', menu : 'Golygu Dolen', title : 'Dolen', info : 'Gwyb ar y Ddolen', @@ -476,7 +483,8 @@ CKEDITOR.lang['cy'] = smiley : { toolbar : 'Gwenoglun', - title : 'Mewnosod Gwenoglun' + title : 'Mewnosod Gwenoglun', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['cy'] = clipboard : { title : 'Gludo', - cutError : 'Nid yw gosodiadau diogelwch eich porwr yn caniatàu\'r golygydd i gynnal \'gweithredoedd torri\' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl+X).', - copyError : 'Nid yw gosodiadau diogelwch eich porwr yn caniatàu\'r golygydd i gynnal \'gweithredoedd copïo\' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl+C).', - pasteMsg : 'Gludwch i mewn i\'r blwch canlynol gan ddefnyddio\'r bysellfwrdd (Ctrl+V) a phwyso Iawn.', + cutError : 'Nid yw gosodiadau diogelwch eich porwr yn caniatàu\'r golygydd i gynnal \'gweithredoedd torri\' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+X).', + copyError : 'Nid yw gosodiadau diogelwch eich porwr yn caniatàu\'r golygydd i gynnal \'gweithredoedd copïo\' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+C).', + pasteMsg : 'Gludwch i mewn i\'r blwch canlynol gan ddefnyddio\'r bysellfwrdd (Ctrl/Cmd+V) a phwyso Iawn.', securityMsg : 'Oherwydd gosodiadau diogelwch eich porwr, nid yw\'r porwr yn gallu ennill mynediad i\'r data ar y clipfwrdd yn uniongyrchol. Mae angen i chi ei ludo eto i\'r ffenestr hon.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['cy'] = { button : 'Templedi', title : 'Templedi Cynnwys', + options : 'Template Options', // MISSING insertOption : 'Amnewid y cynnwys go iawn', selectPromptMsg : 'Dewiswch dempled i\'w agor yn y golygydd', emptyListMsg : '(Dim templedi wedi\'u diffinio)' diff --git a/_source/lang/da.js b/_source/lang/da.js index 3f67b07..a1a3a3d 100644 --- a/_source/lang/da.js +++ b/_source/lang/da.js @@ -110,17 +110,24 @@ CKEDITOR.lang['da'] = unavailable : '%1, ikke tilgængelig' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Indsæt symbol', - title : 'Vælg symbol' + title : 'Vælg symbol', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Indsæt/redigér hyperlink', + other : '', menu : 'Redigér hyperlink', title : 'Egenskaber for hyperlink', info : 'Generelt', @@ -476,7 +483,8 @@ CKEDITOR.lang['da'] = smiley : { toolbar : 'Smiley', - title : 'Vælg smiley' + title : 'Vælg smiley', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['da'] = clipboard : { title : 'Indsæt', - cutError : 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.

    Brug i stedet tastaturet til at klippe teksten (Ctrl+X).', - copyError : 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.

    Brug i stedet tastaturet til at kopiere teksten (Ctrl+C).', - pasteMsg : 'Indsæt i feltet herunder (Ctrl+V) og klik på OK.', + cutError : 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.

    Brug i stedet tastaturet til at klippe teksten (Ctrl/Cmd+X).', + copyError : 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.

    Brug i stedet tastaturet til at kopiere teksten (Ctrl/Cmd+C).', + 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.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['da'] = { button : 'Skabeloner', title : 'Indholdsskabeloner', + options : 'Template Options', // MISSING insertOption : 'Erstat det faktiske indhold', selectPromptMsg : 'Vælg den skabelon, som skal åbnes i editoren (nuværende indhold vil blive overskrevet):', emptyListMsg : '(Der er ikke defineret nogen skabelon)' diff --git a/_source/lang/de.js b/_source/lang/de.js index 13aac87..374e2d8 100644 --- a/_source/lang/de.js +++ b/_source/lang/de.js @@ -110,17 +110,24 @@ CKEDITOR.lang['de'] = unavailable : '%1, nicht verfügbar' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Sonderzeichen einfügen/editieren', - title : 'Sonderzeichen auswählen' + title : 'Sonderzeichen auswählen', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Link einfügen/editieren', + other : '', menu : 'Link editieren', title : 'Link', info : 'Link-Info', @@ -476,7 +483,8 @@ CKEDITOR.lang['de'] = smiley : { toolbar : 'Smiley', - title : 'Smiley auswählen' + title : 'Smiley auswählen', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -528,6 +536,7 @@ CKEDITOR.lang['de'] = { button : 'Vorlagen', title : 'Vorlagen', + options : 'Template Options', // MISSING insertOption : 'Aktuellen Inhalt ersetzen', selectPromptMsg : 'Klicken Sie auf eine Vorlage, um sie im Editor zu öffnen (der aktuelle Inhalt wird dabei gelöscht!):', emptyListMsg : '(keine Vorlagen definiert)' diff --git a/_source/lang/el.js b/_source/lang/el.js index 7d25a69..f984989 100644 --- a/_source/lang/el.js +++ b/_source/lang/el.js @@ -110,17 +110,24 @@ CKEDITOR.lang['el'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Εισαγωγή Ειδικού Συμβόλου', - title : 'Επιλέξτε ένα Ειδικό Σύμβολο' + title : 'Επιλέξτε ένα Ειδικό Σύμβολο', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Εισαγωγή/Μεταβολή Συνδέσμου (Link)', + other : '<άλλος>', menu : 'Μεταβολή Συνδέσμου (Link)', title : 'Σύνδεσμος (Link)', info : 'Link', @@ -476,7 +483,8 @@ CKEDITOR.lang['el'] = smiley : { toolbar : 'Smiley', - title : 'Επιλέξτε ένα Smiley' + title : 'Επιλέξτε ένα Smiley', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['el'] = clipboard : { title : 'Επικόλληση', - cutError : 'Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία αποκοπής. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl+X).', - copyError : 'Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία αντιγραφής. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl+C).', - pasteMsg : 'Παρακαλώ επικολήστε στο ακόλουθο κουτί χρησιμοποιόντας το πληκτρολόγιο (Ctrl+V) και πατήστε OK.', + cutError : 'Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία αποκοπής. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+X).', + copyError : 'Οι ρυθμίσεις ασφαλείας του φυλλομετρητή σας δεν επιτρέπουν την επιλεγμένη εργασία αντιγραφής. Χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+C).', + 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 pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['el'] = { button : 'Πρότυπα', title : 'Πρότυπα περιεχομένου', + options : 'Template Options', // MISSING insertOption : 'Αντικατάσταση υπάρχοντων περιεχομένων', selectPromptMsg : 'Παρακαλώ επιλέξτε πρότυπο για εισαγωγή στο πρόγραμμα
    (τα υπάρχοντα περιεχόμενα θα χαθούν):', emptyListMsg : '(Δεν έχουν καθοριστεί πρότυπα)' diff --git a/_source/lang/en-au.js b/_source/lang/en-au.js index 0ea9bea..c0ba4db 100644 --- a/_source/lang/en-au.js +++ b/_source/lang/en-au.js @@ -110,17 +110,24 @@ CKEDITOR.lang['en-au'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Insert Special Character', - title : 'Select Special Character' + title : 'Select Special Character', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Link', + other : '', menu : 'Edit Link', title : 'Link', info : 'Link Info', @@ -476,7 +483,8 @@ CKEDITOR.lang['en-au'] = smiley : { toolbar : 'Smiley', - title : 'Insert a Smiley' + title : 'Insert a Smiley', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['en-au'] = clipboard : { title : 'Paste', - cutError : 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).', - copyError : 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).', - pasteMsg : 'Please paste inside the following box using the keyboard (Ctrl+V) and hit OK', + cutError : 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', + copyError : 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', + 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.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['en-au'] = { button : 'Templates', title : 'Content Templates', + options : 'Template Options', // MISSING insertOption : 'Replace actual contents', selectPromptMsg : 'Please select the template to open in the editor', emptyListMsg : '(No templates defined)' diff --git a/_source/lang/en-ca.js b/_source/lang/en-ca.js index 1210ec4..1c5265e 100644 --- a/_source/lang/en-ca.js +++ b/_source/lang/en-ca.js @@ -110,17 +110,24 @@ CKEDITOR.lang['en-ca'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Insert Special Character', - title : 'Select Special Character' + title : 'Select Special Character', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Link', + other : '', menu : 'Edit Link', title : 'Link', info : 'Link Info', @@ -476,7 +483,8 @@ CKEDITOR.lang['en-ca'] = smiley : { toolbar : 'Smiley', - title : 'Insert a Smiley' + title : 'Insert a Smiley', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['en-ca'] = clipboard : { title : 'Paste', - cutError : 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).', - copyError : 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).', - pasteMsg : 'Please paste inside the following box using the keyboard (Ctrl+V) and hit OK', + cutError : 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', + copyError : 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', + 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.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['en-ca'] = { button : 'Templates', title : 'Content Templates', + options : 'Template Options', // MISSING insertOption : 'Replace actual contents', selectPromptMsg : 'Please select the template to open in the editor', emptyListMsg : '(No templates defined)' diff --git a/_source/lang/en-gb.js b/_source/lang/en-gb.js index fa23d61..10d4439 100644 --- a/_source/lang/en-gb.js +++ b/_source/lang/en-gb.js @@ -110,17 +110,24 @@ CKEDITOR.lang['en-gb'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Insert Special Character', - title : 'Select Special Character' + title : 'Select Special Character', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Link', + other : '', menu : 'Edit Link', title : 'Link', info : 'Link Info', @@ -476,7 +483,8 @@ CKEDITOR.lang['en-gb'] = smiley : { toolbar : 'Smiley', - title : 'Insert a Smiley' + title : 'Insert a Smiley', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['en-gb'] = clipboard : { title : 'Paste', - cutError : 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).', - copyError : 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).', - pasteMsg : 'Please paste inside the following box using the keyboard (Ctrl+V) and hit OK', + cutError : 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', + copyError : 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', + 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.', pasteArea : 'Paste Area' }, @@ -528,6 +536,7 @@ CKEDITOR.lang['en-gb'] = { button : 'Templates', title : 'Content Templates', + options : 'Template Options', // MISSING insertOption : 'Replace actual contents', selectPromptMsg : 'Please select the template to open in the editor', emptyListMsg : '(No templates defined)' diff --git a/_source/lang/en.js b/_source/lang/en.js index 49b28ec..8696640 100644 --- a/_source/lang/en.js +++ b/_source/lang/en.js @@ -110,17 +110,24 @@ CKEDITOR.lang['en'] = unavailable : '%1, unavailable' }, + contextmenu : + { + options : 'Context Menu Options' + }, + // Special char dialog. specialChar : { toolbar : 'Insert Special Character', - title : 'Select Special Character' + title : 'Select Special Character', + options : 'Special Character Options' }, // Link dialog. link : { toolbar : 'Link', + other : '', menu : 'Edit Link', title : 'Link', info : 'Link Info', @@ -476,7 +483,8 @@ CKEDITOR.lang['en'] = smiley : { toolbar : 'Smiley', - title : 'Insert a Smiley' + title : 'Insert a Smiley', + options : 'Smiley Options' }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['en'] = clipboard : { title : 'Paste', - cutError : 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl+X).', - copyError : 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl+C).', - pasteMsg : 'Please paste inside the following box using the keyboard (Ctrl+V) and hit OK', + cutError : 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', + copyError : 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', + 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.', pasteArea : 'Paste Area' }, @@ -528,6 +536,7 @@ CKEDITOR.lang['en'] = { button : 'Templates', title : 'Content Templates', + options : 'Template Options', insertOption : 'Replace actual contents', selectPromptMsg : 'Please select the template to open in the editor', emptyListMsg : '(No templates defined)' diff --git a/_source/lang/eo.js b/_source/lang/eo.js index 81c673b..1a011a0 100644 --- a/_source/lang/eo.js +++ b/_source/lang/eo.js @@ -110,17 +110,24 @@ CKEDITOR.lang['eo'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Enmeti Specialan Signon', - title : 'Enmeti Specialan Signon' + title : 'Enmeti Specialan Signon', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Enmeti/Ŝanĝi Ligilon', + other : '', // MISSING menu : 'Modifier Ligilon', title : 'Ligilo', info : 'Informoj pri la Ligilo', @@ -476,7 +483,8 @@ CKEDITOR.lang['eo'] = smiley : { toolbar : 'Mienvinjeto', - title : 'Enmeti Mienvinjeton' + title : 'Enmeti Mienvinjeton', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['eo'] = clipboard : { title : 'Interglui', - cutError : 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (ctrl-X).', - copyError : 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (ctrl-C).', - pasteMsg : 'Please paste inside the following box using the keyboard (Ctrl+V) and hit OK', // MISSING + cutError : 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-X).', + copyError : 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-C).', + 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 pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['eo'] = { button : 'Templates', // MISSING title : 'Content Templates', // MISSING + options : 'Template Options', // MISSING insertOption : 'Replace actual contents', // MISSING selectPromptMsg : 'Please select the template to open in the editor', // MISSING emptyListMsg : '(No templates defined)' // MISSING diff --git a/_source/lang/es.js b/_source/lang/es.js index 6580245..ced0b89 100644 --- a/_source/lang/es.js +++ b/_source/lang/es.js @@ -110,17 +110,24 @@ CKEDITOR.lang['es'] = unavailable : '%1, no disponible' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Insertar Caracter Especial', - title : 'Seleccione un caracter especial' + title : 'Seleccione un caracter especial', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Insertar/Editar Vínculo', + other : '', menu : 'Editar Vínculo', title : 'Vínculo', info : 'Información de Vínculo', @@ -476,7 +483,8 @@ CKEDITOR.lang['es'] = smiley : { toolbar : 'Emoticons', - title : 'Insertar un Emoticon' + title : 'Insertar un Emoticon', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['es'] = clipboard : { title : 'Pegar', - 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+X).', - copyError : 'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de copiado.\r\nPor favor use el teclado (Ctrl+C).', - pasteMsg : 'Por favor pegue dentro del cuadro utilizando el teclado (Ctrl+V);\r\nluego presione Aceptar.', + 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).', + copyError : 'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de copiado.\r\nPor favor use el teclado (Ctrl/Cmd+C).', + 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.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['es'] = { button : 'Plantillas', title : 'Contenido de Plantillas', + options : 'Template Options', // MISSING insertOption : 'Reemplazar el contenido actual', selectPromptMsg : 'Por favor selecciona la plantilla a abrir en el editor
    (el contenido actual se perderá):', emptyListMsg : '(No hay plantillas definidas)' diff --git a/_source/lang/et.js b/_source/lang/et.js index e8f9241..9351c35 100644 --- a/_source/lang/et.js +++ b/_source/lang/et.js @@ -110,17 +110,24 @@ CKEDITOR.lang['et'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Sisesta erimärk', - title : 'Vali erimärk' + title : 'Vali erimärk', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Sisesta link / Muuda linki', + other : '', menu : 'Muuda linki', title : 'Link', info : 'Lingi info', @@ -476,7 +483,8 @@ CKEDITOR.lang['et'] = smiley : { toolbar : 'Emotikon', - title : 'Sisesta emotikon' + title : 'Sisesta emotikon', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['et'] = clipboard : { title : 'Kleebi', - cutError : 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+X).', - copyError : 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl+C).', - pasteMsg : 'Palun kleebi järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (Ctrl+V) ja vajuta seejärel OK.', + cutError : 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+X).', + copyError : 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+C).', + pasteMsg : 'Palun kleebi 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 kleepima need uuesti siia aknasse.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['et'] = { button : 'Šabloon', title : 'Sisu šabloonid', + options : 'Template Options', // MISSING insertOption : 'Asenda tegelik sisu', selectPromptMsg : 'Palun vali šabloon, et avada see redaktoris
    (praegune sisu läheb kaotsi):', emptyListMsg : '(Ühtegi šablooni ei ole defineeritud)' diff --git a/_source/lang/eu.js b/_source/lang/eu.js index 4dcf690..9009c6f 100644 --- a/_source/lang/eu.js +++ b/_source/lang/eu.js @@ -110,17 +110,24 @@ CKEDITOR.lang['eu'] = unavailable : '%1, erabilezina' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Txertatu Karaktere Berezia', - title : 'Karaktere Berezia Aukeratu' + title : 'Karaktere Berezia Aukeratu', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Txertatu/Editatu Esteka', + other : '', // MISSING menu : 'Aldatu Esteka', title : 'Esteka', info : 'Estekaren Informazioa', @@ -476,7 +483,8 @@ CKEDITOR.lang['eu'] = smiley : { toolbar : 'Aurpegierak', - title : 'Aurpegiera Sartu' + title : 'Aurpegiera Sartu', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['eu'] = clipboard : { title : 'Itsatsi', - cutError : 'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki moztea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl+X).', - copyError : 'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki kopiatzea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl+C).', - pasteMsg : 'Mesedez teklatua erabilita (Ctrl+V) ondorego eremuan testua itsatsi eta OK sakatu.', + cutError : 'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki moztea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl/Cmd+X).', + copyError : 'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki kopiatzea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl/Cmd+C).', + 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.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['eu'] = { button : 'Txantiloiak', title : 'Eduki Txantiloiak', + options : 'Template Options', // MISSING insertOption : 'Ordeztu oraingo edukiak', selectPromptMsg : 'Mesedez txantiloia aukeratu editorean kargatzeko
    (orain dauden edukiak galduko dira):', emptyListMsg : '(Ez dago definitutako txantiloirik)' diff --git a/_source/lang/fa.js b/_source/lang/fa.js index e1b5aaf..54bb93d 100644 --- a/_source/lang/fa.js +++ b/_source/lang/fa.js @@ -110,17 +110,24 @@ CKEDITOR.lang['fa'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'گنجاندن نویسهٴ ویژه', - title : 'گزینش نویسهٴویژه' + title : 'گزینش نویسهٴویژه', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'گنجاندن/ویرایش ِپیوند', + other : '<سایر>', menu : 'ویرایش پیوند', title : 'پیوند', info : 'اطلاعات پیوند', @@ -476,7 +483,8 @@ CKEDITOR.lang['fa'] = smiley : { toolbar : 'خندانک', - title : 'گنجاندن خندانک' + title : 'گنجاندن خندانک', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['fa'] = clipboard : { title : 'چسباندن', - cutError : 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. لطفا با دکمههای صفحهکلید این کار را انجام دهید (Ctrl+X).', - copyError : 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای کپیکردن را انجام دهد. لطفا با دکمههای صفحهکلید این کار را انجام دهید (Ctrl+C).', - pasteMsg : 'لطفا متن را با کلیدهای (Ctrl+V) در این جعبهٴ متنی بچسبانید و پذیرش را بزنید.', + cutError : 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. لطفا با دکمههای صفحهکلید این کار را انجام دهید (Ctrl/Cmd+X).', + copyError : 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای کپیکردن را انجام دهد. لطفا با دکمههای صفحهکلید این کار را انجام دهید (Ctrl/Cmd+C).', + pasteMsg : 'لطفا متن را با کلیدهای (Ctrl/Cmd+V) در این جعبهٴ متنی بچسبانید و پذیرش را بزنید.', securityMsg : 'به خاطر تنظیمات امنیتی مرورگر شما، ویرایشگر نمیتواند دسترسی مستقیم به دادههای clipboard داشته باشد. شما باید دوباره آنرا در این پنجره بچسبانید.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['fa'] = { button : 'الگوها', title : 'الگوهای محتویات', + options : 'Template Options', // MISSING insertOption : 'محتویات کنونی جایگزین شوند', selectPromptMsg : 'لطفا الگوی موردنظر را برای بازکردن در ویرایشگر برگزینید
    (محتویات کنونی از دست خواهند رفت):', emptyListMsg : '(الگوئی تعریف نشده است)' diff --git a/_source/lang/fi.js b/_source/lang/fi.js index 5d116ec..c06de20 100644 --- a/_source/lang/fi.js +++ b/_source/lang/fi.js @@ -31,11 +31,11 @@ CKEDITOR.lang['fi'] = * Screenreader titles. Please note that screenreaders are not always capable * of reading non-English words. So be careful while translating it. */ - editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING + editorTitle : 'Rikastekstieditori, %1, paina ALT 0 nähdäksesi ohjeen.', // ARIA descriptions. - toolbar : 'Toolbar', // MISSING - editor : 'Rich Text Editor', // MISSING + toolbar : 'Työkalupalkki', + editor : 'Rikastekstieditori', // Toolbar buttons without dialogs. source : 'Koodi', @@ -92,35 +92,42 @@ CKEDITOR.lang['fi'] = cssStyle : 'Tyyli', ok : 'OK', cancel : 'Peruuta', - close : 'Close', // MISSING - preview : 'Preview', // MISSING + close : 'Sulje', + preview : 'Esikatselu', generalTab : 'Yleinen', advancedTab : 'Lisäominaisuudet', validateNumberFailed : 'Arvon pitää olla numero.', confirmNewPage : 'Kaikki tallentamattomat muutokset tähän sisältöön menetetään. Oletko varma, että haluat ladata uuden sivun?', confirmCancel : 'Jotkut asetuksista on muuttuneet. Oletko varma, että haluat sulkea valintaikkunan?', - options : 'Options', // MISSING - target : 'Target', // MISSING - targetNew : 'New Window (_blank)', // MISSING - targetTop : 'Topmost Window (_top)', // MISSING - targetSelf : 'Same Window (_self)', // MISSING - targetParent : 'Parent Window (_parent)', // MISSING + options : 'Asetukset', + target : 'Kohde', + targetNew : 'Uusi ikkuna (_blank)', + targetTop : 'Päällimmäinen ikkuna (_top)', + targetSelf : 'Sama ikkuna (_self)', + targetParent : 'Ylemmän tason ikkuna (_parent)', // Put the voice-only part of the label in the span. unavailable : '%1, ei saatavissa' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Lisää erikoismerkki', - title : 'Valitse erikoismerkki' + title : 'Valitse erikoismerkki', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Lisää linkki/muokkaa linkkiä', + other : '', // MISSING menu : 'Muokkaa linkkiä', title : 'Linkki', info : 'Linkin tiedot', @@ -128,7 +135,7 @@ CKEDITOR.lang['fi'] = upload : 'Lisää tiedosto', advanced : 'Lisäominaisuudet', type : 'Linkkityyppi', - toUrl : 'URL', // MISSING + toUrl : 'Osoite', toAnchor : 'Ankkuri tässä sivussa', toEmail : 'Sähköposti', targetFrame : '', @@ -215,7 +222,7 @@ CKEDITOR.lang['fi'] = width : 'Leveys', widthPx : 'pikseliä', widthPc : 'prosenttia', - widthUnit : 'width unit', // MISSING + widthUnit : 'leveysyksikkö', height : 'Korkeus', cellSpace : 'Solujen väli', cellPad : 'Solujen sisennys', @@ -378,7 +385,7 @@ CKEDITOR.lang['fi'] = width : 'Leveys', height : 'Korkeus', lockRatio : 'Lukitse suhteet', - unlockRatio : 'Unlock Ratio', // MISSING + unlockRatio : 'Vapauta suhteet', resetSize : 'Alkuperäinen koko', border : 'Raja', hSpace : 'Vaakatila', @@ -391,11 +398,11 @@ CKEDITOR.lang['fi'] = button2Img : 'Haluatko muuntaa valitun kuvanäppäimen kuvaksi?', img2Button : 'Haluatko muuntaa valitun kuvan kuvanäppäimeksi?', urlMissing : 'Kuvan lähdeosoite puuttuu.', - validateWidth : 'Width must be a whole number.', // MISSING - validateHeight : 'Height must be a whole number.', // MISSING - validateBorder : 'Border must be a whole number.', // MISSING - validateHSpace : 'HSpace must be a whole number.', // MISSING - validateVSpace : 'VSpace must be a whole number.' // MISSING + validateWidth : 'Leveyden täytyy olla kokonaisluku.', + validateHeight : 'Korkeuden täytyy olla kokonaisluku.', + validateBorder : 'Reunan täytyy olla kokonaisluku.', + validateHSpace : 'HSpace-määrityksen täytyy olla kokonaisluku.', + validateVSpace : 'VSpace-määrityksen täytyy olla kokonaisluku.' }, // Flash Dialog @@ -476,12 +483,13 @@ CKEDITOR.lang['fi'] = smiley : { toolbar : 'Hymiö', - title : 'Lisää hymiö' + title : 'Lisää hymiö', + options : 'Smiley Options' // MISSING }, elementsPath : { - eleLabel : 'Elements path', // MISSING + eleLabel : 'Elementin polku', eleTitle : '%1 elementti' }, @@ -507,7 +515,7 @@ CKEDITOR.lang['fi'] = copyError : 'Selaimesi turva-asetukset eivät salli editorin toteuttaa kopioimista. Käytä näppäimistöä kopioimiseen (Ctrl+C).', 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.', - pasteArea : 'Paste Area' // MISSING + pasteArea : 'Leikealue' }, pastefromword : @@ -528,6 +536,7 @@ CKEDITOR.lang['fi'] = { button : 'Pohjat', title : 'Sisältöpohjat', + options : 'Template Options', // MISSING insertOption : 'Korvaa editorin koko sisältö', selectPromptMsg : 'Valitse pohja editoriin
    (aiempi sisältö menetetään):', emptyListMsg : '(Ei määriteltyjä pohjia)' @@ -538,7 +547,7 @@ CKEDITOR.lang['fi'] = stylesCombo : { label : 'Tyyli', - panelTitle : 'Formatting Styles', // MISSING + panelTitle : 'Muotoilujen tyylit', panelTitle1 : 'Lohkojen tyylit', panelTitle2 : 'Rivinsisäiset tyylit', panelTitle3 : 'Objektien tyylit' @@ -596,7 +605,7 @@ CKEDITOR.lang['fi'] = { textColorTitle : 'Tekstiväri', bgColorTitle : 'Taustaväri', - panelTitle : 'Colors', // MISSING + panelTitle : 'Värit', auto : 'Automaattinen', more : 'Lisää värejä...' }, diff --git a/_source/lang/fo.js b/_source/lang/fo.js index 5f43db9..c94d4cf 100644 --- a/_source/lang/fo.js +++ b/_source/lang/fo.js @@ -92,43 +92,50 @@ CKEDITOR.lang['fo'] = cssStyle : 'Typografi', ok : 'Góðkent', cancel : 'Avlýst', - close : 'Close', // MISSING - preview : 'Preview', // MISSING + close : 'Lat aftur', + preview : 'Frumsýn', generalTab : 'Generelt', advancedTab : 'Fjølbroytt', - validateNumberFailed : 'This value is not a number.', // MISSING - confirmNewPage : 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING - confirmCancel : 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING + validateNumberFailed : 'Hetta er ikki eitt tal.', + confirmNewPage : 'Allar ikki goymdar broytingar í hesum innihaldi hvørva. Skal nýggj síða lesast kortini?', + confirmCancel : 'Nakrir valmøguleikar eru broyttir. Ert tú vísur í, at dialogurin skal latast aftur?', options : 'Options', // MISSING target : 'Target', // MISSING - targetNew : 'New Window (_blank)', // MISSING - targetTop : 'Topmost Window (_top)', // MISSING - targetSelf : 'Same Window (_self)', // MISSING - targetParent : 'Parent Window (_parent)', // MISSING + targetNew : 'Nýtt vindeyga (_blank)', + targetTop : 'Vindeyga ovast (_top)', + targetSelf : 'Sama vindeyga (_self)', + targetParent : 'Upphavligt vindeyga (_parent)', // Put the voice-only part of the label in the span. - unavailable : '%1, unavailable' // MISSING + unavailable : '%1, ikki tøkt' + }, + + contextmenu : + { + options : 'Context Menu Options' // MISSING }, // Special char dialog. specialChar : { toolbar : 'Set inn sertekn', - title : 'Vel sertekn' + title : 'Vel sertekn', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Ger/broyt tilknýti', + other : '', // MISSING menu : 'Broyt tilknýti', title : 'Tilknýti', info : 'Tilknýtis upplýsingar', - target : 'Mál', + target : 'Target', // MISSING upload : 'Send til ambætaran', advanced : 'Fjølbroytt', type : 'Tilknýtisslag', - toUrl : 'URL', // MISSING + toUrl : 'URL', toAnchor : 'Tilknýti til marknastein í tekstinum', toEmail : 'Teldupostur', targetFrame : '', @@ -191,11 +198,11 @@ CKEDITOR.lang['fo'] = findWhat : 'Finn:', replaceWith : 'Yvirskriva við:', notFoundMsg : 'Leititeksturin varð ikki funnin', - matchCase : 'Munur á stórum og smáðum bókstavum', + matchCase : 'Munur á stórum og smáum bókstavum', matchWord : 'Bert heil orð', matchCyclic : 'Match cyclic', // MISSING replaceAll : 'Yvirskriva alt', - replaceSuccessMsg : '%1 occurrence(s) replaced.' // MISSING + replaceSuccessMsg : '%1 úrslit broytt.' }, // Table Dialog @@ -215,24 +222,24 @@ CKEDITOR.lang['fo'] = width : 'Breidd', widthPx : 'pixels', widthPc : 'prosent', - widthUnit : 'width unit', // MISSING + widthUnit : 'breiddar unit', height : 'Hædd', cellSpace : 'Fjarstøða millum meskar', cellPad : 'Meskubreddi', caption : 'Tabellfrágreiðing', summary : 'Samandráttur', headers : 'Headers', // MISSING - headersNone : 'None', // MISSING - headersColumn : 'First column', // MISSING - headersRow : 'First Row', // MISSING - headersBoth : 'Both', // MISSING - invalidRows : 'Number of rows must be a number greater than 0.', // MISSING - invalidCols : 'Number of columns must be a number greater than 0.', // MISSING - invalidBorder : 'Border size must be a number.', // MISSING - invalidWidth : 'Table width must be a number.', // MISSING - invalidHeight : 'Table height must be a number.', // MISSING - invalidCellSpacing : 'Cell spacing must be a number.', // MISSING - invalidCellPadding : 'Cell padding must be a number.', // MISSING + headersNone : 'Eingin', + headersColumn : 'Fyrsta kolonna', + headersRow : 'Fyrsta rað', + headersBoth : 'Báðir', + invalidRows : 'Talið av røðum má vera eitt tal størri enn 0.', + invalidCols : 'Talið av kolonnum má vera eitt tal størri enn 0.', + invalidBorder : 'Borda-stødd má vera eitt tal.', + invalidWidth : 'Tabell-breidd má vera eitt tal.', + invalidHeight : 'Tabell-hædd má vera eitt tal.', + invalidCellSpacing : 'Cell spacing má vera eitt tal.', + invalidCellPadding : 'Cell padding má vera eitt tal.', cell : { @@ -245,28 +252,28 @@ CKEDITOR.lang['fo'] = mergeDown : 'Flætta saman', splitHorizontal : 'Kloyv meska vatnrætt', splitVertical : 'Kloyv meska loddrætt', - title : 'Cell Properties', // MISSING - cellType : 'Cell Type', // MISSING - rowSpan : 'Rows Span', // MISSING - colSpan : 'Columns Span', // MISSING + title : 'Mesku eginleikar', + cellType : 'Mesku slag', + rowSpan : 'Ræð spenni', + colSpan : 'Kolonnu spenni', wordWrap : 'Word Wrap', // MISSING - hAlign : 'Horizontal Alignment', // MISSING - vAlign : 'Vertical Alignment', // MISSING - alignTop : 'Top', // MISSING - alignMiddle : 'Middle', // MISSING - alignBottom : 'Bottom', // MISSING - alignBaseline : 'Baseline', // MISSING - bgColor : 'Background Color', // MISSING - borderColor : 'Border Color', // MISSING - data : 'Data', // MISSING - header : 'Header', // MISSING - yes : 'Yes', // MISSING - no : 'No', // MISSING - invalidWidth : 'Cell width must be a number.', // MISSING - invalidHeight : 'Cell height must be a number.', // MISSING - invalidRowSpan : 'Rows span must be a whole number.', // MISSING - invalidColSpan : 'Columns span must be a whole number.', // MISSING - chooseColor : 'Choose' // MISSING + hAlign : 'Horisontal plasering', + vAlign : 'Loddrøtt plasering', + alignTop : 'Top', + alignMiddle : 'Miðja', + alignBottom : 'Botnur', + alignBaseline : 'Basislinja', + bgColor : 'Bakgrundslitur', + borderColor : 'Bordalitur', + data : 'Data', + header : 'Header', + yes : 'Ja', + no : 'Nei', + invalidWidth : 'Meskubreidd má vera eitt tal.', + invalidHeight : 'Meskuhædd má vera eitt tal.', + invalidRowSpan : 'Raðspennið má vera eitt heiltal.', + invalidColSpan : 'Kolonnuspennið má vera eitt heiltal.', + chooseColor : 'Vel' }, row : @@ -378,7 +385,7 @@ CKEDITOR.lang['fo'] = width : 'Breidd', height : 'Hædd', lockRatio : 'Læs lutfallið', - unlockRatio : 'Unlock Ratio', // MISSING + unlockRatio : 'Lutfallið ikki læst', resetSize : 'Upprunastødd', border : 'Bordi', hSpace : 'Høgri breddi', @@ -390,32 +397,32 @@ CKEDITOR.lang['fo'] = linkTab : 'Tilknýti', button2Img : 'Do you want to transform the selected image button on a simple image?', // MISSING img2Button : 'Do you want to transform the selected image on a image button?', // MISSING - urlMissing : 'Image source URL is missing.', // MISSING - validateWidth : 'Width must be a whole number.', // MISSING - validateHeight : 'Height must be a whole number.', // MISSING - validateBorder : 'Border must be a whole number.', // MISSING - validateHSpace : 'HSpace must be a whole number.', // MISSING - validateVSpace : 'VSpace must be a whole number.' // MISSING + urlMissing : 'URL til mynd manglar.', + validateWidth : 'Breidd má vera eitt heiltal.', + validateHeight : 'Hædd má vera eitt heiltal.', + validateBorder : 'Bordi má vera eitt heiltal.', + validateHSpace : 'HSpace má vera eitt heiltal.', + validateVSpace : 'VSpace má vera eitt heiltal.' }, // Flash Dialog flash : { properties : 'Flash eginleikar', - propertiesTab : 'Properties', // MISSING + propertiesTab : 'Eginleikar', title : 'Flash eginleikar', chkPlay : 'Avspælingin byrjar sjálv', chkLoop : 'Endurspæl', chkMenu : 'Ger Flash skrá virkna', - chkFull : 'Allow Fullscreen', // MISSING + chkFull : 'Loyv fullan skerm', scale : 'Skalering', scaleAll : 'Vís alt', scaleNoBorder : 'Eingin bordi', scaleFit : 'Neyv skalering', - access : 'Script Access', // MISSING - accessAlways : 'Always', // MISSING - accessSameDomain: 'Same domain', // MISSING - accessNever : 'Never', // MISSING + access : 'Script atgongd', + accessAlways : 'Altíð', + accessSameDomain: 'Sama navnaøki', + accessNever : 'Ongantíð', align : 'Justering', alignLeft : 'Vinstra', alignAbsBottom : 'Abs botnur', @@ -426,37 +433,37 @@ CKEDITOR.lang['fo'] = alignRight : 'Høgra', alignTextTop : 'Tekst toppur', alignTop : 'Ovast', - quality : 'Quality', // MISSING - qualityBest : 'Best', // MISSING - qualityHigh : 'High', // MISSING - qualityAutoHigh : 'Auto High', // MISSING - qualityMedium : 'Medium', // MISSING - qualityAutoLow : 'Auto Low', // MISSING - qualityLow : 'Low', // MISSING + quality : 'Góðska', + qualityBest : 'Besta', + qualityHigh : 'Høg', + qualityAutoHigh : 'Auto høg', + qualityMedium : 'Meðal', + qualityAutoLow : 'Auto Lág', + qualityLow : 'Lág', windowModeWindow: 'Window', // MISSING - windowModeOpaque: 'Opaque', // MISSING - windowModeTransparent : 'Transparent', // MISSING + windowModeOpaque: 'Ikki transparent', + windowModeTransparent : 'Transparent', windowMode : 'Window mode', // MISSING - flashvars : 'Variables for Flash', // MISSING + flashvars : 'Variablar fyri Flash', bgcolor : 'Bakgrundslitur', width : 'Breidd', height : 'Hædd', hSpace : 'Høgri breddi', vSpace : 'Vinstri breddi', validateSrc : 'Vinarliga skriva tilknýti (URL)', - validateWidth : 'Width must be a number.', // MISSING - validateHeight : 'Height must be a number.', // MISSING - validateHSpace : 'HSpace must be a number.', // MISSING - validateVSpace : 'VSpace must be a number.' // MISSING + validateWidth : 'Breidd má vera eitt tal.', + validateHeight : 'Hædd má vera eitt tal.', + validateHSpace : 'HSpace má vera eitt tal.', + validateVSpace : 'VSpace má vera eitt tal.' }, // Speller Pages Dialog spellCheck : { toolbar : 'Kanna stavseting', - title : 'Spell Check', // MISSING - notAvailable : 'Sorry, but service is unavailable now.', // MISSING - errorLoading : 'Error loading application service host: %s.', // MISSING + title : 'Kanna stavseting', + notAvailable : 'Tíverri, ikki tøkt í løtuni.', + errorLoading : 'Feilur við innlesing av application service host: %s.', notInDic : 'Finst ikki í orðabókini', changeTo : 'Broyt til', btnIgnore : 'Forfjóna', @@ -476,13 +483,14 @@ CKEDITOR.lang['fo'] = smiley : { toolbar : 'Smiley', - title : 'Vel Smiley' + title : 'Vel Smiley', + options : 'Smiley Options' // MISSING }, elementsPath : { - eleLabel : 'Elements path', // MISSING - eleTitle : '%1 element' // MISSING + eleLabel : 'Slóð til elementir', + eleTitle : '%1 element' }, numberedlist : 'Talmerktur listi', @@ -503,19 +511,19 @@ CKEDITOR.lang['fo'] = clipboard : { title : 'Innrita', - cutError : 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (CTRL+X).', - copyError : 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (CTRL+C).', - pasteMsg : 'Vinarliga koyr tekstin í hendan rútin við knappaborðinum (CTRL+V) og klikk á Góðtak.', + cutError : 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (Ctrl/Cmd+X).', + copyError : 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (Ctrl/Cmd+C).', + 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.', pasteArea : 'Paste Area' // MISSING }, pastefromword : { - confirmCleanup : 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING + confirmCleanup : 'Teksturin, tú roynir at seta inn, sýnist at stava frá Word. Skal teksturin reinsast fyrst?', toolbar : 'Innrita frá Word', title : 'Innrita frá Word', - error : 'It was not possible to clean up the pasted data due to an internal error' // MISSING + error : 'Tað eyðnaðist ikki at reinsa tekstin vegna ein internan feil' }, pasteText : @@ -528,6 +536,7 @@ CKEDITOR.lang['fo'] = { button : 'Skabelónir', title : 'Innihaldsskabelónir', + options : 'Template Options', // MISSING insertOption : 'Yvirskriva núverandi innihald', selectPromptMsg : 'Vinarliga vel ta skabelón, ið skal opnast í tekstviðgeranum
    (Hetta yvirskrivar núverandi innihald):', emptyListMsg : '(Ongar skabelónir tøkar)' @@ -538,10 +547,10 @@ CKEDITOR.lang['fo'] = stylesCombo : { label : 'Typografi', - panelTitle : 'Formatting Styles', // MISSING - panelTitle1 : 'Block Styles', // MISSING - panelTitle2 : 'Inline Styles', // MISSING - panelTitle3 : 'Object Styles' // MISSING + panelTitle : 'Formatterings stílir', + panelTitle1 : 'Blokk stílir', + panelTitle2 : 'Inline stílir', + panelTitle3 : 'Object stílir' }, format : @@ -563,19 +572,19 @@ CKEDITOR.lang['fo'] = div : { - title : 'Create Div Container', // MISSING - toolbar : 'Create Div Container', // MISSING - cssClassInputLabel : 'Stylesheet Classes', // MISSING - styleSelectLabel : 'Style', // MISSING - IdInputLabel : 'Id', // MISSING - languageCodeInputLabel : ' Language Code', // MISSING - inlineStyleInputLabel : 'Inline Style', // MISSING - advisoryTitleInputLabel : 'Advisory Title', // MISSING - langDirLabel : 'Language Direction', // MISSING - langDirLTRLabel : 'Left to Right (LTR)', // MISSING - langDirRTLLabel : 'Right to Left (RTL)', // MISSING - edit : 'Edit Div', // MISSING - remove : 'Remove Div' // MISSING + title : 'Ger Div Container', + toolbar : 'Ger Div Container', + cssClassInputLabel : 'Stylesheet Classes', + styleSelectLabel : 'Style', + IdInputLabel : 'Id', + languageCodeInputLabel : ' Language Code', + inlineStyleInputLabel : 'Inline Style', + advisoryTitleInputLabel : 'Advisory Title', + langDirLabel : 'Language Direction', + langDirLTRLabel : 'Vinstru til høgru (LTR)', + langDirRTLLabel : 'Høgru til vinstru (RTL)', + edit : 'Redigera Div', + remove : 'Strika Div' }, font : @@ -647,48 +656,48 @@ CKEDITOR.lang['fo'] = scayt : { - title : 'Spell Check As You Type', // MISSING - enable : 'Enable SCAYT', // MISSING - disable : 'Disable SCAYT', // MISSING - about : 'About SCAYT', // MISSING - toggle : 'Toggle SCAYT', // MISSING - options : 'Options', // MISSING - langs : 'Languages', // MISSING - moreSuggestions : 'More suggestions', // MISSING - ignore : 'Ignore', // MISSING - ignoreAll : 'Ignore All', // MISSING - addWord : 'Add Word', // MISSING - emptyDic : 'Dictionary name should not be empty.', // MISSING - optionsTab : 'Options', // MISSING - languagesTab : 'Languages', // MISSING - dictionariesTab : 'Dictionaries', // MISSING - aboutTab : 'About' // MISSING + title : 'Kanna stavseting, meðan tú skrivar', + enable : 'Enable SCAYT', + disable : 'Disable SCAYT', + about : 'Um SCAYT', + toggle : 'Toggle SCAYT', + options : 'Uppseting', + langs : 'Tungumál', + moreSuggestions : 'Fleiri tilráðingar', + ignore : 'Ignorera', + ignoreAll : 'Ignorera alt', + addWord : 'Legg orð afturat', + emptyDic : 'Heiti á orðabók eigur ikki at vera tómt.', + optionsTab : 'Uppseting', + languagesTab : 'Tungumál', + dictionariesTab : 'Orðabøkur', + aboutTab : 'Um' }, about : { - title : 'About CKEditor', // MISSING - dlgTitle : 'About CKEditor', // MISSING - moreInfo : 'For licensing information please visit our web site:', // MISSING + title : 'Um CKEditor', + dlgTitle : 'Um CKEditor', + moreInfo : 'Licens upplýsingar finnast á heimasíðu okkara:', copy : 'Copyright © $1. All rights reserved.' // MISSING }, - maximize : 'Maximize', // MISSING - minimize : 'Minimize', // MISSING + maximize : 'Maksimera', + minimize : 'Minimera', fakeobjects : { anchor : 'Anchor', // MISSING flash : 'Flash Animation', // MISSING - div : 'Page Break', // MISSING - unknown : 'Unknown Object' // MISSING + div : 'Síðuskift', + unknown : 'Ókent Object' }, - resize : 'Drag to resize', // MISSING + resize : 'Drag fyri at broyta stødd', colordialog : { - title : 'Select color', // MISSING + title : 'Vel lit', highlight : 'Highlight', // MISSING selected : 'Selected', // MISSING clear : 'Clear' // MISSING diff --git a/_source/lang/fr-ca.js b/_source/lang/fr-ca.js index 987ec01..dd09cf6 100644 --- a/_source/lang/fr-ca.js +++ b/_source/lang/fr-ca.js @@ -110,17 +110,24 @@ CKEDITOR.lang['fr-ca'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Insérer un caractère spécial', - title : 'Insérer un caractère spécial' + title : 'Insérer un caractère spécial', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Insérer/modifier le lien', + other : '', // MISSING menu : 'Modifier le lien', title : 'Propriétés du lien', info : 'Informations sur le lien', @@ -476,7 +483,8 @@ CKEDITOR.lang['fr-ca'] = smiley : { toolbar : 'Emoticon', - title : 'Insérer un Emoticon' + title : 'Insérer un Emoticon', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['fr-ca'] = clipboard : { title : 'Coller', - 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+X).', - copyError : 'Les paramètres de sécurité de votre navigateur empêchent l\'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl+C).', - pasteMsg : 'Veuillez coller dans la zone ci-dessous en utilisant le clavier (Ctrl+V) et appuyer sur OK.', + 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).', + copyError : 'Les paramètres de sécurité de votre navigateur empêchent l\'éditeur de copier automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+C).', + 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.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['fr-ca'] = { button : 'Modèles', title : 'Modèles de contenu', + options : 'Template Options', // MISSING insertOption : 'Remplacer tout le contenu actuel', selectPromptMsg : 'Sélectionner le modèle à ouvrir dans l\'éditeur
    (le contenu actuel sera remplacé):', emptyListMsg : '(Aucun modèle disponible)' diff --git a/_source/lang/fr.js b/_source/lang/fr.js index 8655897..2a9900a 100644 --- a/_source/lang/fr.js +++ b/_source/lang/fr.js @@ -110,17 +110,24 @@ CKEDITOR.lang['fr'] = unavailable : '%1, Indisponible' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Insérer un caractère spécial', - title : 'Sélectionnez un caractère' + title : 'Sélectionnez un caractère', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Lien', + other : '', menu : 'Editer le lien', title : 'Lien', info : 'Infos sur le lien', @@ -476,7 +483,8 @@ CKEDITOR.lang['fr'] = smiley : { toolbar : 'Emoticon', - title : 'Insérer un émoticon' + title : 'Insérer un émoticon', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['fr'] = clipboard : { title : 'Coller', - 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+X).', - 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+C).', - pasteMsg : 'Veuillez coller le texte dans la zone suivante en utilisant le raccourci clavier (Ctrl+V) et cliquez sur OK', + 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).', + 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).', + 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.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['fr'] = { button : 'Modèles', title : 'Contenu des modèles', + options : 'Template Options', // MISSING insertOption : 'Remplacer le contenu actuel', selectPromptMsg : 'Veuillez sélectionner le modèle pour l\'ouvrir dans l\'éditeur', emptyListMsg : '(Aucun modèle disponible)' diff --git a/_source/lang/gl.js b/_source/lang/gl.js index 514514f..b8dd6be 100644 --- a/_source/lang/gl.js +++ b/_source/lang/gl.js @@ -110,17 +110,24 @@ CKEDITOR.lang['gl'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Inserir Carácter Especial', - title : 'Seleccione Caracter Especial' + title : 'Seleccione Caracter Especial', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Inserir/Editar Ligazón', + other : '', menu : 'Editar Ligazón', title : 'Ligazón', info : 'Información da Ligazón', @@ -476,7 +483,8 @@ CKEDITOR.lang['gl'] = smiley : { toolbar : 'Smiley', - title : 'Inserte un Smiley' + title : 'Inserte un Smiley', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['gl'] = clipboard : { title : 'Pegar', - cutError : 'Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de corte. Por favor, use o teclado para iso (Ctrl+X).', - copyError : 'Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de copia. Por favor, use o teclado para iso (Ctrl+C).', - pasteMsg : 'Por favor, pegue dentro do seguinte cadro usando o teclado (Ctrl+V) e pulse OK.', + cutError : 'Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de corte. Por favor, use o teclado para iso (Ctrl/Cmd+X).', + copyError : 'Os axustes de seguridade do seu navegador non permiten que o editor realice automáticamente as tarefas de copia. Por favor, use o teclado para iso (Ctrl/Cmd+C).', + pasteMsg : 'Por favor, pegue dentro do seguinte cadro usando o teclado (Ctrl/Cmd+V) e pulse 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 pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['gl'] = { button : 'Plantillas', title : 'Plantillas de Contido', + options : 'Template Options', // MISSING insertOption : 'Replace actual contents', // MISSING selectPromptMsg : 'Por favor, seleccione a plantilla a abrir no editor
    (o contido actual perderase):', emptyListMsg : '(Non hai plantillas definidas)' diff --git a/_source/lang/gu.js b/_source/lang/gu.js index 3c52a28..47eb24a 100644 --- a/_source/lang/gu.js +++ b/_source/lang/gu.js @@ -110,17 +110,24 @@ CKEDITOR.lang['gu'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'વિશિષ્ટ અક્ષર ઇન્સર્ટ/દાખલ કરવું', - title : 'સ્પેશિઅલ વિશિષ્ટ અક્ષર પસંદ કરો' + title : 'સ્પેશિઅલ વિશિષ્ટ અક્ષર પસંદ કરો', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'લિંક ઇન્સર્ટ/દાખલ કરવી', + other : '', // MISSING menu : ' લિંક એડિટ/માં ફેરફાર કરવો', title : 'લિંક', info : 'લિંક ઇન્ફૉ ટૅબ', @@ -476,7 +483,8 @@ CKEDITOR.lang['gu'] = smiley : { toolbar : 'સ્માઇલી', - title : 'સ્માઇલી પસંદ કરો' + title : 'સ્માઇલી પસંદ કરો', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['gu'] = clipboard : { title : 'પેસ્ટ', - cutError : 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl+X) નો ઉપયોગ કરો.', - copyError : 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી. (Ctrl+C) का प्रयोग करें।', - pasteMsg : 'Ctrl+V નો પ્રયોગ કરી પેસ્ટ કરો', + cutError : 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+X) નો ઉપયોગ કરો.', + copyError : 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+C) का प्रयोग करें।', + pasteMsg : 'Ctrl/Cmd+V નો પ્રયોગ કરી પેસ્ટ કરો', securityMsg : 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસના કારણે,એડિટર તમારા કિલ્પબોર્ડ ડેટા ને કોપી નથી કરી શકતો. તમારે આ વિન્ડોમાં ફરીથી પેસ્ટ કરવું પડશે.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['gu'] = { button : 'ટેમ્પ્લેટ', title : 'કન્ટેન્ટ ટેમ્પ્લેટ', + options : 'Template Options', // MISSING insertOption : 'મૂળ શબ્દને બદલો', selectPromptMsg : 'એડિટરમાં ઓપન કરવા ટેમ્પ્લેટ પસંદ કરો (વર્તમાન કન્ટેન્ટ સેવ નહીં થાય):', emptyListMsg : '(કોઈ ટેમ્પ્લેટ ડિફાઇન નથી)' diff --git a/_source/lang/he.js b/_source/lang/he.js index 7a7d7f3..e1fcdb2 100644 --- a/_source/lang/he.js +++ b/_source/lang/he.js @@ -110,17 +110,24 @@ CKEDITOR.lang['he'] = unavailable : '%1, לא זמין' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'הוספת תו מיוחד', - title : 'בחירת תו מיוחד' + title : 'בחירת תו מיוחד', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'הוספת/עריכת קישור', + other : '<אחר>', menu : 'מאפייני קישור', title : 'קישור', info : 'מידע על הקישור', @@ -476,7 +483,8 @@ CKEDITOR.lang['he'] = smiley : { toolbar : 'סמיילי', - title : 'הוספת סמיילי' + title : 'הוספת סמיילי', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['he'] = clipboard : { title : 'הדבקה', - cutError : 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות גזירה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl+X).', - copyError : 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות העתקה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl+C).', - pasteMsg : 'נא להדביק בתוך הקופסה באמצעות (Ctrl+V) וללחוץ על אישור.', + cutError : 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות גזירה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+X).', + copyError : 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות העתקה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+C).', + pasteMsg : 'נא להדביק בתוך הקופסה באמצעות (Ctrl/Cmd+V) וללחוץ על אישור.', securityMsg : 'עקב הגדרות אבטחה בדפדפן, לא ניתן לגשת אל לוח הגזירים (Clipboard) בצורה ישירה. נא להדביק שוב בחלון זה.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['he'] = { button : 'תבניות', title : 'תביות תוכן', + options : 'Template Options', // MISSING insertOption : 'החלפת תוכן ממשי', selectPromptMsg : 'יש לבחור תבנית לפתיחה בעורך.
    התוכן המקורי ימחק:', emptyListMsg : '(לא הוגדרו תבניות)' diff --git a/_source/lang/hi.js b/_source/lang/hi.js index 6d3ae5f..14e8682 100644 --- a/_source/lang/hi.js +++ b/_source/lang/hi.js @@ -110,17 +110,24 @@ CKEDITOR.lang['hi'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'विशेष करॅक्टर इन्सर्ट करें', - title : 'विशेष करॅक्टर चुनें' + title : 'विशेष करॅक्टर चुनें', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'लिंक इन्सर्ट/संपादन', + other : '<अन्य>', menu : 'लिंक संपादन', title : 'लिंक', info : 'लिंक ', @@ -476,7 +483,8 @@ CKEDITOR.lang['hi'] = smiley : { toolbar : 'स्माइली', - title : 'स्माइली इन्सर्ट करें' + title : 'स्माइली इन्सर्ट करें', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['hi'] = clipboard : { title : 'पेस्ट', - cutError : 'आपके ब्राउज़र की सुरक्षा सॅटिन्ग्स ने कट करने की अनुमति नहीं प्रदान की है। (Ctrl+X) का प्रयोग करें।', - copyError : 'आपके ब्राआउज़र की सुरक्षा सॅटिन्ग्स ने कॉपी करने की अनुमति नहीं प्रदान की है। (Ctrl+C) का प्रयोग करें।', - pasteMsg : 'Ctrl+V का प्रयोग करके पेस्ट करें और ठीक है करें.', + cutError : 'आपके ब्राउज़र की सुरक्षा सॅटिन्ग्स ने कट करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+X) का प्रयोग करें।', + copyError : 'आपके ब्राआउज़र की सुरक्षा सॅटिन्ग्स ने कॉपी करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+C) का प्रयोग करें।', + pasteMsg : 'Ctrl/Cmd+V का प्रयोग करके पेस्ट करें और ठीक है करें.', securityMsg : 'आपके ब्राउज़र की सुरक्षा आपके ब्राउज़र की सुरKश सैटिंग के कारण, एडिटर आपके क्लिपबोर्ड डेटा को नहीं पा सकता है. आपको उसे इस विन्डो में दोबारा पेस्ट करना होगा.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['hi'] = { button : 'टॅम्प्लेट', title : 'कन्टेन्ट टॅम्प्लेट', + options : 'Template Options', // MISSING insertOption : 'मूल शब्दों को बदलें', selectPromptMsg : 'ऍडिटर में ओपन करने हेतु टॅम्प्लेट चुनें(वर्तमान कन्टॅन्ट सेव नहीं होंगे):', emptyListMsg : '(कोई टॅम्प्लेट डिफ़ाइन नहीं किया गया है)' diff --git a/_source/lang/hr.js b/_source/lang/hr.js index b813434..4eb11a5 100644 --- a/_source/lang/hr.js +++ b/_source/lang/hr.js @@ -110,17 +110,24 @@ CKEDITOR.lang['hr'] = unavailable : '%1, nedostupno' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Ubaci posebne znakove', - title : 'Odaberite posebni karakter' + title : 'Odaberite posebni karakter', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Ubaci/promijeni link', + other : '', menu : 'Promijeni link', title : 'Link', info : 'Link Info', @@ -476,7 +483,8 @@ CKEDITOR.lang['hr'] = smiley : { toolbar : 'Smješko', - title : 'Ubaci smješka' + title : 'Ubaci smješka', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['hr'] = clipboard : { title : 'Zalijepi', - cutError : 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl+X).', - copyError : 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl+C).', - pasteMsg : 'Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (Ctrl+V) i kliknite OK.', + cutError : 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+X).', + copyError : 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+C).', + 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.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['hr'] = { button : 'Predlošci', title : 'Predlošci sadržaja', + options : 'Template Options', // MISSING insertOption : 'Zamijeni trenutne sadržaje', selectPromptMsg : 'Molimo odaberite predložak koji želite otvoriti
    (stvarni sadržaj će biti izgubljen):', emptyListMsg : '(Nema definiranih predložaka)' diff --git a/_source/lang/hu.js b/_source/lang/hu.js index 2841793..b360cff 100644 --- a/_source/lang/hu.js +++ b/_source/lang/hu.js @@ -94,11 +94,11 @@ CKEDITOR.lang['hu'] = cancel : 'Mégsem', close : 'Close', // MISSING preview : 'Preview', // MISSING - generalTab : 'General', // MISSING + generalTab : 'Általános', advancedTab : 'További opciók', - validateNumberFailed : 'This value is not a number.', // MISSING - confirmNewPage : 'Any unsaved changes to this content will be lost. Are you sure you want to load new page?', // MISSING - confirmCancel : 'Some of the options have been changed. Are you sure to close the dialog?', // MISSING + validateNumberFailed : 'A mezőbe csak számokat írhat.', + confirmNewPage : 'Minden nem mentett változás el fog veszni! Biztosan be szeretné tölteni az oldalt?', + confirmCancel : 'Az űrlap tartalma megváltozott, ám a változásokat nem rögzítette. Biztosan be szeretné zárni az űrlapot?', options : 'Options', // MISSING target : 'Target', // MISSING targetNew : 'New Window (_blank)', // MISSING @@ -110,17 +110,24 @@ CKEDITOR.lang['hu'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Speciális karakter beillesztése', - title : 'Speciális karakter választása' + title : 'Speciális karakter választása', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Hivatkozás beillesztése/módosítása', + other : '', menu : 'Hivatkozás módosítása', title : 'Hivatkozás tulajdonságai', info : 'Alaptulajdonságok', @@ -136,7 +143,7 @@ CKEDITOR.lang['hu'] = targetFrameName : 'Keret neve', targetPopupName : 'Felugró ablak neve', popupFeatures : 'Felugró ablak jellemzői', - popupResizable : 'Resizable', // MISSING + popupResizable : 'Átméretezés', popupStatusBar : 'Állapotsor', popupLocationBar: 'Címsor', popupToolbar : 'Eszköztár', @@ -148,7 +155,7 @@ CKEDITOR.lang['hu'] = popupLeft : 'Bal pozíció', popupHeight : 'Magasság', popupTop : 'Felső pozíció', - id : 'Id', // MISSING + id : 'Id', langDir : 'Írás iránya', langDirLTR : 'Balról jobbra', langDirRTL : 'Jobbról balra', @@ -193,9 +200,9 @@ CKEDITOR.lang['hu'] = notFoundMsg : 'A keresett szöveg nem található.', matchCase : 'kis- és nagybetű megkülönböztetése', matchWord : 'csak ha ez a teljes szó', - matchCyclic : 'Match cyclic', // MISSING + matchCyclic : 'Ciklikus keresés', replaceAll : 'Az összes cseréje', - replaceSuccessMsg : '%1 occurrence(s) replaced.' // MISSING + replaceSuccessMsg : '%1 egyezőség cserélve.' }, // Table Dialog @@ -221,67 +228,67 @@ CKEDITOR.lang['hu'] = cellPad : 'Cella belső margó', caption : 'Felirat', summary : 'Leírás', - headers : 'Headers', // MISSING - headersNone : 'None', // MISSING - headersColumn : 'First column', // MISSING - headersRow : 'First Row', // MISSING - headersBoth : 'Both', // MISSING - invalidRows : 'Number of rows must be a number greater than 0.', // MISSING - invalidCols : 'Number of columns must be a number greater than 0.', // MISSING - invalidBorder : 'Border size must be a number.', // MISSING - invalidWidth : 'Table width must be a number.', // MISSING - invalidHeight : 'Table height must be a number.', // MISSING - invalidCellSpacing : 'Cell spacing must be a number.', // MISSING - invalidCellPadding : 'Cell padding must be a number.', // MISSING + headers : 'Fejlécek', + headersNone : 'Nincsenek', + headersColumn : 'Első oszlop', + headersRow : 'Első sor', + headersBoth : 'Mindkettő', + invalidRows : 'A sorok számának nagyobbnak kell lenni mint 0.', + invalidCols : 'Az oszlopok számának nagyobbnak kell lenni mint 0.', + invalidBorder : 'A szegélyméret mezőbe csak számokat írhat.', + invalidWidth : 'A szélesség mezőbe csak számokat írhat.', + invalidHeight : 'A magasság mezőbe csak számokat írhat.', + invalidCellSpacing : 'A cella térköz mezőbe csak számokat írhat.', + invalidCellPadding : 'A cella belső margó mezőbe csak számokat írhat.', cell : { menu : 'Cella', - insertBefore : 'Cella beillesztése az aktuális cella elé', - insertAfter : 'Cella beillesztése az aktuális cella mögé', + insertBefore : 'Beszúrás balra', + insertAfter : 'Beszúrás jobbra', deleteCell : 'Cellák törlése', merge : 'Cellák egyesítése', mergeRight : 'Cellák egyesítése jobbra', mergeDown : 'Cellák egyesítése lefelé', splitHorizontal : 'Cellák szétválasztása vízszintesen', splitVertical : 'Cellák szétválasztása függőlegesen', - title : 'Cell Properties', // MISSING - cellType : 'Cell Type', // MISSING - rowSpan : 'Rows Span', // MISSING - colSpan : 'Columns Span', // MISSING - wordWrap : 'Word Wrap', // MISSING - hAlign : 'Horizontal Alignment', // MISSING - vAlign : 'Vertical Alignment', // MISSING - alignTop : 'Top', // MISSING - alignMiddle : 'Middle', // MISSING - alignBottom : 'Bottom', // MISSING - alignBaseline : 'Baseline', // MISSING - bgColor : 'Background Color', // MISSING - borderColor : 'Border Color', // MISSING - data : 'Data', // MISSING - header : 'Header', // MISSING - yes : 'Yes', // MISSING - no : 'No', // MISSING - invalidWidth : 'Cell width must be a number.', // MISSING - invalidHeight : 'Cell height must be a number.', // MISSING - invalidRowSpan : 'Rows span must be a whole number.', // MISSING - invalidColSpan : 'Columns span must be a whole number.', // MISSING + title : 'Cella tulajdonságai', + cellType : 'Cella típusa', + rowSpan : 'Függőleges egyesítés', + colSpan : 'Vízszintes egyesítés', + wordWrap : 'Hosszú sorok törése', + hAlign : 'Vízszintes igazítás', + vAlign : 'Függőleges igazítás', + alignTop : 'Fel', + alignMiddle : 'Középre', + alignBottom : 'Le', + alignBaseline : 'Alapvonalra', + bgColor : 'Háttér színe', + borderColor : 'Keret színe', + data : 'Adat', + header : 'Fejléc', + yes : 'Igen', + no : 'Nem', + invalidWidth : 'A szélesség mezőbe csak számokat írhat.', + invalidHeight : 'A magasság mezőbe csak számokat írhat.', + invalidRowSpan : 'A függőleges egyesítés mezőbe csak számokat írhat.', + invalidColSpan : 'A vízszintes egyesítés mezőbe csak számokat írhat.', chooseColor : 'Choose' // MISSING }, row : { menu : 'Sor', - insertBefore : 'Sor beillesztése az aktuális sor elé', - insertAfter : 'Sor beillesztése az aktuális sor mögé', + insertBefore : 'Beszúrás fölé', + insertAfter : 'Beszúrás alá', deleteRow : 'Sorok törlése' }, column : { menu : 'Oszlop', - insertBefore : 'Oszlop beillesztése az aktuális oszlop elé', - insertAfter : 'Oszlop beillesztése az aktuális oszlop mögé', + insertBefore : 'Beszúrás balra', + insertAfter : 'Beszúrás jobbra', deleteColumn : 'Oszlopok törlése' } }, @@ -313,7 +320,7 @@ CKEDITOR.lang['hu'] = menu : 'Űrlap tulajdonságai', action : 'Adatfeldolgozást végző hivatkozás', method : 'Adatküldés módja', - encoding : 'Encoding' // MISSING + encoding : 'Kódolás' }, // Select Field Dialog. @@ -402,20 +409,20 @@ CKEDITOR.lang['hu'] = flash : { properties : 'Flash tulajdonságai', - propertiesTab : 'Properties', // MISSING + propertiesTab : 'Tulajdonságok', title : 'Flash tulajdonságai', chkPlay : 'Automata lejátszás', chkLoop : 'Folyamatosan', chkMenu : 'Flash menü engedélyezése', - chkFull : 'Allow Fullscreen', // MISSING + chkFull : 'Teljes képernyő engedélyezése', scale : 'Méretezés', scaleAll : 'Mindent mutat', scaleNoBorder : 'Keret nélkül', scaleFit : 'Teljes kitöltés', - access : 'Script Access', // MISSING - accessAlways : 'Always', // MISSING - accessSameDomain: 'Same domain', // MISSING - accessNever : 'Never', // MISSING + access : 'Szkript hozzáférés', + accessAlways : 'Mindig', + accessSameDomain: 'Azonos domainről', + accessNever : 'Soha', align : 'Igazítás', alignLeft : 'Bal', alignAbsBottom : 'Legaljára', @@ -426,37 +433,37 @@ CKEDITOR.lang['hu'] = alignRight : 'Jobbra', alignTextTop : 'Szöveg tetejére', alignTop : 'Tetejére', - quality : 'Quality', // MISSING - qualityBest : 'Best', // MISSING - qualityHigh : 'High', // MISSING - qualityAutoHigh : 'Auto High', // MISSING - qualityMedium : 'Medium', // MISSING - qualityAutoLow : 'Auto Low', // MISSING - qualityLow : 'Low', // MISSING - windowModeWindow: 'Window', // MISSING - windowModeOpaque: 'Opaque', // MISSING - windowModeTransparent : 'Transparent', // MISSING - windowMode : 'Window mode', // MISSING - flashvars : 'Variables for Flash', // MISSING + quality : 'Minőség', + qualityBest : 'Legjobb', + qualityHigh : 'Jó', + qualityAutoHigh : 'Automata jó', + qualityMedium : 'Közepes', + qualityAutoLow : 'Automata gyenge', + qualityLow : 'Gyenge', + windowModeWindow: 'Window', + windowModeOpaque: 'Opaque', + windowModeTransparent : 'Transparent', + windowMode : 'Ablak mód', + flashvars : 'Flash változók', bgcolor : 'Háttérszín', width : 'Szélesség', height : 'Magasság', hSpace : 'Vízsz. táv', vSpace : 'Függ. táv', validateSrc : 'Adja meg a hivatkozás webcímét', - validateWidth : 'Width must be a number.', // MISSING - validateHeight : 'Height must be a number.', // MISSING - validateHSpace : 'HSpace must be a number.', // MISSING - validateVSpace : 'VSpace must be a number.' // MISSING + validateWidth : 'A szélesség mezőbe csak számokat írhat.', + validateHeight : 'A magasság mezőbe csak számokat írhat.', + validateHSpace : 'A vízszintes távolsűág mezőbe csak számokat írhat.', + validateVSpace : 'A függőleges távolsűág mezőbe csak számokat írhat.' }, // Speller Pages Dialog spellCheck : { toolbar : 'Helyesírás-ellenőrzés', - title : 'Spell Check', // MISSING - notAvailable : 'Sorry, but service is unavailable now.', // MISSING - errorLoading : 'Error loading application service host: %s.', // MISSING + title : 'Helyesírás ellenörző', + notAvailable : 'Sajnálom, de a szolgáltatás jelenleg nem elérhető.', + errorLoading : 'Hiba a szolgáltatás host betöltése közben: %s.', notInDic : 'Nincs a szótárban', changeTo : 'Módosítás', btnIgnore : 'Kihagyja', @@ -476,13 +483,14 @@ CKEDITOR.lang['hu'] = smiley : { toolbar : 'Hangulatjelek', - title : 'Hangulatjel beszúrása' + title : 'Hangulatjel beszúrása', + options : 'Smiley Options' // MISSING }, elementsPath : { eleLabel : 'Elements path', // MISSING - eleTitle : '%1 element' // MISSING + eleTitle : '%1 elem' }, numberedlist : 'Számozás', @@ -503,9 +511,9 @@ CKEDITOR.lang['hu'] = clipboard : { title : 'Beilleszté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+X).', - copyError : 'A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a másolás műveletet. Használja az alábbi billentyűkombinációt (Ctrl+X).', - pasteMsg : 'Másolja be az alábbi mezőbe a Ctrl+V billentyűk lenyomásával, majd nyomjon Rendben-t.', + 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).', + copyError : 'A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a másolás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).', + 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.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['hu'] = { button : 'Sablonok', title : 'Elérhető sablonok', + options : 'Template Options', // MISSING insertOption : 'Kicseréli a jelenlegi tartalmat', selectPromptMsg : 'Válassza ki melyik sablon nyíljon meg a szerkesztőben
    (a jelenlegi tartalom elveszik):', emptyListMsg : '(Nincs sablon megadva)' @@ -539,9 +548,9 @@ CKEDITOR.lang['hu'] = { label : 'Stílus', panelTitle : 'Formatting Styles', // MISSING - panelTitle1 : 'Block Styles', // MISSING - panelTitle2 : 'Inline Styles', // MISSING - panelTitle3 : 'Object Styles' // MISSING + panelTitle1 : 'Blokk stílusok', + panelTitle2 : 'Inline stílusok', + panelTitle3 : 'Objektum stílusok' }, format : @@ -581,14 +590,14 @@ CKEDITOR.lang['hu'] = font : { label : 'Betűtípus', - voiceLabel : 'Font', // MISSING + voiceLabel : 'Betűtípus', panelTitle : 'Betűtípus' }, fontSize : { label : 'Méret', - voiceLabel : 'Font Size', // MISSING + voiceLabel : 'Betűméret', panelTitle : 'Méret' }, @@ -603,95 +612,95 @@ CKEDITOR.lang['hu'] = colors : { - '000' : 'Black', // MISSING - '800000' : 'Maroon', // MISSING - '8B4513' : 'Saddle Brown', // MISSING - '2F4F4F' : 'Dark Slate Gray', // MISSING - '008080' : 'Teal', // MISSING - '000080' : 'Navy', // MISSING - '4B0082' : 'Indigo', // MISSING - '696969' : 'Dim Gray', // MISSING - 'B22222' : 'Fire Brick', // MISSING - 'A52A2A' : 'Brown', // MISSING - 'DAA520' : 'Golden Rod', // MISSING - '006400' : 'Dark Green', // MISSING - '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 - '0FF' : 'Cyan', // MISSING - '00F' : 'Blue', // MISSING - 'EE82EE' : 'Violet', // MISSING - 'A9A9A9' : 'Dark Gray', // MISSING - 'FFA07A' : 'Light Salmon', // MISSING - 'FFA500' : 'Orange', // MISSING - 'FFFF00' : 'Yellow', // MISSING - '00FF00' : 'Lime', // MISSING - 'AFEEEE' : 'Pale Turquoise', // MISSING - 'ADD8E6' : 'Light Blue', // MISSING - 'DDA0DD' : 'Plum', // MISSING - 'D3D3D3' : 'Light Grey', // MISSING - 'FFF0F5' : 'Lavender Blush', // MISSING - 'FAEBD7' : 'Antique White', // MISSING - 'FFFFE0' : 'Light Yellow', // MISSING - 'F0FFF0' : 'Honeydew', // MISSING - 'F0FFFF' : 'Azure', // MISSING - 'F0F8FF' : 'Alice Blue', // MISSING - 'E6E6FA' : 'Lavender', // MISSING - 'FFF' : 'White' // MISSING + '000' : 'Fekete', + '800000' : 'Bordó', + '8B4513' : 'Barna', + '2F4F4F' : 'Sötét türkiz', + '008080' : 'Türkiz', + '000080' : 'Király kék', + '4B0082' : 'Indigó kék', + '696969' : 'Szürke', + 'B22222' : 'Tégla vörös', + 'A52A2A' : 'Vörös', + 'DAA520' : 'Arany sárga', + '006400' : 'Sötét zöld', + '40E0D0' : 'Türkiz', + '0000CD' : 'Kék', + '800080' : 'Lila', + '808080' : 'Szürke', + 'F00' : 'Piros', + 'FF8C00' : 'Sötét narancs', + 'FFD700' : 'Arany', + '008000' : 'Zöld', + '0FF' : 'Türkiz', + '00F' : 'Kék', + 'EE82EE' : 'Rózsaszín', + 'A9A9A9' : 'Sötét szürke', + 'FFA07A' : 'Lazac', + 'FFA500' : 'Narancs', + 'FFFF00' : 'Citromsárga', + '00FF00' : 'Neon zöld', + 'AFEEEE' : 'Világos türkiz', + 'ADD8E6' : 'Világos kék', + 'DDA0DD' : 'Világos lila', + 'D3D3D3' : 'Világos szürke', + 'FFF0F5' : 'Lavender Blush', + 'FAEBD7' : 'Törtfehér', + 'FFFFE0' : 'Világos sárga', + 'F0FFF0' : 'Menta', + 'F0FFFF' : 'Azúr kék', + 'F0F8FF' : 'Halvány kék', + 'E6E6FA' : 'Lavender', + 'FFF' : 'Fehér' }, scayt : { - title : 'Spell Check As You Type', // MISSING - enable : 'Enable SCAYT', // MISSING - disable : 'Disable SCAYT', // MISSING - about : 'About SCAYT', // MISSING - toggle : 'Toggle SCAYT', // MISSING - options : 'Options', // MISSING - langs : 'Languages', // MISSING - moreSuggestions : 'More suggestions', // MISSING - ignore : 'Ignore', // MISSING - ignoreAll : 'Ignore All', // MISSING - addWord : 'Add Word', // MISSING - emptyDic : 'Dictionary name should not be empty.', // MISSING - optionsTab : 'Options', // MISSING - languagesTab : 'Languages', // MISSING - dictionariesTab : 'Dictionaries', // MISSING - aboutTab : 'About' // MISSING + title : 'Helyesírás ellenőrzés gépelés közben', + enable : 'SCAYT engedélyezése', + disable : 'SCAYT letiltása', + about : 'SCAYT névjegy', + toggle : 'SCAYT kapcsolása', + options : 'Beállítások', + langs : 'Nyelvek', + moreSuggestions : 'További javaslatok', + ignore : 'Kihagy', + ignoreAll : 'Összes kihagyása', + addWord : 'Szó hozzáadása', + emptyDic : 'A szótár nevét meg kell adni.', + optionsTab : 'Beállítások', + languagesTab : 'Nyelvek', + dictionariesTab : 'Szótár', + aboutTab : 'Névjegy' }, about : { - title : 'About CKEditor', // MISSING - dlgTitle : 'About CKEditor', // MISSING - moreInfo : 'For licensing information please visit our web site:', // MISSING - copy : 'Copyright © $1. All rights reserved.' // MISSING + title : 'CKEditor névjegy', + dlgTitle : 'CKEditor névjegy', + moreInfo : 'Licenszelési információkért kérjük látogassa meg weboldalunkat:', + copy : 'Copyright © $1. Minden jog fenntartva.' }, - maximize : 'Maximize', // MISSING - minimize : 'Minimize', // MISSING + maximize : 'Teljes méret', + minimize : 'Kis méret', fakeobjects : { - anchor : 'Anchor', // MISSING - flash : 'Flash Animation', // MISSING - div : 'Page Break', // MISSING - unknown : 'Unknown Object' // MISSING + anchor : 'Horgony', + flash : 'Flash animáció', + div : 'Oldaltörés', + unknown : 'Ismeretlen objektum' }, - resize : 'Drag to resize', // MISSING + resize : 'Húzza az átméretezéshez', colordialog : { - title : 'Select color', // MISSING - highlight : 'Highlight', // MISSING - selected : 'Selected', // MISSING - clear : 'Clear' // MISSING + title : 'Válasszon színt', + highlight : 'Nagyítás', + selected : 'Kiválasztott', + clear : 'Ürítés' }, toolbarCollapse : 'Collapse Toolbar', // MISSING diff --git a/_source/lang/is.js b/_source/lang/is.js index c83725a..f384c90 100644 --- a/_source/lang/is.js +++ b/_source/lang/is.js @@ -110,17 +110,24 @@ CKEDITOR.lang['is'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Setja inn merki', - title : 'Velja tákn' + title : 'Velja tákn', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Stofna/breyta stiklu', + other : '', menu : 'Breyta stiklu', title : 'Stikla', info : 'Almennt', @@ -476,7 +483,8 @@ CKEDITOR.lang['is'] = smiley : { toolbar : 'Svipur', - title : 'Velja svip' + title : 'Velja svip', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['is'] = clipboard : { title : 'Líma', - cutError : 'Öryggisstillingar vafrans þíns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið í klippa (Ctrl+X).', - copyError : 'Öryggisstillingar vafrans þíns leyfa ekki afritun texta með músaraðgerð. Notaðu lyklaborðið í afrita (Ctrl+C).', - pasteMsg : 'Límdu í svæðið hér að neðan og (Ctrl+V) og smelltu á OK.', + cutError : 'Öryggisstillingar vafrans þíns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið í klippa (Ctrl/Cmd+X).', + copyError : 'Öryggisstillingar vafrans þíns leyfa ekki afritun texta með músaraðgerð. Notaðu lyklaborðið í afrita (Ctrl/Cmd+C).', + 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.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['is'] = { button : 'Sniðmát', title : 'Innihaldssniðmát', + options : 'Template Options', // MISSING insertOption : 'Skipta út raunverulegu innihaldi', selectPromptMsg : 'Veldu sniðmát til að opna í ritlinum.
    (Núverandi innihald víkur fyrir því!):', emptyListMsg : '(Ekkert sniðmát er skilgreint!)' diff --git a/_source/lang/it.js b/_source/lang/it.js index 221b750..265de8a 100644 --- a/_source/lang/it.js +++ b/_source/lang/it.js @@ -110,17 +110,24 @@ CKEDITOR.lang['it'] = unavailable : '%1, non disponibile' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Inserisci carattere speciale', - title : 'Seleziona carattere speciale' + title : 'Seleziona carattere speciale', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Inserisci/Modifica collegamento', + other : '', menu : 'Modifica collegamento', title : 'Collegamento', info : 'Informazioni collegamento', @@ -476,7 +483,8 @@ CKEDITOR.lang['it'] = smiley : { toolbar : 'Emoticon', - title : 'Inserisci emoticon' + title : 'Inserisci emoticon', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['it'] = clipboard : { title : 'Incolla', - cutError : 'Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl+X).', - copyError : 'Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl+C).', - pasteMsg : 'Incolla il testo all\'interno dell\'area sottostante usando la scorciatoia di tastiere (Ctrl+V) e premi OK.', + cutError : 'Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+X).', + copyError : 'Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+C).', + 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.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['it'] = { button : 'Modelli', title : 'Contenuto dei modelli', + options : 'Template Options', // MISSING insertOption : 'Cancella il contenuto corrente', selectPromptMsg : 'Seleziona il modello da aprire nell\'editor
    (il contenuto attuale verrà eliminato):', emptyListMsg : '(Nessun modello definito)' diff --git a/_source/lang/ja.js b/_source/lang/ja.js index e80e209..80915fa 100644 --- a/_source/lang/ja.js +++ b/_source/lang/ja.js @@ -110,17 +110,24 @@ CKEDITOR.lang['ja'] = unavailable : '%1, 利用不可能' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : '特殊文字挿入', - title : '特殊文字選択' + title : '特殊文字選択', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'リンク挿入/編集', + other : '<その他の>', menu : 'リンク編集', title : 'ハイパーリンク', info : 'ハイパーリンク 情報', @@ -476,7 +483,8 @@ CKEDITOR.lang['ja'] = smiley : { toolbar : '絵文字', - title : '顔文字挿入' + title : '顔文字挿入', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['ja'] = clipboard : { title : '貼り付け', - cutError : 'ブラウザーのセキュリティ設定によりエディタの切り取り操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl+X)を使用してください。', - copyError : 'ブラウザーのセキュリティ設定によりエディタのコピー操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl+C)を使用してください。', - pasteMsg : 'キーボード(Ctrl+V)を使用して、次の入力エリア内で貼って、OKを押してください。', + cutError : 'ブラウザーのセキュリティ設定によりエディタの切り取り操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+X)を使用してください。', + copyError : 'ブラウザーのセキュリティ設定によりエディタのコピー操作が自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+C)を使用してください。', + pasteMsg : 'キーボード(Ctrl/Cmd+V)を使用して、次の入力エリア内で貼って、OKを押してください。', securityMsg : 'ブラウザのセキュリティ設定により、エディタはクリップボード・データに直接アクセスすることができません。このウィンドウは貼り付け操作を行う度に表示されます。', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['ja'] = { button : 'テンプレート(雛形)', title : 'テンプレート内容', + options : 'Template Options', // MISSING insertOption : '現在のエディタの内容と置換えをします', selectPromptMsg : 'エディターで使用するテンプレートを選択してください。
    (現在のエディタの内容は失われます):', emptyListMsg : '(テンプレートが定義されていません)' diff --git a/_source/lang/km.js b/_source/lang/km.js index 3774a48..f4433ae 100644 --- a/_source/lang/km.js +++ b/_source/lang/km.js @@ -110,17 +110,24 @@ CKEDITOR.lang['km'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'បន្ថែមអក្សរពិសេស', - title : 'តូអក្សរពិសេស' + title : 'តូអក្សរពិសេស', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'បន្ថែម/កែប្រែ ឈ្នាប់', + other : '', // MISSING menu : 'កែប្រែឈ្នាប់', title : 'ឈ្នាប់', info : 'ពត៌មានអំពីឈ្នាប់', @@ -476,7 +483,8 @@ CKEDITOR.lang['km'] = smiley : { toolbar : 'រូបភាព', - title : 'បញ្ជូលរូបភាព' + title : 'បញ្ជូលរូបភាព', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['km'] = clipboard : { title : 'ចំលងដាក់', - cutError : 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ\u200bមិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ កាត់អត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl+X) ។', - copyError : 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ\u200bមិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ ចំលងអត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl+C)។', - pasteMsg : 'សូមចំលងអត្ថបទទៅដាក់ក្នុងប្រអប់ដូចខាងក្រោមដោយប្រើប្រាស់ ឃី \u200b(Ctrl+V) ហើយចុច OK ។', + cutError : 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ\u200bមិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ កាត់អត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl/Cmd+X) ។', + copyError : 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ\u200bមិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ ចំលងអត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl/Cmd+C)។', + pasteMsg : 'សូមចំលងអត្ថបទទៅដាក់ក្នុងប្រអប់ដូចខាងក្រោមដោយប្រើប្រាស់ ឃី \u200b(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 pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['km'] = { button : 'ឯកសារគំរូ', title : 'ឯកសារគំរូ របស់អត្ថន័យ', + options : 'Template Options', // MISSING insertOption : 'Replace actual contents', // MISSING selectPromptMsg : 'សូមជ្រើសរើសឯកសារគំរូ ដើម្បីបើកនៅក្នុងកម្មវិធីតាក់តែងអត្ថបទ
    (អត្ថបទនឹងបាត់បង់):', emptyListMsg : '(ពុំមានឯកសារគំរូត្រូវបានកំណត់)' diff --git a/_source/lang/ko.js b/_source/lang/ko.js index 4b5ed07..42c7082 100644 --- a/_source/lang/ko.js +++ b/_source/lang/ko.js @@ -110,17 +110,24 @@ CKEDITOR.lang['ko'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : '특수문자 삽입', - title : '특수문자 선택' + title : '특수문자 선택', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : '링크 삽입/변경', + other : '<기타>', menu : '링크 수정', title : '링크', info : '링크 정보', @@ -476,7 +483,8 @@ CKEDITOR.lang['ko'] = smiley : { toolbar : '아이콘', - title : '아이콘 삽입' + title : '아이콘 삽입', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['ko'] = clipboard : { title : '붙여넣기', - cutError : '브라우저의 보안설정때문에 잘라내기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl+X).', - copyError : '브라우저의 보안설정때문에 복사하기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl+C).', - pasteMsg : '키보드의 (Ctrl+V) 를 이용해서 상자안에 붙여넣고 OK 를 누르세요.', + cutError : '브라우저의 보안설정때문에 잘라내기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl/Cmd+X).', + copyError : '브라우저의 보안설정때문에 복사하기 기능을 실행할 수 없습니다. 키보드 명령을 사용하십시요. (Ctrl/Cmd+C).', + pasteMsg : '키보드의 (Ctrl/Cmd+V) 를 이용해서 상자안에 붙여넣고 OK 를 누르세요.', securityMsg : '브러우저 보안 설정으로 인해, 클립보드의 자료를 직접 접근할 수 없습니다. 이 창에 다시 붙여넣기 하십시오.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['ko'] = { button : '템플릿', title : '내용 템플릿', + options : 'Template Options', // MISSING insertOption : '현재 내용 바꾸기', selectPromptMsg : '에디터에서 사용할 템플릿을 선택하십시요.
    (지금까지 작성된 내용은 사라집니다.):', emptyListMsg : '(템플릿이 없습니다.)' diff --git a/_source/lang/lt.js b/_source/lang/lt.js index 313dc7f..a58b103 100644 --- a/_source/lang/lt.js +++ b/_source/lang/lt.js @@ -110,17 +110,24 @@ CKEDITOR.lang['lt'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Įterpti specialų simbolį', - title : 'Pasirinkite specialų simbolį' + title : 'Pasirinkite specialų simbolį', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Įterpti/taisyti nuorodą', + other : '', menu : 'Taisyti nuorodą', title : 'Nuoroda', info : 'Nuorodos informacija', @@ -476,7 +483,8 @@ CKEDITOR.lang['lt'] = smiley : { toolbar : 'Veideliai', - title : 'Įterpti veidelį' + title : 'Įterpti veidelį', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['lt'] = clipboard : { title : 'Įdėti', - cutError : 'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti iškirpimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl+X).', - copyError : 'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti kopijavimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl+C).', - pasteMsg : 'Žemiau esančiame įvedimo lauke įdėkite tekstą, naudodami klaviatūrą (Ctrl+V) ir paspauskite mygtuką OK.', + 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).', + copyError : 'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti kopijavimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl/Cmd+C).', + 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ą.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['lt'] = { button : 'Šablonai', title : 'Turinio šablonai', + options : 'Template Options', // MISSING insertOption : 'Pakeisti dabartinį turinį pasirinktu šablonu', selectPromptMsg : 'Pasirinkite norimą šabloną
    (Dėmesio! esamas turinys bus prarastas):', emptyListMsg : '(Šablonų sąrašas tuščias)' diff --git a/_source/lang/lv.js b/_source/lang/lv.js index 6f51923..f847aad 100644 --- a/_source/lang/lv.js +++ b/_source/lang/lv.js @@ -110,17 +110,24 @@ CKEDITOR.lang['lv'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Ievietot speciālo simbolu', - title : 'Ievietot īpašu simbolu' + title : 'Ievietot īpašu simbolu', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Ievietot/Labot hipersaiti', + other : '', menu : 'Labot hipersaiti', title : 'Hipersaite', info : 'Hipersaites informācija', @@ -476,7 +483,8 @@ CKEDITOR.lang['lv'] = smiley : { toolbar : 'Smaidiņi', - title : 'Ievietot smaidiņu' + title : 'Ievietot smaidiņu', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['lv'] = clipboard : { title : 'Ievietot', - cutError : 'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt izgriešanas darbību. Lūdzu, izmantojiet (Ctrl+X, lai veiktu šo darbību.', - copyError : 'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt kopēšanas darbību. Lūdzu, izmantojiet (Ctrl+C), lai veiktu šo darbību.', - pasteMsg : 'Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatūru (Ctrl+V) un apstipriniet ar Darīts!.', + cutError : 'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt izgriešanas darbību. Lūdzu, izmantojiet (Ctrl/Cmd+X, lai veiktu šo darbību.', + copyError : 'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj editoram automātiski veikt kopēšanas darbību. Lūdzu, izmantojiet (Ctrl/Cmd+C), lai veiktu šo darbību.', + pasteMsg : 'Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatūru (Ctrl/Cmd+V) un apstipriniet ar Darīts!.', 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 pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['lv'] = { button : 'Sagataves', title : 'Satura sagataves', + options : 'Template Options', // MISSING insertOption : 'Replace actual contents', // MISSING selectPromptMsg : 'Lūdzu, norādiet sagatavi, ko atvērt editorā
    (patreizējie dati tiks zaudēti):', emptyListMsg : '(Nav norādītas sagataves)' diff --git a/_source/lang/mn.js b/_source/lang/mn.js index 8af0725..c6bdc6a 100644 --- a/_source/lang/mn.js +++ b/_source/lang/mn.js @@ -110,17 +110,24 @@ CKEDITOR.lang['mn'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Онцгой тэмдэгт оруулах', - title : 'Онцгой тэмдэгт сонгох' + title : 'Онцгой тэмдэгт сонгох', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Линк Оруулах/Засварлах', + other : '', // MISSING menu : 'Холбоос засварлах', title : 'Линк', info : 'Линкийн мэдээлэл', @@ -476,7 +483,8 @@ CKEDITOR.lang['mn'] = smiley : { toolbar : 'Тодорхойлолт', - title : 'Тодорхойлолт оруулах' + title : 'Тодорхойлолт оруулах', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['mn'] = clipboard : { title : 'Буулгах', - cutError : 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl+X) товчны хослолыг ашиглана уу.', - copyError : 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl+C) товчны хослолыг ашиглана уу.', - pasteMsg : '(Ctrl+V) товчийг ашиглан paste хийнэ үү. Мөн OK дар.', + cutError : 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+X) товчны хослолыг ашиглана уу.', + copyError : 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+C) товчны хослолыг ашиглана уу.', + pasteMsg : '(Ctrl/Cmd+V) товчийг ашиглан paste хийнэ үү. Мөн OK дар.', securityMsg : 'Таны үзүүлэгч/browser/-н хамгаалалтын тохиргооноос болоод editor clipboard өгөгдөлрүү шууд хандах боломжгүй. Энэ цонход дахин paste хийхийг оролд.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['mn'] = { button : 'Загварууд', title : 'Загварын агуулга', + options : 'Template Options', // MISSING insertOption : 'Одоогийн агууллагыг дарж бичих', selectPromptMsg : 'Загварыг нээж editor-рүү сонгож оруулна уу
    (Одоогийн агууллагыг устаж магадгүй):', emptyListMsg : '(Загвар тодорхойлогдоогүй байна)' diff --git a/_source/lang/ms.js b/_source/lang/ms.js index 5991f66..0e172de 100644 --- a/_source/lang/ms.js +++ b/_source/lang/ms.js @@ -110,17 +110,24 @@ CKEDITOR.lang['ms'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Masukkan Huruf Istimewa', - title : 'Sila pilih huruf istimewa' + title : 'Sila pilih huruf istimewa', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Masukkan/Sunting Sambungan', + other : '', menu : 'Sunting Sambungan', title : 'Sambungan', info : 'Butiran Sambungan', @@ -476,7 +483,8 @@ CKEDITOR.lang['ms'] = smiley : { toolbar : 'Smiley', - title : 'Masukkan Smiley' + title : 'Masukkan Smiley', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['ms'] = clipboard : { title : 'Tampal', - cutError : 'Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl+X).', - copyError : 'Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl+C).', - pasteMsg : 'Please paste inside the following box using the keyboard (Ctrl+V) and hit OK', // MISSING + cutError : 'Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+X).', + copyError : 'Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+C).', + 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 pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['ms'] = { button : 'Templat', title : 'Templat Kandungan', + options : 'Template Options', // MISSING insertOption : 'Replace actual contents', // MISSING selectPromptMsg : 'Sila pilih templat untuk dibuka oleh editor
    (kandungan sebenar akan hilang):', emptyListMsg : '(Tiada Templat Disimpan)' diff --git a/_source/lang/nb.js b/_source/lang/nb.js index 1834860..07f3bf0 100644 --- a/_source/lang/nb.js +++ b/_source/lang/nb.js @@ -31,11 +31,11 @@ CKEDITOR.lang['nb'] = * Screenreader titles. Please note that screenreaders are not always capable * of reading non-English words. So be careful while translating it. */ - editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING + editorTitle : 'Rikteksteditor, %1, trykk ALT 0 for hjelp.', // ARIA descriptions. - toolbar : 'Toolbar', // MISSING - editor : 'Rich Text Editor', // MISSING + toolbar : 'Verktøylinje', + editor : 'Rikteksteditor', // Toolbar buttons without dialogs. source : 'Kilde', @@ -92,35 +92,42 @@ CKEDITOR.lang['nb'] = cssStyle : 'Stil', ok : 'OK', cancel : 'Avbryt', - close : 'Close', // MISSING - preview : 'Preview', // MISSING + close : 'Lukk', + preview : 'Forhåndsvis', generalTab : 'Generelt', advancedTab : 'Avansert', validateNumberFailed : 'Denne verdien er ikke ett nummer', confirmNewPage : 'Alle endringer som er gjort i dette innholdet vil bli tapt. Er du sikker på at du vil laste en ny side?', confirmCancel : 'Noen av valgene har blitt endret. Er du sikker på at du vil lukke dialogen?', - options : 'Options', // MISSING - target : 'Target', // MISSING - targetNew : 'New Window (_blank)', // MISSING - targetTop : 'Topmost Window (_top)', // MISSING - targetSelf : 'Same Window (_self)', // MISSING - targetParent : 'Parent Window (_parent)', // MISSING + options : 'Valg', + target : 'Mål', + targetNew : 'Nytt vindu (_blank)', + targetTop : 'Hele vindu (_top)', + targetSelf : 'Samme vindu (_self)', + targetParent : 'Foreldrevindu (_parent)', // Put the voice-only part of the label in the span. unavailable : '%1, utilgjenglig' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Sett inn spesielt tegn', - title : 'Velg spesielt tegn' + title : 'Velg spesielt tegn', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Sett inn/Rediger lenke', + other : '', // MISSING menu : 'Rediger lenke', title : 'Lenke', info : 'Lenkeinfo', @@ -128,7 +135,7 @@ CKEDITOR.lang['nb'] = upload : 'Last opp', advanced : 'Avansert', type : 'Lenketype', - toUrl : 'URL', // MISSING + toUrl : 'URL', toAnchor : 'Lenke til anker i teksten', toEmail : 'E-post', targetFrame : '', @@ -215,7 +222,7 @@ CKEDITOR.lang['nb'] = width : 'Bredde', widthPx : 'piksler', widthPc : 'prosent', - widthUnit : 'width unit', // MISSING + widthUnit : 'Bredde-enhet', height : 'Høyde', cellSpace : 'Cellemarg', cellPad : 'Cellepolstring', @@ -378,7 +385,7 @@ CKEDITOR.lang['nb'] = width : 'Bredde', height : 'Høyde', lockRatio : 'Lås forhold', - unlockRatio : 'Unlock Ratio', // MISSING + unlockRatio : 'Ikke lås forhold', resetSize : 'Tilbakestill størrelse', border : 'Ramme', hSpace : 'HMarg', @@ -391,11 +398,11 @@ CKEDITOR.lang['nb'] = button2Img : 'Vil du endre den valgte bildeknappen til ett vanlig bilde?', img2Button : 'Vil du endre det valgte bildet til en bildeknapp?', urlMissing : 'Bildets adresse mangler.', - validateWidth : 'Width must be a whole number.', // MISSING - validateHeight : 'Height must be a whole number.', // MISSING - validateBorder : 'Border must be a whole number.', // MISSING - validateHSpace : 'HSpace must be a whole number.', // MISSING - validateVSpace : 'VSpace must be a whole number.' // MISSING + validateWidth : 'Bredde må være ett nummer.', + validateHeight : 'Høyde må være ett nummer.', + validateBorder : 'Ramme må være ett nummer.', + validateHSpace : 'HSpace må være ett nummer.', + validateVSpace : 'VSpace må være ett nummer.' }, // Flash Dialog @@ -476,12 +483,13 @@ CKEDITOR.lang['nb'] = smiley : { toolbar : 'Smil', - title : 'Sett inn smil' + title : 'Sett inn smil', + options : 'Smiley Options' // MISSING }, elementsPath : { - eleLabel : 'Elements path', // MISSING + eleLabel : 'Element-sti', eleTitle : '%1 element' }, @@ -507,15 +515,15 @@ CKEDITOR.lang['nb'] = copyError : 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snareveien (Ctrl+C).', pasteMsg : 'Vennligst lim inn i den følgende boksen med tastaturet (Ctrl+V) og trykk OK.', securityMsg : 'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.', - pasteArea : 'Paste Area' // MISSING + pasteArea : 'Innlimingsområde' }, pastefromword : { - confirmCleanup : 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING + confirmCleanup : 'Teksten du limer inn ser ut til å være kopiert fra Word. Vil du renske den før du limer den inn?', toolbar : 'Lim inn fra Word', title : 'Lim inn fra Word', - error : 'It was not possible to clean up the pasted data due to an internal error' // MISSING + error : 'Det var ikke mulig å renske den innlimte teksten på grunn av en intern feil' }, pasteText : @@ -528,6 +536,7 @@ CKEDITOR.lang['nb'] = { button : 'Maler', title : 'Innholdsmaler', + options : 'Template Options', // MISSING insertOption : 'Erstatt faktisk innold', selectPromptMsg : 'Velg malen du vil åpne
    (innholdet du har skrevet blir tapt!):', emptyListMsg : '(Ingen maler definert)' @@ -538,7 +547,7 @@ CKEDITOR.lang['nb'] = stylesCombo : { label : 'Stil', - panelTitle : 'Formatting Styles', // MISSING + panelTitle : 'Stilformater', panelTitle1 : 'Blokkstiler', panelTitle2 : 'Inlinestiler', panelTitle3 : 'Objektstiler' @@ -563,19 +572,19 @@ CKEDITOR.lang['nb'] = div : { - title : 'Create Div Container', // MISSING - toolbar : 'Create Div Container', // MISSING - cssClassInputLabel : 'Stylesheet Classes', // MISSING - styleSelectLabel : 'Style', // MISSING - IdInputLabel : 'Id', // MISSING - languageCodeInputLabel : ' Language Code', // MISSING - inlineStyleInputLabel : 'Inline Style', // MISSING + title : 'Sett inn Div Container', + toolbar : 'Sett inn Div Container', + cssClassInputLabel : 'Stilark-klasser', + styleSelectLabel : 'Stil', + IdInputLabel : 'Id', + languageCodeInputLabel : ' Språk-kode', + inlineStyleInputLabel : 'Inlinestiler', advisoryTitleInputLabel : 'Advisory Title', // MISSING - langDirLabel : 'Language Direction', // MISSING - langDirLTRLabel : 'Left to Right (LTR)', // MISSING - langDirRTLLabel : 'Right to Left (RTL)', // MISSING - edit : 'Edit Div', // MISSING - remove : 'Remove Div' // MISSING + langDirLabel : 'Språkretning', + langDirLTRLabel : 'Venstre til høyre (VTH)', + langDirRTLLabel : 'Høyre til venstre (HTV)', + edit : 'Rediger Div', + remove : 'Fjern Div' }, font : @@ -596,53 +605,53 @@ CKEDITOR.lang['nb'] = { textColorTitle : 'Tekstfarge', bgColorTitle : 'Bakgrunnsfarge', - panelTitle : 'Colors', // MISSING + panelTitle : 'Farger', auto : 'Automatisk', more : 'Flere farger...' }, colors : { - '000' : 'Black', // MISSING + '000' : 'Svart', '800000' : 'Maroon', // MISSING '8B4513' : 'Saddle Brown', // MISSING '2F4F4F' : 'Dark Slate Gray', // MISSING '008080' : 'Teal', // MISSING - '000080' : 'Navy', // MISSING + '000080' : 'Marine', '4B0082' : 'Indigo', // MISSING - '696969' : 'Dim Gray', // MISSING + '696969' : 'Svak grå', 'B22222' : 'Fire Brick', // MISSING - 'A52A2A' : 'Brown', // MISSING + 'A52A2A' : 'Brun', 'DAA520' : 'Golden Rod', // MISSING - '006400' : 'Dark Green', // MISSING - '40E0D0' : 'Turquoise', // MISSING - '0000CD' : 'Medium Blue', // MISSING + '006400' : 'Mørk grå', + '40E0D0' : 'Turkis', + '0000CD' : 'Medium Blå', '800080' : 'Purple', // MISSING - '808080' : 'Gray', // MISSING + '808080' : 'Grå', 'F00' : 'Red', // MISSING - 'FF8C00' : 'Dark Orange', // MISSING - 'FFD700' : 'Gold', // MISSING - '008000' : 'Green', // MISSING + 'FF8C00' : 'Mørk oransje', + 'FFD700' : 'gull', + '008000' : 'Grønn', '0FF' : 'Cyan', // MISSING - '00F' : 'Blue', // MISSING - 'EE82EE' : 'Violet', // MISSING - 'A9A9A9' : 'Dark Gray', // MISSING + '00F' : 'Blå', + 'EE82EE' : 'Fiolett', + 'A9A9A9' : 'Mørk grå', 'FFA07A' : 'Light Salmon', // MISSING - 'FFA500' : 'Orange', // MISSING - 'FFFF00' : 'Yellow', // MISSING + 'FFA500' : 'Oransje', + 'FFFF00' : 'gul', '00FF00' : 'Lime', // MISSING 'AFEEEE' : 'Pale Turquoise', // MISSING - 'ADD8E6' : 'Light Blue', // MISSING - 'DDA0DD' : 'Plum', // MISSING - 'D3D3D3' : 'Light Grey', // MISSING + 'ADD8E6' : 'Lys Blå', + 'DDA0DD' : 'Plomme', + 'D3D3D3' : 'Lys grå', 'FFF0F5' : 'Lavender Blush', // MISSING - 'FAEBD7' : 'Antique White', // MISSING - 'FFFFE0' : 'Light Yellow', // MISSING + 'FAEBD7' : 'Antikk-hvit', + 'FFFFE0' : 'Lys gul', 'F0FFF0' : 'Honeydew', // MISSING 'F0FFFF' : 'Azure', // MISSING 'F0F8FF' : 'Alice Blue', // MISSING 'E6E6FA' : 'Lavender', // MISSING - 'FFF' : 'White' // MISSING + 'FFF' : 'Hvit' }, scayt : @@ -694,6 +703,6 @@ CKEDITOR.lang['nb'] = clear : 'Tøm' }, - toolbarCollapse : 'Collapse Toolbar', // MISSING - toolbarExpand : 'Expand Toolbar' // MISSING + toolbarCollapse : 'Slå sammen verktøylinje', + toolbarExpand : 'Vis verktøylinje' }; diff --git a/_source/lang/nl.js b/_source/lang/nl.js index 9ee1750..2866f96 100644 --- a/_source/lang/nl.js +++ b/_source/lang/nl.js @@ -110,17 +110,24 @@ CKEDITOR.lang['nl'] = unavailable : '%1, niet beschikbaar' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Speciaal teken invoegen', - title : 'Selecteer speciaal teken' + title : 'Selecteer speciaal teken', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Link invoegen/wijzigen', + other : '', menu : 'Link wijzigen', title : 'Link', info : 'Linkomschrijving', @@ -476,7 +483,8 @@ CKEDITOR.lang['nl'] = smiley : { toolbar : 'Smiley', - title : 'Smiley invoegen' + title : 'Smiley invoegen', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['nl'] = clipboard : { title : 'Plakken', - cutError : 'De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl+X van het toetsenbord.', - copyError : 'De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl+C van het toetsenbord.', - pasteMsg : 'Plak de tekst in het volgende vak gebruik makend van uw toetsenbord (Ctrl+V) en klik op OK.', + cutError : 'De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl/Cmd+X van het toetsenbord.', + copyError : 'De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl/Cmd+C van het toetsenbord.', + pasteMsg : 'Plak de tekst in het volgende vak gebruik makend 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.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['nl'] = { button : 'Sjablonen', title : 'Inhoud sjabonen', + options : 'Template Options', // MISSING insertOption : 'Vervang de huidige inhoud', selectPromptMsg : 'Selecteer het sjabloon dat in de editor geopend moet worden (de actuele inhoud gaat verloren):', emptyListMsg : '(Geen sjablonen gedefinieerd)' diff --git a/_source/lang/no.js b/_source/lang/no.js index 6c4cbab..442fa75 100644 --- a/_source/lang/no.js +++ b/_source/lang/no.js @@ -31,11 +31,11 @@ CKEDITOR.lang['no'] = * Screenreader titles. Please note that screenreaders are not always capable * of reading non-English words. So be careful while translating it. */ - editorTitle : 'Rich text editor, %1, press ALT 0 for help.', // MISSING + editorTitle : 'Rikteksteditor, %1, trykk ALT 0 for hjelp.', // ARIA descriptions. - toolbar : 'Toolbar', // MISSING - editor : 'Rich Text Editor', // MISSING + toolbar : 'Verktøylinje', + editor : 'Rikteksteditor', // Toolbar buttons without dialogs. source : 'Kilde', @@ -92,35 +92,42 @@ CKEDITOR.lang['no'] = cssStyle : 'Stil', ok : 'OK', cancel : 'Avbryt', - close : 'Close', // MISSING - preview : 'Preview', // MISSING + close : 'Lukk', + preview : 'Forhåndsvis', generalTab : 'Generelt', advancedTab : 'Avansert', validateNumberFailed : 'Denne verdien er ikke ett nummer', confirmNewPage : 'Alle endringer som er gjort i dette innholdet vil bli tapt. Er du sikker på at du vil laste en ny side?', confirmCancel : 'Noen av valgene har blitt endret. Er du sikker på at du vil lukke dialogen?', - options : 'Options', // MISSING - target : 'Target', // MISSING - targetNew : 'New Window (_blank)', // MISSING - targetTop : 'Topmost Window (_top)', // MISSING - targetSelf : 'Same Window (_self)', // MISSING - targetParent : 'Parent Window (_parent)', // MISSING + options : 'Valg', + target : 'Mål', + targetNew : 'Nytt vindu (_blank)', + targetTop : 'Hele vindu (_top)', + targetSelf : 'Samme vindu (_self)', + targetParent : 'Foreldrevindu (_parent)', // Put the voice-only part of the label in the span. unavailable : '%1, utilgjenglig' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Sett inn spesielt tegn', - title : 'Velg spesielt tegn' + title : 'Velg spesielt tegn', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Sett inn/Rediger lenke', + other : '', // MISSING menu : 'Rediger lenke', title : 'Lenke', info : 'Lenkeinfo', @@ -128,7 +135,7 @@ CKEDITOR.lang['no'] = upload : 'Last opp', advanced : 'Avansert', type : 'Lenketype', - toUrl : 'URL', // MISSING + toUrl : 'URL', toAnchor : 'Lenke til anker i teksten', toEmail : 'E-post', targetFrame : '', @@ -215,7 +222,7 @@ CKEDITOR.lang['no'] = width : 'Bredde', widthPx : 'piksler', widthPc : 'prosent', - widthUnit : 'width unit', // MISSING + widthUnit : 'Bredde-enhet', height : 'Høyde', cellSpace : 'Cellemarg', cellPad : 'Cellepolstring', @@ -378,7 +385,7 @@ CKEDITOR.lang['no'] = width : 'Bredde', height : 'Høyde', lockRatio : 'Lås forhold', - unlockRatio : 'Unlock Ratio', // MISSING + unlockRatio : 'Ikke lås forhold', resetSize : 'Tilbakestill størrelse', border : 'Ramme', hSpace : 'HMarg', @@ -391,11 +398,11 @@ CKEDITOR.lang['no'] = button2Img : 'Vil du endre den valgte bildeknappen til ett vanlig bilde?', img2Button : 'Vil du endre det valgte bildet til en bildeknapp?', urlMissing : 'Bildets adresse mangler.', - validateWidth : 'Width must be a whole number.', // MISSING - validateHeight : 'Height must be a whole number.', // MISSING - validateBorder : 'Border must be a whole number.', // MISSING - validateHSpace : 'HSpace must be a whole number.', // MISSING - validateVSpace : 'VSpace must be a whole number.' // MISSING + validateWidth : 'Bredde må være ett nummer.', + validateHeight : 'Høyde må være ett nummer.', + validateBorder : 'Ramme må være ett nummer.', + validateHSpace : 'HSpace må være ett nummer.', + validateVSpace : 'VSpace må være ett nummer.' }, // Flash Dialog @@ -476,12 +483,13 @@ CKEDITOR.lang['no'] = smiley : { toolbar : 'Smil', - title : 'Sett inn smil' + title : 'Sett inn smil', + options : 'Smiley Options' // MISSING }, elementsPath : { - eleLabel : 'Elements path', // MISSING + eleLabel : 'Element-sti', eleTitle : '%1 element' }, @@ -507,15 +515,15 @@ CKEDITOR.lang['no'] = copyError : 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snareveien (Ctrl+C).', pasteMsg : 'Vennligst lim inn i den følgende boksen med tastaturet (Ctrl+V) og trykk OK.', securityMsg : 'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må lime det igjen i dette vinduet.', - pasteArea : 'Paste Area' // MISSING + pasteArea : 'Innlimingsområde' }, pastefromword : { - confirmCleanup : 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING + confirmCleanup : 'Teksten du limer inn ser ut til å være kopiert fra Word. Vil du renske den før du limer den inn?', toolbar : 'Lim inn fra Word', title : 'Lim inn fra Word', - error : 'It was not possible to clean up the pasted data due to an internal error' // MISSING + error : 'Det var ikke mulig å renske den innlimte teksten på grunn av en intern feil' }, pasteText : @@ -528,6 +536,7 @@ CKEDITOR.lang['no'] = { button : 'Maler', title : 'Innholdsmaler', + options : 'Template Options', // MISSING insertOption : 'Erstatt faktisk innold', selectPromptMsg : 'Velg malen du vil åpne
    (innholdet du har skrevet blir tapt!):', emptyListMsg : '(Ingen maler definert)' @@ -538,7 +547,7 @@ CKEDITOR.lang['no'] = stylesCombo : { label : 'Stil', - panelTitle : 'Formatting Styles', // MISSING + panelTitle : 'Stilformater', panelTitle1 : 'Blokkstiler', panelTitle2 : 'Inlinestiler', panelTitle3 : 'Objektstiler' @@ -563,19 +572,19 @@ CKEDITOR.lang['no'] = div : { - title : 'Create Div Container', // MISSING - toolbar : 'Create Div Container', // MISSING - cssClassInputLabel : 'Stylesheet Classes', // MISSING - styleSelectLabel : 'Style', // MISSING - IdInputLabel : 'Id', // MISSING - languageCodeInputLabel : ' Language Code', // MISSING - inlineStyleInputLabel : 'Inline Style', // MISSING + title : 'Sett inn Div Container', + toolbar : 'Sett inn Div Container', + cssClassInputLabel : 'Stilark-klasser', + styleSelectLabel : 'Stil', + IdInputLabel : 'Id', + languageCodeInputLabel : ' Språk-kode', + inlineStyleInputLabel : 'Inlinestiler', advisoryTitleInputLabel : 'Advisory Title', // MISSING - langDirLabel : 'Language Direction', // MISSING - langDirLTRLabel : 'Left to Right (LTR)', // MISSING - langDirRTLLabel : 'Right to Left (RTL)', // MISSING - edit : 'Edit Div', // MISSING - remove : 'Remove Div' // MISSING + langDirLabel : 'Språkretning', + langDirLTRLabel : 'Venstre til høyre (VTH)', + langDirRTLLabel : 'Høyre til venstre (HTV)', + edit : 'Rediger Div', + remove : 'Fjern Div' }, font : @@ -596,53 +605,53 @@ CKEDITOR.lang['no'] = { textColorTitle : 'Tekstfarge', bgColorTitle : 'Bakgrunnsfarge', - panelTitle : 'Colors', // MISSING + panelTitle : 'Farger', auto : 'Automatisk', more : 'Flere farger...' }, colors : { - '000' : 'Black', // MISSING + '000' : 'Svart', '800000' : 'Maroon', // MISSING '8B4513' : 'Saddle Brown', // MISSING '2F4F4F' : 'Dark Slate Gray', // MISSING '008080' : 'Teal', // MISSING - '000080' : 'Navy', // MISSING + '000080' : 'Marine', '4B0082' : 'Indigo', // MISSING - '696969' : 'Dim Gray', // MISSING + '696969' : 'Svak grå', 'B22222' : 'Fire Brick', // MISSING - 'A52A2A' : 'Brown', // MISSING + 'A52A2A' : 'Brun', 'DAA520' : 'Golden Rod', // MISSING - '006400' : 'Dark Green', // MISSING - '40E0D0' : 'Turquoise', // MISSING - '0000CD' : 'Medium Blue', // MISSING + '006400' : 'Mørk grå', + '40E0D0' : 'Turkis', + '0000CD' : 'Medium Blå', '800080' : 'Purple', // MISSING - '808080' : 'Gray', // MISSING + '808080' : 'Grå', 'F00' : 'Red', // MISSING - 'FF8C00' : 'Dark Orange', // MISSING - 'FFD700' : 'Gold', // MISSING - '008000' : 'Green', // MISSING + 'FF8C00' : 'Mørk oransje', + 'FFD700' : 'gull', + '008000' : 'Grønn', '0FF' : 'Cyan', // MISSING - '00F' : 'Blue', // MISSING - 'EE82EE' : 'Violet', // MISSING - 'A9A9A9' : 'Dark Gray', // MISSING + '00F' : 'Blå', + 'EE82EE' : 'Fiolett', + 'A9A9A9' : 'Mørk grå', 'FFA07A' : 'Light Salmon', // MISSING - 'FFA500' : 'Orange', // MISSING - 'FFFF00' : 'Yellow', // MISSING + 'FFA500' : 'Oransje', + 'FFFF00' : 'gul', '00FF00' : 'Lime', // MISSING 'AFEEEE' : 'Pale Turquoise', // MISSING - 'ADD8E6' : 'Light Blue', // MISSING - 'DDA0DD' : 'Plum', // MISSING - 'D3D3D3' : 'Light Grey', // MISSING + 'ADD8E6' : 'Lys Blå', + 'DDA0DD' : 'Plomme', + 'D3D3D3' : 'Lys grå', 'FFF0F5' : 'Lavender Blush', // MISSING - 'FAEBD7' : 'Antique White', // MISSING - 'FFFFE0' : 'Light Yellow', // MISSING + 'FAEBD7' : 'Antikk-hvit', + 'FFFFE0' : 'Lys gul', 'F0FFF0' : 'Honeydew', // MISSING 'F0FFFF' : 'Azure', // MISSING 'F0F8FF' : 'Alice Blue', // MISSING 'E6E6FA' : 'Lavender', // MISSING - 'FFF' : 'White' // MISSING + 'FFF' : 'Hvit' }, scayt : @@ -694,6 +703,6 @@ CKEDITOR.lang['no'] = clear : 'Tøm' }, - toolbarCollapse : 'Collapse Toolbar', // MISSING - toolbarExpand : 'Expand Toolbar' // MISSING + toolbarCollapse : 'Slå sammen verktøylinje', + toolbarExpand : 'Vis verktøylinje' }; diff --git a/_source/lang/pl.js b/_source/lang/pl.js index 7f346de..098ba41 100644 --- a/_source/lang/pl.js +++ b/_source/lang/pl.js @@ -110,17 +110,24 @@ CKEDITOR.lang['pl'] = unavailable : '%1, niedostępne' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Wstaw znak specjalny', - title : 'Wybierz znak specjalny' + title : 'Wybierz znak specjalny', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Wstaw/edytuj hiperłącze', + other : '', menu : 'Edytuj hiperłącze', title : 'Hiperłącze', info : 'Informacje ', @@ -476,7 +483,8 @@ CKEDITOR.lang['pl'] = smiley : { toolbar : 'Emotikona', - title : 'Wstaw emotikonę' + title : 'Wstaw emotikonę', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['pl'] = clipboard : { title : 'Wklej', - cutError : 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl+X.', - copyError : 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl+C.', - pasteMsg : 'Proszę wkleić w poniższym polu używając klawiaturowego skrótu (Ctrl+V) i kliknąć OK.', + cutError : 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+X.', + copyError : 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+C.', + pasteMsg : 'Proszę wkleić w poniższym polu używając klawiaturowego skrótu (Ctrl/Cmd+V) i kliknąć OK.', securityMsg : 'Zabezpieczenia przeglądarki uniemożliwiają wklejenie danych bezpośrednio do edytora. Proszę dane wkleić ponownie w tym okienku.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['pl'] = { button : 'Szablony', title : 'Szablony zawartości', + options : 'Template Options', // MISSING insertOption : 'Zastąp aktualną zawartość', selectPromptMsg : 'Wybierz szablon do otwarcia w edytorze
    (obecna zawartość okna edytora zostanie utracona):', emptyListMsg : '(Brak zdefiniowanych szablonów)' diff --git a/_source/lang/pt-br.js b/_source/lang/pt-br.js index b9b8dc4..498f3e0 100644 --- a/_source/lang/pt-br.js +++ b/_source/lang/pt-br.js @@ -110,17 +110,24 @@ CKEDITOR.lang['pt-br'] = unavailable : '%1, indisponível' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Inserir Caractere Especial', - title : 'Selecione um Caractere Especial' + title : 'Selecione um Caractere Especial', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Inserir/Editar Hiperlink', + other : '', // MISSING menu : 'Editar Hiperlink', title : 'Hiperlink', info : 'Informações', @@ -476,7 +483,8 @@ CKEDITOR.lang['pt-br'] = smiley : { toolbar : 'Emoticon', - title : 'Inserir Emoticon' + title : 'Inserir Emoticon', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['pt-br'] = clipboard : { title : 'Colar', - 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+X).', - copyError : 'As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl+C).', - pasteMsg : 'Transfira o link usado no box usando o teclado com (Ctrl+V) e OK.', + 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).', + copyError : 'As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl/Cmd+C).', + pasteMsg : 'Transfira o link usado no box 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 novamente nesta janela.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['pt-br'] = { button : 'Modelos de layout', title : 'Modelo de layout do conteúdo', + options : 'Template Options', // MISSING insertOption : 'Substituir o conteúdo atual', selectPromptMsg : 'Selecione um modelo de layout para ser aberto no editor
    (o conteúdo atual será perdido):', emptyListMsg : '(Não foram definidos modelos de layout)' diff --git a/_source/lang/pt.js b/_source/lang/pt.js index 4cf0b1e..d116b60 100644 --- a/_source/lang/pt.js +++ b/_source/lang/pt.js @@ -110,17 +110,24 @@ CKEDITOR.lang['pt'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Inserir Caracter Especial', - title : 'Seleccione um caracter especial' + title : 'Seleccione um caracter especial', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Inserir/Editar Hiperligação', + other : '', menu : 'Editar Hiperligação', title : 'Hiperligação', info : 'Informação de Hiperligação', @@ -476,7 +483,8 @@ CKEDITOR.lang['pt'] = smiley : { toolbar : 'Emoticons', - title : 'Inserir um Emoticon' + title : 'Inserir um Emoticon', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['pt'] = clipboard : { title : 'Colar', - 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+X).', - copyError : 'A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl+C).', - pasteMsg : 'Por favor, cole dentro da seguinte caixa usando o teclado (Ctrl+V) e prima OK.', + 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).', + copyError : 'A configuração de segurança do navegador não permite a execução automática de operações de copiar. Por favor use o teclado (Ctrl/Cmd+C).', + pasteMsg : 'Por favor, cole dentro da seguinte caixa usando o teclado (Ctrl/Cmd+V) e prima 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 pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['pt'] = { button : 'Modelos', title : 'Modelo de Conteúdo', + options : 'Template Options', // MISSING insertOption : 'Replace actual contents', // MISSING selectPromptMsg : 'Por favor, seleccione o modelo a abrir no editor
    (o conteúdo actual será perdido):', emptyListMsg : '(Sem modelos definidos)' diff --git a/_source/lang/ro.js b/_source/lang/ro.js index 8140963..4ebbdf5 100644 --- a/_source/lang/ro.js +++ b/_source/lang/ro.js @@ -110,17 +110,24 @@ CKEDITOR.lang['ro'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Inserează caracter special', - title : 'Selectează caracter special' + title : 'Selectează caracter special', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Inserează/Editează link (legătură web)', + other : '', menu : 'Editează Link', title : 'Link (Legătură web)', info : 'Informaţii despre link (Legătură web)', @@ -476,7 +483,8 @@ CKEDITOR.lang['ro'] = smiley : { toolbar : 'Figură expresivă (Emoticon)', - title : 'Inserează o figură expresivă (Emoticon)' + title : 'Inserează o figură expresivă (Emoticon)', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['ro'] = clipboard : { title : 'Adaugă', - 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+X).', - 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+C).', - pasteMsg : 'Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (Ctrl+V) şi apăsaţi OK.', + 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).', + 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).', + 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ă.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['ro'] = { button : 'Template-uri (şabloane)', title : 'Template-uri (şabloane) de conţinut', + options : 'Template Options', // MISSING insertOption : 'Înlocuieşte cuprinsul actual', selectPromptMsg : 'Vă rugăm selectaţi template-ul (şablonul) ce se va deschide în editor
    (conţinutul actual va fi pierdut):', emptyListMsg : '(Niciun template (şablon) definit)' diff --git a/_source/lang/ru.js b/_source/lang/ru.js index 377bd6e..8eff8e3 100644 --- a/_source/lang/ru.js +++ b/_source/lang/ru.js @@ -110,17 +110,24 @@ CKEDITOR.lang['ru'] = unavailable : '%1, недоступно' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Вставить специальный символ', - title : 'Выберите специальный символ' + title : 'Выберите специальный символ', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Вставить/Редактировать ссылку', + other : '<другой>', menu : 'Вставить ссылку', title : 'Ссылка', info : 'Информация ссылки', @@ -476,7 +483,8 @@ CKEDITOR.lang['ru'] = smiley : { toolbar : 'Смайлик', - title : 'Вставить смайлик' + title : 'Вставить смайлик', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['ru'] = clipboard : { title : 'Вставить', - cutError : 'Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции вырезания. Пожалуйста, используйте клавиатуру для этого (Ctrl+X).', - copyError : 'Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции копирования. Пожалуйста, используйте клавиатуру для этого (Ctrl+C).', - pasteMsg : 'Пожалуйста, вставьте текст в прямоугольник, используя сочетание клавиш (Ctrl+V), и нажмите OK.', + cutError : 'Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции вырезания. Пожалуйста, используйте клавиатуру для этого (Ctrl/Cmd+X).', + copyError : 'Настройки безопасности вашего браузера не позволяют редактору автоматически выполнять операции копирования. Пожалуйста, используйте клавиатуру для этого (Ctrl/Cmd+C).', + pasteMsg : 'Пожалуйста, вставьте текст в прямоугольник, используя сочетание клавиш (Ctrl/Cmd+V), и нажмите OK.', securityMsg : 'По причине настроек безопасности браузера, редактор не имеет доступа к данным буфера обмена напрямую. Вам необходимо вставить текст снова в это окно.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['ru'] = { button : 'Шаблоны', title : 'Шаблоны содержимого', + options : 'Template Options', // MISSING insertOption : 'Заменить текущее содержание', selectPromptMsg : 'Пожалуйста, выберете шаблон для открытия в редакторе
    (текущее содержимое будет потеряно):', emptyListMsg : '(Ни одного шаблона не определено)' diff --git a/_source/lang/sk.js b/_source/lang/sk.js index de534d4..77f062a 100644 --- a/_source/lang/sk.js +++ b/_source/lang/sk.js @@ -110,17 +110,24 @@ CKEDITOR.lang['sk'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Vložiť špeciálne znaky', - title : 'Výber špeciálneho znaku' + title : 'Výber špeciálneho znaku', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Vložiť/zmeniť odkaz', + other : '', menu : 'Zmeniť odkaz', title : 'Odkaz', info : 'Informácie o odkaze', @@ -476,7 +483,8 @@ CKEDITOR.lang['sk'] = smiley : { toolbar : 'Smajlíky', - title : 'Vkladanie smajlíkov' + title : 'Vkladanie smajlíkov', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['sk'] = clipboard : { title : 'Vložiť', - cutError : 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru spustiť funkciu pre vystrihnutie zvoleného textu do schránky. Prosím vystrihnite zvolený text do schránky pomocou klávesnice (Ctrl+X).', - copyError : 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru spustiť funkciu pre kopírovanie zvoleného textu do schránky. Prosím skopírujte zvolený text do schránky pomocou klávesnice (Ctrl+C).', - pasteMsg : 'Prosím vložte nasledovný rámček použitím klávesnice (Ctrl+V) a stlačte OK.', + cutError : 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru spustiť funkciu pre vystrihnutie zvoleného textu do schránky. Prosím vystrihnite zvolený text do schránky pomocou klávesnice (Ctrl/Cmd+X).', + copyError : 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru spustiť funkciu pre kopírovanie zvoleného textu do schránky. Prosím skopírujte zvolený text do schránky pomocou klávesnice (Ctrl/Cmd+C).', + pasteMsg : 'Prosím vložte nasledovný rámček použitím klávesnice (Ctrl/Cmd+V) a stlačte OK.', securityMsg : 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru pristupovať priamo k datám v schránke. Musíte ich vložiť znovu do tohto okna.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['sk'] = { button : 'Šablóny', title : 'Šablóny obsahu', + options : 'Template Options', // MISSING insertOption : 'Nahradiť aktuálny obsah', selectPromptMsg : 'Prosím vyberte šablóny na otvorenie v editore
    (súšasný obsah bude stratený):', emptyListMsg : '(žiadne šablóny nenájdené)' diff --git a/_source/lang/sl.js b/_source/lang/sl.js index b6f9531..d2caa28 100644 --- a/_source/lang/sl.js +++ b/_source/lang/sl.js @@ -110,17 +110,24 @@ CKEDITOR.lang['sl'] = unavailable : '%1, nedosegljiv' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Vstavi posebni znak', - title : 'Izberi posebni znak' + title : 'Izberi posebni znak', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Vstavi/uredi povezavo', + other : '', menu : 'Uredi povezavo', title : 'Povezava', info : 'Podatki o povezavi', @@ -476,7 +483,8 @@ CKEDITOR.lang['sl'] = smiley : { toolbar : 'Smeško', - title : 'Vstavi smeška' + title : 'Vstavi smeška', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['sl'] = clipboard : { title : 'Prilepi', - cutError : 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl+X).', - copyError : 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl+C).', - pasteMsg : 'Prosim prilepite v sleči okvir s pomočjo tipkovnice (Ctrl+V) in pritisnite V redu.', + cutError : 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+X).', + copyError : 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+C).', + 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.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['sl'] = { button : 'Predloge', title : 'Vsebinske predloge', + options : 'Template Options', // MISSING insertOption : 'Zamenjaj trenutno vsebino', selectPromptMsg : 'Izberite predlogo, ki jo želite odpreti v urejevalniku
    (trenutna vsebina bo izgubljena):', emptyListMsg : '(Ni pripravljenih predlog)' diff --git a/_source/lang/sr-latn.js b/_source/lang/sr-latn.js index 7f538ff..1edc797 100644 --- a/_source/lang/sr-latn.js +++ b/_source/lang/sr-latn.js @@ -110,17 +110,24 @@ CKEDITOR.lang['sr-latn'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Unesi specijalni karakter', - title : 'Odaberite specijalni karakter' + title : 'Odaberite specijalni karakter', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Unesi/izmeni link', + other : '<остало>', menu : 'Izmeni link', title : 'Link', info : 'Link Info', @@ -476,7 +483,8 @@ CKEDITOR.lang['sr-latn'] = smiley : { toolbar : 'Smajli', - title : 'Unesi smajlija' + title : 'Unesi smajlija', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['sr-latn'] = clipboard : { title : 'Zalepi', - cutError : 'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog isecanja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl+X).', - copyError : 'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl+C).', - pasteMsg : 'Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu prečicu (Ctrl+V) i da pritisnete OK.', + 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).', + copyError : 'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl/Cmd+C).', + pasteMsg : 'Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu prečicu (Ctrl/Cmd+V) i da pritisnete 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 pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['sr-latn'] = { button : 'Obrasci', title : 'Obrasci za sadržaj', + options : 'Template Options', // MISSING insertOption : 'Replace actual contents', // MISSING selectPromptMsg : 'Molimo Vas da odaberete obrazac koji ce biti primenjen na stranicu (trenutni sadržaj ce biti obrisan):', emptyListMsg : '(Nema definisanih obrazaca)' diff --git a/_source/lang/sr.js b/_source/lang/sr.js index 61b1b82..ac13bbd 100644 --- a/_source/lang/sr.js +++ b/_source/lang/sr.js @@ -110,17 +110,24 @@ CKEDITOR.lang['sr'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Унеси специјални карактер', - title : 'Одаберите специјални карактер' + title : 'Одаберите специјални карактер', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Унеси/измени линк', + other : '', // MISSING menu : 'Промени линк', title : 'Линк', info : 'Линк инфо', @@ -476,7 +483,8 @@ CKEDITOR.lang['sr'] = smiley : { toolbar : 'Смајли', - title : 'Унеси смајлија' + title : 'Унеси смајлија', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['sr'] = clipboard : { title : 'Залепи', - cutError : 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског исецања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl+X).', - copyError : 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског копирања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl+C).', - pasteMsg : 'Молимо Вас да залепите унутар доње површине користећи тастатурну пречицу (Ctrl+V) и да притиснете OK.', + cutError : 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског исецања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+X).', + copyError : 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског копирања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+C).', + 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 pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['sr'] = { button : 'Обрасци', title : 'Обрасци за садржај', + options : 'Template Options', // MISSING insertOption : 'Replace actual contents', // MISSING selectPromptMsg : 'Молимо Вас да одаберете образац који ће бити примењен на страницу (тренутни садржај ће бити обрисан):', emptyListMsg : '(Нема дефинисаних образаца)' diff --git a/_source/lang/sv.js b/_source/lang/sv.js index 763a591..cf13aab 100644 --- a/_source/lang/sv.js +++ b/_source/lang/sv.js @@ -110,17 +110,24 @@ CKEDITOR.lang['sv'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Klistra in utökat tecken', - title : 'Välj utökat tecken' + title : 'Välj utökat tecken', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Infoga/Redigera länk', + other : '', menu : 'Redigera länk', title : 'Länk', info : 'Länkinformation', @@ -476,7 +483,8 @@ CKEDITOR.lang['sv'] = smiley : { toolbar : 'Smiley', - title : 'Infoga smiley' + title : 'Infoga smiley', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['sv'] = clipboard : { title : 'Klistra in', - cutError : 'Säkerhetsinställningar i Er webläsare tillåter inte åtgården Klipp ut. Använd (Ctrl+X) istället.', - copyError : 'Säkerhetsinställningar i Er webläsare tillåter inte åtgården Kopiera. Använd (Ctrl+C) istället', - pasteMsg : 'Var god och klistra in Er text i rutan nedan genom att använda (Ctrl+V) klicka sen på OK.', + cutError : 'Säkerhetsinställningar i Er webläsare tillåter inte åtgården Klipp ut. Använd (Ctrl/Cmd+X) istället.', + copyError : 'Säkerhetsinställningar i Er webläsare tillåter inte åtgården Kopiera. Använd (Ctrl/Cmd+C) istället', + 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 webläsares säkerhetsinställningar kan verktyget inte få åtkomst till urklippsdatan. Var god och använd detta fönster istället.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['sv'] = { button : 'Sidmallar', title : 'Sidmallar', + options : 'Template Options', // MISSING insertOption : 'Ersätt aktuellt innehåll', selectPromptMsg : 'Var god välj en mall att använda med editorn
    (allt nuvarande innehåll raderas):', emptyListMsg : '(Ingen mall är vald)' diff --git a/_source/lang/th.js b/_source/lang/th.js index aa76481..0c501b8 100644 --- a/_source/lang/th.js +++ b/_source/lang/th.js @@ -110,17 +110,24 @@ CKEDITOR.lang['th'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'แทรกตัวอักษรพิเศษ', - title : 'แทรกตัวอักษรพิเศษ' + title : 'แทรกตัวอักษรพิเศษ', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'แทรก/แก้ไข ลิงค์', + other : '<อื่น ๆ>', menu : 'แก้ไข ลิงค์', title : 'ลิงค์เชื่อมโยงเว็บ อีเมล์ รูปภาพ หรือไฟล์อื่นๆ', info : 'รายละเอียด', @@ -476,7 +483,8 @@ CKEDITOR.lang['th'] = smiley : { toolbar : 'รูปสื่ออารมณ์', - title : 'แทรกสัญลักษณ์สื่ออารมณ์' + title : 'แทรกสัญลักษณ์สื่ออารมณ์', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['th'] = clipboard : { title : 'วาง', - cutError : 'ไม่สามารถตัดข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl และตัว X พร้อมกัน).', - copyError : 'ไม่สามารถสำเนาข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl และตัว C พร้อมกัน).', - pasteMsg : 'กรุณาใช้คีย์บอร์ดเท่านั้น โดยกดปุ๋ม (Ctrl และ V)พร้อมๆกัน และกด OK.', + cutError : 'ไม่สามารถตัดข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว X พร้อมกัน).', + copyError : 'ไม่สามารถสำเนาข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว C พร้อมกัน).', + 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 pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['th'] = { button : 'เทมเพลต', title : 'เทมเพลตของส่วนเนื้อหาเว็บไซต์', + options : 'Template Options', // MISSING insertOption : 'แทนที่เนื้อหาเว็บไซต์ที่เลือก', selectPromptMsg : 'กรุณาเลือก เทมเพลต เพื่อนำไปแก้ไขในอีดิตเตอร์
    (เนื้อหาส่วนนี้จะหายไป):', emptyListMsg : '(ยังไม่มีการกำหนดเทมเพลต)' diff --git a/_source/lang/tr.js b/_source/lang/tr.js index f330874..dbade10 100644 --- a/_source/lang/tr.js +++ b/_source/lang/tr.js @@ -110,17 +110,24 @@ CKEDITOR.lang['tr'] = unavailable : '%1, unavailable' // MISSING }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Özel Karakter Ekle', - title : 'Özel Karakter Seç' + title : 'Özel Karakter Seç', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Köprü Ekle/Düzenle', + other : '', menu : 'Köprü Düzenle', title : 'Köprü', info : 'Köprü Bilgisi', @@ -476,7 +483,8 @@ CKEDITOR.lang['tr'] = smiley : { toolbar : 'İfade', - title : 'İfade Ekle' + title : 'İfade Ekle', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['tr'] = clipboard : { title : 'Yapıştır', - cutError : 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kesme işlemine izin vermiyor. İşlem için (Ctrl+X) tuşlarını kullanın.', - copyError : 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kopyalama işlemine izin vermiyor. İşlem için (Ctrl+C) tuşlarını kullanın.', - pasteMsg : 'Lütfen aşağıdaki kutunun içine yapıştırın. (Ctrl+V) ve Tamam butonunu tıklayın.', + 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.', + copyError : 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kopyalama işlemine izin vermiyor. İşlem için (Ctrl/Cmd+C) tuşlarını kullanın.', + 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..', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['tr'] = { button : 'Şablonlar', title : 'İçerik Şablonları', + options : 'Template Options', // MISSING insertOption : 'Mevcut içerik ile değiştir', selectPromptMsg : 'Düzenleyicide açmak için lütfen bir şablon seçin.
    (hali hazırdaki içerik kaybolacaktır.):', emptyListMsg : '(Belirli bir şablon seçilmedi)' diff --git a/_source/lang/uk.js b/_source/lang/uk.js index 59db2c3..7c7db3d 100644 --- a/_source/lang/uk.js +++ b/_source/lang/uk.js @@ -110,17 +110,24 @@ CKEDITOR.lang['uk'] = unavailable : '%1, не доступне' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Вставити спеціальний символ', - title : 'Оберіть спеціальний символ' + title : 'Оберіть спеціальний символ', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Вставити/Редагувати посилання', + other : '<інший>', menu : 'Вставити посилання', title : 'Посилання', info : 'Інформація посилання', @@ -476,7 +483,8 @@ CKEDITOR.lang['uk'] = smiley : { toolbar : 'Смайлик', - title : 'Вставити смайлик' + title : 'Вставити смайлик', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['uk'] = clipboard : { title : 'Вставити', - cutError : 'Настройки безпеки вашого браузера не дозволяють редактору автоматично виконувати операції вирізування. Будь ласка, використовуйте клавіатуру для цього (Ctrl+X).', - copyError : 'Настройки безпеки вашого браузера не дозволяють редактору автоматично виконувати операції копіювання. Будь ласка, використовуйте клавіатуру для цього (Ctrl+C).', - pasteMsg : 'Будь ласка, вставте з буфера обміну в цю область, користуючись комбінацією клавіш (Ctrl+V) та натисніть OK.', + cutError : 'Настройки безпеки вашого браузера не дозволяють редактору автоматично виконувати операції вирізування. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+X).', + copyError : 'Настройки безпеки вашого браузера не дозволяють редактору автоматично виконувати операції копіювання. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+C).', + pasteMsg : 'Будь ласка, вставте з буфера обміну в цю область, користуючись комбінацією клавіш (Ctrl/Cmd+V) та натисніть OK.', securityMsg : 'Редактор не може отримати прямий доступ до буферу обміну у зв\'язку з налаштуваннями вашого браузера. Вам потрібно вставити інформацію повторно в це вікно.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['uk'] = { button : 'Шаблони', title : 'Шаблони змісту', + options : 'Template Options', // MISSING insertOption : 'Замінити поточний вміст', selectPromptMsg : 'Оберіть, будь ласка, шаблон для відкриття в редакторі
    (поточний зміст буде втрачено):', emptyListMsg : '(Не визначено жодного шаблону)' diff --git a/_source/lang/vi.js b/_source/lang/vi.js index 2b58445..912b77c 100644 --- a/_source/lang/vi.js +++ b/_source/lang/vi.js @@ -110,17 +110,24 @@ CKEDITOR.lang['vi'] = unavailable : '%1, không có' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : 'Chèn Ký tự đặc biệt', - title : 'Hãy chọn Ký tự đặc biệt' + title : 'Hãy chọn Ký tự đặc biệt', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : 'Chèn/Sửa Liên kết', + other : '', menu : 'Sửa Liên kết', title : 'Liên kết', info : 'Thông tin Liên kết', @@ -476,7 +483,8 @@ CKEDITOR.lang['vi'] = smiley : { toolbar : 'Hình biểu lộ cảm xúc (mặt cười)', - title : 'Chèn Hình biểu lộ cảm xúc (mặt cười)' + title : 'Chèn Hình biểu lộ cảm xúc (mặt cười)', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['vi'] = clipboard : { title : 'Dán', - 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+X).', - copyError : '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 sao chép. Hãy sử dụng bàn phím cho lệnh này (Ctrl+C).', - 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+V) và nhấn vào nút Đồng ý.', + 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).', + copyError : '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 sao chép. Hãy sử dụng bàn phím cho lệnh này (Ctrl/Cmd+C).', + 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.', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['vi'] = { button : 'Mẫu dựng sẵn', title : 'Nội dung Mẫu dựng sẵn', + options : 'Template Options', // MISSING insertOption : 'Thay thế nội dung hiện tại', selectPromptMsg : 'Hãy chọn Mẫu dựng sẵn để mở trong trình biên tập
    (nội dung hiện tại sẽ bị mất):', emptyListMsg : '(Không có Mẫu dựng sẵn nào được định nghĩa)' diff --git a/_source/lang/zh-cn.js b/_source/lang/zh-cn.js index 23014d5..a2e8474 100644 --- a/_source/lang/zh-cn.js +++ b/_source/lang/zh-cn.js @@ -110,17 +110,24 @@ CKEDITOR.lang['zh-cn'] = unavailable : '%1, 不可用' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : '插入特殊符号', - title : '选择特殊符号' + title : '选择特殊符号', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : '插入/编辑超链接', + other : '<其他>', menu : '编辑超链接', title : '超链接', info : '超链接信息', @@ -476,7 +483,8 @@ CKEDITOR.lang['zh-cn'] = smiley : { toolbar : '表情符', - title : '插入表情图标' + title : '插入表情图标', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['zh-cn'] = clipboard : { title : '粘贴', - cutError : '您的浏览器安全设置不允许编辑器自动执行剪切操作,请使用键盘快捷键(Ctrl+X)来完成', - copyError : '您的浏览器安全设置不允许编辑器自动执行复制操作,请使用键盘快捷键(Ctrl+C)来完成', - pasteMsg : '请使用键盘快捷键(Ctrl+V)把内容粘贴到下面的方框里,再按 确定', + cutError : '您的浏览器安全设置不允许编辑器自动执行剪切操作,请使用键盘快捷键(Ctrl/Cmd+X)来完成', + copyError : '您的浏览器安全设置不允许编辑器自动执行复制操作,请使用键盘快捷键(Ctrl/Cmd+C)来完成', + pasteMsg : '请使用键盘快捷键(Ctrl/Cmd+V)把内容粘贴到下面的方框里,再按 确定', securityMsg : '因为你的浏览器的安全设置原因,本编辑器不能直接访问你的剪贴板内容,你需要在本窗口重新粘贴一次', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['zh-cn'] = { button : '模板', title : '内容模板', + options : 'Template Options', // MISSING insertOption : '替换当前内容', selectPromptMsg : '请选择编辑器内容模板:', emptyListMsg : '(没有模板)' diff --git a/_source/lang/zh.js b/_source/lang/zh.js index 470dae4..5cbe77b 100644 --- a/_source/lang/zh.js +++ b/_source/lang/zh.js @@ -110,17 +110,24 @@ CKEDITOR.lang['zh'] = unavailable : '%1, 已關閉' }, + contextmenu : + { + options : 'Context Menu Options' // MISSING + }, + // Special char dialog. specialChar : { toolbar : '插入特殊符號', - title : '請選擇特殊符號' + title : '請選擇特殊符號', + options : 'Special Character Options' // MISSING }, // Link dialog. link : { toolbar : '插入/編輯超連結', + other : '<其他>', menu : '編輯超連結', title : '超連結', info : '超連結資訊', @@ -476,7 +483,8 @@ CKEDITOR.lang['zh'] = smiley : { toolbar : '表情符號', - title : '插入表情符號' + title : '插入表情符號', + options : 'Smiley Options' // MISSING }, elementsPath : @@ -503,9 +511,9 @@ CKEDITOR.lang['zh'] = clipboard : { title : '貼上', - cutError : '瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用快捷鍵 (Ctrl+X) 剪下。', - copyError : '瀏覽器的安全性設定不允許編輯器自動執行複製動作。請使用快捷鍵 (Ctrl+C) 複製。', - pasteMsg : '請使用快捷鍵 (Ctrl+V) 貼到下方區域中並按下 確定', + cutError : '瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用快捷鍵 (Ctrl/Cmd+X) 剪下。', + copyError : '瀏覽器的安全性設定不允許編輯器自動執行複製動作。請使用快捷鍵 (Ctrl/Cmd+C) 複製。', + pasteMsg : '請使用快捷鍵 (Ctrl/Cmd+V) 貼到下方區域中並按下 確定', securityMsg : '因為瀏覽器的安全性設定,本編輯器無法直接存取您的剪貼簿資料,請您自行在本視窗進行貼上動作。', pasteArea : 'Paste Area' // MISSING }, @@ -528,6 +536,7 @@ CKEDITOR.lang['zh'] = { button : '樣版', title : '內容樣版', + options : 'Template Options', // MISSING insertOption : '取代原有內容', selectPromptMsg : '請選擇欲開啟的樣版
    (原有的內容將會被清除):', emptyListMsg : '(無樣版)' diff --git a/_source/plugins/basicstyles/plugin.js b/_source/plugins/basicstyles/plugin.js index cf64afc..8bcd1e4 100644 --- a/_source/plugins/basicstyles/plugin.js +++ b/_source/plugins/basicstyles/plugin.js @@ -42,6 +42,7 @@ CKEDITOR.plugins.add( 'basicstyles', }); // Basic Inline Styles. + /** * The style definition to be used to apply the bold style in the text. * @type Object @@ -50,44 +51,51 @@ CKEDITOR.plugins.add( 'basicstyles', * @example * config.coreStyles_bold = { element : 'span', attributes : {'class': 'Bold'} }; */ -CKEDITOR.config.coreStyles_bold = { element : 'strong', overrides : 'b' }; +CKEDITOR.config.coreStyles_bold = { element : 'strong', overrides : 'b' }; + /** * The style definition to be used to apply the italic style in the text. * @type Object * @default { element : 'em', overrides : 'i' } * @example - * CKEDITOR.config.coreStyles_italic = { element : 'span', attributes : {'class': 'Italic'} }; + * config.coreStyles_bold = { element : 'i', overrides : 'em' }; + * @example + * CKEDITOR.config.coreStyles_italic = { element : 'span', attributes : {'class': 'Italic'} }; */ -CKEDITOR.config.coreStyles_italic = { element : 'em', overrides : 'i' }; +CKEDITOR.config.coreStyles_italic = { element : 'em', overrides : 'i' }; + /** * The style definition to be used to apply the underline style in the text. * @type Object * @default { element : 'u' } * @example - * CKEDITOR.config.coreStyles_underline = { element : 'span', attributes : {'class': 'Underline'}}; + * CKEDITOR.config.coreStyles_underline = { element : 'span', attributes : {'class': 'Underline'}}; */ -CKEDITOR.config.coreStyles_underline = { element : 'u' }; +CKEDITOR.config.coreStyles_underline = { element : 'u' }; + /** * The style definition to be used to apply the strike style in the text. * @type Object * @default { element : 'strike' } * @example - * CKEDITOR.config.coreStyles_strike = { element : 'span', attributes : {'class': 'StrikeThrough'}, overrides : 'strike' }; + * CKEDITOR.config.coreStyles_strike = { element : 'span', attributes : {'class': 'StrikeThrough'}, overrides : 'strike' }; */ -CKEDITOR.config.coreStyles_strike = { element : 'strike' }; +CKEDITOR.config.coreStyles_strike = { element : 'strike' }; + /** * The style definition to be used to apply the subscript style in the text. * @type Object * @default { element : 'sub' } * @example - * CKEDITOR.config.coreStyles_subscript = { element : 'span', attributes : {'class': 'Subscript'}, overrides : 'sub' }; + * CKEDITOR.config.coreStyles_subscript = { element : 'span', attributes : {'class': 'Subscript'}, overrides : 'sub' }; */ -CKEDITOR.config.coreStyles_subscript = { element : 'sub' }; +CKEDITOR.config.coreStyles_subscript = { element : 'sub' }; + /** * The style definition to be used to apply the superscript style in the text. * @type Object * @default { element : 'sup' } * @example - * CKEDITOR.config.coreStyles_superscript = { element : 'span', attributes : {'class': 'Superscript'}, overrides : 'sup' }; + * CKEDITOR.config.coreStyles_superscript = { element : 'span', attributes : {'class': 'Superscript'}, overrides : 'sup' }; */ -CKEDITOR.config.coreStyles_superscript = { element : 'sup' }; +CKEDITOR.config.coreStyles_superscript = { element : 'sup' }; diff --git a/_source/plugins/button/plugin.js b/_source/plugins/button/plugin.js index b211a28..54016fb 100644 --- a/_source/plugins/button/plugin.js +++ b/_source/plugins/button/plugin.js @@ -69,9 +69,13 @@ CKEDITOR.ui.button.prototype = */ render : function( editor, output ) { - var env = CKEDITOR.env; + var env = CKEDITOR.env, + id = this._.id = 'cke_' + CKEDITOR.tools.getNextNumber(), + classes = '', + command = this.command, // Get the command name. + clickFn, + index; - var id = this._.id = 'cke_' + CKEDITOR.tools.getNextNumber(); this._.editor = editor; var instance = @@ -90,14 +94,9 @@ CKEDITOR.ui.button.prototype = } }; - var clickFn = CKEDITOR.tools.addFunction( instance.execute, instance ); + instance.clickFn = clickFn = CKEDITOR.tools.addFunction( instance.execute, instance ); - var index = CKEDITOR.ui.button._.instances.push( instance ) - 1; - - var classes = ''; - - // Get the command name. - var command = this.command; + instance.index = index = CKEDITOR.ui.button._.instances.push( instance ) - 1; if ( this.modes ) { @@ -179,7 +178,10 @@ CKEDITOR.ui.button.prototype = if ( this.hasArrow ) { output.push( - '' ); + '' + // BLACK DOWN-POINTING TRIANGLE + + ( CKEDITOR.env.hc ? '▼' : '' ) + + '' ); } output.push( diff --git a/_source/plugins/clipboard/plugin.js b/_source/plugins/clipboard/plugin.js index 8dbacc6..23c58bf 100644 --- a/_source/plugins/clipboard/plugin.js +++ b/_source/plugins/clipboard/plugin.js @@ -28,7 +28,8 @@ For licensing, see LICENSE.html or http://ckeditor.com/license // the command to execute. body.on( command, onExec ); - doc.$.execCommand( command ); + // IE6/7: document.execCommand has problem to paste into positioned element. + ( CKEDITOR.env.version > 7 ? doc.$ : doc.$.selection.createRange() ) [ 'execCommand' ]( command ); body.removeListener( command, onExec ); @@ -188,22 +189,18 @@ For licensing, see LICENSE.html or http://ckeditor.com/license doc.getBody().append( pastebin ); // It's definitely a better user experience if we make the paste-bin pretty unnoticed - // by pulling it off the screen, while this hack will make the paste-bin a control type element - // and that become a selection plain later. - if ( !CKEDITOR.env.ie && mode != 'html' ) - { - pastebin.setStyles( - { - position : 'absolute', - left : '-1000px', - // Position the bin exactly at the position of the selected element - // to avoid any subsequent document scroll. - top : sel.getStartElement().getDocumentPosition().y + 'px', - width : '1px', - height : '1px', - overflow : 'hidden' - }); - } + // by pulling it off the screen. + pastebin.setStyles( + { + position : 'absolute', + left : '-1000px', + // Position the bin exactly at the position of the selected element + // to avoid any subsequent document scroll. + top : sel.getStartElement().getDocumentPosition().y + 'px', + width : '1px', + height : '1px', + overflow : 'hidden' + }); var bms = sel.createBookmarks(); diff --git a/_source/plugins/colorbutton/plugin.js b/_source/plugins/colorbutton/plugin.js index c87d068..2a14bb0 100644 --- a/_source/plugins/colorbutton/plugin.js +++ b/_source/plugins/colorbutton/plugin.js @@ -86,13 +86,25 @@ CKEDITOR.plugins.add( 'colorbutton', panel.hide(); - var style = new CKEDITOR.style( config['colorButton_' + type + 'Style'], color && { color : color } ); editor.fire( 'saveSnapshot' ); + + // Clean up any conflicting style within the range. + new CKEDITOR.style( config['colorButton_' + type + 'Style'], { color : 'inherit' } ).remove( editor.document ); + if ( color ) - style.apply( editor.document ); - else - style.remove( editor.document ); + { + var colorStyle = config['colorButton_' + type + 'Style']; + + colorStyle.childRule = type == 'back' ? + // It's better to apply background color as the innermost style. (#3599) + function(){ return false; } : + // Fore color style must be applied inside links instead of around it. + function( element ){ return element.getName() != 'a'; }; + + new CKEDITOR.style( colorStyle, { color : color } ).apply( editor.document ); + } + editor.fire( 'saveSnapshot' ); }); @@ -122,13 +134,21 @@ CKEDITOR.plugins.add( 'colorbutton', if ( ( i % 8 ) === 0 ) output.push( '' ); - var colorCode = colors[ i ]; + var parts = colors[ i ].split( '/' ), + colorName = parts[ 0 ], + colorCode = parts[ 1 ] || colorName; + + // 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 + if (!parts[1]) + colorName = '#' + colorName; + var colorLabel = editor.lang.colors[ colorCode ] || colorCode; output.push( '' + '
    ' + '' + @@ -172,11 +192,17 @@ CKEDITOR.config.colorButton_enableMore = true; /** * Defines the colors to be displayed in the color selectors. It's a string * containing the hexadecimal notation for HTML colors, without the "#" prefix. + * + * Since 3.3: A name may be optionally defined by prefixing the entries with the + * name and the slash character. For example, "FontColor1/FF9900" will be + * displayed as the color #FF9900 in the selector, but will be outputted as "FontColor1". * @type String * @default '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' * @example * // Brazil colors only. * config.colorButton_colors = '00923E,F8C100,28166F'; + * @example + * config.colorButton_colors = 'FontColor1/FF9900,FontColor2/0066CC,FontColor3/F00' */ CKEDITOR.config.colorButton_colors = '000,800000,8B4513,2F4F4F,008080,000080,4B0082,696969,' + @@ -200,13 +226,7 @@ CKEDITOR.config.colorButton_foreStyle = { element : 'span', styles : { 'color' : '#(color)' }, - overrides : [ { element : 'font', attributes : { 'color' : null } } ], - - // Fore color style must be applied inside links instead of around it. - childRule : function( element ) - { - return element.getName() != 'a'; - } + overrides : [ { element : 'font', attributes : { 'color' : null } } ] }; /** diff --git a/_source/plugins/contextmenu/plugin.js b/_source/plugins/contextmenu/plugin.js index 60aad92..926333b 100644 --- a/_source/plugins/contextmenu/plugin.js +++ b/_source/plugins/contextmenu/plugin.js @@ -36,14 +36,14 @@ CKEDITOR.plugins.contextMenu = CKEDITOR.tools.createClass( }, this); - this._.definiton = + this.definition = { panel: { className : editor.skinClass + ' cke_contextmenu', attributes : { - 'aria-label' : editor.lang.common.options + 'aria-label' : editor.lang.contextmenu.options } } }; @@ -63,7 +63,7 @@ CKEDITOR.plugins.contextMenu = CKEDITOR.tools.createClass( } else { - menu = this._.menu = new CKEDITOR.menu( editor, this._.definiton ); + menu = this._.menu = new CKEDITOR.menu( editor, this.definition ); menu.onClick = CKEDITOR.tools.bind( function( item ) { menu.hide(); diff --git a/_source/plugins/dialog/plugin.js b/_source/plugins/dialog/plugin.js index 6b5c2e4..ee8d0e6 100644 --- a/_source/plugins/dialog/plugin.js +++ b/_source/plugins/dialog/plugin.js @@ -335,7 +335,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; processed = 1; } - else if ( keystroke == CKEDITOR.ALT + 121 && !me._.tabBarMode ) + 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; @@ -505,8 +505,6 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; for ( i = 0 ; i < buttons.length ; i++ ) this._.buttons[ buttons[i].id ] = buttons[i]; - - CKEDITOR.skins.load( editor, 'dialog' ); }; // Focusable interface. Use it via dialog.addFocusable. @@ -868,7 +866,7 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; children : contents.elements, expand : !!contents.expand, padding : contents.padding, - style : contents.style || 'width: 100%;' + ( CKEDITOR.env.ie6Compat ? '' : 'height: 100%;' ) + style : contents.style || 'width: 100%; height: 100%;' }, pageHtml ); // Create the HTML for the tab and the content block. @@ -893,17 +891,12 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; page.setAttribute( 'aria-labelledby', tabId ); - // If only a single page exist, a different style is used in the central pane. - if ( this._.pageCount === 0 ) - this.parts.dialog.addClass( 'cke_single_page' ); - else - this.parts.dialog.removeClass( 'cke_single_page' ); - // Take records for the tabs and elements created. this._.tabs[ contents.id ] = [ tab, page ]; this._.tabIdList.push( contents.id ); - this._.pageCount++; + !contents.hidden && this._.pageCount++; this._.lastTab = tab; + this.updateStyle(); var contentMap = this._.contents[ contents.id ] = {}, cursor, @@ -961,6 +954,13 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; this._.currentTabIndex = CKEDITOR.tools.indexOf( this._.tabIdList, id ); }, + // Dialog state-specific style updates. + updateStyle : function() + { + // If only a single page shown, a different style is used in the central pane. + this.parts.dialog[ ( this._.pageCount === 1 ? 'add' : 'remove' ) + 'Class' ]( 'cke_single_page' ); + }, + /** * Hides a page's tab away from the dialog. * @param {String} id The page's Id. @@ -970,9 +970,15 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; hidePage : function( id ) { var tab = this._.tabs[id] && this._.tabs[id][0]; - if ( !tab ) + if ( !tab || this._.pageCount == 1 ) return; + // Switch to other tab first when we're hiding the active tab. + else if ( id == this._.currentTabId ) + this.selectPage( getPreviousVisibleTab.call( this ) ); + tab.hide(); + this._.pageCount--; + this.updateStyle(); }, /** @@ -987,6 +993,8 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; if ( !tab ) return; tab.show(); + this._.pageCount++; + this.updateStyle(); }, /** @@ -1269,12 +1277,15 @@ CKEDITOR.DIALOG_RESIZE_BOTH = 3; var defaultDialogDefinition = { - resizable : CKEDITOR.DIALOG_RESIZE_NONE, + resizable : CKEDITOR.DIALOG_RESIZE_BOTH, minWidth : 600, minHeight : 400, buttons : [ CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton ] }; + // The buttons in MacOS Apps are in reverse order #4750 + CKEDITOR.env.mac && defaultDialogDefinition.buttons.reverse(); + // Tool function used to return an item from an array based on its id // property. var getById = function( array, id, recurse ) @@ -2784,10 +2795,11 @@ CKEDITOR.tools.extend( CKEDITOR.editor.prototype, */ openDialog : function( dialogName, callback ) { - var dialogDefinitions = CKEDITOR.dialog._.dialogDefinitions[ dialogName ]; + var dialogDefinitions = CKEDITOR.dialog._.dialogDefinitions[ dialogName ], + dialogSkin = this.skin.dialog; // If the dialogDefinition is already loaded, open it immediately. - if ( typeof dialogDefinitions == 'function' ) + if ( typeof dialogDefinitions == 'function' && dialogSkin._isLoaded ) { var storedDialogs = this._.storedDialogs || ( this._.storedDialogs = {} ); @@ -2809,14 +2821,31 @@ CKEDITOR.tools.extend( CKEDITOR.editor.prototype, me = this; body.setStyle( 'cursor', 'wait' ); - CKEDITOR.scriptLoader.load( CKEDITOR.getUrl( dialogDefinitions ), function() - { - // In case of plugin error, mark it as loading failed. - if ( typeof CKEDITOR.dialog._.dialogDefinitions[ dialogName ] != 'function' ) - CKEDITOR.dialog._.dialogDefinitions[ dialogName ] = 'failed'; - me.openDialog( dialogName, callback ); - body.setStyle( 'cursor', cursor ); - } ); + + function onDialogFileLoaded( success ) + { + var dialogDefinition = CKEDITOR.dialog._.dialogDefinitions[ dialogName ], + skin = me.skin.dialog; + + // Check if both skin part and definition is loaded. + if ( !skin._isLoaded || loadDefinition && typeof success == 'undefined' ) + return; + + // In case of plugin error, mark it as loading failed. + if ( typeof dialogDefinition != 'function' ) + CKEDITOR.dialog._.dialogDefinitions[ dialogName ] = 'failed'; + + me.openDialog( dialogName, callback ); + body.setStyle( 'cursor', cursor ); + } + + if ( typeof dialogDefinitions == 'string' ) + { + var loadDefinition = 1; + CKEDITOR.scriptLoader.load( CKEDITOR.getUrl( dialogDefinitions ), onDialogFileLoaded ); + } + + CKEDITOR.skins.load( this, 'dialog', onDialogFileLoaded ); return null; } diff --git a/_source/plugins/div/dialogs/div.js b/_source/plugins/div/dialogs/div.js index e3b39c3..c1bfb8f 100644 --- a/_source/plugins/div/dialogs/div.js +++ b/_source/plugins/div/dialogs/div.js @@ -436,46 +436,38 @@ // Preparing for the 'elementStyle' field. var dialog = this, - stylesField = this.getContentElement( 'info', 'elementStyle' ), - // Reuse the 'stylescombo' plugin's styles definition. - customStylesConfig = editor.config.stylesCombo_stylesSet, - stylesSetName = customStylesConfig && customStylesConfig.split( ':' )[ 0 ]; + stylesField = this.getContentElement( 'info', 'elementStyle' ); - if ( stylesSetName ) + // Reuse the 'stylescombo' plugin's styles definition. + editor.getStylesSet( function( stylesDefinitions ) { - CKEDITOR.stylesSet.load( stylesSetName, - function( stylesSet ) - { - var stylesDefinitions = stylesSet[ stylesSetName ], - styleName; + var styleName; - if ( stylesDefinitions ) + if ( stylesDefinitions ) + { + // Digg only those styles that apply to 'div'. + for ( var i = 0 ; i < stylesDefinitions.length ; i++ ) + { + var styleDefinition = stylesDefinitions[ i ]; + if ( styleDefinition.element && styleDefinition.element == 'div' ) { - // Digg only those styles that apply to 'div'. - for ( var i = 0 ; i < stylesDefinitions.length ; i++ ) - { - var styleDefinition = stylesDefinitions[ i ]; - if ( styleDefinition.element && styleDefinition.element == 'div' ) - { - styleName = styleDefinition.name; - styles[ styleName ] = new CKEDITOR.style( styleDefinition ); + styleName = styleDefinition.name; + styles[ styleName ] = new CKEDITOR.style( styleDefinition ); - // Populate the styles field options with style name. - stylesField.items.push( [ styleName, styleName ] ); - stylesField.add( styleName, styleName ); - } - } + // Populate the styles field options with style name. + stylesField.items.push( [ styleName, styleName ] ); + stylesField.add( styleName, styleName ); } + } + } + // We should disable the content element + // it if no options are available at all. + stylesField[ stylesField.items.length > 1 ? 'enable' : 'disable' ](); - // We should disable the content element - // it if no options are available at all. - stylesField[ stylesField.items.length > 1 ? 'enable' : 'disable' ](); - - // Now setup the field value manually. - setTimeout( function() { stylesField.setup( dialog._element ); }, 0 ); - } ); - } + // Now setup the field value manually. + setTimeout( function() { stylesField.setup( dialog._element ); }, 0 ); + } ); }, onShow : function() { @@ -492,6 +484,7 @@ }, onOk : function() { + editor.fire( 'saveSnapshot' ); if ( command == 'editdiv' ) containers = [ this._element ]; else @@ -506,6 +499,7 @@ // Remove empty 'style' attribute. !containers[ i ].getAttribute( 'style' ) && containers[ i ].removeAttribute( 'style' ); } + editor.fire( 'saveSnapshot' ); this.hide(); }, diff --git a/_source/plugins/elementspath/plugin.js b/_source/plugins/elementspath/plugin.js index eaab6f8..6dd23c8 100644 --- a/_source/plugins/elementspath/plugin.js +++ b/_source/plugins/elementspath/plugin.js @@ -44,7 +44,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license var idBase = 'cke_elementspath_' + CKEDITOR.tools.getNextNumber() + '_'; - editor._.elementsPath = { idBase : idBase }; + editor._.elementsPath = { idBase : idBase, filters : [] }; editor.on( 'themeSpace', function( event ) { @@ -58,55 +58,69 @@ For licensing, see LICENSE.html or http://ckeditor.com/license editor.on( 'selectionChange', function( ev ) { - var env = CKEDITOR.env; - - var selection = ev.data.selection; - - var element = selection.getStartElement(), + var env = CKEDITOR.env, + selection = ev.data.selection, + element = selection.getStartElement(), html = [], - elementsList = this._.elementsPath.list = []; + editor = ev.editor, + elementsList = editor._.elementsPath.list = [], + filters = editor._.elementsPath.filters; while ( element ) { - var index = elementsList.push( element ) - 1; - var name; - if ( element.getAttribute( '_cke_real_element_type' ) ) - name = element.getAttribute( '_cke_real_element_type' ); - else - name = element.getName(); - - // Use this variable to add conditional stuff to the - // HTML (because we are doing it in reverse order... unshift). - var extra = ''; - - // Some browsers don't cancel key events in the keydown but in the - // keypress. - // TODO: Check if really needed for Gecko+Mac. - if ( env.opera || ( env.gecko && env.mac ) ) - extra += ' onkeypress="return false;"'; - - // With Firefox, we need to force the button to redraw, otherwise it - // will remain in the focus state. - if ( env.gecko ) - extra += ' onblur="this.style.cssText = this.style.cssText;"'; - - var label = editor.lang.elementsPath.eleTitle.replace( /%1/, name ); - html.unshift( - '', - name, - '' + label + '', - '' ); + var ignore = 0; + for ( var i = 0; i < filters.length; i++ ) + { + if ( filters[ i ]( element ) === false ) + { + ignore = 1; + break; + } + } + + if ( !ignore ) + { + var index = elementsList.push( element ) - 1; + var name; + if ( element.getAttribute( '_cke_real_element_type' ) ) + name = element.getAttribute( '_cke_real_element_type' ); + else + name = element.getName(); + + // Use this variable to add conditional stuff to the + // HTML (because we are doing it in reverse order... unshift). + var extra = ''; + + // Some browsers don't cancel key events in the keydown but in the + // keypress. + // TODO: Check if really needed for Gecko+Mac. + if ( env.opera || ( env.gecko && env.mac ) ) + extra += ' onkeypress="return false;"'; + + // With Firefox, we need to force the button to redraw, otherwise it + // will remain in the focus state. + if ( env.gecko ) + extra += ' onblur="this.style.cssText = this.style.cssText;"'; + + var label = editor.lang.elementsPath.eleTitle.replace( /%1/, name ); + html.unshift( + '', + name, + '' + label + '', + '' ); + + } if ( name == 'body' ) break; diff --git a/_source/plugins/enterkey/plugin.js b/_source/plugins/enterkey/plugin.js index 0127ede..cce1208 100644 --- a/_source/plugins/enterkey/plugin.js +++ b/_source/plugins/enterkey/plugin.js @@ -26,6 +26,19 @@ For licensing, see LICENSE.html or http://ckeditor.com/license var doc = range.document; + // Exit the list when we're inside an empty list item block. (#5376) + if ( range.checkStartOfBlock() && range.checkEndOfBlock() ) + { + var path = new CKEDITOR.dom.elementPath( range.startContainer ), + block = path.block; + + if ( block.is( 'li' ) || block.getParent().is( 'li' ) ) + { + editor.execCommand( 'outdent' ); + return; + } + } + // Determine the block element to be used. var blockTag = ( mode == CKEDITOR.ENTER_DIV ? 'div' : 'p' ); @@ -80,13 +93,6 @@ For licensing, see LICENSE.html or http://ckeditor.com/license } else { - - if ( isStartOfBlock && isEndOfBlock && previousBlock.is( 'li' ) ) - { - editor.execCommand( 'outdent' ); - return; - } - var newBlock; if ( previousBlock ) @@ -94,7 +100,8 @@ For licensing, see LICENSE.html or http://ckeditor.com/license // Do not enter this block if it's a header tag, or we are in // a Shift+Enter (#77). Create a new block element instead // (later in the code). - if ( !forceMode && !headerTagRegex.test( previousBlock.getName() ) ) + if ( previousBlock.is( 'li' ) || + !( forceMode || headerTagRegex.test( previousBlock.getName() ) ) ) { // Otherwise, duplicate the previous block. newBlock = previousBlock.clone(); @@ -219,7 +226,8 @@ For licensing, see LICENSE.html or http://ckeditor.com/license isPre = ( startBlockTag == 'pre' ); - if ( isPre ) + // Gecko prefers
    as line-break inside
     (#4711).
    +				if ( isPre && !CKEDITOR.env.gecko )
     					lineBreak = doc.createText( CKEDITOR.env.ie ? '\r' : '\n' );
     				else
     					lineBreak = doc.createElement( 'br' );
    @@ -290,6 +298,8 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
     
     	function enter( editor, mode, forceMode )
     	{
    +		forceMode = editor.config.forceEnterMode || forceMode;
    +
     		// Only effective within document.
     		if ( editor.mode != 'wysiwyg' )
     			return false;
    diff --git a/_source/plugins/filebrowser/plugin.js b/_source/plugins/filebrowser/plugin.js
    index ae628cf..de764f1 100644
    --- a/_source/plugins/filebrowser/plugin.js
    +++ b/_source/plugins/filebrowser/plugin.js
    @@ -378,22 +378,22 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
     		init : function( editor, pluginPath )
     		{
     			editor._.filebrowserFn = CKEDITOR.tools.addFunction( setUrl, editor );
    +		}
    +	} );
     
    -			CKEDITOR.on( 'dialogDefinition', function( evt )
    +	CKEDITOR.on( 'dialogDefinition', function( evt )
    +	{
    +		var definition = evt.data.definition,
    +			element;
    +		// Associate filebrowser to elements with 'filebrowser' attribute.
    +		for ( var i in definition.contents )
    +		{
    +			element = definition.contents[ i ] ;
    +			attachFileBrowser( evt.editor, evt.data.name, definition, element.elements );
    +			if ( element.hidden && element.filebrowser )
     			{
    -				var definition = evt.data.definition,
    -					element;
    -				// Associate filebrowser to elements with 'filebrowser' attribute.
    -				for ( var i in definition.contents )
    -				{
    -					element = definition.contents[ i ] ;
    -					attachFileBrowser( evt.editor, evt.data.name, definition, element.elements );
    -					if ( element.hidden && element.filebrowser )
    -					{
    -						element.hidden = !isConfigured( definition, element[ 'id' ], element.filebrowser );
    -					}
    -				}
    -			} );
    +				element.hidden = !isConfigured( definition, element[ 'id' ], element.filebrowser );
    +			}
     		}
     	} );
     
    diff --git a/_source/plugins/find/dialogs/find.js b/_source/plugins/find/dialogs/find.js
    index 70a082c..dd7048c 100644
    --- a/_source/plugins/find/dialogs/find.js
    +++ b/_source/plugins/find/dialogs/find.js
    @@ -5,7 +5,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
     
     (function()
     {
    -	function guardDomWalkerNonEmptyTextNode( node )
    +	function nonEmptyText( node )
     	{
     		return ( node.type == CKEDITOR.NODE_TEXT && node.getLength() > 0 );
     	}
    @@ -13,11 +13,10 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
     	/**
     	 * Elements which break characters been considered as sequence.
     	*/
    -	function checkCharactersBoundary ( node )
    +	function nonCharactersBoundary ( node )
     	{
    -		var dtd = CKEDITOR.dtd;
    -		return node.isBlockBoundary(
    -			CKEDITOR.tools.extend( {}, dtd.$empty, dtd.$nonEditable ) );
    +		return !( node.type == CKEDITOR.NODE_ELEMENT && node.isBlockBoundary(
    +			CKEDITOR.tools.extend( {}, CKEDITOR.dtd.$empty, CKEDITOR.dtd.$nonEditable ) ) );
     	}
     
     	/**
    @@ -67,8 +66,11 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
     
     	var findDialog = function( editor, startupPage )
     	{
    -		// Style object for highlights.
    -		var highlightStyle = new CKEDITOR.style( editor.config.find_highlight );
    +		// Style object for highlights: (#5018)
    +		// 1. Defined as full match style to avoid compromising ordinary text color styles.
    +		// 2. Must be apply onto inner-most text to avoid conflicting with ordinary text color styles visually.
    +		var highlightStyle = new CKEDITOR.style( CKEDITOR.tools.extend( { fullMatch : true, childRule : function(){ return false; } },
    +			editor.config.find_highlight ) );
     
     		/**
     		 * Iterator which walk through the specified range char by char. By
    @@ -81,8 +83,8 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
     		{
     			var walker =
     				new CKEDITOR.dom.walker( range );
    -			walker[ matchWord ? 'guard' : 'evaluator' ] =
    -				guardDomWalkerNonEmptyTextNode;
    +			walker.guard = matchWord ? nonCharactersBoundary : null;
    +			walker[ 'evaluator' ] = nonEmptyText;
     			walker.breakOnFalse = true;
     
     			this._ = {
    @@ -143,7 +145,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
     
     						// Marking as match character boundaries.
     						if ( !currentTextNode
    -						   && checkCharactersBoundary( this._.walker.current ) )
    +						   && !nonCharactersBoundary( this._.walker.current ) )
     							this._.matchBoundary = true;
     
     					}
    @@ -181,16 +183,25 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
     			 */
     			toDomRange : function()
     			{
    +				var range = new CKEDITOR.dom.range( editor.document );
     				var cursors = this._.cursors;
     				if ( cursors.length < 1 )
    -					return null;
    +				{
    +					var textNode = this._.walker.textNode;
    +					if ( textNode )
    +							range.setStartAfter( textNode );
    +					else
    +						return null;
    +				}
    +				else
    +				{
    +					var first = cursors[0],
    +							last = cursors[ cursors.length - 1 ];
     
    -				var first = cursors[0],
    -					last = cursors[ cursors.length - 1 ],
    -					range = new CKEDITOR.dom.range( editor.document );
    +					range.setStart( first.textNode, first.offset );
    +					range.setEnd( last.textNode, last.offset + 1 );
    +				}
     
    -				range.setStart( first.textNode, first.offset );
    -				range.setEnd( last.textNode, last.offset + 1 );
     				return range;
     			},
     			/**
    @@ -820,12 +831,15 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
     			},
     			onHide : function()
     			{
    +				var range;
     				if ( finder.matchRange && finder.matchRange.isMatched() )
     				{
     					finder.matchRange.removeHighlight();
     					editor.focus();
    -					editor.getSelection().selectRanges(
    -						[ finder.matchRange.toDomRange() ] );
    +
    +					range = finder.matchRange.toDomRange();
    +					if ( range )
    +						editor.getSelection().selectRanges( [ range ] );
     				}
     
     				// Clear current session before dialog close
    diff --git a/_source/plugins/flash/dialogs/flash.js b/_source/plugins/flash/dialogs/flash.js
    index 5634229..666d3c8 100644
    --- a/_source/plugins/flash/dialogs/flash.js
    +++ b/_source/plugins/flash/dialogs/flash.js
    @@ -265,12 +265,15 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
     						paramMap[ paramList.getItem( i ).getAttribute( 'name' ) ] = paramList.getItem( i );
     				}
     
    -				// Apply or remove flash parameters.
    -				var extraStyles = {};
    -				this.commitContent( objectNode, embedNode, paramMap, extraStyles );
    +				// A subset of the specified attributes/styles
    +				// should also be applied on the fake element to
    +				// have better visual effect. (#5240)
    +				var extraStyles = {}, extraAttributes = {};
    +				this.commitContent( objectNode, embedNode, paramMap, extraStyles, extraAttributes );
     
     				// Refresh the fake image.
     				var newFakeImage = editor.createFakeElement( objectNode || embedNode, 'cke_flash', 'flash', true );
    +				newFakeImage.setAttributes( extraAttributes );
     				newFakeImage.setStyles( extraStyles );
     				if ( this.fakeImage )
     				{
    @@ -572,7 +575,12 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
     										[ editor.lang.flash.alignTop , 'top']
     									],
     									setup : loadValue,
    -									commit : commitValue
    +									commit : function( objectNode, embedNode, paramMap, extraStyles, extraAttributes )
    +									{
    +										var value = this.getValue();
    +										commitValue.apply( this, arguments );
    +										value && ( extraAttributes.align = value );
    +									}
     								},
     								{
     									type : 'html',
    diff --git a/_source/plugins/font/plugin.js b/_source/plugins/font/plugin.js
    index 70f3d9d..8dba467 100644
    --- a/_source/plugins/font/plugin.js
    +++ b/_source/plugins/font/plugin.js
    @@ -29,6 +29,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
     				vars[ styleType ] = values[ i ] = parts[ 1 ] || name;
     
     				styles[ name ] = new CKEDITOR.style( styleDefinition, vars );
    +				styles[ name ]._.definition.name = name;
     			}
     			else
     				names.splice( i--, 1 );
    @@ -55,7 +56,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
     						var name = names[ i ];
     
     						// Add the tag entry to the panel list.
    -						this.add( name, '' + name + '', name );
    +						this.add( name, styles[ name ].buildPreview(), name );
     					}
     				},
     
    diff --git a/_source/plugins/forms/dialogs/checkbox.js b/_source/plugins/forms/dialogs/checkbox.js
    index 1016d38..92bcddb 100644
    --- a/_source/plugins/forms/dialogs/checkbox.js
    +++ b/_source/plugins/forms/dialogs/checkbox.js
    @@ -91,7 +91,19 @@ CKEDITOR.dialog.add( 'checkbox', function( editor )
     							if ( value && !( CKEDITOR.env.ie && value == 'on' ) )
     								element.setAttribute( 'value', value );
     							else
    -								element.removeAttribute( 'value' );
    +							{
    +								if ( CKEDITOR.env.ie )
    +								{
    +									// Remove attribute 'value' of checkbox #4721.
    +									var checkbox = new CKEDITOR.dom.element( 'input', element.getDocument() );
    +									element.copyAttributes( checkbox, { value: 1 } );
    +									checkbox.replace( element );
    +									editor.getSelection().selectElement( checkbox );
    +									data.element = checkbox;
    +								}
    +								else
    +									element.removeAttribute( 'value' );
    +							}
     						}
     					},
     					{
    diff --git a/_source/plugins/htmldataprocessor/plugin.js b/_source/plugins/htmldataprocessor/plugin.js
    index b449355..264f504 100644
    --- a/_source/plugins/htmldataprocessor/plugin.js
    +++ b/_source/plugins/htmldataprocessor/plugin.js
    @@ -41,7 +41,12 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
     	function blockNeedsExtension( block )
     	{
     		var lastChild = lastNoneSpaceChild( block );
    -		return !lastChild || lastChild.type == CKEDITOR.NODE_ELEMENT && lastChild.name == 'br';
    +
    +		return !lastChild
    +			|| lastChild.type == CKEDITOR.NODE_ELEMENT && lastChild.name == 'br'
    +			// Some of the controls in form needs extension too,
    +			// to move cursor at the end of the form. (#4791)
    +			|| block.name == 'form' && lastChild.name == 'input';
     	}
     
     	function extendBlockForDisplay( block )
    diff --git a/_source/plugins/htmlwriter/plugin.js b/_source/plugins/htmlwriter/plugin.js
    index 4408402..46fadde 100644
    --- a/_source/plugins/htmlwriter/plugin.js
    +++ b/_source/plugins/htmlwriter/plugin.js
    @@ -175,8 +175,8 @@ CKEDITOR.htmlWriter = CKEDITOR.tools.createClass(
     			if ( typeof attValue == 'string' )
     			{
     				this.forceSimpleAmpersand && ( attValue = attValue.replace( /&/g, '&' ) );
    -				// Browsers don't always escape quote in attribute values. (#4683)
    -				attValue = attValue.replace( /"/g, '"' );
    +				// Browsers don't always escape special character in attribute values. (#4683, #4719).
    +				attValue = CKEDITOR.tools.htmlEncodeAttr( attValue );
     			}
     
     			this._.output.push( ' ', attName, '="', attValue, '"' );
    diff --git a/_source/plugins/image/dialogs/image.js b/_source/plugins/image/dialogs/image.js
    index cc18936..3ba0dc1 100644
    --- a/_source/plugins/image/dialogs/image.js
    +++ b/_source/plugins/image/dialogs/image.js
    @@ -1051,12 +1051,14 @@ For licensing, see LICENSE.html or http://ckeditor.com/license
     											style : 'width:95%;',
     											html : '
    ' + CKEDITOR.tools.htmlEncode( editor.lang.common.preview ) +'
    '+ ''+ - '
    '+ + '
    '+ ''+ - 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. '+ + '' + + ( editor.config.image_previewText || + 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. '+ 'Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, '+ - 'nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.' + - ''+'' + 'nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.' ) + + '
    ' } ] } diff --git a/_source/plugins/image/plugin.js b/_source/plugins/image/plugin.js index 4d808fe..e6243b4 100644 --- a/_source/plugins/image/plugin.js +++ b/_source/plugins/image/plugin.js @@ -62,3 +62,12 @@ CKEDITOR.plugins.add( 'image', * config.image_removeLinkByEmptyURL = false; */ CKEDITOR.config.image_removeLinkByEmptyURL = true; + +/** + * Padding text to set off the image in preview area. + * @name CKEDITOR.config.image_previewText + * @type String + * @default "Lorem ipsum dolor..." placehoder text. + * @example + * config.image_previewText = CKEDITOR.tools.repeat( '___ ', 100 ); + */ diff --git a/_source/plugins/indent/plugin.js b/_source/plugins/indent/plugin.js index e9992bd..d61e6a6 100644 --- a/_source/plugins/indent/plugin.js +++ b/_source/plugins/indent/plugin.js @@ -135,8 +135,14 @@ For licensing, see LICENSE.html or http://ckeditor.com/license // Apply indenting or outdenting on the array. var baseIndent = listArray[ lastItem.getCustomData( 'listarray_index' ) ].indent; - for ( i = startItem.getCustomData( 'listarray_index' ) ; i <= lastItem.getCustomData( 'listarray_index' ) ; i++ ) - listArray[i].indent += indentOffset; + for ( i = startItem.getCustomData( 'listarray_index' ); i <= lastItem.getCustomData( 'listarray_index' ); i++ ) + { + listArray[ i ].indent += indentOffset; + // Make sure the newly created sublist get a brand-new element of the same type. (#5372) + var listRoot = listArray[ i ].parent; + listArray[ i ].parent = new CKEDITOR.dom.element( listRoot.getName(), listRoot.getDocument() ); + } + for ( i = lastItem.getCustomData( 'listarray_index' ) + 1 ; i < listArray.length && listArray[i].indent > baseIndent ; i++ ) listArray[i].indent += indentOffset; @@ -225,7 +231,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license if ( indentStep < 1 ) block.$.className = className; else - block.addClass( editor.config.indentClasses[ indentStep - 1 ] ); + block.$.className = CKEDITOR.tools.ltrim( className + ' ' + editor.config.indentClasses[ indentStep - 1 ] ); } else { @@ -255,6 +261,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license } else this.indentCssProperty = editor.config.contentsLangDirection == 'ltr' ? 'margin-left' : 'margin-right'; + this.startDisabled = name == 'outdent'; } indentCommand.prototype = { @@ -325,6 +332,31 @@ CKEDITOR.tools.extend( CKEDITOR.config, /** * Size of each indentation step * @type Number + * @example + * config.indentOffset = 40; + */ + + /** + * Unit for the indentation style + * @type String + * @example + * config.indentUnit = 'px'; + */ + + /** + * List of classes to use for indenting the contents. + * @type Array + * @example + * // Don't use classes for indenting. (this is the default value) + * config.indentClasses = null; + * @example + * // Use the classes 'Indent1', 'Indent2', 'Indent3' + * config.indentClasses = ['Indent1', 'Indent2', 'Indent3']; + */ + +/** + * Size of each indentation step + * @type Number * @default 40 * @example * config.indentOffset = 4; diff --git a/_source/plugins/link/dialogs/link.js b/_source/plugins/link/dialogs/link.js index c7388ca..4ac6766 100644 --- a/_source/plugins/link/dialogs/link.js +++ b/_source/plugins/link/dialogs/link.js @@ -5,6 +5,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license CKEDITOR.dialog.add( 'link', function( editor ) { + var plugin = CKEDITOR.plugins.link; // Handles the event when the "Target" selection box is changed. var targetChanged = function() { @@ -93,7 +94,7 @@ CKEDITOR.dialog.add( 'link', function( editor ) var parseLink = function( editor, element ) { - var href = element ? ( element.getAttribute( '_cke_saved_href' ) || element.getAttribute( 'href' ) ) : '', + var href = ( element && ( element.getAttribute( '_cke_saved_href' ) || element.getAttribute( 'href' ) ) ) || '', javascriptMatch, emailMatch, anchorMatch, @@ -417,7 +418,7 @@ CKEDITOR.dialog.add( 'link', function( editor ) [ 'https://' ], [ 'ftp://' ], [ 'news://' ], - [ '', '' ] + [ editor.lang.link.other , '' ] ], setup : function( data ) { @@ -447,7 +448,7 @@ CKEDITOR.dialog.add( 'link', function( editor ) var protocolCmb = this.getDialog().getContentElement( 'info', 'protocol' ), url = this.getValue(), urlOnChangeProtocol = /^(http|https|ftp|news):\/\/(?=.)/gi, - urlOnChangeTestOther = /^((javascript:)|[#\/\.])/gi; + urlOnChangeTestOther = /^((javascript:)|[#\/\.\?])/gi; var protocol = urlOnChangeProtocol.exec( url ); if ( protocol ) @@ -781,7 +782,7 @@ CKEDITOR.dialog.add( 'link', function( editor ) if ( !data.target ) data.target = {}; - data.target.name = this.getValue(); + data.target.name = this.getValue().replace(/\W/gi, ''); } } ] @@ -1136,30 +1137,21 @@ CKEDITOR.dialog.add( 'link', function( editor ) var editor = this.getParentEditor(), selection = editor.getSelection(), - ranges = selection.getRanges(), - element = null, - me = this; + element = null; + // Fill in all the relevant fields if there's already one link selected. - if ( ranges.length == 1 ) + if ( ( element = plugin.getSelectedLink( editor ) ) && element.hasAttribute( 'href' ) ) + selection.selectElement( element ); + else if ( ( element = selection.getSelectedElement() ) && element.is( 'img' ) + && element.getAttribute( '_cke_real_element_type' ) + && element.getAttribute( '_cke_real_element_type' ) == 'anchor' ) { - - var rangeRoot = ranges[0].getCommonAncestor( true ); - element = rangeRoot.getAscendant( 'a', true ); - if ( element && element.getAttribute( 'href' ) ) - { - selection.selectElement( element ); - } - else if ( ( element = rangeRoot.getAscendant( 'img', true ) ) && - element.getAttribute( '_cke_real_element_type' ) && - element.getAttribute( '_cke_real_element_type' ) == 'anchor' ) - { - this.fakeObj = element; - element = editor.restoreRealElement( this.fakeObj ); - selection.selectElement( this.fakeObj ); - } - else - element = null; + this.fakeObj = element; + element = editor.restoreRealElement( this.fakeObj ); + selection.selectElement( this.fakeObj ); } + else + element = null; this.setupContent( parseLink.apply( this, [ editor, element ] ) ); }, diff --git a/_source/plugins/link/plugin.js b/_source/plugins/link/plugin.js index 7993a0f..26a8cb3 100644 --- a/_source/plugins/link/plugin.js +++ b/_source/plugins/link/plugin.js @@ -107,7 +107,7 @@ CKEDITOR.plugins.add( 'link', if ( !isAnchor ) { - if ( !( element = element.getAscendant( 'a', true ) ) ) + if ( !( element = CKEDITOR.plugins.link.getSelectedLink( editor ) ) ) return null; isAnchor = ( element.getAttribute( 'name' ) && !element.getAttribute( 'href' ) ); @@ -147,6 +147,35 @@ CKEDITOR.plugins.add( 'link', requires : [ 'fakeobjects' ] } ); +CKEDITOR.plugins.link = +{ + /** + * Get the surrounding link element of current selection. + * @param editor + * @example CKEDITOR.plugins.link.getSelectedLink( editor ); + * @since 3.2.1 + * The following selection will all return the link element. + *
    +	 *  li^nk
    +	 *  [link]
    +	 *  text[link]
    +	 *  li[nk]
    +	 *  [li]nk]
    +	 *  [li]nk
    +	 * 
    + */ + getSelectedLink : function( editor ) + { + var range; + try { range = editor.getSelection().getRanges()[ 0 ]; } + catch( e ) { return null; } + + range.shrink( CKEDITOR.SHRINK_TEXT ); + var root = range.getCommonAncestor(); + return root.getAscendant( 'a', true ); + } +}; + CKEDITOR.unlinkCommand = function(){}; CKEDITOR.unlinkCommand.prototype = { @@ -178,7 +207,9 @@ CKEDITOR.unlinkCommand.prototype = selection.selectRanges( ranges ); editor.document.$.execCommand( 'unlink', false, null ); selection.selectBookmarks( bookmarks ); - } + }, + + startDisabled : true }; CKEDITOR.tools.extend( CKEDITOR.config, diff --git a/_source/plugins/list/plugin.js b/_source/plugins/list/plugin.js index 87ad3cc..0a55231 100644 --- a/_source/plugins/list/plugin.js +++ b/_source/plugins/list/plugin.js @@ -29,7 +29,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license if ( !baseArray ) baseArray = []; - // Iterate over all list items to get their contents and look for inner lists. + // Iterate over all list items to and look for inner lists. for ( var i = 0, count = listNode.getChildCount() ; i < count ; i++ ) { var listItem = listNode.getChild( i ); @@ -37,7 +37,8 @@ For licensing, see LICENSE.html or http://ckeditor.com/license // It may be a text node or some funny stuff. if ( listItem.$.nodeName.toLowerCase() != 'li' ) continue; - var itemObj = { 'parent' : listNode, indent : baseIndentLevel, contents : [] }; + + var itemObj = { 'parent' : listNode, indent : baseIndentLevel, element : listItem, contents : [] }; if ( !grandparentNode ) { itemObj.grandparent = listNode.getParent(); @@ -51,9 +52,9 @@ For licensing, see LICENSE.html or http://ckeditor.com/license CKEDITOR.dom.element.setMarker( database, listItem, 'listarray_index', baseArray.length ); baseArray.push( itemObj ); - for ( var j = 0, itemChildCount = listItem.getChildCount() ; j < itemChildCount ; j++ ) + for ( var j = 0, itemChildCount = listItem.getChildCount(), child; j < itemChildCount ; j++ ) { - var child = listItem.getChild( j ); + child = listItem.getChild( j ); if ( child.type == CKEDITOR.NODE_ELEMENT && listNodeNames[ child.getName() ] ) // Note the recursion here, it pushes inner list items with // +1 indentation in the correct order. @@ -89,7 +90,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license rootNode = listArray[ currentIndex ].parent.clone( false, true ); retval.append( rootNode ); } - currentListItem = rootNode.append( doc.createElement( 'li' ) ); + currentListItem = rootNode.append( item.element.clone( false, true ) ); for ( var i = 0 ; i < item.contents.length ; i++ ) currentListItem.append( item.contents[i].clone( true, true ) ); currentIndex++; @@ -104,9 +105,10 @@ For licensing, see LICENSE.html or http://ckeditor.com/license { currentListItem; if ( listNodeNames[ item.grandparent.getName() ] ) - currentListItem = doc.createElement( 'li' ); + currentListItem = item.element.clone( false, true ); else { + // Create completely new blocks here, attributes are dropped. if ( paragraphMode != CKEDITOR.ENTER_BR && item.grandparent.getName() != 'td' ) currentListItem = doc.createElement( paragraphName ); else diff --git a/_source/plugins/listblock/plugin.js b/_source/plugins/listblock/plugin.js index 848cc2a..63f85c7 100644 --- a/_source/plugins/listblock/plugin.js +++ b/_source/plugins/listblock/plugin.js @@ -9,9 +9,9 @@ CKEDITOR.plugins.add( 'listblock', onLoad : function() { - CKEDITOR.ui.panel.prototype.addListBlock = function( name, definiton ) + CKEDITOR.ui.panel.prototype.addListBlock = function( name, definition ) { - return this.addBlock( name, new CKEDITOR.ui.listBlock( this.getHolderElement(), definiton ) ); + return this.addBlock( name, new CKEDITOR.ui.listBlock( this.getHolderElement(), definition ) ); }; CKEDITOR.ui.listBlock = CKEDITOR.tools.createClass( @@ -195,11 +195,14 @@ CKEDITOR.plugins.add( 'listblock', this.element.getDocument().getById( itemId + '_option' ).setAttribute( 'aria-selected', true ); this.element.setAttribute( 'aria-activedescendant', itemId + '_option' ); + + this.onMark && this.onMark( item ); }, unmark : function( value ) { this.element.getDocument().getById( this._.items[ value ] ).removeClass( 'cke_selected' ); + this.onUnmark && this.onUnmark( this._.items[ value ] ); }, unmarkAll : function() @@ -211,6 +214,8 @@ CKEDITOR.plugins.add( 'listblock', { doc.getById( items[ value ] ).removeClass( 'cke_selected' ); } + + this.onUnmark && this.onUnmark(); }, isMarked : function( value ) diff --git a/_source/plugins/maximize/plugin.js b/_source/plugins/maximize/plugin.js index 957d991..2258c5a 100644 --- a/_source/plugins/maximize/plugin.js +++ b/_source/plugins/maximize/plugin.js @@ -87,6 +87,22 @@ For licensing, see LICENSE.html or http://ckeditor.com/license }; } + function refreshCursor( editor ) + { + if ( editor.focusManager.hasFocus ) + { + var focusGrabber = editor.container.append( CKEDITOR.dom.element.createFromHtml( + '' ) ); + + focusGrabber.on( 'focus', function() + { + editor.focus(); + } ); + focusGrabber.focus(); + focusGrabber.remove(); + } + } + CKEDITOR.plugins.add( 'maximize', { init : function( editor ) @@ -190,6 +206,9 @@ For licensing, see LICENSE.html or http://ckeditor.com/license top : ( -1 * offset.y ) + 'px' } ); + // Fixing positioning editor chrome in Firefox break design mode. (#5149) + CKEDITOR.env.gecko && refreshCursor( editor ); + // Add cke_maximized class. container.addClass( 'cke_maximized' ); } @@ -242,6 +261,9 @@ For licensing, see LICENSE.html or http://ckeditor.com/license { if ( savedSelection ) { + // Fixing positioning editor chrome in Firefox break design mode. (#5149) + CKEDITOR.env.gecko && refreshCursor( editor ); + editor.getSelection().selectRanges(savedSelection); var element = editor.getSelection().getStartElement(); element && element.scrollIntoView( true ); diff --git a/_source/plugins/menubutton/plugin.js b/_source/plugins/menubutton/plugin.js index 4797a4e..bd98f79 100644 --- a/_source/plugins/menubutton/plugin.js +++ b/_source/plugins/menubutton/plugin.js @@ -36,6 +36,7 @@ CKEDITOR.UI_MENUBUTTON = 5; if ( !menu ) { menu = _.menu = new CKEDITOR.plugins.contextMenu( editor ); + menu.definition.panel.attributes[ 'aria-label' ] = editor.lang.common.options; menu.onHide = CKEDITOR.tools.bind( function() { diff --git a/_source/plugins/pagebreak/plugin.js b/_source/plugins/pagebreak/plugin.js index 3a1c642..b73fbcf 100644 --- a/_source/plugins/pagebreak/plugin.js +++ b/_source/plugins/pagebreak/plugin.js @@ -93,6 +93,11 @@ CKEDITOR.plugins.pagebreakCmd = range.splitBlock( 'p' ); range.insertNode( breakObject ); + if ( i == ranges.length - 1 ) + { + range.moveToPosition( breakObject, CKEDITOR.POSITION_AFTER_END ); + range.select(); + } } } }; diff --git a/_source/plugins/panel/plugin.js b/_source/plugins/panel/plugin.js index 181fae3..b9e7886 100644 --- a/_source/plugins/panel/plugin.js +++ b/_source/plugins/panel/plugin.js @@ -227,6 +227,9 @@ CKEDITOR.ui.panel.prototype = this.document.getById( 'cke_' + this.id + '_frame' ) : this._.holder; + // Disable context menu for block panel. + holder.getParent().getParent().disableContextMenu(); + if ( current ) { // Clean up the current block's effects on holder. @@ -244,6 +247,16 @@ CKEDITOR.ui.panel.prototype = this._.onKeyDown = block.onKeyDown && CKEDITOR.tools.bind( block.onKeyDown, block ); + block.onMark = function( item ) + { + holder.setAttribute( 'aria-activedescendant', item.getId() + '_option' ); + }; + + block.onUnmark = function() + { + holder.removeAttribute( 'aria-activedescendant' ); + }; + block.show(); return block; @@ -278,6 +291,9 @@ CKEDITOR.ui.panel.block = CKEDITOR.tools.createClass( if ( blockDefinition ) CKEDITOR.tools.extend( this, blockDefinition ); + if ( !this.attributes.title ) + this.attributes.title = this.attributes[ 'aria-label' ]; + this.keys = {}; this._.focusIndex = -1; @@ -303,6 +319,8 @@ CKEDITOR.ui.panel.block = CKEDITOR.tools.createClass( if ( CKEDITOR.env.webkit ) item.getDocument().getWindow().focus(); item.focus(); + + this.onMark && this.onMark( item ); } }, diff --git a/_source/plugins/resize/plugin.js b/_source/plugins/resize/plugin.js index 32faf6f..780f319 100644 --- a/_source/plugins/resize/plugin.js +++ b/_source/plugins/resize/plugin.js @@ -53,7 +53,9 @@ CKEDITOR.plugins.add( 'resize', editor.document.on( 'mousemove', dragHandler ); editor.document.on( 'mouseup', dragEndHandler ); } - } ); + }); + + editor.on( 'destroy', function() { CKEDITOR.tools.removeFunction( mouseDownFn ); } ); editor.on( 'themeSpace', function( event ) { diff --git a/_source/plugins/richcombo/plugin.js b/_source/plugins/richcombo/plugin.js index 8c2e81b..710b946 100644 --- a/_source/plugins/richcombo/plugin.js +++ b/_source/plugins/richcombo/plugin.js @@ -130,7 +130,7 @@ CKEDITOR.ui.richCombo = CKEDITOR.tools.createClass( var element = CKEDITOR.document.getById( id ).getChild( 1 ); element.focus(); }, - execute : clickFn + clickFn : clickFn }; editor.on( 'mode', function() @@ -161,6 +161,9 @@ CKEDITOR.ui.richCombo = CKEDITOR.tools.createClass( ev.preventDefault(); }); + // For clean up + instance.keyDownFn = keyDownFn; + output.push( '', '' + captions[ 'button_' + button] +'' ); @@ -225,7 +225,7 @@ CKEDITOR.dialog.add( 'scaytcheck', function( editor ) // Fill options and dictionary labels. - if (tags[0] == 1) + if ( tags[0] == 1 ) { for ( i in labels ) { diff --git a/_source/plugins/scayt/plugin.js b/_source/plugins/scayt/plugin.js index 718aee6..f64d25e 100644 --- a/_source/plugins/scayt/plugin.js +++ b/_source/plugins/scayt/plugin.js @@ -12,7 +12,8 @@ For licensing, see LICENSE.html or http://ckeditor.com/license { var commandName = 'scaytcheck', openPage = '', - scayt_paused = null; + scayt_paused = null, + scayt_control_id = null; // Checks if a value exists in an array function in_array(needle, haystack) @@ -37,21 +38,32 @@ For licensing, see LICENSE.html or http://ckeditor.com/license { // Initialise Scayt instance. var oParams = {}; - oParams.srcNodeRef = editor.document.getWindow().$.frameElement; // Get the iframe. + // Get the iframe. + oParams.srcNodeRef = editor.document.getWindow().$.frameElement; // syntax : AppName.AppVersion@AppRevision - oParams.assocApp = "CKEDITOR." + CKEDITOR.version + "@" + CKEDITOR.revision; - oParams.customerid = editor.config.scayt_customerid || "1:WvF0D4-UtPqN1-43nkD4-NKvUm2-daQqk3-LmNiI-z7Ysb4-mwry24-T8YrS3-Q2tpq2"; - oParams.customDictionaryIds = editor.config.scayt_customDictionaryIds; - oParams.userDictionaryName = editor.config.scayt_userDictionaryName; - oParams.sLang = editor.config.scayt_sLang || "en_US"; + oParams.assocApp = 'CKEDITOR.' + CKEDITOR.version + '@' + CKEDITOR.revision; + oParams.customerid = editor.config.scayt_customerid || '1:WvF0D4-UtPqN1-43nkD4-NKvUm2-daQqk3-LmNiI-z7Ysb4-mwry24-T8YrS3-Q2tpq2'; + oParams.customDictionaryIds = editor.config.scayt_customDictionaryIds || ''; + oParams.userDictionaryName = editor.config.scayt_userDictionaryName || ''; + oParams.sLang = editor.config.scayt_sLang || 'en_US'; - if ( CKEDITOR._scaytParams ) + oParams.onBeforeChange = function() { - for ( var k in CKEDITOR._scaytParams ) + if ( !editor.checkDirty() ) + setTimeout( function(){ editor.resetDirty(); } ); + }; + + var scayt_custom_params = window.scayt_custom_params; + if ( typeof scayt_custom_params == 'object') + { + for ( var k in scayt_custom_params ) { - oParams[ k ] = CKEDITOR._scaytParams[ k ]; + oParams[ k ] = scayt_custom_params[ k ]; } } + // needs for restoring a specific scayt control settings + if ( scayt_control_id ) + oParams.id = scayt_control_id; var scayt_control = new window.scayt( oParams ); @@ -72,7 +84,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license var fTabs = []; for (var i = 0,l=4; i + *
  • 0 (zero): All suggestions are displayed in the main context menu.
  • + *
  • Positive number: The maximum number of suggestions to shown in context + * menu. Other entries will be shown in "More Suggestions" sub-menu.
  • + *
  • Negative number: No suggestions are shown in the main context menu. All + * entries will be listed in the "Suggestions" sub-menu.
  • + * + * @name CKEDITOR.config.scayt_maxSuggestions + * @type Number + * @default 5 + * @example + * // Display only three suggestions in the main context menu. + * config.scayt_maxSuggestions = 3; + * @example + * // Do not show the suggestions directly. + * config.scayt_maxSuggestions = -1; + */ + +/** + * Sets the customer ID for SCAYT. Required for migration from free version + * with banner to paid version. + * @name CKEDITOR.config.scayt_customerid + * @type String + * @default '' + * @example + * // Load SCAYT using my customer ID. + * config.scayt_customerid = 'your-encrypted-customer-id'; + */ + +/** + * Enables/disables the "More Suggestions" sub-menu in the context menu. + * The possible values are "on" or "off". + * @name CKEDITOR.config.scayt_moreSuggestions + * @type String + * @default 'on' + * @example + * // Disables the "More Suggestions" sub-menu. + * config.scayt_moreSuggestions = 'off'; + */ + +/** + * Customizes the display of SCAYT context menu commands ("Add Word", "Ignore" + * and "Ignore All"). It must be a string with one or more of the following + * words separated by a pipe ("|"): + *
      + *
    • "off": disables all options.
    • + *
    • "all": enables all options.
    • + *
    • "ignore": enables the "Ignore" option.
    • + *
    • "ignoreall": enables the "Ignore All" option.
    • + *
    • "add": enables the "Add Word" option.
    • + *
    + * @name CKEDITOR.config.scayt_contextCommands + * @type String + * @default 'all' + * @example + * // Show only "Add Word" and "Ignore All" in the context menu. + * config.scayt_contextCommands = 'add|ignoreall'; + */ + +/** + * Sets the default spellchecking language for SCAYT. + * @name CKEDITOR.config.scayt_sLang + * @type String + * @default 'en_US' + * @example + * // Sets SCAYT to German. + * config.scayt_sLang = 'de_DE'; + */ + +/** + * Sets the visibility of the SCAYT tabs in the settings dialog and toolbar + * button. The value must contain a "1" (enabled) or "0" (disabled) number for + * each of the following entries, in this precise order, separated by a + * comma (","): "Options", "Languages" and "Dictionary". + * @name CKEDITOR.config.scayt_uiTabs + * @type String + * @default '1,1,1' + * @example + * // Hide the "Languages" tab. + * config.scayt_uiTabs = '1,0,1'; + */ + + +/** + * Set the URL to SCAYT core. Required to switch to licensed version of SCAYT application. + * Further details at http://wiki.spellchecker.net/doku.php?id=3rd:wysiwyg:fckeditor:wscckf3l . + * @name CKEDITOR.config.scayt_srcUrl + * @type String + * @default '' + * @example + * config.scayt_srcUrl = "http://my-host/spellcheck/lf/scayt/scayt.js"; + */ + +/** + * Links SCAYT to custom dictionaries. It's a string containing dictionary ids + * separared by commas (","). Available only for licensed version. + * Further details at http://wiki.spellchecker.net/doku.php?id=custom_dictionary_support . + * @name CKEDITOR.config.scayt_customDictionaryIds + * @type String + * @default '' + * @example + * config.scayt_customDictionaryIds = '3021,3456,3478"'; + */ + +/** + * Makes it possible to activate a custom dictionary on SCAYT. The user + * dictionary name must be used. Available only for licensed version. + * @name CKEDITOR.config.scayt_userDictionaryName + * @type String + * @default '' + * @example + * config.scayt_userDictionaryName = 'MyDictionary'; + */ diff --git a/_source/plugins/selection/plugin.js b/_source/plugins/selection/plugin.js index 85981fa..9a85a84 100644 --- a/_source/plugins/selection/plugin.js +++ b/_source/plugins/selection/plugin.js @@ -72,6 +72,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license var selectAllCmd = { + modes : { wysiwyg : 1, source : 1 }, exec : function( editor ) { switch ( editor.mode ) @@ -80,7 +81,18 @@ For licensing, see LICENSE.html or http://ckeditor.com/license editor.document.$.execCommand( 'SelectAll', false, null ); break; case 'source' : - // TODO + // Select the contents of the textarea + var textarea = editor.textarea.$ ; + if ( CKEDITOR.env.ie ) + { + textarea.createTextRange().execCommand( 'SelectAll' ) ; + } + else + { + textarea.selectionStart = 0 ; + textarea.selectionEnd = textarea.value.length ; + } + textarea.focus() ; } }, canUndo : false @@ -108,8 +120,13 @@ For licensing, see LICENSE.html or http://ckeditor.com/license // "onfocusin" is fired before "onfocus". It makes it // possible to restore the selection before click // events get executed. - body.on( 'focusin', function() + body.on( 'focusin', function( evt ) { + // If there are elements with layout they fire this event but + // it must be ignored to allow edit its contents #4682 + if ( evt.data.$.srcElement.nodeName != 'BODY' ) + return; + // If we have saved a range, restore it at this // point. if ( savedRange ) @@ -126,7 +143,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license } }); - editor.window.on( 'focus', function() + body.on( 'focus', function() { // Enable selections to be saved. saveEnabled = true; @@ -134,12 +151,27 @@ For licensing, see LICENSE.html or http://ckeditor.com/license saveSelection(); }); - body.on( 'beforedeactivate', function() + body.on( 'beforedeactivate', function( evt ) { + // Ignore this event if it's caused by focus switch between + // internal editable control type elements, e.g. layouted paragraph. (#4682) + if ( evt.data.$.toElement ) + return; + // Disable selections from being saved. saveEnabled = false; }); + // IE before version 8 will leave cursor blinking inside the document after + // editor blurred unless we clean up the selection. (#4716) + if ( CKEDITOR.env.ie && CKEDITOR.env.version < 8 ) + { + doc.getWindow().on( 'blur', function( evt ) + { + editor.document.$.selection.empty(); + }); + } + // IE fires the "selectionchange" event when clicking // inside a selection. We don't want to capture that. body.on( 'mousedown', disableSave ); @@ -708,26 +740,29 @@ For licensing, see LICENSE.html or http://ckeditor.com/license if ( cache.selectedElement !== undefined ) return cache.selectedElement; - var node; - - if ( this.getType() == CKEDITOR.SELECTION_ELEMENT ) - { - var sel = this.getNative(); + var self = this; - if ( CKEDITOR.env.ie ) + var node = CKEDITOR.tools.tryThese( + // Is it native IE control type selection? + function() { - try + return self.getNative().createRange().item( 0 ); + }, + // Figure it out by checking if there's a single enclosed + // node of the range. + function() + { + var range = self.getRanges()[ 0 ]; + range.shrink( CKEDITOR.SHRINK_ELEMENT ); + + var enclosed; + if ( range.startContainer.equals( range.endContainer ) + && ( range.endOffset - range.startOffset ) == 1 + && styleObjectElements[ ( enclosed = range.startContainer.getChild( range.startOffset ) ).getName() ] ) { - node = sel.createRange().item(0); + return enclosed.$; } - catch(e) {} - } - else - { - var range = sel.getRangeAt( 0 ); - node = range.startContainer.childNodes[ range.startOffset ]; - } - } + }); return cache.selectedElement = ( node ? new CKEDITOR.dom.element( node ) : null ); }, @@ -820,6 +855,10 @@ For licensing, see LICENSE.html or http://ckeditor.com/license range.moveToElementText( element.$ ); range.select(); } + finally + { + this.document.fire( 'selectionchange' ); + } this.reset(); } @@ -1056,6 +1095,7 @@ CKEDITOR.dom.range.prototype.select = else ieRange.select(); + this.moveToPosition( dummySpan, CKEDITOR.POSITION_BEFORE_START ); dummySpan.remove(); } else @@ -1064,6 +1104,8 @@ CKEDITOR.dom.range.prototype.select = endNode.remove(); ieRange.select(); } + + this.document.fire( 'selectionchange' ); } : function() diff --git a/_source/plugins/showborders/plugin.js b/_source/plugins/showborders/plugin.js index 4fc46b6..5987be7 100644 --- a/_source/plugins/showborders/plugin.js +++ b/_source/plugins/showborders/plugin.js @@ -129,36 +129,33 @@ For licensing, see LICENSE.html or http://ckeditor.com/license } } ); } + } + }); - // Table dialog must be aware of it. - CKEDITOR.on( 'dialogDefinition', function( ev ) - { - if ( ev.editor != editor ) - return; + // Table dialog must be aware of it. + CKEDITOR.on( 'dialogDefinition', function( ev ) + { + var dialogName = ev.data.name; - var dialogName = ev.data.name; + if ( dialogName == 'table' || dialogName == 'tableProperties' ) + { + var dialogDefinition = ev.data.definition, + infoTab = dialogDefinition.getContents( 'info' ), + borderField = infoTab.get( 'txtBorder' ), + originalCommit = borderField.commit; - if ( dialogName == 'table' || dialogName == 'tableProperties' ) + borderField.commit = CKEDITOR.tools.override( originalCommit, function( org ) + { + return function( data, selectedTable ) { - var dialogDefinition = ev.data.definition, - infoTab = dialogDefinition.getContents( 'info' ), - borderField = infoTab.get( 'txtBorder' ), - originalCommit = borderField.commit; - - borderField.commit = CKEDITOR.tools.override( originalCommit, function( org ) - { - return function( data, selectedTable ) - { - org.apply( this, arguments ); - var value = parseInt( this.getValue(), 10 ); - selectedTable[ ( !value || value <= 0 ) ? 'addClass' : 'removeClass' ]( showBorderClassName ); - }; - } ); - } - }); + org.apply( this, arguments ); + var value = parseInt( this.getValue(), 10 ); + selectedTable[ ( !value || value <= 0 ) ? 'addClass' : 'removeClass' ]( showBorderClassName ); + }; + } ); } - }); + } )(); /** diff --git a/_source/plugins/smiley/dialogs/smiley.js b/_source/plugins/smiley/dialogs/smiley.js index dfe0a50..1fae121 100644 --- a/_source/plugins/smiley/dialogs/smiley.js +++ b/_source/plugins/smiley/dialogs/smiley.js @@ -55,6 +55,7 @@ CKEDITOR.dialog.add( 'smiley', function( editor ) var relative, nodeToMove; var keystroke = ev.getKeystroke(); + var rtl = editor.lang.dir == 'rtl'; switch ( keystroke ) { // UP-ARROW @@ -86,7 +87,7 @@ CKEDITOR.dialog.add( 'smiley', function( editor ) break; // RIGHT-ARROW - case 39 : + case rtl ? 37 : 39 : // TAB case 9 : // relative is TD @@ -107,7 +108,7 @@ CKEDITOR.dialog.add( 'smiley', function( editor ) break; // LEFT-ARROW - case 37 : + case rtl ? 39 : 37 : // SHIFT + TAB case CKEDITOR.SHIFT + 9 : // relative is TD @@ -135,7 +136,7 @@ CKEDITOR.dialog.add( 'smiley', function( editor ) var html = [ '
    ' + - '' + editor.lang.common.options +'', + '' + lang.options +'', '' @@ -191,7 +192,7 @@ CKEDITOR.dialog.add( 'smiley', function( editor ) firstSmile.focus(); }, onClick : onClick, - style : 'width: 100%; height: 100%; border-collapse: separate;' + style : 'width: 100%; border-collapse: separate;' }; return { diff --git a/_source/plugins/smiley/plugin.js b/_source/plugins/smiley/plugin.js index d8a9fbf..d4ecda6 100644 --- a/_source/plugins/smiley/plugin.js +++ b/_source/plugins/smiley/plugin.js @@ -9,6 +9,7 @@ CKEDITOR.plugins.add( 'smiley', init : function( editor ) { + editor.config.smiley_path = editor.config.smiley_path || ( this.path + 'images/' ); editor.addCommand( 'smiley', new CKEDITOR.dialogCommand( 'smiley' ) ); editor.ui.addButton( 'Smiley', { @@ -22,6 +23,7 @@ CKEDITOR.plugins.add( 'smiley', /** * The base path used to build the URL for the smiley images. It must end with * a slash. + * @name CKEDITOR.config.smiley_path * @type String * @default {@link CKEDITOR.basePath} + 'plugins/smiley/images/' * @example @@ -29,9 +31,6 @@ CKEDITOR.plugins.add( 'smiley', * @example * config.smiley_path = '/images/smileys/'; */ -CKEDITOR.config.smiley_path = CKEDITOR.basePath + - '_source/' + // @Packager.RemoveLine - 'plugins/smiley/images/'; /** * The file names for the smileys to be displayed. These files must be diff --git a/_source/plugins/sourcearea/plugin.js b/_source/plugins/sourcearea/plugin.js index 92ddce3..dbbed8d 100644 --- a/_source/plugins/sourcearea/plugin.js +++ b/_source/plugins/sourcearea/plugin.js @@ -138,6 +138,7 @@ CKEDITOR.plugins.add( 'sourcearea', unload : function( holderElement ) { + textarea.clearCustomData(); editor.textarea = textarea = null; if ( onResize ) diff --git a/_source/plugins/specialchar/dialogs/specialchar.js b/_source/plugins/specialchar/dialogs/specialchar.js index 597f7e1..b419cf5 100644 --- a/_source/plugins/specialchar/dialogs/specialchar.js +++ b/_source/plugins/specialchar/dialogs/specialchar.js @@ -11,6 +11,30 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) */ var dialog, lang = editor.lang.specialChar; + + var insertSpecialChar = function ( specialChar ) + { + var selection = editor.getSelection(), + ranges = selection.getRanges(), + range, textNode; + + editor.fire( 'saveSnapshot' ); + + for ( var i = 0, len = ranges.length ; i < len ; i++ ) + { + range = ranges[ i ]; + range.deleteContents(); + + textNode = CKEDITOR.dom.element.createFromHtml( specialChar ); + range.insertNode( textNode ); + } + + range.moveToPosition( textNode, CKEDITOR.POSITION_AFTER_END ); + range.select(); + + editor.fire( 'saveSnapshot' ); + }; + var onChoice = function( evt ) { var target, value; @@ -23,7 +47,12 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) { target.removeClass( "cke_light_background" ); dialog.hide(); - editor.insertHtml( value ); + + // Firefox has bug on insert chars into a element use its own API. (#5170) + if ( CKEDITOR.env.gecko ) + insertSpecialChar( value ); + else + editor.insertHtml( value ); } }; @@ -81,6 +110,7 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) var element = ev.getTarget(); var relative, nodeToMove; var keystroke = ev.getKeystroke(); + var rtl = editor.lang.dir == 'rtl'; switch ( keystroke ) { @@ -119,7 +149,7 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) break; // RIGHT-ARROW - case 39 : + case rtl ? 37 : 39 : // TAB case 9 : // relative is TD @@ -153,7 +183,7 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) break; // LEFT-ARROW - case 37 : + case rtl ? 39 : 37 : // SHIFT + TAB case CKEDITOR.SHIFT + 9 : // relative is TD @@ -260,7 +290,7 @@ CKEDITOR.dialog.add( 'specialchar', function( editor ) charDesc = charDesc || character; html.push( - '
    ' + + '
    ', '' + editor.lang.common.options +'' ); + html.push( '', '' + lang.options +'' ); this.getContentElement( 'info', 'charContainer' ).getElement().setHtml( html.join( '' ) ); }, diff --git a/_source/plugins/styles/plugin.js b/_source/plugins/styles/plugin.js index 85cda5f..65a36c2 100644 --- a/_source/plugins/styles/plugin.js +++ b/_source/plugins/styles/plugin.js @@ -78,7 +78,7 @@ CKEDITOR.STYLE_OBJECT = 3; (function() { var blockElements = { address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1 }; - var objectElements = { a:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,ul:1 }; + var objectElements = { a:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,th:1,ul:1,dl:1,dt:1,dd:1,form:1}; var semicolonFixRegex = /\s*(?:;\s*|$)/; @@ -127,6 +127,8 @@ CKEDITOR.STYLE_OBJECT = 3; applyInlineStyle : this.type == CKEDITOR.STYLE_BLOCK ? applyBlockStyle + : this.type == CKEDITOR.STYLE_OBJECT ? + applyObjectStyle : null ).call( this, range ); }, @@ -154,17 +156,23 @@ CKEDITOR.STYLE_OBJECT = 3; case CKEDITOR.STYLE_BLOCK : return this.checkElementRemovable( elementPath.block || elementPath.blockLimit, true ); + case CKEDITOR.STYLE_OBJECT : case CKEDITOR.STYLE_INLINE : var elements = elementPath.elements; for ( var i = 0, element ; i < elements.length ; i++ ) { - element = elements[i]; + element = elements[ i ]; - if ( element == elementPath.block || element == elementPath.blockLimit ) + if ( this.type == CKEDITOR.STYLE_INLINE + && ( element == elementPath.block || element == elementPath.blockLimit ) ) continue; + if( this.type == CKEDITOR.STYLE_OBJECT + && !( element.getName() in objectElements ) ) + continue; + if ( this.checkElementRemovable( element, true ) ) return true; } @@ -172,6 +180,21 @@ CKEDITOR.STYLE_OBJECT = 3; return false; }, + checkApplicable : function( elementPath ) + { + switch ( this.type ) + { + case CKEDITOR.STYLE_INLINE : + case CKEDITOR.STYLE_BLOCK : + break; + + case CKEDITOR.STYLE_OBJECT : + return elementPath.lastElement.getAscendant( this.element, true ); + } + + return true; + }, + // Checks if an element, or any of its attributes, is removable by the // current style definition. checkElementRemovable : function( element, fullMatch ) @@ -199,9 +222,9 @@ CKEDITOR.STYLE_OBJECT = 3; continue; var elementAttr = element.getAttribute( attName ) || ''; - if ( attribs[ attName ] == - ( attName == 'style' ? - normalizeCssText( elementAttr, false ) : elementAttr ) ) + if ( attName == 'style' ? + compareCssText( attribs[ attName ], normalizeCssText( elementAttr, false ) ) + : attribs[ attName ] == elementAttr ) { if ( !fullMatch ) return true; @@ -246,6 +269,39 @@ CKEDITOR.STYLE_OBJECT = 3; } } return false; + }, + + // Builds the preview HTML based on the styles definition. + buildPreview : function() + { + var styleDefinition = this._.definition, + html = [], + elementName = styleDefinition.element; + + // Avoid in the preview. + if ( elementName == 'bdo' ) + elementName = 'span'; + + html = [ '<', elementName ]; + + // Assign all defined attributes. + var attribs = styleDefinition.attributes; + if ( attribs ) + { + for ( var att in attribs ) + { + html.push( ' ', att, '="', attribs[ att ], '"' ); + } + } + + // Assign the style attribute. + var cssStyle = CKEDITOR.style.getStyleText( styleDefinition ); + if ( cssStyle ) + html.push( ' style="', cssStyle, '"' ); + + html.push( '>', styleDefinition.name, '' ); + + return html.join( '' ); } }; @@ -260,20 +316,31 @@ CKEDITOR.STYLE_OBJECT = 3; stylesDef = styleDefinition.styles; // Builds the StyleText. - - var stylesText = ( styleDefinition.attributes && styleDefinition.attributes[ 'style' ] ) || ''; + var stylesText = ( styleDefinition.attributes && styleDefinition.attributes[ 'style' ] ) || '', + specialStylesText = ''; if ( stylesText.length ) stylesText = stylesText.replace( semicolonFixRegex, ';' ); for ( var style in stylesDef ) - stylesText += ( style + ':' + stylesDef[ style ] ).replace( semicolonFixRegex, ';' ); + { + var styleVal = stylesDef[ style ], + text = ( style + ':' + styleVal ).replace( semicolonFixRegex, ';' ); + + // Some browsers don't support 'inherit' property value, leave them intact. (#5242) + if ( styleVal == 'inherit' ) + specialStylesText += text; + else + stylesText += text; + } // Browsers make some changes to the style when applying them. So, here // we normalize it to the browser format. if ( stylesText.length ) stylesText = normalizeCssText( stylesText ); + stylesText += specialStylesText; + // Return it, saving it to the next request. return ( styleDefinition._ST = stylesText ); }; @@ -350,10 +417,6 @@ CKEDITOR.STYLE_OBJECT = 3; var styleRange; - // Indicates that that some useful inline content has been found, so - // the style should be applied. - var hasContents; - while ( currentNode ) { var applyStyle = false; @@ -424,8 +487,6 @@ CKEDITOR.STYLE_OBJECT = 3; if ( !includedNode.$.nextSibling ) applyStyle = true; - if ( !hasContents ) - hasContents = ( nodeType != CKEDITOR.NODE_TEXT || (/[^\s\ufeff]/).test( currentNode.getText() ) ); } } else @@ -439,7 +500,7 @@ CKEDITOR.STYLE_OBJECT = 3; } // Apply the style if we have something to which apply it. - if ( applyStyle && hasContents && styleRange && !styleRange.collapsed ) + if ( applyStyle && styleRange && !styleRange.collapsed ) { // Build the style element, based on the style object definition. var styleNode = getElement( this, document ); @@ -510,6 +571,8 @@ CKEDITOR.STYLE_OBJECT = 3; // Remove the temporary marking node.(#4111) marker && marker.remove(); range.moveToBookmark( bookmark ); + // Minimize the result range to exclude empty text nodes. (#5374) + range.shrink( CKEDITOR.SHRINK_TEXT ); } function removeInlineStyle( range ) @@ -674,6 +737,13 @@ CKEDITOR.STYLE_OBJECT = 3; range.moveToBookmark( bookmark ); } + function applyObjectStyle( range ) + { + var root = range.getCommonAncestor( true, true ), + element = root.getAscendant( this.element, true ); + element && setupElement( element, this ); + } + function applyBlockStyle( range ) { // Serializible bookmarks is needed here since @@ -772,7 +842,7 @@ CKEDITOR.STYLE_OBJECT = 3; } ); var pres = []; - splitedHtml.replace( /
    ([\s\S]*?)<\/pre>/gi, function( match, preContent ){
    +		splitedHtml.replace( /([\s\S]*?)<\/pre>/gi, function( match, preContent ){
     			pres.push( preContent );
     		} );
     		return pres;
    @@ -873,31 +943,34 @@ CKEDITOR.STYLE_OBJECT = 3;
     	function removeFromElement( style, element )
     	{
     		var def = style._.definition,
    -			attributes = def.attributes,
    +			attributes = CKEDITOR.tools.extend( {}, def.attributes, getOverrides( style )[ element.getName() ] ),
     			styles = def.styles,
    -			overrides = getOverrides( style );
    +			// If the style is only about the element itself, we have to remove the element.
    +			removeEmpty = CKEDITOR.tools.isEmpty( attributes ) && CKEDITOR.tools.isEmpty( styles );
     
    -		function removeAttrs()
    +		// Remove definition attributes/style from the elemnt.
    +		for ( var attName in attributes )
     		{
    -			for ( var attName in attributes )
    -			{
    -				// The 'class' element value must match (#1318).
    -				if ( attName == 'class' && element.getAttribute( attName ) != attributes[ attName ] )
    -					continue;
    -				element.removeAttribute( attName );
    -			}
    +			// The 'class' element value must match (#1318).
    +			if ( ( attName == 'class' || style._.definition.fullMatch )
    +				&& element.getAttribute( attName ) != normalizeProperty( attName, attributes[ attName ] ) )
    +				continue;
    +			removeEmpty = element.hasAttribute( attName );
    +			element.removeAttribute( attName );
     		}
     
    -		// Remove definition attributes/style from the elemnt.
    -		removeAttrs();
     		for ( var styleName in styles )
    +		{
    +			// Full match style insist on having fully equivalence. (#5018)
    +			if ( style._.definition.fullMatch
    +				&& element.getStyle( styleName ) != normalizeProperty( styleName, styles[ styleName ], true ) )
    +				continue;
    +
    +			removeEmpty = removeEmpty || !!element.getStyle( styleName );
     			element.removeStyle( styleName );
    +		}
     
    -		// Now remove override styles on the element.
    -		attributes = overrides[ element.getName() ];
    -		if ( attributes )
    -			removeAttrs();
    -		removeNoAttribsElement( element );
    +		removeEmpty && removeNoAttribsElement( element );
     	}
     
     	// Removes a style from inside an element.
    @@ -1187,6 +1260,13 @@ CKEDITOR.STYLE_OBJECT = 3;
     		return overrides;
     	}
     
    +	function normalizeProperty( name, value, isStyle )
    +	{
    +		var temp = new CKEDITOR.dom.element( 'span' );
    +		temp [ isStyle ? 'setStyle' : 'setAttribute' ]( name, value );
    +		return temp[ isStyle ? 'getStyle' : 'getAttribute' ]( name );
    +	}
    +
     	function normalizeCssText( unparsedCssText, nativeNormalize )
     	{
     		var styleText;
    @@ -1209,6 +1289,38 @@ CKEDITOR.STYLE_OBJECT = 3;
     							 .toLowerCase();
     	}
     
    +	// Turn inline style text properties into one hash.
    +	function parseStyleText( styleText )
    +	{
    +		var retval = {};
    +		styleText
    +		   .replace( /"/g, '"' )
    +		   .replace( /\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g, function( match, name, value )
    +		{
    +			retval[ name ] = value;
    +		} );
    +		return retval;
    +	}
    +
    +	function compareCssText( source, target )
    +	{
    +		typeof source == 'string' && ( source = parseStyleText( source ) );
    +		typeof target == 'string' && ( target = parseStyleText( target ) );
    +		for( var name in source )
    +		{
    +			// Value 'inherit'  is treated as a wildcard,
    +			// which will match any value.
    +			if ( !( name in target &&
    +					( target[ name ] == source[ name ]
    +						|| source[ name ] == 'inherit'
    +						|| target[ name ] == 'inherit' ) ) )
    +			{
    +				return false;
    +			}
    +		}
    +		return true;
    +	}
    +
     	function applyStyle( document, remove )
     	{
     		// Get all ranges from the selection.
    @@ -1256,3 +1368,75 @@ CKEDITOR.loadStylesSet = function( name, url, callback )
     		CKEDITOR.stylesSet.addExternal( name, url, '' );
     		CKEDITOR.stylesSet.load( name, callback );
     	};
    +
    +
    +/**
    + * Gets the current styleSet for this instance
    + * @param {Function} The function to be called with the styles data.
    + * @example
    + * editor.getStylesSet( function( stylesDefinitions ) {} );
    + */
    +CKEDITOR.editor.prototype.getStylesSet = function( callback )
    +{
    +	if ( !this._.stylesDefinitions )
    +	{
    +		var editor = this,
    +			// Respect the backwards compatible definition entry
    +			configStyleSet = editor.config.stylesCombo_stylesSet || editor.config.stylesSet || 'default';
    +
    +		// #5352 Allow to define the styles directly in the config object
    +		if ( configStyleSet instanceof Array )
    +		{
    +			editor._.stylesDefinitions = configStyleSet;
    +			callback( configStyleSet );
    +			return;
    +		}
    +
    +		var	partsStylesSet = configStyleSet.split( ':' ),
    +			styleSetName = partsStylesSet[ 0 ],
    +			externalPath = partsStylesSet[ 1 ],
    +			pluginPath = CKEDITOR.plugins.registered.styles.path;
    +
    +		CKEDITOR.stylesSet.addExternal( styleSetName,
    +				externalPath ?
    +					partsStylesSet.slice( 1 ).join( ':' ) :
    +					pluginPath + 'styles/' + styleSetName + '.js', '' );
    +
    +		CKEDITOR.stylesSet.load( styleSetName, function( stylesSet )
    +			{
    +				editor._.stylesDefinitions = stylesSet[ styleSetName ];
    +				callback( editor._.stylesDefinitions );
    +			} ) ;
    +	}
    +	else
    +		callback( this._.stylesDefinitions );
    +};
    +
    +/**
    + * The "styles definition set" to use in the editor. They will be used in the
    + * styles combo and the Style selector of the div container. 
    + * The styles may be defined in the page containing the editor, or can be + * loaded on demand from an external file. In the second case, if this setting + * contains only a name, the styles definition file will be loaded from the + * "styles" folder inside the styles plugin folder. + * Otherwise, this setting has the "name:url" syntax, making it + * possible to set the URL from which loading the styles file.
    + * Previously this setting was available as config.stylesCombo_stylesSet
    + * @type String|Array + * @default 'default' + * @since 3.3 + * @example + * // Load from the styles' styles folder (mystyles.js file). + * config.stylesSet = 'mystyles'; + * @example + * // Load from a relative URL. + * config.stylesSet = 'mystyles:/editorstyles/styles.js'; + * @example + * // Load from a full URL. + * config.stylesSet = 'mystyles:http://www.example.com/editorstyles/styles.js'; + * @example + * // Load from a list of definitions. + * config.stylesSet = [ + * { name : 'Strong Emphasis', element : 'strong' }, + * { name : 'Emphasis', element : 'em' }, ... ]; + */ diff --git a/_source/plugins/styles/styles/default.js b/_source/plugins/styles/styles/default.js new file mode 100644 index 0000000..c5fd85f --- /dev/null +++ b/_source/plugins/styles/styles/default.js @@ -0,0 +1,88 @@ +/* +Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. +For licensing, see LICENSE.html or http://ckeditor.com/license +*/ + +CKEDITOR.stylesSet.add( 'default', +[ + /* Block Styles */ + + // These styles are already available in the "Format" combo, so they are + // not needed here by default. You may enable them to avoid placing the + // "Format" combo in the toolbar, maintaining the same features. + /* + { name : 'Paragraph' , element : 'p' }, + { name : 'Heading 1' , element : 'h1' }, + { name : 'Heading 2' , element : 'h2' }, + { name : 'Heading 3' , element : 'h3' }, + { name : 'Heading 4' , element : 'h4' }, + { name : 'Heading 5' , element : 'h5' }, + { name : 'Heading 6' , element : 'h6' }, + { name : 'Preformatted Text', element : 'pre' }, + { name : 'Address' , element : 'address' }, + */ + + { name : 'Blue Title' , element : 'h3', styles : { 'color' : 'Blue' } }, + { name : 'Red Title' , element : 'h3', styles : { 'color' : 'Red' } }, + + /* Inline Styles */ + + // These are core styles available as toolbar buttons. You may opt enabling + // some of them in the Styles combo, removing them from the toolbar. + /* + { name : 'Strong' , element : 'strong', overrides : 'b' }, + { name : 'Emphasis' , element : 'em' , overrides : 'i' }, + { name : 'Underline' , element : 'u' }, + { name : 'Strikethrough' , element : 'strike' }, + { name : 'Subscript' , element : 'sub' }, + { name : 'Superscript' , element : 'sup' }, + */ + + { name : 'Marker: Yellow' , element : 'span', styles : { 'background-color' : 'Yellow' } }, + { name : 'Marker: Green' , element : 'span', styles : { 'background-color' : 'Lime' } }, + + { name : 'Big' , element : 'big' }, + { name : 'Small' , element : 'small' }, + { name : 'Typewriter' , element : 'tt' }, + + { name : 'Computer Code' , element : 'code' }, + { name : 'Keyboard Phrase' , element : 'kbd' }, + { name : 'Sample Text' , element : 'samp' }, + { name : 'Variable' , element : 'var' }, + + { name : 'Deleted Text' , element : 'del' }, + { name : 'Inserted Text' , element : 'ins' }, + + { name : 'Cited Work' , element : 'cite' }, + { name : 'Inline Quotation' , element : 'q' }, + + { name : 'Language: RTL' , element : 'span', attributes : { 'dir' : 'rtl' } }, + { name : 'Language: LTR' , element : 'span', attributes : { 'dir' : 'ltr' } }, + + /* Object Styles */ + + { + name : 'Image on Left', + element : 'img', + attributes : + { + 'style' : 'padding: 5px; margin-right: 5px', + 'border' : '2', + 'align' : 'left' + } + }, + + { + name : 'Image on Right', + element : 'img', + attributes : + { + 'style' : 'padding: 5px; margin-left: 5px', + 'border' : '2', + 'align' : 'right' + } + }, + + { name : 'Borderless Table', element : 'table', styles: { 'border-style': 'hidden', 'background-color' : '#E6E6FA' } }, + { name : 'Square Bulleted List', element : 'ul', styles : { 'list-style-type' : 'square' } } +]); diff --git a/_source/plugins/stylescombo/plugin.js b/_source/plugins/stylescombo/plugin.js index 2b4716a..8ed7f9b 100644 --- a/_source/plugins/stylescombo/plugin.js +++ b/_source/plugins/stylescombo/plugin.js @@ -5,8 +5,6 @@ For licensing, see LICENSE.html or http://ckeditor.com/license (function() { - var stylesManager; - CKEDITOR.plugins.add( 'stylescombo', { requires : [ 'richcombo', 'styles' ], @@ -15,20 +13,38 @@ For licensing, see LICENSE.html or http://ckeditor.com/license { var config = editor.config, lang = editor.lang.stylesCombo, - pluginPath = this.path, - styles; + styles = {}, + stylesList = []; + + function loadStylesSet( callback ) + { + editor.getStylesSet( function( stylesDefinitions ) + { + if ( !stylesList.length ) + { + var style, + styleName; + + // Put all styles into an Array. + for ( var i = 0 ; i < stylesDefinitions.length ; i++ ) + { + var styleDefinition = stylesDefinitions[ i ]; + + styleName = styleDefinition.name; - if ( !stylesManager ) - stylesManager = CKEDITOR.stylesSet; + style = styles[ styleName ] = new CKEDITOR.style( styleDefinition ); + style._name = styleName; - var comboStylesSet = config.stylesCombo_stylesSet.split( ':' ), - styleSetName = comboStylesSet[ 0 ], - externalPath = comboStylesSet[ 1 ]; + stylesList.push( style ); + } - stylesManager.addExternal( styleSetName, - externalPath ? - comboStylesSet.slice( 1 ).join( ':' ) : - pluginPath + 'styles/' + styleSetName + '.js', '' ); + // Sorts the Array, so the styles get grouped by type. + stylesList.sort( sortStyles ); + } + + callback && callback(); + }); + } editor.ui.addRichCombo( 'Styles', { @@ -47,36 +63,14 @@ For licensing, see LICENSE.html or http://ckeditor.com/license { var combo = this; - CKEDITOR.stylesSet.load( styleSetName, function( stylesSet ) + loadStylesSet( function() { - var stylesDefinitions = stylesSet[ styleSetName ], - style, - styleName, - stylesList = []; - - styles = {}; - - // Put all styles into an Array. - for ( var i = 0 ; i < stylesDefinitions.length ; i++ ) - { - var styleDefinition = stylesDefinitions[ i ]; - - styleName = styleDefinition.name; - - style = styles[ styleName ] = new CKEDITOR.style( styleDefinition ); - style._name = styleName; - - stylesList.push( style ); - } - - // Sorts the Array, so the styles get grouped - // by type. - stylesList.sort( sortStyles ); + var style, styleName; // Loop over the Array, adding all items to the // combo. var lastType; - for ( i = 0 ; i < stylesList.length ; i++ ) + for ( var i = 0 ; i < stylesList.length ; i++ ) { style = stylesList[ i ]; styleName = style._name; @@ -91,7 +85,7 @@ For licensing, see LICENSE.html or http://ckeditor.com/license combo.add( styleName, - style.type == CKEDITOR.STYLE_OBJECT ? styleName : buildPreview( style._.definition ), + style.type == CKEDITOR.STYLE_OBJECT ? styleName : style.buildPreview(), styleName ); } @@ -109,15 +103,6 @@ For licensing, see LICENSE.html or http://ckeditor.com/license var style = styles[ value ], selection = editor.getSelection(); - if ( style.type == CKEDITOR.STYLE_OBJECT ) - { - var element = selection.getSelectedElement(); - if ( element ) - style.applyToObject( element ); - - return; - } - var elementPath = new CKEDITOR.dom.elementPath( selection.getStartElement() ); if ( style.type == CKEDITOR.STYLE_INLINE && style.checkActive( elementPath ) ) @@ -163,13 +148,12 @@ For licensing, see LICENSE.html or http://ckeditor.com/license onOpen : function() { - if ( CKEDITOR.env.ie ) + if ( CKEDITOR.env.ie || CKEDITOR.env.webkit ) editor.focus(); var selection = editor.getSelection(); var element = selection.getSelectedElement(), - elementName = element && element.getName(), elementPath = new CKEDITOR.dom.elementPath( element || selection.getStartElement() ); var counter = [ 0, 0, 0, 0 ]; @@ -180,25 +164,15 @@ For licensing, see LICENSE.html or http://ckeditor.com/license var style = styles[ name ], type = style.type; - if ( type == CKEDITOR.STYLE_OBJECT ) + if ( style.checkActive( elementPath ) ) + this.mark( name ); + else if ( type == CKEDITOR.STYLE_OBJECT && !style.checkApplicable( elementPath ) ) { - if ( element && style.element == elementName ) - { - if ( style.checkElementRemovable( element, true ) ) - this.mark( name ); - - counter[ type ]++; - } - else - this.hideItem( name ); + this.hideItem( name ); + counter[ type ]--; } - else - { - if ( style.checkActive( elementPath ) ) - this.mark( name ); - counter[ type ]++; - } + counter[ type ]++; } if ( !counter[ CKEDITOR.STYLE_BLOCK ] ) @@ -211,40 +185,10 @@ For licensing, see LICENSE.html or http://ckeditor.com/license this.hideGroup( lang[ 'panelTitle' + String( CKEDITOR.STYLE_OBJECT ) ] ); } }); - } - }); - - function buildPreview( styleDefinition ) - { - var html = []; - - var elementName = styleDefinition.element; - // Avoid in the preview. - if ( elementName == 'bdo' ) - elementName = 'span'; - - html = [ '<', elementName ]; - - // Assign all defined attributes. - var attribs = styleDefinition.attributes; - if ( attribs ) - { - for ( var att in attribs ) - { - html.push( ' ', att, '="', attribs[ att ], '"' ); - } + editor.on( 'instanceReady', function() { loadStylesSet(); } ); } - - // Assign the style attribute. - var cssStyle = CKEDITOR.style.getStyleText( styleDefinition ); - if ( cssStyle ) - html.push( ' style="', cssStyle, '"' ); - - html.push( '>', styleDefinition.name, '' ); - - return html.join( '' ); - } + }); function sortStyles( styleA, styleB ) { @@ -258,25 +202,3 @@ For licensing, see LICENSE.html or http://ckeditor.com/license -1; } })(); - -/** - * The "styles definition set" to load into the styles combo. The styles may - * be defined in the page containing the editor, or can be loaded on demand - * from an external file when opening the styles combo for the fist time. In - * the second case, if this setting contains only a name, the styles definition - * file will be loaded from the "styles" folder inside the stylescombo plugin - * folder. Otherwise, this setting has the "name:url" syntax, making it - * possible to set the URL from which loading the styles file. - * @type string - * @default 'default' - * @example - * // Load from the stylescombo styles folder (mystyles.js file). - * config.stylesCombo_stylesSet = 'mystyles'; - * @example - * // Load from a relative URL. - * config.stylesCombo_stylesSet = 'mystyles:/editorstyles/styles.js'; - * @example - * // Load from a full URL. - * config.stylesCombo_stylesSet = 'mystyles:http://www.example.com/editorstyles/styles.js'; - */ -CKEDITOR.config.stylesCombo_stylesSet = 'default'; diff --git a/_source/plugins/stylescombo/styles/default.js b/_source/plugins/stylescombo/styles/default.js deleted file mode 100644 index fe92de3..0000000 --- a/_source/plugins/stylescombo/styles/default.js +++ /dev/null @@ -1,85 +0,0 @@ -/* -Copyright (c) 2003-2010, CKSource - Frederico Knabben. All rights reserved. -For licensing, see LICENSE.html or http://ckeditor.com/license -*/ - -CKEDITOR.stylesSet.add( 'default', -[ - /* Block Styles */ - - // These styles are already available in the "Format" combo, so they are - // not needed here by default. You may enable them to avoid placing the - // "Format" combo in the toolbar, maintaining the same features. - /* - { name : 'Paragraph' , element : 'p' }, - { name : 'Heading 1' , element : 'h1' }, - { name : 'Heading 2' , element : 'h2' }, - { name : 'Heading 3' , element : 'h3' }, - { name : 'Heading 4' , element : 'h4' }, - { name : 'Heading 5' , element : 'h5' }, - { name : 'Heading 6' , element : 'h6' }, - { name : 'Preformatted Text', element : 'pre' }, - { name : 'Address' , element : 'address' }, - */ - - { name : 'Blue Title' , element : 'h3', styles : { 'color' : 'Blue' } }, - { name : 'Red Title' , element : 'h3', styles : { 'color' : 'Red' } }, - - /* Inline Styles */ - - // These are core styles available as toolbar buttons. You may opt enabling - // some of them in the Styles combo, removing them from the toolbar. - /* - { name : 'Strong' , element : 'strong', overrides : 'b' }, - { name : 'Emphasis' , element : 'em' , overrides : 'i' }, - { name : 'Underline' , element : 'u' }, - { name : 'Strikethrough' , element : 'strike' }, - { name : 'Subscript' , element : 'sub' }, - { name : 'Superscript' , element : 'sup' }, - */ - - { name : 'Marker: Yellow' , element : 'span', styles : { 'background-color' : 'Yellow' } }, - { name : 'Marker: Green' , element : 'span', styles : { 'background-color' : 'Lime' } }, - - { name : 'Big' , element : 'big' }, - { name : 'Small' , element : 'small' }, - { name : 'Typewriter' , element : 'tt' }, - - { name : 'Computer Code' , element : 'code' }, - { name : 'Keyboard Phrase' , element : 'kbd' }, - { name : 'Sample Text' , element : 'samp' }, - { name : 'Variable' , element : 'var' }, - - { name : 'Deleted Text' , element : 'del' }, - { name : 'Inserted Text' , element : 'ins' }, - - { name : 'Cited Work' , element : 'cite' }, - { name : 'Inline Quotation' , element : 'q' }, - - { name : 'Language: RTL' , element : 'span', attributes : { 'dir' : 'rtl' } }, - { name : 'Language: LTR' , element : 'span', attributes : { 'dir' : 'ltr' } }, - - /* Object Styles */ - - { - name : 'Image on Left', - element : 'img', - attributes : - { - 'style' : 'padding: 5px; margin-right: 5px', - 'border' : '2', - 'align' : 'left' - } - }, - - { - name : 'Image on Right', - element : 'img', - attributes : - { - 'style' : 'padding: 5px; margin-left: 5px', - 'border' : '2', - 'align' : 'right' - } - } -]); diff --git a/_source/plugins/table/dialogs/table.js b/_source/plugins/table/dialogs/table.js index 87e55df..6ad826c 100644 --- a/_source/plugins/table/dialogs/table.js +++ b/_source/plugins/table/dialogs/table.js @@ -568,6 +568,8 @@ For licensing, see LICENSE.html or http://ckeditor.com/license { if ( this.getValue() ) selectedTable.setAttribute( 'summary', this.getValue() ); + else + selectedTable.removeAttribute( 'summary' ); } } ] diff --git a/_source/plugins/tabletools/dialogs/tableCell.js b/_source/plugins/tabletools/dialogs/tableCell.js index 074ee83..c970727 100644 --- a/_source/plugins/tabletools/dialogs/tableCell.js +++ b/_source/plugins/tabletools/dialogs/tableCell.js @@ -515,9 +515,14 @@ CKEDITOR.dialog.add( 'cellProperties', function( editor ) }, onOk : function() { + var selection = this._.editor.getSelection(), + bookmarks = selection.createBookmarks(); + var cells = this.cells; for ( var i = 0 ; i < cells.length ; i++ ) this.commitContent( cells[ i ] ); + + selection.selectBookmarks( bookmarks ); } }; } ); diff --git a/_source/plugins/tabletools/plugin.js b/_source/plugins/tabletools/plugin.js index 4a3a004..7590078 100644 --- a/_source/plugins/tabletools/plugin.js +++ b/_source/plugins/tabletools/plugin.js @@ -86,6 +86,43 @@ For licensing, see LICENSE.html or http://ckeditor.com/license return retval; } + function getFocusedCell( cellsToDelete ) { + var i = 0, + last = cellsToDelete.length - 1, + database = {}, + cell,focusedCell, + tr; + + while ( ( cell = cellsToDelete[ i++ ] ) ) + CKEDITOR.dom.element.setMarker( database, cell, 'delete_cell', true ); + + // 1.first we check left or right side focusable cell row by row; + i = 0; + while ( ( cell = cellsToDelete[ i++ ] ) ) + { + if ( ( focusedCell = cell.getPrevious() ) && !focusedCell.getCustomData( 'delete_cell' ) + || ( focusedCell = cell.getNext() ) && !focusedCell.getCustomData( 'delete_cell' ) ) + { + CKEDITOR.dom.element.clearAllMarkers( database ); + return focusedCell; + } + } + + CKEDITOR.dom.element.clearAllMarkers( database ); + + // 2. then we check the toppest row (outside the selection area square) focusable cell + tr = cellsToDelete[ 0 ].getParent(); + if ( ( tr = tr.getPrevious() ) ) + return tr.getLast(); + + // 3. last we check the lowerest row focusable cell + tr = cellsToDelete[ last ].getParent(); + if ( ( tr = tr.getNext() ) ) + return tr.getChild( 0 ); + + return null; + } + function clearRow( $tr ) { // Get the array of row's cells. @@ -277,13 +314,22 @@ For licensing, see LICENSE.html or http://ckeditor.com/license if ( selectionOrCell instanceof CKEDITOR.dom.selection ) { var cellsToDelete = getSelectedCells( selectionOrCell ); + var table = cellsToDelete[ 0 ] && cellsToDelete[ 0 ].getAscendant( 'table' ); + var cellToFocus = getFocusedCell( cellsToDelete ); + for ( var i = cellsToDelete.length - 1 ; i >= 0 ; i-- ) deleteCells( cellsToDelete[ i ] ); + + if ( cellToFocus ) + placeCursorInCell( cellToFocus, true ); + else if ( table ) + table.remove(); } else if ( selectionOrCell instanceof CKEDITOR.dom.element ) { - if ( selectionOrCell.getParent().getChildCount() == 1 ) - selectionOrCell.getParent().remove(); + var tr = selectionOrCell.getParent(); + if ( tr.getChildCount() == 1 ) + tr.remove(); else selectionOrCell.remove(); } diff --git a/_source/plugins/templates/dialogs/templates.js b/_source/plugins/templates/dialogs/templates.js index 98c8feb..af04e55 100644 --- a/_source/plugins/templates/dialogs/templates.js +++ b/_source/plugins/templates/dialogs/templates.js @@ -41,10 +41,10 @@ For licensing, see LICENSE.html or http://ckeditor.com/license '' ); // Build the inner HTML of our new item DIV. - var html = ''; + var html = '
    '; if ( template.image && imagesPath ) - html += ''; + html += ''; html += '']; for(T=0;T0)W.push('style="'+Y.join('; ')+'" ');W.push('>',M[T],'');}W.push('');return W.join('');},V={role:'presentation'};O&&O.align&&(V.align=O.align);k.dialog.uiElement.call(this,K,O||{type:'hbox'},N,'table',S,V,U);},vbox:function(K,L,M,N,O){if(arguments.length<3)return;this._||(this._={});var P=this._.children=L,Q=O&&O.width||null,R=O&&O.heights||null,S=function(){var T=['');for(var U=0;U');}T.push('
    0)T.push('style="',V.join('; '),'" ');T.push(' class="cke_dialog_ui_vbox_child">',M[U],'
    ');return T.join('');};k.dialog.uiElement.call(this,K,O||{type:'vbox'},N,'div',null,{role:'presentation'},S);}};})();k.dialog.uiElement.prototype={getElement:function(){return a.document.getById(this.domId);},getInputElement:function(){return this.getElement();},getDialog:function(){return this._.dialog;},setValue:function(K){this.getInputElement().setValue(K);this.fire('change',{value:K});return this;},getValue:function(){return this.getInputElement().getValue();},isChanged:function(){return false;},selectParentTab:function(){var N=this;var K=N.getInputElement(),L=K,M;while((L=L.getParent())&&L.$.className.search('cke_dialog_page_contents')==-1){}if(!L)return N;M=L.getAttribute('name');if(N._.dialog._.currentTabId!=M)N._.dialog.selectPage(M);return N;},focus:function(){this.selectParentTab().getInputElement().focus();return this;},registerEvents:function(K){var L=/^on([A-Z]\w+)/,M,N=function(P,Q,R,S){Q.on('load',function(){P.getInputElement().on(R,S,P);});}; for(var O in K){if(!(M=O.match(L)))continue;if(this.eventProcessors[O])this.eventProcessors[O].call(this,this._.dialog,K[O]);else N(this,this._.dialog,M[1].toLowerCase(),K[O]);}return this;},eventProcessors:{onLoad:function(K,L){K.on('load',L,this);},onShow:function(K,L){K.on('show',L,this);},onHide:function(K,L){K.on('hide',L,this);}},accessKeyDown:function(K,L){this.focus();},accessKeyUp:function(K,L){},disable:function(){var K=this.getInputElement();K.setAttribute('disabled','true');K.addClass('cke_disabled');},enable:function(){var K=this.getInputElement();K.removeAttribute('disabled');K.removeClass('cke_disabled');},isEnabled:function(){return!this.getInputElement().getAttribute('disabled');},isVisible:function(){return this.getInputElement().isVisible();},isFocusable:function(){if(!this.isEnabled()||!this.isVisible())return false;return true;}};k.dialog.hbox.prototype=e.extend(new k.dialog.uiElement(),{getChild:function(K){var L=this;if(arguments.length<1)return L._.children.concat();if(!K.splice)K=[K];if(K.length<2)return L._.children[K[0]];else return L._.children[K[0]]&&L._.children[K[0]].getChild?L._.children[K[0]].getChild(K.slice(1,K.length)):null;}},true);k.dialog.vbox.prototype=new k.dialog.hbox();(function(){var K={build:function(L,M,N){var O=M.children,P,Q=[],R=[];for(var S=0;S'+N+'
    ';else L.setHtml(N);M.remove();};function t(L){var M=/(\S\s*)\n(?:\s|(]+_fck_bookmark.*?\/span>))*\n(?!$)/gi,N=L.getName(),O=u(L.getOuterHtml(),M,function(Q,R,S){return R+'
    '+S+'
    ';}),P=[];O.replace(/
    ([\s\S]*?)<\/pre>/gi,function(Q,R){P.push(R);});return P;};function u(L,M,N){var O='',P='';L=L.replace(/(^]+_fck_bookmark.*?\/span>)|(]+_fck_bookmark.*?\/span>$)/gi,function(Q,R,S){R&&(O=R);S&&(P=S);return '';});return O+L.replace(M,N)+P;};function v(L,M){var N=new d.documentFragment(M.getDocument());for(var O=0;O');P=P.replace(/[ \t]{2,}/g,function(R){return e.repeat(' ',R.length-1)+' ';});var Q=M.clone();Q.setHtml(P);N.append(Q);}return N;};function w(L,M){var N=L.getHtml();N=u(N,/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,'');N=N.replace(/[ \t\r\n]*(]*>)[ \t\r\n]*/gi,'$1');N=N.replace(/([ \t\n\r]+| )/g,' ');N=N.replace(/]*>/gi,'\n');if(c){var O=L.getDocument().createElement('div');O.append(M);M.$.outerHTML='
    '+N+'
    ';M=O.getFirst().remove();}else M.setHtml(N);return M;};function x(L,M){var N=L._.definition,O=N.attributes,P=N.styles,Q=I(L);function R(){for(var T in O){if(T=='class'&&M.getAttribute(T)!=O[T])continue;M.removeAttribute(T);}};R();for(var S in P)M.removeStyle(S);O=Q[M.getName()];if(O)R();A(M);};function y(L,M){var N=L._.definition,O=N.attributes,P=N.styles,Q=I(L),R=M.getElementsByTag(L.element);for(var S=R.count();--S>=0;)x(L,R.getItem(S));for(var T in Q){if(T!=L.element){R=M.getElementsByTag(T);for(S=R.count()-1;S>=0;S--){var U=R.getItem(S);z(U,Q[T]);}}}};function z(L,M){var N=M&&M.attributes;if(N)for(var O=0;O0)G+=(E.$.offsetWidth||0)-(E.$.clientWidth||0);G+=4;E.setStyle('width',G+'px');u.element.addClass('cke_frameLoaded');var H=u.element.$.scrollHeight;if(c&&b.quirks&&H>0)H+=(E.$.offsetHeight||0)-(E.$.clientHeight||0);E.setStyle('height',H+'px');t._.currentBlock.element.setStyle('display','none').removeStyle('display');}else E.removeStyle('height');var I=t.element,J=I.getWindow(),K=J.getScrollPosition(),L=J.getViewPaneSize(),M={height:I.$.offsetHeight,width:I.$.offsetWidth};if(z?A<0:A+M.width>L.width+K.x)A+=M.width*(z?1:-1);if(B+M.height>L.height+K.y)B-=M.height;v.setStyles({top:B+'px',left:A+'px',opacity:'1'});},this);t.isLoaded?D():t.onLoad=D;e.setTimeout(function(){w.$.contentWindow.focus();this.allowBlur(true);},0,this);},0,this);this.visible=1;if(this.onShow)this.onShow.call(this);m=false;},hide:function(){var o=this;if(o.visible&&(!o.onHide||o.onHide.call(o)!==true)){o.hideChild();o.element.setStyle('display','none');o.visible=0;}},allowBlur:function(o){var p=this._.panel;if(o!=undefined)p.allowBlur=o;return p.allowBlur;},showAsChild:function(o,p,q,r,s,t){if(this._.activeChild==o&&o._.panel._.offsetParentId==q.getId())return;this.hideChild();o.onHide=e.bind(function(){e.setTimeout(function(){if(!this._.focused)this.hide();},0,this);},this);this._.activeChild=o;this._.focused=false;o.showBlock(p,q,r,s,t);if(b.ie7Compat||b.ie8&&b.ie6Compat)setTimeout(function(){o.element.getChild(0).$.style.cssText+='';},100);},hideChild:function(){var o=this._.activeChild;if(o){delete o.onHide;delete this._.activeChild;o.hide();}}}});a.on('instanceDestroyed',function(){var o=e.isEmpty(a.instances);for(var p in l){var q=l[p];if(o)q.destroy();else q.element.hide();}o&&(l={});});})();j.add('menu',{beforeInit:function(l){var m=l.config.menu_groups.split(','),n=l._.menuGroups={},o=l._.menuItems={};for(var p=0;p'],y=q.length,z=y&&q[0].group;for(var A=0;A
    ');z=B.group;}B.render(this,A,x);}x.push('
    ');t.setHtml(x.join(''));if(this.parent)this.parent._.panel.showAsChild(s,this.id,m,n,o,p);else s.showBlock(this.id,m,n,o,p);r.fire('menuShow',[s]);},hide:function(){this._.panel&&this._.panel.hide();}}});function l(m){m.sort(function(n,o){if(n.groupo.group)return 1;return n.ordero.order?1:0;});};})();a.menuItem=e.createClass({$:function(l,m,n){var o=this;e.extend(o,n,{order:0,className:'cke_button_'+m});o.group=l._.menuGroups[o.group];o.editor=l;o.name=m;},proto:{render:function(l,m,n){var u=this; -var o=l.id+String(m),p=typeof u.state=='undefined'?2:u.state,q=' cke_'+(p==1?'on':p==0?'disabled':'off'),r=u.label;if(u.className)q+=' '+u.className;var s=u.getItems;n.push(''+'');if(s)n.push('','&#',u.editor.lang.dir=='rtl'?'9668':'9658',';','');n.push(r,'');}}});i.menu_subMenuDelay=400;i.menu_groups='clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div';(function(){var l=function(n,o){return n._.modes&&n._.modes[o||n.mode];},m;j.add('editingblock',{init:function(n){if(!n.config.editingBlock)return;n.on('themeSpace',function(o){if(o.data.space=='contents')o.data.html+='
    ';});n.on('themeLoaded',function(){n.fireOnce('editingBlockReady');});n.on('uiReady',function(){n.setMode(n.config.startupMode);});n.on('afterSetData',function(){if(!m){function o(){m=true;l(n).loadData(n.getData());m=false;};if(n.mode)o();else n.on('mode',function(){o();n.removeListener('mode',arguments.callee);});}});n.on('beforeGetData',function(){if(!m&&n.mode){m=true;n.setData(l(n).getData());m=false;}});n.on('getSnapshot',function(o){if(n.mode)o.data=l(n).getSnapshotData();});n.on('loadSnapshot',function(o){if(n.mode)l(n).loadSnapshotData(o.data);});n.on('mode',function(o){o.removeListener();if(n.config.startupFocus)n.focus();setTimeout(function(){n.fireOnce('instanceReady');a.fire('instanceReady',null,n);});});}});a.editor.prototype.mode='';a.editor.prototype.addMode=function(n,o){o.name=n;(this._.modes||(this._.modes={}))[n]=o;};a.editor.prototype.setMode=function(n){var o,p=this.getThemeSpace('contents'),q=this.checkDirty(); -if(this.mode){if(n==this.mode)return;this.fire('beforeModeUnload');var r=l(this);o=r.getData();r.unload(p);this.mode='';}p.setHtml('');var s=l(this,n);if(!s)throw '[CKEDITOR.editor.setMode] Unknown mode "'+n+'".';if(!q)this.on('mode',function(){this.resetDirty();this.removeListener('mode',arguments.callee);});s.load(p,typeof o!='string'?this.getData():o);};a.editor.prototype.focus=function(){var n=l(this);if(n)n.focus();};})();i.startupMode='wysiwyg';i.startupFocus=false;i.editingBlock=true;(function(){function l(){var v=this;try{var s=v.getSelection();if(!s)return;var t=s.getStartElement(),u=new d.elementPath(t);if(!u.compare(v._.selectionPreviousPath)){v._.selectionPreviousPath=u;v.fire('selectionChange',{selection:s,path:u,element:t});}}catch(w){}};var m,n;function o(){n=true;if(m)return;p.call(this);m=e.setTimeout(p,200,this);};function p(){m=null;if(n){e.setTimeout(l,0,this);n=false;}};var q={exec:function(s){switch(s.mode){case 'wysiwyg':s.document.$.execCommand('SelectAll',false,null);break;case 'source':}},canUndo:false};j.add('selection',{init:function(s){s.on('contentDom',function(){var t=s.document,u=t.getBody();if(c){var v,w;u.on('focusin',function(){if(v){try{v.select();}catch(z){}v=null;}});s.window.on('focus',function(){w=true;y();});u.on('beforedeactivate',function(){w=false;});u.on('mousedown',x);u.on('mouseup',function(){w=true;setTimeout(function(){y(true);},0);});u.on('keydown',x);u.on('keyup',function(){w=true;y();});t.on('selectionchange',y);function x(){w=false;};function y(z){if(w){var A=s.document,B=A&&A.$.selection;if(z&&B&&B.type=='None')if(!A.$.queryCommandEnabled('InsertImage')){e.setTimeout(y,50,this,true);return;}v=B&&B.createRange();o.call(s);}};}else{t.on('mouseup',o,s);t.on('keyup',o,s);}});s.addCommand('selectAll',q);s.ui.addButton('SelectAll',{label:s.lang.selectAll,command:'selectAll'});s.selectionChange=o;}});a.editor.prototype.getSelection=function(){return this.document&&this.document.getSelection();};a.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath;};g.prototype.getSelection=function(){var s=new d.selection(this);return!s||s.isInvalid?null:s;};a.SELECTION_NONE=1;a.SELECTION_TEXT=2;a.SELECTION_ELEMENT=3;d.selection=function(s){var v=this;var t=s.getCustomData('cke_locked_selection');if(t)return t;v.document=s;v.isLocked=false;v._={cache:{}};if(c){var u=v.getNative().createRange();if(!u||u.item&&u.item(0).ownerDocument!=v.document.$||u.parentElement&&u.parentElement().ownerDocument!=v.document.$)v.isInvalid=true; -}return v;};var r={img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,th:1,thead:1,tfoot:1};d.selection.prototype={getNative:c?function(){return this._.cache.nativeSel||(this._.cache.nativeSel=this.document.$.selection);}:function(){return this._.cache.nativeSel||(this._.cache.nativeSel=this.document.getWindow().$.getSelection());},getType:c?function(){var s=this._.cache;if(s.type)return s.type;var t=1;try{var u=this.getNative(),v=u.type;if(v=='Text')t=2;if(v=='Control')t=3;if(u.createRange().parentElement)t=2;}catch(w){}return s.type=t;}:function(){var s=this._.cache;if(s.type)return s.type;var t=2,u=this.getNative();if(!u)t=1;else if(u.rangeCount==1){var v=u.getRangeAt(0),w=v.startContainer;if(w==v.endContainer&&w.nodeType==1&&v.endOffset-v.startOffset==1&&r[w.childNodes[v.startOffset].nodeName.toLowerCase()])t=3;}return s.type=t;},getRanges:c?(function(){var s=function(t,u){t=t.duplicate();t.collapse(u);var v=t.parentElement(),w=v.childNodes,x;for(var y=0;y0)break;else if(!A||B==1&&A==-1)return{container:v,offset:y};else if(!B)return{container:v,offset:y+1};x=null;}}if(!x){x=t.duplicate();x.moveToElementText(v);x.collapse(false);}x.setEndPoint('StartToStart',t);var C=x.text.replace(/(\r\n|\r)/g,'\n').length;try{while(C>0)C-=w[--y].nodeValue.length;}catch(D){C=0;}if(C===0)return{container:v,offset:y};else return{container:w[y],offset:-C};};return function(){var E=this;var t=E._.cache;if(t.ranges)return t.ranges;var u=E.getNative(),v=u&&u.createRange(),w=E.getType(),x;if(!u)return[];if(w==2){x=new d.range(E.document);var y=s(v,true);x.setStart(new d.node(y.container),y.offset);y=s(v);x.setEnd(new d.node(y.container),y.offset);return t.ranges=[x];}else if(w==3){var z=E._.cache.ranges=[];for(var A=0;A=0){q.collapse(true);o.setEnd(q.endContainer.$,q.endOffset);}else throw r;}var p=q.document.getSelection().getNative();p.removeAllRanges();p.addRange(o);};})();(function(){var l={elements:{$:function(m){var n=m.attributes,o=n&&n._cke_realelement,p=o&&new a.htmlParser.fragment.fromHtml(decodeURIComponent(o)),q=p&&p.children[0]; -if(q&&m.attributes._cke_resizable){var r=m.attributes.style;if(r){var s=/(?:^|\s)width\s*:\s*(\d+)/i.exec(r),t=s&&s[1];s=/(?:^|\s)height\s*:\s*(\d+)/i.exec(r);var u=s&&s[1];if(t)q.attributes.width=t;if(u)q.attributes.height=u;}}return q;}}};j.add('fakeobjects',{requires:['htmlwriter'],afterInit:function(m){var n=m.dataProcessor,o=n&&n.htmlFilter;if(o)o.addRules(l);}});})();a.editor.prototype.createFakeElement=function(l,m,n,o){var p=this.lang.fakeobjects,q={'class':m,src:a.getUrl('images/spacer.gif'),_cke_realelement:encodeURIComponent(l.getOuterHtml()),_cke_real_node_type:l.type,alt:p[n]||p.unknown};if(n)q._cke_real_element_type=n;if(o)q._cke_resizable=o;return this.document.createElement('img',{attributes:q});};a.editor.prototype.createFakeParserElement=function(l,m,n,o){var p=this.lang.fakeobjects,q,r=new a.htmlParser.basicWriter();l.writeHtml(r);q=r.getHtml();var s={'class':m,src:a.getUrl('images/spacer.gif'),_cke_realelement:encodeURIComponent(q),_cke_real_node_type:l.type,alt:p[n]||p.unknown};if(n)s._cke_real_element_type=n;if(o)s._cke_resizable=o;return new a.htmlParser.element('img',s);};a.editor.prototype.restoreRealElement=function(l){if(l.getAttribute('_cke_real_node_type')!=1)return null;return h.createFromHtml(decodeURIComponent(l.getAttribute('_cke_realelement')),this.document);};j.add('richcombo',{requires:['floatpanel','listblock','button'],beforeInit:function(l){l.ui.addHandler(3,k.richCombo.handler);}});a.UI_RICHCOMBO=3;k.richCombo=e.createClass({$:function(l){var n=this;e.extend(n,l,{title:l.label,modes:{wysiwyg:1}});var m=n.panel||{};delete n.panel;n.id=e.getNextNumber();n.document=m&&m.parent&&m.parent.getDocument()||a.document;m.className=(m.className||'')+' cke_rcombopanel';m.block={multiSelect:m.multiSelect,attributes:m.attributes};n._={panelDefinition:m,items:{},state:2};},statics:{handler:{create:function(l){return new k.richCombo(l);}}},proto:{renderHtml:function(l){var m=[];this.render(l,m);return m.join('');},render:function(l,m){var n=b,o='cke_'+this.id,p=e.addFunction(function(s){var v=this;var t=v._;if(t.state==0)return;v.createPanel(l);if(t.on){t.panel.hide();return;}if(!t.committed){t.list.commit();t.committed=1;}var u=v.getValue();if(u)t.list.mark(u);else t.list.unmarkAll();t.panel.showBlock(v.id,new h(s),4);},this),q={id:o,combo:this,focus:function(){var s=a.document.getById(o).getChild(1);s.focus();},execute:p};l.on('mode',function(){this.setState(this.modes[l.mode]?2:0);},this);var r=e.addFunction(function(s,t){s=new d.event(s); -var u=s.getKeystroke();switch(u){case 13:case 32:case 40:e.callFunction(p,t);break;default:q.onkey(q,u);}s.preventDefault();});m.push('','','',this.label,'','=10900&&!n.hc?'':" href=\"javascript:void('"+this.label+"')\"",' role="button" aria-labelledby="',o,'_label" aria-describedby="',o,'_text" aria-haspopup="true"');if(b.opera||b.gecko&&b.mac)m.push(' onkeypress="return false;"');if(b.gecko)m.push(' onblur="this.style.cssText = this.style.cssText;"');m.push(' onkeydown="CKEDITOR.tools.callFunction( ',r,', event, this );" onclick="CKEDITOR.tools.callFunction(',p,', this); return false;">'+this.label+''+''+''+(b.hc?'':'')+''+''+''+'');if(this.onRender)this.onRender();return q;},createPanel:function(l){if(this._.panel)return;var m=this._.panelDefinition,n=this._.panelDefinition.block,o=m.parent||a.document.getBody(),p=new k.floatPanel(l,o,m),q=p.addListBlock(this.id,n),r=this;p.onShow=function(){if(r.className)this.element.getFirst().addClass(r.className+'_panel');r.setState(1);q.focus(!r.multiSelect&&r.getValue());r._.on=1;if(r.onOpen)r.onOpen();};p.onHide=function(){if(r.className)this.element.getFirst().removeClass(r.className+'_panel');r.setState(2);r._.on=0;if(r.onClose)r.onClose();};p.onEscape=function(){p.hide();r.document.getById('cke_'+r.id).getFirst().getNext().focus();};q.onClick=function(s,t){r.document.getWindow().focus();if(r.onClick)r.onClick.call(r,s,t);if(t)r.setValue(s,r._.items[s]);else r.setValue('');p.hide();};this._.panel=p;this._.list=q;p.getBlock(this.id).onHide=function(){r._.on=0;r.setState(2);};if(this.init)this.init();},setValue:function(l,m){var o=this;o._.value=l;var n=o.document.getById('cke_'+o.id+'_text');if(!(l||m)){m=o.label;n.addClass('cke_inline_label');}else n.removeClass('cke_inline_label');n.setHtml(typeof m!='undefined'?m:l);},getValue:function(){return this._.value||'';},unmarkAll:function(){this._.list.unmarkAll();},mark:function(l){this._.list.mark(l);},hideItem:function(l){this._.list.hideItem(l);},hideGroup:function(l){this._.list.hideGroup(l);},showAll:function(){this._.list.showAll();},add:function(l,m,n){this._.items[l]=n||l;this._.list.add(l,m,n); -},startGroup:function(l){this._.list.startGroup(l);},commit:function(){this._.list.commit();},setState:function(l){var m=this;if(m._.state==l)return;m.document.getById('cke_'+m.id).setState(l);m._.state=l;}}});k.prototype.addRichCombo=function(l,m){this.add(l,3,m);};j.add('htmlwriter');a.htmlWriter=e.createClass({base:a.htmlParser.basicWriter,$:function(){var n=this;n.base();n.indentationChars='\t';n.selfClosingEnd=' />';n.lineBreakChars='\n';n.forceSimpleAmpersand=false;n.sortAttributes=true;n._.indent=false;n._.indentation='';n._.rules={};var l=f;for(var m in e.extend({},l.$nonBodyContent,l.$block,l.$listItem,l.$tableContent))n.setRules(m,{indent:true,breakBeforeOpen:true,breakAfterOpen:true,breakBeforeClose:!l[m]['#'],breakAfterClose:true});n.setRules('br',{breakAfterOpen:true});n.setRules('title',{indent:false,breakAfterOpen:false});n.setRules('style',{indent:false,breakBeforeClose:true});n.setRules('pre',{indent:false});},proto:{openTag:function(l,m){var o=this;var n=o._.rules[l];if(o._.indent)o.indentation();else if(n&&n.breakBeforeOpen){o.lineBreak();o.indentation();}o._.output.push('<',l);},openTagClose:function(l,m){var o=this;var n=o._.rules[l];if(m)o._.output.push(o.selfClosingEnd);else{o._.output.push('>');if(n&&n.indent)o._.indentation+=o.indentationChars;}if(n&&n.breakAfterOpen)o.lineBreak();},attribute:function(l,m){if(typeof m=='string'){this.forceSimpleAmpersand&&(m=m.replace(/&/g,'&'));m=m.replace(/"/g,'"');}this._.output.push(' ',l,'="',m,'"');},closeTag:function(l){var n=this;var m=n._.rules[l];if(m&&m.indent)n._.indentation=n._.indentation.substr(n.indentationChars.length);if(n._.indent)n.indentation();else if(m&&m.breakBeforeClose){n.lineBreak();n.indentation();}n._.output.push('');if(m&&m.breakAfterClose)n.lineBreak();},text:function(l){if(this._.indent){this.indentation();l=e.ltrim(l);}this._.output.push(l);},comment:function(l){if(this._.indent)this.indentation();this._.output.push('');},lineBreak:function(){var l=this;if(l._.output.length>0)l._.output.push(l.lineBreakChars);l._.indent=true;},indentation:function(){this._.output.push(this._.indentation);this._.indent=false;},setRules:function(l,m){var n=this._.rules[l];if(n)e.extend(n,m,true);else this._.rules[l]=m;}}});j.add('menubutton',{requires:['button','contextmenu'],beforeInit:function(l){l.ui.addHandler(5,k.menuButton.handler);}});a.UI_MENUBUTTON=5;(function(){var l=function(m){var n=this._;if(n.state===0)return;n.previousState=n.state;var o=n.menu; -if(!o){o=n.menu=new j.contextMenu(m);o.onHide=e.bind(function(){this.setState(n.previousState);},this);if(this.onMenu)o.addListener(this.onMenu);}if(n.on){o.hide();return;}this.setState(1);o.show(a.document.getById(this._.id),4);};k.menuButton=e.createClass({base:k.button,$:function(m){var n=m.panel;delete m.panel;this.base(m);this.hasArrow=true;this.click=l;},statics:{handler:{create:function(m){return new k.menuButton(m);}}}});})();j.add('dialogui');(function(){var l=function(t){var w=this;w._||(w._={});w._['default']=w._.initValue=t['default']||'';w._.required=t.required||false;var u=[w._];for(var v=1;v',u.label,'','');else{var B={type:'hbox',widths:u.widths,padding:0,children:[{type:'html',html:'