Changeset 3464:71f26f5a1867 for plugins/dcCKEditor/js/ckeditor
- Timestamp:
- 12/21/16 11:58:09 (9 years ago)
- Branch:
- default
- Location:
- plugins/dcCKEditor/js/ckeditor
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
plugins/dcCKEditor/js/ckeditor/CHANGES.md
r3410 r3464 1 1 CKEditor 4 Changelog 2 2 ==================== 3 4 ## CKEditor 4.6.1 5 6 New Features: 7 8 * [#16639](http://dev.ckeditor.com/ticket/16639): The `callback` parameter in the [CKEDITOR.ajax.post](http://docs.ckeditor.com/#!/api/CKEDITOR.ajax-method-post) method became optional. 9 10 Fixed Issues: 11 12 * [#11064](http://dev.ckeditor.com/ticket/11064): [Blink, WebKit] Fixed: Cannot select all editor content when a widget or a non-editable element is the first or last element of the content. Also fixes this issue in the [Select All](http://ckeditor.com/addon/selectall) plugin. 13 * [#14755](http://dev.ckeditor.com/ticket/14755): [Blink, WebKit, IE8] Fixed: Browser hangs when a table is inserted in the place of a selected list with an empty last item. 14 * [#16624](http://dev.ckeditor.com/ticket/16624): Fixed: Improved the [Color Button](http://ckeditor.com/addon/colorbutton) plugin which will now normalize the CSS `background` property if it only contains a color value. This fixes missing background colors when using [Paste from Word](http://ckeditor.com/addon/pastefromword). 15 * [#16600](http://dev.ckeditor.com/ticket/16600): [Blink, WebKit] Fixed: Error thrown occasionally by an uninitialized editable for multiple CKEditor instances on the same page. 3 16 4 17 ## CKEditor 4.6 … … 13 26 * Major improvements in preservation of list numbering, styling and indentation (nested lists with multiple levels). 14 27 * Major improvements in document structure parsing that fix plenty of issues with distorted or missing content after paste. 15 * Added new translation: Occitan. Thanks to Cédric Valmary!28 * Added new translation: Occitan. Thanks to [Cédric Valmary](https://totenoc.eu/)! 16 29 * [#10015](http://dev.ckeditor.com/ticket/10015): Keyboard shortcuts (relevant to the operating system in use) will now be displayed in tooltips and context menus. 17 30 * [#13794](http://dev.ckeditor.com/ticket/13794): The [Upload Image](http://ckeditor.com/addon/uploadimage) feature now uses `uploaded.width/height` if set. -
plugins/dcCKEditor/js/ckeditor/ckeditor.js
r3413 r3464 47 47 // for each release and generated by the releaser. 48 48 // (Base 36 value of each component of YYMMDDHH - 4 chars total - e.g. 87bm == 08071122) 49 timestamp: 'G AKA',49 timestamp: 'GBLA', 50 50 51 51 /** … … 54 54 * alert( CKEDITOR.version ); // e.g. 'CKEditor 3.4.1' 55 55 */ 56 version: '4.6. 0',56 version: '4.6.1', 57 57 58 58 /** … … 2806 2806 2807 2807 return selector; 2808 }, 2809 2810 /** 2811 * A set of functions for operations on styles. 2812 * 2813 * @property {CKEDITOR.tools.style} 2814 */ 2815 style: { 2816 /** 2817 * Methods to parse miscellaneous CSS properties. 2818 * 2819 * @property {CKEDITOR.tools.style.parse} 2820 * @member CKEDITOR.tools.style 2821 */ 2822 parse: { 2823 // Color list based on https://www.w3.org/TR/css-color-4/#named-colors. 2824 _colors: { 2825 aliceblue: '#F0F8FF', 2826 antiquewhite: '#FAEBD7', 2827 aqua: '#00FFFF', 2828 aquamarine: '#7FFFD4', 2829 azure: '#F0FFFF', 2830 beige: '#F5F5DC', 2831 bisque: '#FFE4C4', 2832 black: '#000000', 2833 blanchedalmond: '#FFEBCD', 2834 blue: '#0000FF', 2835 blueviolet: '#8A2BE2', 2836 brown: '#A52A2A', 2837 burlywood: '#DEB887', 2838 cadetblue: '#5F9EA0', 2839 chartreuse: '#7FFF00', 2840 chocolate: '#D2691E', 2841 coral: '#FF7F50', 2842 cornflowerblue: '#6495ED', 2843 cornsilk: '#FFF8DC', 2844 crimson: '#DC143C', 2845 cyan: '#00FFFF', 2846 darkblue: '#00008B', 2847 darkcyan: '#008B8B', 2848 darkgoldenrod: '#B8860B', 2849 darkgray: '#A9A9A9', 2850 darkgreen: '#006400', 2851 darkgrey: '#A9A9A9', 2852 darkkhaki: '#BDB76B', 2853 darkmagenta: '#8B008B', 2854 darkolivegreen: '#556B2F', 2855 darkorange: '#FF8C00', 2856 darkorchid: '#9932CC', 2857 darkred: '#8B0000', 2858 darksalmon: '#E9967A', 2859 darkseagreen: '#8FBC8F', 2860 darkslateblue: '#483D8B', 2861 darkslategray: '#2F4F4F', 2862 darkslategrey: '#2F4F4F', 2863 darkturquoise: '#00CED1', 2864 darkviolet: '#9400D3', 2865 deeppink: '#FF1493', 2866 deepskyblue: '#00BFFF', 2867 dimgray: '#696969', 2868 dimgrey: '#696969', 2869 dodgerblue: '#1E90FF', 2870 firebrick: '#B22222', 2871 floralwhite: '#FFFAF0', 2872 forestgreen: '#228B22', 2873 fuchsia: '#FF00FF', 2874 gainsboro: '#DCDCDC', 2875 ghostwhite: '#F8F8FF', 2876 gold: '#FFD700', 2877 goldenrod: '#DAA520', 2878 gray: '#808080', 2879 green: '#008000', 2880 greenyellow: '#ADFF2F', 2881 grey: '#808080', 2882 honeydew: '#F0FFF0', 2883 hotpink: '#FF69B4', 2884 indianred: '#CD5C5C', 2885 indigo: '#4B0082', 2886 ivory: '#FFFFF0', 2887 khaki: '#F0E68C', 2888 lavender: '#E6E6FA', 2889 lavenderblush: '#FFF0F5', 2890 lawngreen: '#7CFC00', 2891 lemonchiffon: '#FFFACD', 2892 lightblue: '#ADD8E6', 2893 lightcoral: '#F08080', 2894 lightcyan: '#E0FFFF', 2895 lightgoldenrodyellow: '#FAFAD2', 2896 lightgray: '#D3D3D3', 2897 lightgreen: '#90EE90', 2898 lightgrey: '#D3D3D3', 2899 lightpink: '#FFB6C1', 2900 lightsalmon: '#FFA07A', 2901 lightseagreen: '#20B2AA', 2902 lightskyblue: '#87CEFA', 2903 lightslategray: '#778899', 2904 lightslategrey: '#778899', 2905 lightsteelblue: '#B0C4DE', 2906 lightyellow: '#FFFFE0', 2907 lime: '#00FF00', 2908 limegreen: '#32CD32', 2909 linen: '#FAF0E6', 2910 magenta: '#FF00FF', 2911 maroon: '#800000', 2912 mediumaquamarine: '#66CDAA', 2913 mediumblue: '#0000CD', 2914 mediumorchid: '#BA55D3', 2915 mediumpurple: '#9370DB', 2916 mediumseagreen: '#3CB371', 2917 mediumslateblue: '#7B68EE', 2918 mediumspringgreen: '#00FA9A', 2919 mediumturquoise: '#48D1CC', 2920 mediumvioletred: '#C71585', 2921 midnightblue: '#191970', 2922 mintcream: '#F5FFFA', 2923 mistyrose: '#FFE4E1', 2924 moccasin: '#FFE4B5', 2925 navajowhite: '#FFDEAD', 2926 navy: '#000080', 2927 oldlace: '#FDF5E6', 2928 olive: '#808000', 2929 olivedrab: '#6B8E23', 2930 orange: '#FFA500', 2931 orangered: '#FF4500', 2932 orchid: '#DA70D6', 2933 palegoldenrod: '#EEE8AA', 2934 palegreen: '#98FB98', 2935 paleturquoise: '#AFEEEE', 2936 palevioletred: '#DB7093', 2937 papayawhip: '#FFEFD5', 2938 peachpuff: '#FFDAB9', 2939 peru: '#CD853F', 2940 pink: '#FFC0CB', 2941 plum: '#DDA0DD', 2942 powderblue: '#B0E0E6', 2943 purple: '#800080', 2944 rebeccapurple: '#663399', 2945 red: '#FF0000', 2946 rosybrown: '#BC8F8F', 2947 royalblue: '#4169E1', 2948 saddlebrown: '#8B4513', 2949 salmon: '#FA8072', 2950 sandybrown: '#F4A460', 2951 seagreen: '#2E8B57', 2952 seashell: '#FFF5EE', 2953 sienna: '#A0522D', 2954 silver: '#C0C0C0', 2955 skyblue: '#87CEEB', 2956 slateblue: '#6A5ACD', 2957 slategray: '#708090', 2958 slategrey: '#708090', 2959 snow: '#FFFAFA', 2960 springgreen: '#00FF7F', 2961 steelblue: '#4682B4', 2962 tan: '#D2B48C', 2963 teal: '#008080', 2964 thistle: '#D8BFD8', 2965 tomato: '#FF6347', 2966 turquoise: '#40E0D0', 2967 violet: '#EE82EE', 2968 wheat: '#F5DEB3', 2969 white: '#FFFFFF', 2970 whitesmoke: '#F5F5F5', 2971 yellow: '#FFFF00', 2972 yellowgreen: '#9ACD32' 2973 }, 2974 2975 _rgbaRegExp: /rgba?\(\s*\d+%?\s*,\s*\d+%?\s*,\s*\d+%?\s*(?:,\s*[0-9.]+\s*)?\)/gi, 2976 2977 _hslaRegExp: /hsla?\(\s*[0-9.]+\s*,\s*\d+%\s*,\s*\d+%\s*(?:,\s*[0-9.]+\s*)?\)/gi, 2978 2979 /** 2980 * Parses the `value` used as a `background` property shorthand and returns information as an object. 2981 * 2982 * **Note:** Currently only the `color` property is extracted. Any other parts will go into the `unprocessed` property. 2983 * 2984 * var background = CKEDITOR.tools.style.parse.background( '#0C0 url(foo.png)' ); 2985 * console.log( background ); 2986 * // Logs: { color: '#0C0', unprocessed: 'url(foo.png)' } 2987 * 2988 * @param {String} value The value of the `background` property. 2989 * @returns {Object} An object with information extracted from the background. 2990 * @returns {String} return.color The **first** color value found. The color format remains the same as in input. 2991 * @returns {String} return.unprocessed The remaining part of the `value` that has not been processed. 2992 * @member CKEDITOR.tools.style.parse 2993 */ 2994 background: function( value ) { 2995 var ret = [], 2996 colors = []; 2997 2998 colors = this._findColor( value ); 2999 3000 if ( colors.length ) { 3001 ret.color = colors[ 0 ]; 3002 3003 CKEDITOR.tools.array.forEach( colors, function( colorToken ) { 3004 value = value.replace( colorToken, '' ); 3005 } ); 3006 } 3007 3008 value = CKEDITOR.tools.trim( value ); 3009 3010 if ( value ) { 3011 // If anything was left unprocessed include it as unprocessed part. 3012 ret.unprocessed = value; 3013 } 3014 3015 return ret; 3016 }, 3017 3018 /** 3019 * Parses the `margin` CSS property shorthand format. 3020 * 3021 * console.log( CKEDITOR.tools.parse.margin( '3px 0 2' ) ); 3022 * // Logs: { top: "3px", right: "0", bottom: "2", left: "0" } 3023 * 3024 * @param {String} value The `margin` property value. 3025 * @returns {Object} 3026 * @returns {Number} return.top Top margin. 3027 * @returns {Number} return.right Right margin. 3028 * @returns {Number} return.bottom Bottom margin. 3029 * @returns {Number} return.left Left margin. 3030 * @member CKEDITOR.tools.style.parse 3031 */ 3032 margin: function( value ) { 3033 var ret = {}; 3034 3035 var widths = value.match( /(?:\-?[\.\d]+(?:%|\w*)|auto|inherit|initial|unset)/g ) || [ '0px' ]; 3036 3037 switch ( widths.length ) { 3038 case 1: 3039 // element.styles.margin = widths[0]; 3040 mapStyles( [ 0, 0, 0, 0 ] ); 3041 break; 3042 case 2: 3043 mapStyles( [ 0, 1, 0, 1 ] ); 3044 break; 3045 case 3: 3046 mapStyles( [ 0, 1, 2, 1 ] ); 3047 break; 3048 case 4: 3049 mapStyles( [ 0, 1, 2, 3 ] ); 3050 break; 3051 } 3052 3053 function mapStyles( map ) { 3054 ret.top = widths[ map[ 0 ] ]; 3055 ret.right = widths[ map[ 1 ] ]; 3056 ret.bottom = widths[ map[ 2 ] ]; 3057 ret.left = widths[ map[ 3 ] ]; 3058 } 3059 3060 return ret; 3061 }, 3062 3063 /** 3064 * Searches the `value` for any CSS color occurrences and returns it. 3065 * 3066 * @private 3067 * @param {String} value 3068 * @returns {String[]} An array of matched results. 3069 * @member CKEDITOR.tools.style.parse 3070 */ 3071 _findColor: function( value ) { 3072 var ret = [], 3073 arrayTools = CKEDITOR.tools.array; 3074 3075 3076 // Check for rgb(a). 3077 ret = ret.concat( value.match( this._rgbaRegExp ) || [] ); 3078 3079 // Check for hsl(a). 3080 ret = ret.concat( value.match( this._hslaRegExp ) || [] ); 3081 3082 ret = ret.concat( arrayTools.filter( value.split( /\s+/ ), function( colorEntry ) { 3083 // Check for hex format. 3084 if ( colorEntry.match( /^\#[a-f0-9]{3}(?:[a-f0-9]{3})?$/gi ) ) { 3085 return true; 3086 } 3087 3088 // Check for preset names. 3089 return colorEntry.toLowerCase() in CKEDITOR.tools.style.parse._colors; 3090 } ) ); 3091 3092 return ret; 3093 } 3094 } 3095 }, 3096 3097 /** 3098 * A set of array helpers. 3099 * 3100 * @property {CKEDITOR.tools.array} 3101 * @member CKEDITOR.tools 3102 */ 3103 array: { 3104 /** 3105 * Returns a copy of `array` filtered using the `fn` function. Any elements that the `fn` will return `false` for 3106 * will get removed from the returned array. 3107 * 3108 * var filtered = this.array.filter( [ 0, 1, 2, 3 ], function( value ) { 3109 * // Leave only values equal or greater than 2. 3110 * return value >= 2; 3111 * } ); 3112 * console.log( filtered ); 3113 * // Logs: [ 2, 3 ] 3114 * 3115 * @param {Array} array 3116 * @param {Function} fn A function that gets called with each `array` item. Any item that `fn` 3117 * returned a `false`-alike value for will be filtered out of the `array`. 3118 * @param {Mixed} fn.value The currently iterated array value. 3119 * @param {Number} fn.index The index of the currently iterated value in an array. 3120 * @param {Array} fn.array The original array passed as the `array` variable. 3121 * @param {Mixed} [thisArg=undefined] A context object for `fn`. 3122 * @returns {Array} The filtered array. 3123 * @member CKEDITOR.tools.array 3124 */ 3125 filter: function( array, fn, thisArg ) { 3126 var ret = []; 3127 3128 this.forEach( array, function( val, i ) { 3129 if ( fn.call( thisArg, val, i, array ) ) { 3130 ret.push( val ); 3131 } 3132 } ); 3133 3134 return ret; 3135 }, 3136 3137 /** 3138 * Iterates over every element in the `array`. 3139 * 3140 * @param {Array} array An array to be iterated over. 3141 * @param {Function} fn The function called for every `array` element. 3142 * @param {Mixed} fn.value The currently iterated array value. 3143 * @param {Number} fn.index The index of the currently iterated value in an array. 3144 * @param {Array} fn.array The original array passed as an `array` variable. 3145 * @param {Mixed} [thisArg=undefined] The context object for `fn`. 3146 * @member CKEDITOR.tools.array 3147 */ 3148 forEach: function( array, fn, thisArg ) { 3149 var len = array.length, 3150 i; 3151 3152 for ( i = 0; i < len; i++ ) { 3153 fn.call( thisArg, array[ i ], i, array ); 3154 } 3155 } 2808 3156 } 2809 3157 }; … … 2834 3182 return result; 2835 3183 } 3184 3185 /** 3186 * @member CKEDITOR.tools.array 3187 * @method indexOf 3188 * @inheritdoc CKEDITOR.tools#indexOf 3189 */ 3190 CKEDITOR.tools.array.indexOf = CKEDITOR.tools.indexOf; 3191 3192 /** 3193 * @member CKEDITOR.tools.array 3194 * @method isArray 3195 * @inheritdoc CKEDITOR.tools#isArray 3196 */ 3197 CKEDITOR.tools.array.isArray = CKEDITOR.tools.isArray; 3198 3199 3200 3201 /** 3202 * The namespace containing functions to work on CSS properties. 3203 * 3204 * @since 4.6.1 3205 * @class CKEDITOR.tools.style 3206 */ 3207 3208 /** 3209 * The namespace with helper functions to parse some common CSS properties. 3210 * 3211 * @since 4.6.1 3212 * @class CKEDITOR.tools.style.parse 3213 */ 3214 3215 /** 3216 * The namespace with helper functions and polyfills for arrays. 3217 * 3218 * @since 4.6.1 3219 * @class CKEDITOR.tools.array 3220 */ 2836 3221 } )(); 2837 3222 … … 7023 7408 editable = instance.editable(); 7024 7409 7025 if ( editable .equals( this ) || editable.contains( this) ) {7410 if ( editable && ( editable.equals( this ) || editable.contains( this ) ) ) { 7026 7411 return instance; 7027 7412 } … … 22416 22801 ( function() { 22417 22802 var isNotWhitespace, isNotBookmark, isEmpty, isBogus, emptyParagraphRegexp, 22418 insert, fixTableAfterContentsDeletion, getHtmlFromRangeHelpers, extractHtmlFromRangeHelpers;22803 insert, fixTableAfterContentsDeletion, fixListAfterContentsDelete, getHtmlFromRangeHelpers, extractHtmlFromRangeHelpers; 22419 22804 22420 22805 /** … … 22840 23225 range.deleteContents( 1 ); 22841 23226 22842 // If range is placed in inermediate element (not td or th), we need to do three things: 22843 // * fill emptied <td/th>s with if browser needs them, 22844 // * remove empty text nodes so IE8 won't crash (http://dev.ckeditor.com/ticket/11183#comment:8), 22845 // * fix structure and move range into the <td/th> element. 22846 if ( range.startContainer.type == CKEDITOR.NODE_ELEMENT && range.startContainer.is( { tr: 1, table: 1, tbody: 1, thead: 1, tfoot: 1 } ) ) 22847 fixTableAfterContentsDeletion( range ); 23227 if ( range.startContainer.type == CKEDITOR.NODE_ELEMENT ) { 23228 // If range is placed in intermediate element (not td or th), we need to do three things: 23229 // * fill emptied <td/th>s with if browser needs them, 23230 // * remove empty text nodes so IE8 won't crash 23231 // (http://dev.ckeditor.com/ticket/11183#comment:8), 23232 // * fix structure and move range into the <td/th> element. 23233 if ( range.startContainer.is( { tr: 1, table: 1, tbody: 1, thead: 1, tfoot: 1 } ) ) { 23234 fixTableAfterContentsDeletion( range ); 23235 } else if ( range.startContainer.is( CKEDITOR.dtd.$list ) ) { 23236 // Similarly there's a need for lists. 23237 fixListAfterContentsDelete( range ); 23238 } 23239 } 22848 23240 22849 23241 // If we're inserting a block at dtd-violated position, split … … 24780 25172 24781 25173 range.moveToPosition( deeperSibling, appendToStart ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_END ); 25174 }; 25175 } )(); 25176 25177 fixListAfterContentsDelete = ( function() { 25178 // Creates an element walker which operates only within lists. 25179 function getFixListSelectionWalker( testRange ) { 25180 var walker = new CKEDITOR.dom.walker( testRange ); 25181 walker.guard = function( node, isMovingOut ) { 25182 if ( isMovingOut ) 25183 return false; 25184 if ( node.type == CKEDITOR.NODE_ELEMENT ) 25185 return node.is( CKEDITOR.dtd.$list ) || node.is( CKEDITOR.dtd.$listItem ); 25186 }; 25187 walker.evaluator = function( node ) { 25188 return node.type == CKEDITOR.NODE_ELEMENT && node.is( CKEDITOR.dtd.$listItem ); 25189 }; 25190 25191 return walker; 25192 } 25193 25194 return function( range ) { 25195 var container = range.startContainer, 25196 appendToStart = false, 25197 testRange, 25198 deeperSibling; 25199 25200 // Look left. 25201 testRange = range.clone(); 25202 testRange.setStart( container, 0 ); 25203 deeperSibling = getFixListSelectionWalker( testRange ).lastBackward(); 25204 25205 // If left is empty, look right. 25206 if ( !deeperSibling ) { 25207 testRange = range.clone(); 25208 testRange.setEndAt( container, CKEDITOR.POSITION_BEFORE_END ); 25209 deeperSibling = getFixListSelectionWalker( testRange ).lastForward(); 25210 appendToStart = true; 25211 } 25212 25213 // If there's no deeper nested element in both direction - container is empty - we'll use it then. 25214 if ( !deeperSibling ) 25215 deeperSibling = container; 25216 25217 // We found a list what means that it's empty - remove it completely. 25218 if ( deeperSibling.is( CKEDITOR.dtd.$list ) ) { 25219 range.setStartAt( deeperSibling, CKEDITOR.POSITION_BEFORE_START ); 25220 range.collapse( true ); 25221 deeperSibling.remove(); 25222 return; 25223 } 25224 25225 // To avoid setting selection after bogus, remove it from the target list item. 25226 // We can safely do that, because we'll insert element into that cell. 25227 var bogus = deeperSibling.getBogus(); 25228 if ( bogus ) 25229 bogus.remove(); 25230 25231 range.moveToPosition( deeperSibling, appendToStart ? CKEDITOR.POSITION_AFTER_START : CKEDITOR.POSITION_BEFORE_END ); 25232 range.select(); 24782 25233 }; 24783 25234 } )(); … … 36208 36659 // List of available localizations. 36209 36660 // jscs:disable 36210 availableLangs: { af:1,ar:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,'de-ch':1,el:1,en:1,'en-gb':1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,fr:1,'fr-ca':1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,nb:1,nl:1,no:1, pl:1,pt:1,'pt-br':1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,sr:1,'sr-latn':1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,'zh-cn':1 },36661 availableLangs: { af:1,ar:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,'de-ch':1,el:1,en:1,'en-gb':1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,fr:1,'fr-ca':1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,nb:1,nl:1,no:1,oc:1,pl:1,pt:1,'pt-br':1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,sr:1,'sr-latn':1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,'zh-cn':1 }, 36211 36662 // jscs:enable 36212 36663 … … 41017 41468 ] 41018 41469 } ); 41019 addButton( 'BGColor', 'back', lang.bgColorTitle, 20 ); 41470 41471 var bgOptions = {}, 41472 normalizeBackground = editor.config.colorButton_normalizeBackground; 41473 41474 if ( normalizeBackground === undefined || normalizeBackground ) { 41475 // If background contains only color, then we want to convert it into background-color so that it's 41476 // correctly picked by colorbutton plugin. 41477 bgOptions.contentTransformations = [ 41478 [ 41479 { 41480 // Transform span that specify background with color only to background-color. 41481 element: 'span', 41482 left: function( element ) { 41483 var tools = CKEDITOR.tools; 41484 if ( element.name != 'span' || !element.styles || !element.styles.background ) { 41485 return false; 41486 } 41487 41488 var background = tools.style.parse.background( element.styles.background ); 41489 41490 // We return true only if background specifies **only** color property, and there's only one background directive. 41491 return background.color && tools.objectKeys( background ).length === 1; 41492 }, 41493 right: function( element ) { 41494 var style = new CKEDITOR.style( editor.config.colorButton_backStyle, { 41495 color: element.styles.background 41496 } ), 41497 definition = style.getDefinition(); 41498 41499 // Align the output object with the template used in config. 41500 element.name = definition.element; 41501 element.styles = definition.styles; 41502 element.attributes = definition.attributes || {}; 41503 41504 return element; 41505 } 41506 } 41507 ] 41508 ]; 41509 } 41510 41511 addButton( 'BGColor', 'back', lang.bgColorTitle, 20, bgOptions ); 41020 41512 } 41021 41513 … … 41312 41804 * 41313 41805 * @cfg {Boolean} [colorButton_enableAutomatic=true] 41806 * @member CKEDITOR.config 41807 */ 41808 41809 /** 41810 * Whether the plugin should convert `background` CSS properties with color only, to a `background-color` property, 41811 * allowing the [Color Button](http://ckeditor.com/addon/colorbutton) plugin to edit these styles. 41812 * 41813 * config.colorButton_normalizeBackground = false; 41814 * 41815 * @since 4.6.1 41816 * @cfg {Boolean} [colorButton_normalizeBackground=true] 41314 41817 * @member CKEDITOR.config 41315 41818 */ … … 51627 52130 // List of available localizations. 51628 52131 // jscs:disable 51629 availableLangs: { af:1,ar:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,'de-ch':1,el:1,en:1,'en-gb':1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fr:1,'fr-ca':1,gl:1,he:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,nb:1,nl:1,no:1, pl:1,pt:1,'pt-br':1,ru:1,si:1,sk:1,sl:1,sq:1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,'zh-cn':1 },52132 availableLangs: { af:1,ar:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,'de-ch':1,el:1,en:1,'en-gb':1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fr:1,'fr-ca':1,gl:1,he:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,nb:1,nl:1,no:1,oc:1,pl:1,pt:1,'pt-br':1,ru:1,si:1,sk:1,sl:1,sq:1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,'zh-cn':1 }, 51630 52133 // jscs:enable 51631 52134 requires: 'dialog', -
plugins/dcCKEditor/js/ckeditor/lang/da.js
r3410 r3464 500 500 { 501 501 '8' : 'Backspace', 502 '13' : ' Enter',502 '13' : 'Retur', 503 503 '16' : 'Shift', 504 504 '17' : 'Ctrl', 505 505 '18' : 'Alt', 506 '32' : ' Space',506 '32' : 'Mellemrum', 507 507 '35' : 'End', 508 508 '36' : 'Home', 509 '46' : ' Delete',509 '46' : 'Slet', 510 510 '224' : 'Command' 511 511 }, 512 keyboardShortcut : ' Keyboard shortcut'512 keyboardShortcut : 'Tastatur genvej' 513 513 } }; -
plugins/dcCKEditor/js/ckeditor/lang/ja.js
r3410 r3464 510 510 '224' : 'Command' 511 511 }, 512 keyboardShortcut : ' Keyboard shortcut'512 keyboardShortcut : 'キーボードショートカット' 513 513 } }; -
plugins/dcCKEditor/js/ckeditor/lang/nb.js
r3410 r3464 162 162 { 163 163 armenian : 'Armensk nummerering', 164 bulletedTitle : 'Egenskaper for punkt merketliste',164 bulletedTitle : 'Egenskaper for punktliste', 165 165 circle : 'Sirkel', 166 166 decimal : 'Tall (1, 2, 3, osv.)', … … 183 183 list : 184 184 { 185 bulletedlist : 'Legg til / fjern punkt merketliste',185 bulletedlist : 'Legg til / fjern punktliste', 186 186 numberedlist : 'Legg til / fjern nummerert liste' 187 187 }, … … 194 194 anchor : 195 195 { 196 toolbar : ' Sett inn/Rediger anker',197 menu : ' Egenskaper for anker',196 toolbar : 'Anker', 197 menu : 'Rediger anker', 198 198 title : 'Egenskaper for anker', 199 199 name : 'Ankernavn', … … 205 205 charset : 'Lenket tegnsett', 206 206 cssClasses : 'Stilarkklasser', 207 download : ' Force Download',207 download : 'Tving nedlasting', 208 208 displayText : 'Tekst som skal vises', 209 209 emailAddress : 'E-postadresse', … … 214 214 langCode : 'Språkkode', 215 215 langDir : 'Språkretning', 216 langDirLTR : 'Venstre til høyre ( VTH)',217 langDirRTL : 'Høyre til venstre ( HTV)',216 langDirLTR : 'Venstre til høyre (LTR)', 217 langDirRTL : 'Høyre til venstre (RTL)', 218 218 menu : 'Rediger lenke', 219 219 name : 'Navn', … … 246 246 toEmail : 'E-post', 247 247 toUrl : 'URL', 248 toolbar : ' Sett inn/Rediger lenke',248 toolbar : 'Lenke', 249 249 type : 'Lenketype', 250 250 unlink : 'Fjern lenke', … … 324 324 edit : 'Rediger Div', 325 325 inlineStyleInputLabel : 'Inlinestiler', 326 langDirLTRLabel : 'Venstre til høyre ( VTH)',326 langDirLTRLabel : 'Venstre til høyre (LTR)', 327 327 langDirLabel : 'Språkretning', 328 langDirRTLLabel : 'Høyre til venstre ( HTV)',328 langDirRTLLabel : 'Høyre til venstre (RTL)', 329 329 languageCodeInputLabel : ' Språkkode', 330 330 remove : 'Fjern Div', … … 348 348 '2F4F4F' : 'Grønnsvart', 349 349 '008080' : 'Blågrønn', 350 '000080' : 'Marineblå tt',350 '000080' : 'Marineblå', 351 351 '4B0082' : 'Indigo', 352 352 '696969' : 'Mørk grå', … … 372 372 '00FF00' : 'Lime', 373 373 AFEEEE : 'Svak turkis', 374 ADD8E6 : 'Lys Blå',374 ADD8E6 : 'Lys blå', 375 375 DDA0DD : 'Plomme', 376 376 D3D3D3 : 'Lys grå', … … 379 379 FFFFE0 : 'Lys gul', 380 380 F0FFF0 : 'Honningmelon', 381 F0FFFF : 'Svak t asurblått',381 F0FFFF : 'Svak asurblå', 382 382 F0F8FF : 'Svak cyan', 383 383 E6E6FA : 'Lavendel', … … 451 451 name : 'Navn', 452 452 langDir : 'Språkretning', 453 langDirLtr : 'Venstre til høyre ( VTH)',454 langDirRtl : 'Høyre til venstre ( HTV)',453 langDirLtr : 'Venstre til høyre (LTR)', 454 langDirRtl : 'Høyre til venstre (RTL)', 455 455 langCode : 'Språkkode', 456 456 longDescr : 'Utvidet beskrivelse', … … 471 471 target : 'Mål', 472 472 targetNew : 'Nytt vindu (_blank)', 473 targetTop : 'Hele vindu (_top)',473 targetTop : 'Hele vinduet (_top)', 474 474 targetSelf : 'Samme vindu (_self)', 475 475 targetParent : 'Foreldrevindu (_parent)', … … 504 504 '17' : 'Ctrl', 505 505 '18' : 'Alt', 506 '32' : ' Space',506 '32' : 'Mellomrom', 507 507 '35' : 'End', 508 508 '36' : 'Home', … … 510 510 '224' : 'Command' 511 511 }, 512 keyboardShortcut : ' Keyboard shortcut'512 keyboardShortcut : 'Tastatursnarvei' 513 513 } }; -
plugins/dcCKEditor/js/ckeditor/lang/nl.js
r3410 r3464 205 205 charset : 'Karakterset van gelinkte bron', 206 206 cssClasses : 'Stylesheet-klassen', 207 download : ' Force Download',208 displayText : ' Display Text',207 download : 'Download forceren', 208 displayText : 'Weergavetekst', 209 209 emailAddress : 'E-mailadres', 210 210 emailBody : 'Inhoud bericht', … … 504 504 '17' : 'Ctrl', 505 505 '18' : 'Alt', 506 '32' : 'Spa ce',506 '32' : 'Spatie', 507 507 '35' : 'End', 508 508 '36' : 'Home', … … 510 510 '224' : 'Command' 511 511 }, 512 keyboardShortcut : ' Keyboard shortcut'512 keyboardShortcut : 'Sneltoets' 513 513 } }; -
plugins/dcCKEditor/js/ckeditor/lang/pt-br.js
r3410 r3464 205 205 charset : 'Charset do Link', 206 206 cssClasses : 'Classe de CSS', 207 download : 'For ceDownload',208 displayText : ' Display Text',207 download : 'Forçar Download', 208 displayText : 'Exibir Texto', 209 209 emailAddress : 'Endereço E-Mail', 210 210 emailBody : 'Corpo da Mensagem', … … 499 499 keyboard : 500 500 { 501 '8' : ' Backspace',501 '8' : 'Tecla Retroceder', 502 502 '13' : 'Enter', 503 503 '16' : 'Shift', 504 504 '17' : 'Ctrl', 505 505 '18' : 'Alt', 506 '32' : ' Space',506 '32' : 'Tecla Espaço', 507 507 '35' : 'End', 508 508 '36' : 'Home', 509 509 '46' : 'Delete', 510 '224' : 'Com mand'511 }, 512 keyboardShortcut : ' Keyboard shortcut'510 '224' : 'Comando' 511 }, 512 keyboardShortcut : 'Atalho do teclado' 513 513 } }; -
plugins/dcCKEditor/js/ckeditor/lang/ru.js
r3410 r3464 510 510 '224' : 'Command' 511 511 }, 512 keyboardShortcut : ' Keyboard shortcut'512 keyboardShortcut : 'Комбинация клавиш' 513 513 } }; -
plugins/dcCKEditor/js/ckeditor/lang/sv.js
r3410 r3464 27 27 tools : 'Verktyg' 28 28 }, 29 toolbars : ' Redigeraverktygsfält'29 toolbars : 'Editorns verktygsfält' 30 30 }, 31 31 templates : … … 114 114 stylescombo : 115 115 { 116 label : ' Anpassad stil',117 panelTitle : 'Format mallar',118 panelTitle1 : 'Blockstil ',119 panelTitle2 : 'Inbäddad stil',120 panelTitle3 : 'Objekt ets stil'116 label : 'Stilar', 117 panelTitle : 'Formateringsstilar', 118 panelTitle1 : 'Blockstilar', 119 panelTitle2 : 'Inbäddade stilar', 120 panelTitle3 : 'Objektstilar' 121 121 }, 122 122 specialchar : … … 205 205 charset : 'Teckenuppställning', 206 206 cssClasses : 'Stilmall', 207 download : ' Force Download',208 displayText : ' Display Text',207 download : 'Tvinga nerladdning', 208 displayText : 'Visningstext', 209 209 emailAddress : 'E-postadress', 210 210 emailBody : 'Innehåll', … … 228 228 popupLocationBar : 'Adressfält', 229 229 popupMenuBar : 'Menyfält', 230 popupResizable : ' Resizable',230 popupResizable : 'Skalbart', 231 231 popupScrollBars : 'Scrolllista', 232 232 popupStatusBar : 'Statusfält', … … 422 422 dlgTitle : 'Om CKEditor', 423 423 help : 'Se $1 för hjälp.', 424 moreInfo : 'För information avlicensiering besök vår hemsida:',424 moreInfo : 'För information om licensiering besök vår hemsida:', 425 425 title : 'Om CKEditor', 426 userGuide : 'CKEditor User\'s Guide'427 }, 428 editor : 'Rich Text Editor',429 editorPanel : ' Rich Text Editor panel',426 userGuide : 'CKEditor användarmanual' 427 }, 428 editor : 'Rich Text-editor', 429 editorPanel : 'Panel till Rich Text-editor', 430 430 common : 431 431 { … … 510 510 '224' : 'Kommando' 511 511 }, 512 keyboardShortcut : 'K eyboard shortcut'512 keyboardShortcut : 'Kortkommando' 513 513 } }; -
plugins/dcCKEditor/js/ckeditor/plugins/a11yhelp/dialogs/lang/da.js
r3410 r3464 23 23 24 24 { 25 name: ' Editor Context Menu', // MISSING26 legend: ' Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.' // MISSING25 name: 'Redaktør kontekstmenu', 26 legend: 'Tryk ${contextMenu} eller APPLICATION KEY for at åbne kontekstmenuen. Flyt derefter til næste menuvalg med TAB eller PIL NED. Flyt til forrige valg med SHIFT+TAB eller PIL OP. Tryk MELLEMRUM eller RETUR for at vælge menu-muligheder. Åben under-menu af aktuelle valg med MELLEMRUM eller RETUR eller HØJRE PIL. Gå tilbage til overliggende menu-emne med ESC eller VENSTRE PIL. Luk kontekstmenu med ESC.' 27 27 }, 28 28 29 29 { 30 name: ' Editor List Box', // MISSING31 legend: ' Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.' // MISSING30 name: 'Redaktør listeboks', 31 legend: 'Flyt til næste emne med TAB eller PIL NED inde i en listeboks. Flyt til forrige listeemne med SHIFT+TAB eller PIL OP. Tryk MELLEMRUM eller RETUR for at vælge liste-muligheder. Tryk ESC for at lukke liste-boksen.' 32 32 }, 33 33 34 34 { 35 name: ' Editor Element Path Bar', // MISSING36 legend: ' Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.' // MISSING35 name: 'Redaktør elementsti-bar', 36 legend: 'Tryk ${elementsPathFocus} for at navigere til elementernes sti-bar. Flyt til næste element-knap med TAB eller HØJRE PIL. Flyt til forrige knap med SHIFT+TAB eller VENSTRE PIL. Klik MELLEMRUM eller RETUR for at vælge element i editoren.' 37 37 } 38 38 ] … … 66 66 }, 67 67 { 68 name: ' Toolbar Collapse command', // MISSING68 name: 'Klap værktøjslinje sammen kommando ', 69 69 legend: 'Klik ${toolbarCollapse}' 70 70 }, 71 71 { 72 name: ' Access previous focus space command', // MISSING72 name: 'Adgang til forrige fokusområde kommando', 73 73 legend: 'Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING 74 74 }, -
plugins/dcCKEditor/js/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js
r3410 r3464 19 19 name: 'Dialoog tekstverwerker', 20 20 legend: 21 'In side a dialog, press TAB to navigate to the next dialog element, press SHIFT+TAB to move to the previous dialog element, press ENTER to submit the dialog, press ESC to cancel the dialog. When a dialog has multiple tabs, the tab list can be reached either with ALT+F10 or with TAB as part of the dialog tabbing order. With tab list focused, move to the next and previous tab with RIGHT and LEFT ARROW, respectively.' // MISSING21 'In een dialoogvenster, druk op TAB om te navigeren naar het volgende veld. Druk op SHIFT+TAB om naar het vorige veld te navigeren. Druk op ENTER om het dialoogvenster te verzenden. Druk op ESC om het dialoogvenster te sluiten. Bij dialoogvensters met meerdere tabbladen kan de tabset bereikt worden met ALT+F10 of met TAB als onderdeel van de tabvolgorde in het dialoogvenster. Als de tabset focus heeft, kun je schakalen naar het volgende en vorige tabblad met respectievelijk PIJL RECHTS en PIJL LINKS.' 22 22 }, 23 23 -
plugins/dcCKEditor/js/ckeditor/plugins/templates/templates/default.js
r3175 r3464 27 27 title: 'Strange Template', 28 28 image: 'template2.gif', 29 description: 'A template that defines two colum s, each one with a title, and some text.',29 description: 'A template that defines two columns, each one with a title, and some text.', 30 30 html: '<table cellspacing="0" cellpadding="0" style="width:100%" border="0">' + 31 31 '<tr>' +
Note: See TracChangeset
for help on using the changeset viewer.