rt-4.4.7/0000755000201500020150000000000014517055663010643 5ustar puckpuckrt-4.4.7/devel/0000755000201500020150000000000014517055663011742 5ustar puckpuckrt-4.4.7/devel/third-party/0000755000201500020150000000000014517055704014205 5ustar puckpuckrt-4.4.7/devel/third-party/jquery-1.12.4p1.js0000644000201500020150000107540414514267702017057 0ustar puckpuck/*! * jQuery JavaScript Library v1.12.4p1 * http://jquery.com/ * * Includes Sizzle.js * http://sizzlejs.com/ * * Copyright jQuery Foundation and other contributors * Released under the MIT license * http://jquery.org/license * * Date: 2016-05-20T17:17Z */ (function( global, factory ) { if ( typeof module === "object" && typeof module.exports === "object" ) { // For CommonJS and CommonJS-like environments where a proper `window` // is present, execute the factory and get jQuery. // For environments that do not have a `window` with a `document` // (such as Node.js), expose a factory as module.exports. // This accentuates the need for the creation of a real `window`. // e.g. var jQuery = require("jquery")(window); // See ticket #14549 for more info. module.exports = global.document ? factory( global, true ) : function( w ) { if ( !w.document ) { throw new Error( "jQuery requires a window with a document" ); } return factory( w ); }; } else { factory( global ); } // Pass this if window is not defined yet }(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { // Support: Firefox 18+ // Can't be in strict mode, several libs including ASP.NET trace // the stack via arguments.caller.callee and Firefox dies if // you try to trace through "use strict" call chains. (#13335) //"use strict"; var deletedIds = []; var document = window.document; var slice = deletedIds.slice; var concat = deletedIds.concat; var push = deletedIds.push; var indexOf = deletedIds.indexOf; var class2type = {}; var toString = class2type.toString; var hasOwn = class2type.hasOwnProperty; var support = {}; var version = "1.12.4p1", // Define a local copy of jQuery jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' // Need init if jQuery is called (just allow error to be thrown if not included) return new jQuery.fn.init( selector, context ); }, // Support: Android<4.1, IE<9 // Make sure we trim BOM and NBSP rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, // Matches dashed string for camelizing rmsPrefix = /^-ms-/, rdashAlpha = /-([\da-z])/gi, // Used by jQuery.camelCase as callback to replace() fcamelCase = function( all, letter ) { return letter.toUpperCase(); }; jQuery.fn = jQuery.prototype = { // The current version of jQuery being used jquery: version, constructor: jQuery, // Start with an empty selector selector: "", // The default length of a jQuery object is 0 length: 0, toArray: function() { return slice.call( this ); }, // Get the Nth element in the matched element set OR // Get the whole matched element set as a clean array get: function( num ) { return num != null ? // Return just the one element from the set ( num < 0 ? this[ num + this.length ] : this[ num ] ) : // Return all the elements in a clean array slice.call( this ); }, // Take an array of elements and push it onto the stack // (returning the new matched element set) pushStack: function( elems ) { // Build a new jQuery matched element set var ret = jQuery.merge( this.constructor(), elems ); // Add the old object onto the stack (as a reference) ret.prevObject = this; ret.context = this.context; // Return the newly-formed element set return ret; }, // Execute a callback for every element in the matched set. each: function( callback ) { return jQuery.each( this, callback ); }, map: function( callback ) { return this.pushStack( jQuery.map( this, function( elem, i ) { return callback.call( elem, i, elem ); } ) ); }, slice: function() { return this.pushStack( slice.apply( this, arguments ) ); }, first: function() { return this.eq( 0 ); }, last: function() { return this.eq( -1 ); }, eq: function( i ) { var len = this.length, j = +i + ( i < 0 ? len : 0 ); return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); }, end: function() { return this.prevObject || this.constructor(); }, // For internal use only. // Behaves like an Array's method, not like a jQuery method. push: push, sort: deletedIds.sort, splice: deletedIds.splice }; jQuery.extend = jQuery.fn.extend = function() { var src, copyIsArray, copy, name, options, clone, target = arguments[ 0 ] || {}, i = 1, length = arguments.length, deep = false; // Handle a deep copy situation if ( typeof target === "boolean" ) { deep = target; // skip the boolean and the target target = arguments[ i ] || {}; i++; } // Handle case when target is a string or something (possible in deep copy) if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { target = {}; } // extend jQuery itself if only one argument is passed if ( i === length ) { target = this; i--; } for ( ; i < length; i++ ) { // Only deal with non-null/undefined values if ( ( options = arguments[ i ] ) != null ) { // Extend the base object for ( name in options ) { src = target[ name ]; copy = options[ name ]; // Prevent never-ending loop if ( target === copy ) { continue; } // Recurse if we're merging plain objects or arrays if ( deep && copy && ( jQuery.isPlainObject( copy ) || ( copyIsArray = jQuery.isArray( copy ) ) ) ) { if ( copyIsArray ) { copyIsArray = false; clone = src && jQuery.isArray( src ) ? src : []; } else { clone = src && jQuery.isPlainObject( src ) ? src : {}; } // Never move original objects, clone them target[ name ] = jQuery.extend( deep, clone, copy ); // Don't bring in undefined values } else if ( copy !== undefined ) { target[ name ] = copy; } } } } // Return the modified object return target; }; jQuery.extend( { // Unique for each copy of jQuery on the page expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), // Assume jQuery is ready without the ready module isReady: true, error: function( msg ) { throw new Error( msg ); }, noop: function() {}, // See test/unit/core.js for details concerning isFunction. // Since version 1.3, DOM methods and functions like alert // aren't supported. They return false on IE (#2968). isFunction: function( obj ) { return jQuery.type( obj ) === "function"; }, isArray: Array.isArray || function( obj ) { return jQuery.type( obj ) === "array"; }, isWindow: function( obj ) { /* jshint eqeqeq: false */ return obj != null && obj == obj.window; }, isNumeric: function( obj ) { // parseFloat NaNs numeric-cast false positives (null|true|false|"") // ...but misinterprets leading-number strings, particularly hex literals ("0x...") // subtraction forces infinities to NaN // adding 1 corrects loss of precision from parseFloat (#15100) var realStringObj = obj && obj.toString(); return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; }, isEmptyObject: function( obj ) { var name; for ( name in obj ) { return false; } return true; }, isPlainObject: function( obj ) { var key; // Must be an Object. // Because of IE, we also have to check the presence of the constructor property. // Make sure that DOM nodes and window objects don't pass through, as well if ( !obj || jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { return false; } try { // Not own constructor property must be Object if ( obj.constructor && !hasOwn.call( obj, "constructor" ) && !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { return false; } } catch ( e ) { // IE8,9 Will throw exceptions on certain host objects #9897 return false; } // Support: IE<9 // Handle iteration over inherited properties before own properties. if ( !support.ownFirst ) { for ( key in obj ) { return hasOwn.call( obj, key ); } } // Own properties are enumerated firstly, so to speed up, // if last one is own, then all properties are own. for ( key in obj ) {} return key === undefined || hasOwn.call( obj, key ); }, type: function( obj ) { if ( obj == null ) { return obj + ""; } return typeof obj === "object" || typeof obj === "function" ? class2type[ toString.call( obj ) ] || "object" : typeof obj; }, // Workarounds based on findings by Jim Driscoll // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context globalEval: function( data ) { if ( data && jQuery.trim( data ) ) { // We use execScript on Internet Explorer // We use an anonymous function so that context is window // rather than jQuery in Firefox ( window.execScript || function( data ) { window[ "eval" ].call( window, data ); // jscs:ignore requireDotNotation } )( data ); } }, // Convert dashed to camelCase; used by the css and data modules // Microsoft forgot to hump their vendor prefix (#9572) camelCase: function( string ) { return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); }, nodeName: function( elem, name ) { return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); }, each: function( obj, callback ) { var length, i = 0; if ( isArrayLike( obj ) ) { length = obj.length; for ( ; i < length; i++ ) { if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { break; } } } else { for ( i in obj ) { if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { break; } } } return obj; }, // Support: Android<4.1, IE<9 trim: function( text ) { return text == null ? "" : ( text + "" ).replace( rtrim, "" ); }, // results is for internal usage only makeArray: function( arr, results ) { var ret = results || []; if ( arr != null ) { if ( isArrayLike( Object( arr ) ) ) { jQuery.merge( ret, typeof arr === "string" ? [ arr ] : arr ); } else { push.call( ret, arr ); } } return ret; }, inArray: function( elem, arr, i ) { var len; if ( arr ) { if ( indexOf ) { return indexOf.call( arr, elem, i ); } len = arr.length; i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; for ( ; i < len; i++ ) { // Skip accessing in sparse arrays if ( i in arr && arr[ i ] === elem ) { return i; } } } return -1; }, merge: function( first, second ) { var len = +second.length, j = 0, i = first.length; while ( j < len ) { first[ i++ ] = second[ j++ ]; } // Support: IE<9 // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) if ( len !== len ) { while ( second[ j ] !== undefined ) { first[ i++ ] = second[ j++ ]; } } first.length = i; return first; }, grep: function( elems, callback, invert ) { var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert; // Go through the array, only saving the items // that pass the validator function for ( ; i < length; i++ ) { callbackInverse = !callback( elems[ i ], i ); if ( callbackInverse !== callbackExpect ) { matches.push( elems[ i ] ); } } return matches; }, // arg is for internal usage only map: function( elems, callback, arg ) { var length, value, i = 0, ret = []; // Go through the array, translating each of the items to their new values if ( isArrayLike( elems ) ) { length = elems.length; for ( ; i < length; i++ ) { value = callback( elems[ i ], i, arg ); if ( value != null ) { ret.push( value ); } } // Go through every key on the object, } else { for ( i in elems ) { value = callback( elems[ i ], i, arg ); if ( value != null ) { ret.push( value ); } } } // Flatten any nested arrays return concat.apply( [], ret ); }, // A global GUID counter for objects guid: 1, // Bind a function to a context, optionally partially applying any // arguments. proxy: function( fn, context ) { var args, proxy, tmp; if ( typeof context === "string" ) { tmp = fn[ context ]; context = fn; fn = tmp; } // Quick check to determine if target is callable, in the spec // this throws a TypeError, but we will just return undefined. if ( !jQuery.isFunction( fn ) ) { return undefined; } // Simulated bind args = slice.call( arguments, 2 ); proxy = function() { return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); }; // Set the guid of unique handler to the same of original handler, so it can be removed proxy.guid = fn.guid = fn.guid || jQuery.guid++; return proxy; }, now: function() { return +( new Date() ); }, // jQuery.support is not used in Core but other projects attach their // properties to it so it needs to exist. support: support } ); // JSHint would error on this code due to the Symbol not being defined in ES5. // Defining this global in .jshintrc would create a danger of using the global // unguarded in another place, it seems safer to just disable JSHint for these // three lines. /* jshint ignore: start */ if ( typeof Symbol === "function" ) { jQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ]; } /* jshint ignore: end */ // Populate the class2type map jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), function( i, name ) { class2type[ "[object " + name + "]" ] = name.toLowerCase(); } ); function isArrayLike( obj ) { // Support: iOS 8.2 (not reproducible in simulator) // `in` check used to prevent JIT error (gh-2145) // hasOwn isn't used here due to false negatives // regarding Nodelist length in IE var length = !!obj && "length" in obj && obj.length, type = jQuery.type( obj ); if ( type === "function" || jQuery.isWindow( obj ) ) { return false; } return type === "array" || length === 0 || typeof length === "number" && length > 0 && ( length - 1 ) in obj; } var Sizzle = /*! * Sizzle CSS Selector Engine v2.2.1 * http://sizzlejs.com/ * * Copyright jQuery Foundation and other contributors * Released under the MIT license * http://jquery.org/license * * Date: 2015-10-17 */ (function( window ) { var i, support, Expr, getText, isXML, tokenize, compile, select, outermostContext, sortInput, hasDuplicate, // Local document vars setDocument, document, docElem, documentIsHTML, rbuggyQSA, rbuggyMatches, matches, contains, // Instance-specific data expando = "sizzle" + 1 * new Date(), preferredDoc = window.document, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), sortOrder = function( a, b ) { if ( a === b ) { hasDuplicate = true; } return 0; }, // General-purpose constants MAX_NEGATIVE = 1 << 31, // Instance methods hasOwn = ({}).hasOwnProperty, arr = [], pop = arr.pop, push_native = arr.push, push = arr.push, slice = arr.slice, // Use a stripped-down indexOf as it's faster than native // http://jsperf.com/thor-indexof-vs-for/5 indexOf = function( list, elem ) { var i = 0, len = list.length; for ( ; i < len; i++ ) { if ( list[i] === elem ) { return i; } } return -1; }, booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", // Regular expressions // http://www.w3.org/TR/css3-selectors/#whitespace whitespace = "[\\x20\\t\\r\\n\\f]", // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + // Operator (capture 2) "*([*^$|!~]?=)" + whitespace + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]", pseudos = ":(" + identifier + ")(?:\\((" + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: // 1. quoted (capture 3; capture 4 or capture 5) "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + // 2. simple (capture 6) "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + // 3. anything else (capture 2) ".*" + ")\\)|)", // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter rwhitespace = new RegExp( whitespace + "+", "g" ), rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), rpseudo = new RegExp( pseudos ), ridentifier = new RegExp( "^" + identifier + "$" ), matchExpr = { "ID": new RegExp( "^#(" + identifier + ")" ), "CLASS": new RegExp( "^\\.(" + identifier + ")" ), "TAG": new RegExp( "^(" + identifier + "|[*])" ), "ATTR": new RegExp( "^" + attributes ), "PSEUDO": new RegExp( "^" + pseudos ), "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), // For use in libraries implementing .is() // We use this for POS matching in `select` "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) }, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, rnative = /^[^{]+\{\s*\[native \w/, // Easily-parseable/retrievable ID or TAG or CLASS selectors rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, rescape = /'|\\/g, // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), funescape = function( _, escaped, escapedWhitespace ) { var high = "0x" + escaped - 0x10000; // NaN means non-codepoint // Support: Firefox<24 // Workaround erroneous numeric interpretation of +"0x" return high !== high || escapedWhitespace ? escaped : high < 0 ? // BMP codepoint String.fromCharCode( high + 0x10000 ) : // Supplemental Plane codepoint (surrogate pair) String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); }, // Used for iframes // See setDocument() // Removing the function wrapper causes a "Permission Denied" // error in IE unloadHandler = function() { setDocument(); }; // Optimize for push.apply( _, NodeList ) try { push.apply( (arr = slice.call( preferredDoc.childNodes )), preferredDoc.childNodes ); // Support: Android<4.0 // Detect silently failing push.apply arr[ preferredDoc.childNodes.length ].nodeType; } catch ( e ) { push = { apply: arr.length ? // Leverage slice if possible function( target, els ) { push_native.apply( target, slice.call(els) ); } : // Support: IE<9 // Otherwise append directly function( target, els ) { var j = target.length, i = 0; // Can't trust NodeList.length while ( (target[j++] = els[i++]) ) {} target.length = j - 1; } }; } function Sizzle( selector, context, results, seed ) { var m, i, elem, nid, nidselect, match, groups, newSelector, newContext = context && context.ownerDocument, // nodeType defaults to 9, since context defaults to document nodeType = context ? context.nodeType : 9; results = results || []; // Return early from calls with invalid selector or context if ( typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { return results; } // Try to shortcut find operations (as opposed to filters) in HTML documents if ( !seed ) { if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { setDocument( context ); } context = context || document; if ( documentIsHTML ) { // If the selector is sufficiently simple, try using a "get*By*" DOM method // (excepting DocumentFragment context, where the methods don't exist) if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { // ID selector if ( (m = match[1]) ) { // Document context if ( nodeType === 9 ) { if ( (elem = context.getElementById( m )) ) { // Support: IE, Opera, Webkit // TODO: identify versions // getElementById can match elements by name instead of ID if ( elem.id === m ) { results.push( elem ); return results; } } else { return results; } // Element context } else { // Support: IE, Opera, Webkit // TODO: identify versions // getElementById can match elements by name instead of ID if ( newContext && (elem = newContext.getElementById( m )) && contains( context, elem ) && elem.id === m ) { results.push( elem ); return results; } } // Type selector } else if ( match[2] ) { push.apply( results, context.getElementsByTagName( selector ) ); return results; // Class selector } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { push.apply( results, context.getElementsByClassName( m ) ); return results; } } // Take advantage of querySelectorAll if ( support.qsa && !compilerCache[ selector + " " ] && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { if ( nodeType !== 1 ) { newContext = context; newSelector = selector; // qSA looks outside Element context, which is not what we want // Thanks to Andrew Dupont for this workaround technique // Support: IE <=8 // Exclude object elements } else if ( context.nodeName.toLowerCase() !== "object" ) { // Capture the context ID, setting it first if necessary if ( (nid = context.getAttribute( "id" )) ) { nid = nid.replace( rescape, "\\$&" ); } else { context.setAttribute( "id", (nid = expando) ); } // Prefix every selector in the list groups = tokenize( selector ); i = groups.length; nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; while ( i-- ) { groups[i] = nidselect + " " + toSelector( groups[i] ); } newSelector = groups.join( "," ); // Expand context for sibling selectors newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; } if ( newSelector ) { try { push.apply( results, newContext.querySelectorAll( newSelector ) ); return results; } catch ( qsaError ) { } finally { if ( nid === expando ) { context.removeAttribute( "id" ); } } } } } } // All others return select( selector.replace( rtrim, "$1" ), context, results, seed ); } /** * Create key-value caches of limited size * @returns {function(string, object)} Returns the Object data after storing it on itself with * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) * deleting the oldest entry */ function createCache() { var keys = []; function cache( key, value ) { // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) if ( keys.push( key + " " ) > Expr.cacheLength ) { // Only keep the most recent entries delete cache[ keys.shift() ]; } return (cache[ key + " " ] = value); } return cache; } /** * Mark a function for special use by Sizzle * @param {Function} fn The function to mark */ function markFunction( fn ) { fn[ expando ] = true; return fn; } /** * Support testing using an element * @param {Function} fn Passed the created div and expects a boolean result */ function assert( fn ) { var div = document.createElement("div"); try { return !!fn( div ); } catch (e) { return false; } finally { // Remove from its parent by default if ( div.parentNode ) { div.parentNode.removeChild( div ); } // release memory in IE div = null; } } /** * Adds the same handler for all of the specified attrs * @param {String} attrs Pipe-separated list of attributes * @param {Function} handler The method that will be applied */ function addHandle( attrs, handler ) { var arr = attrs.split("|"), i = arr.length; while ( i-- ) { Expr.attrHandle[ arr[i] ] = handler; } } /** * Checks document order of two siblings * @param {Element} a * @param {Element} b * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b */ function siblingCheck( a, b ) { var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE ); // Use IE sourceIndex if available on both nodes if ( diff ) { return diff; } // Check if b follows a if ( cur ) { while ( (cur = cur.nextSibling) ) { if ( cur === b ) { return -1; } } } return a ? 1 : -1; } /** * Returns a function to use in pseudos for input types * @param {String} type */ function createInputPseudo( type ) { return function( elem ) { var name = elem.nodeName.toLowerCase(); return name === "input" && elem.type === type; }; } /** * Returns a function to use in pseudos for buttons * @param {String} type */ function createButtonPseudo( type ) { return function( elem ) { var name = elem.nodeName.toLowerCase(); return (name === "input" || name === "button") && elem.type === type; }; } /** * Returns a function to use in pseudos for positionals * @param {Function} fn */ function createPositionalPseudo( fn ) { return markFunction(function( argument ) { argument = +argument; return markFunction(function( seed, matches ) { var j, matchIndexes = fn( [], seed.length, argument ), i = matchIndexes.length; // Match elements found at the specified indexes while ( i-- ) { if ( seed[ (j = matchIndexes[i]) ] ) { seed[j] = !(matches[j] = seed[j]); } } }); }); } /** * Checks a node for validity as a Sizzle context * @param {Element|Object=} context * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value */ function testContext( context ) { return context && typeof context.getElementsByTagName !== "undefined" && context; } // Expose support vars for convenience support = Sizzle.support = {}; /** * Detects XML nodes * @param {Element|Object} elem An element or a document * @returns {Boolean} True iff elem is a non-HTML XML node */ isXML = Sizzle.isXML = function( elem ) { // documentElement is verified for cases where it doesn't yet exist // (such as loading iframes in IE - #4833) var documentElement = elem && (elem.ownerDocument || elem).documentElement; return documentElement ? documentElement.nodeName !== "HTML" : false; }; /** * Sets document-related variables once based on the current document * @param {Element|Object} [doc] An element or document object to use to set the document * @returns {Object} Returns the current document */ setDocument = Sizzle.setDocument = function( node ) { var hasCompare, parent, doc = node ? node.ownerDocument || node : preferredDoc; // Return early if doc is invalid or already selected if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { return document; } // Update global variables document = doc; docElem = document.documentElement; documentIsHTML = !isXML( document ); // Support: IE 9-11, Edge // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) if ( (parent = document.defaultView) && parent.top !== parent ) { // Support: IE 11 if ( parent.addEventListener ) { parent.addEventListener( "unload", unloadHandler, false ); // Support: IE 9 - 10 only } else if ( parent.attachEvent ) { parent.attachEvent( "onunload", unloadHandler ); } } /* Attributes ---------------------------------------------------------------------- */ // Support: IE<8 // Verify that getAttribute really returns attributes and not properties // (excepting IE8 booleans) support.attributes = assert(function( div ) { div.className = "i"; return !div.getAttribute("className"); }); /* getElement(s)By* ---------------------------------------------------------------------- */ // Check if getElementsByTagName("*") returns only elements support.getElementsByTagName = assert(function( div ) { div.appendChild( document.createComment("") ); return !div.getElementsByTagName("*").length; }); // Support: IE<9 support.getElementsByClassName = rnative.test( document.getElementsByClassName ); // Support: IE<10 // Check if getElementById returns elements by name // The broken getElementById methods don't pick up programatically-set names, // so use a roundabout getElementsByName test support.getById = assert(function( div ) { docElem.appendChild( div ).id = expando; return !document.getElementsByName || !document.getElementsByName( expando ).length; }); // ID find and filter if ( support.getById ) { Expr.find["ID"] = function( id, context ) { if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { var m = context.getElementById( id ); return m ? [ m ] : []; } }; Expr.filter["ID"] = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { return elem.getAttribute("id") === attrId; }; }; } else { // Support: IE6/7 // getElementById is not reliable as a find shortcut delete Expr.find["ID"]; Expr.filter["ID"] = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); return node && node.value === attrId; }; }; } // Tag Expr.find["TAG"] = support.getElementsByTagName ? function( tag, context ) { if ( typeof context.getElementsByTagName !== "undefined" ) { return context.getElementsByTagName( tag ); // DocumentFragment nodes don't have gEBTN } else if ( support.qsa ) { return context.querySelectorAll( tag ); } } : function( tag, context ) { var elem, tmp = [], i = 0, // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too results = context.getElementsByTagName( tag ); // Filter out possible comments if ( tag === "*" ) { while ( (elem = results[i++]) ) { if ( elem.nodeType === 1 ) { tmp.push( elem ); } } return tmp; } return results; }; // Class Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { return context.getElementsByClassName( className ); } }; /* QSA/matchesSelector ---------------------------------------------------------------------- */ // QSA and matchesSelector support // matchesSelector(:active) reports false when true (IE9/Opera 11.5) rbuggyMatches = []; // qSa(:focus) reports false when true (Chrome 21) // We allow this because of a bug in IE8/9 that throws an error // whenever `document.activeElement` is accessed on an iframe // So, we allow :focus to pass through QSA all the time to avoid the IE error // See http://bugs.jquery.com/ticket/13378 rbuggyQSA = []; if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { // Build QSA regex // Regex strategy adopted from Diego Perini assert(function( div ) { // Select is set to empty string on purpose // This is to test IE's treatment of not explicitly // setting a boolean content attribute, // since its presence should be enough // http://bugs.jquery.com/ticket/12359 docElem.appendChild( div ).innerHTML = "" + ""; // Support: IE8, Opera 11-12.16 // Nothing should be selected when empty strings follow ^= or $= or *= // The test attribute must be unknown in Opera but "safe" for WinRT // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section if ( div.querySelectorAll("[msallowcapture^='']").length ) { rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); } // Support: IE8 // Boolean attributes and "value" are not treated correctly if ( !div.querySelectorAll("[selected]").length ) { rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); } // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { rbuggyQSA.push("~="); } // Webkit/Opera - :checked should return selected option elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked // IE8 throws error here and will not see later tests if ( !div.querySelectorAll(":checked").length ) { rbuggyQSA.push(":checked"); } // Support: Safari 8+, iOS 8+ // https://bugs.webkit.org/show_bug.cgi?id=136851 // In-page `selector#id sibing-combinator selector` fails if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { rbuggyQSA.push(".#.+[+~]"); } }); assert(function( div ) { // Support: Windows 8 Native Apps // The type and name attributes are restricted during .innerHTML assignment var input = document.createElement("input"); input.setAttribute( "type", "hidden" ); div.appendChild( input ).setAttribute( "name", "D" ); // Support: IE8 // Enforce case-sensitivity of name attribute if ( div.querySelectorAll("[name=d]").length ) { rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) // IE8 throws error here and will not see later tests if ( !div.querySelectorAll(":enabled").length ) { rbuggyQSA.push( ":enabled", ":disabled" ); } // Opera 10-11 does not throw on post-comma invalid pseudos div.querySelectorAll("*,:x"); rbuggyQSA.push(",.*:"); }); } if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector) )) ) { assert(function( div ) { // Check to see if it's possible to do matchesSelector // on a disconnected node (IE 9) support.disconnectedMatch = matches.call( div, "div" ); // This should fail with an exception // Gecko does not error, returns false instead matches.call( div, "[s!='']:x" ); rbuggyMatches.push( "!=", pseudos ); }); } rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); /* Contains ---------------------------------------------------------------------- */ hasCompare = rnative.test( docElem.compareDocumentPosition ); // Element contains another // Purposefully self-exclusive // As in, an element does not contain itself contains = hasCompare || rnative.test( docElem.contains ) ? function( a, b ) { var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode; return a === bup || !!( bup && bup.nodeType === 1 && ( adown.contains ? adown.contains( bup ) : a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 )); } : function( a, b ) { if ( b ) { while ( (b = b.parentNode) ) { if ( b === a ) { return true; } } } return false; }; /* Sorting ---------------------------------------------------------------------- */ // Document order sorting sortOrder = hasCompare ? function( a, b ) { // Flag for duplicate removal if ( a === b ) { hasDuplicate = true; return 0; } // Sort on method existence if only one input has compareDocumentPosition var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; if ( compare ) { return compare; } // Calculate position if both inputs belong to the same document compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? a.compareDocumentPosition( b ) : // Otherwise we know they are disconnected 1; // Disconnected nodes if ( compare & 1 || (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { // Choose the first element that is related to our preferred document if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { return -1; } if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { return 1; } // Maintain original order return sortInput ? ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : 0; } return compare & 4 ? -1 : 1; } : function( a, b ) { // Exit early if the nodes are identical if ( a === b ) { hasDuplicate = true; return 0; } var cur, i = 0, aup = a.parentNode, bup = b.parentNode, ap = [ a ], bp = [ b ]; // Parentless nodes are either documents or disconnected if ( !aup || !bup ) { return a === document ? -1 : b === document ? 1 : aup ? -1 : bup ? 1 : sortInput ? ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : 0; // If the nodes are siblings, we can do a quick check } else if ( aup === bup ) { return siblingCheck( a, b ); } // Otherwise we need full lists of their ancestors for comparison cur = a; while ( (cur = cur.parentNode) ) { ap.unshift( cur ); } cur = b; while ( (cur = cur.parentNode) ) { bp.unshift( cur ); } // Walk down the tree looking for a discrepancy while ( ap[i] === bp[i] ) { i++; } return i ? // Do a sibling check if the nodes have a common ancestor siblingCheck( ap[i], bp[i] ) : // Otherwise nodes in our document sort first ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0; }; return document; }; Sizzle.matches = function( expr, elements ) { return Sizzle( expr, null, null, elements ); }; Sizzle.matchesSelector = function( elem, expr ) { // Set document vars if needed if ( ( elem.ownerDocument || elem ) !== document ) { setDocument( elem ); } // Make sure that attribute selectors are quoted expr = expr.replace( rattributeQuotes, "='$1']" ); if ( support.matchesSelector && documentIsHTML && !compilerCache[ expr + " " ] && ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { try { var ret = matches.call( elem, expr ); // IE 9's matchesSelector returns false on disconnected nodes if ( ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document // fragment in IE 9 elem.document && elem.document.nodeType !== 11 ) { return ret; } } catch (e) {} } return Sizzle( expr, document, null, [ elem ] ).length > 0; }; Sizzle.contains = function( context, elem ) { // Set document vars if needed if ( ( context.ownerDocument || context ) !== document ) { setDocument( context ); } return contains( context, elem ); }; Sizzle.attr = function( elem, name ) { // Set document vars if needed if ( ( elem.ownerDocument || elem ) !== document ) { setDocument( elem ); } var fn = Expr.attrHandle[ name.toLowerCase() ], // Don't get fooled by Object.prototype properties (jQuery #13807) val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? fn( elem, name, !documentIsHTML ) : undefined; return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute( name ) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null; }; Sizzle.error = function( msg ) { throw new Error( "Syntax error, unrecognized expression: " + msg ); }; /** * Document sorting and removing duplicates * @param {ArrayLike} results */ Sizzle.uniqueSort = function( results ) { var elem, duplicates = [], j = 0, i = 0; // Unless we *know* we can detect duplicates, assume their presence hasDuplicate = !support.detectDuplicates; sortInput = !support.sortStable && results.slice( 0 ); results.sort( sortOrder ); if ( hasDuplicate ) { while ( (elem = results[i++]) ) { if ( elem === results[ i ] ) { j = duplicates.push( i ); } } while ( j-- ) { results.splice( duplicates[ j ], 1 ); } } // Clear input after sorting to release objects // See https://github.com/jquery/sizzle/pull/225 sortInput = null; return results; }; /** * Utility function for retrieving the text value of an array of DOM nodes * @param {Array|Element} elem */ getText = Sizzle.getText = function( elem ) { var node, ret = "", i = 0, nodeType = elem.nodeType; if ( !nodeType ) { // If no nodeType, this is expected to be an array while ( (node = elem[i++]) ) { // Do not traverse comment nodes ret += getText( node ); } } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { // Use textContent for elements // innerText usage removed for consistency of new lines (jQuery #11153) if ( typeof elem.textContent === "string" ) { return elem.textContent; } else { // Traverse its children for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { ret += getText( elem ); } } } else if ( nodeType === 3 || nodeType === 4 ) { return elem.nodeValue; } // Do not include comment or processing instruction nodes return ret; }; Expr = Sizzle.selectors = { // Can be adjusted by the user cacheLength: 50, createPseudo: markFunction, match: matchExpr, attrHandle: {}, find: {}, relative: { ">": { dir: "parentNode", first: true }, " ": { dir: "parentNode" }, "+": { dir: "previousSibling", first: true }, "~": { dir: "previousSibling" } }, preFilter: { "ATTR": function( match ) { match[1] = match[1].replace( runescape, funescape ); // Move the given value to match[3] whether quoted or unquoted match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); if ( match[2] === "~=" ) { match[3] = " " + match[3] + " "; } return match.slice( 0, 4 ); }, "CHILD": function( match ) { /* matches from matchExpr["CHILD"] 1 type (only|nth|...) 2 what (child|of-type) 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) 4 xn-component of xn+y argument ([+-]?\d*n|) 5 sign of xn-component 6 x of xn-component 7 sign of y-component 8 y of y-component */ match[1] = match[1].toLowerCase(); if ( match[1].slice( 0, 3 ) === "nth" ) { // nth-* requires argument if ( !match[3] ) { Sizzle.error( match[0] ); } // numeric x and y parameters for Expr.filter.CHILD // remember that false/true cast respectively to 0/1 match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); // other types prohibit arguments } else if ( match[3] ) { Sizzle.error( match[0] ); } return match; }, "PSEUDO": function( match ) { var excess, unquoted = !match[6] && match[2]; if ( matchExpr["CHILD"].test( match[0] ) ) { return null; } // Accept quoted arguments as-is if ( match[3] ) { match[2] = match[4] || match[5] || ""; // Strip excess characters from unquoted arguments } else if ( unquoted && rpseudo.test( unquoted ) && // Get excess from tokenize (recursively) (excess = tokenize( unquoted, true )) && // advance to the next closing parenthesis (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { // excess is a negative index match[0] = match[0].slice( 0, excess ); match[2] = unquoted.slice( 0, excess ); } // Return only captures needed by the pseudo filter method (type and argument) return match.slice( 0, 3 ); } }, filter: { "TAG": function( nodeNameSelector ) { var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); return nodeNameSelector === "*" ? function() { return true; } : function( elem ) { return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; }; }, "CLASS": function( className ) { var pattern = classCache[ className + " " ]; return pattern || (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && classCache( className, function( elem ) { return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); }); }, "ATTR": function( name, operator, check ) { return function( elem ) { var result = Sizzle.attr( elem, name ); if ( result == null ) { return operator === "!="; } if ( !operator ) { return true; } result += ""; return operator === "=" ? result === check : operator === "!=" ? result !== check : operator === "^=" ? check && result.indexOf( check ) === 0 : operator === "*=" ? check && result.indexOf( check ) > -1 : operator === "$=" ? check && result.slice( -check.length ) === check : operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : false; }; }, "CHILD": function( type, what, argument, first, last ) { var simple = type.slice( 0, 3 ) !== "nth", forward = type.slice( -4 ) !== "last", ofType = what === "of-type"; return first === 1 && last === 0 ? // Shortcut for :nth-*(n) function( elem ) { return !!elem.parentNode; } : function( elem, context, xml ) { var cache, uniqueCache, outerCache, node, nodeIndex, start, dir = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType, diff = false; if ( parent ) { // :(first|last|only)-(child|of-type) if ( simple ) { while ( dir ) { node = elem; while ( (node = node[ dir ]) ) { if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { return false; } } // Reverse direction for :only-* (if we haven't yet done so) start = dir = type === "only" && !start && "nextSibling"; } return true; } start = [ forward ? parent.firstChild : parent.lastChild ]; // non-xml :nth-child(...) stores cache data on `parent` if ( forward && useCache ) { // Seek `elem` from a previously-cached index // ...in a gzip-friendly way node = parent; outerCache = node[ expando ] || (node[ expando ] = {}); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || (outerCache[ node.uniqueID ] = {}); cache = uniqueCache[ type ] || []; nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; diff = nodeIndex && cache[ 2 ]; node = nodeIndex && parent.childNodes[ nodeIndex ]; while ( (node = ++nodeIndex && node && node[ dir ] || // Fallback to seeking `elem` from the start (diff = nodeIndex = 0) || start.pop()) ) { // When found, cache indexes on `parent` and break if ( node.nodeType === 1 && ++diff && node === elem ) { uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; break; } } } else { // Use previously-cached element index if available if ( useCache ) { // ...in a gzip-friendly way node = elem; outerCache = node[ expando ] || (node[ expando ] = {}); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || (outerCache[ node.uniqueID ] = {}); cache = uniqueCache[ type ] || []; nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; diff = nodeIndex; } // xml :nth-child(...) // or :nth-last-child(...) or :nth(-last)?-of-type(...) if ( diff === false ) { // Use the same loop as above to seek `elem` from the start while ( (node = ++nodeIndex && node && node[ dir ] || (diff = nodeIndex = 0) || start.pop()) ) { if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { // Cache the index of each encountered element if ( useCache ) { outerCache = node[ expando ] || (node[ expando ] = {}); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || (outerCache[ node.uniqueID ] = {}); uniqueCache[ type ] = [ dirruns, diff ]; } if ( node === elem ) { break; } } } } } // Incorporate the offset, then check against cycle size diff -= last; return diff === first || ( diff % first === 0 && diff / first >= 0 ); } }; }, "PSEUDO": function( pseudo, argument ) { // pseudo-class names are case-insensitive // http://www.w3.org/TR/selectors/#pseudo-classes // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters // Remember that setFilters inherits from pseudos var args, fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || Sizzle.error( "unsupported pseudo: " + pseudo ); // The user may use createPseudo to indicate that // arguments are needed to create the filter function // just as Sizzle does if ( fn[ expando ] ) { return fn( argument ); } // But maintain support for old signatures if ( fn.length > 1 ) { args = [ pseudo, pseudo, "", argument ]; return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? markFunction(function( seed, matches ) { var idx, matched = fn( seed, argument ), i = matched.length; while ( i-- ) { idx = indexOf( seed, matched[i] ); seed[ idx ] = !( matches[ idx ] = matched[i] ); } }) : function( elem ) { return fn( elem, 0, args ); }; } return fn; } }, pseudos: { // Potentially complex pseudos "not": markFunction(function( selector ) { // Trim the selector passed to compile // to avoid treating leading and trailing // spaces as combinators var input = [], results = [], matcher = compile( selector.replace( rtrim, "$1" ) ); return matcher[ expando ] ? markFunction(function( seed, matches, context, xml ) { var elem, unmatched = matcher( seed, null, xml, [] ), i = seed.length; // Match elements unmatched by `matcher` while ( i-- ) { if ( (elem = unmatched[i]) ) { seed[i] = !(matches[i] = elem); } } }) : function( elem, context, xml ) { input[0] = elem; matcher( input, null, xml, results ); // Don't keep the element (issue #299) input[0] = null; return !results.pop(); }; }), "has": markFunction(function( selector ) { return function( elem ) { return Sizzle( selector, elem ).length > 0; }; }), "contains": markFunction(function( text ) { text = text.replace( runescape, funescape ); return function( elem ) { return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; }; }), // "Whether an element is represented by a :lang() selector // is based solely on the element's language value // being equal to the identifier C, // or beginning with the identifier C immediately followed by "-". // The matching of C against the element's language value is performed case-insensitively. // The identifier C does not have to be a valid language name." // http://www.w3.org/TR/selectors/#lang-pseudo "lang": markFunction( function( lang ) { // lang value must be a valid identifier if ( !ridentifier.test(lang || "") ) { Sizzle.error( "unsupported lang: " + lang ); } lang = lang.replace( runescape, funescape ).toLowerCase(); return function( elem ) { var elemLang; do { if ( (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { elemLang = elemLang.toLowerCase(); return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; } } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); return false; }; }), // Miscellaneous "target": function( elem ) { var hash = window.location && window.location.hash; return hash && hash.slice( 1 ) === elem.id; }, "root": function( elem ) { return elem === docElem; }, "focus": function( elem ) { return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); }, // Boolean properties "enabled": function( elem ) { return elem.disabled === false; }, "disabled": function( elem ) { return elem.disabled === true; }, "checked": function( elem ) { // In CSS3, :checked should return both checked and selected elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked var nodeName = elem.nodeName.toLowerCase(); return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); }, "selected": function( elem ) { // Accessing this property makes selected-by-default // options in Safari work properly if ( elem.parentNode ) { elem.parentNode.selectedIndex; } return elem.selected === true; }, // Contents "empty": function( elem ) { // http://www.w3.org/TR/selectors/#empty-pseudo // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), // but not by others (comment: 8; processing instruction: 7; etc.) // nodeType < 6 works because attributes (2) do not appear as children for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { if ( elem.nodeType < 6 ) { return false; } } return true; }, "parent": function( elem ) { return !Expr.pseudos["empty"]( elem ); }, // Element/input types "header": function( elem ) { return rheader.test( elem.nodeName ); }, "input": function( elem ) { return rinputs.test( elem.nodeName ); }, "button": function( elem ) { var name = elem.nodeName.toLowerCase(); return name === "input" && elem.type === "button" || name === "button"; }, "text": function( elem ) { var attr; return elem.nodeName.toLowerCase() === "input" && elem.type === "text" && // Support: IE<8 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); }, // Position-in-collection "first": createPositionalPseudo(function() { return [ 0 ]; }), "last": createPositionalPseudo(function( matchIndexes, length ) { return [ length - 1 ]; }), "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { return [ argument < 0 ? argument + length : argument ]; }), "even": createPositionalPseudo(function( matchIndexes, length ) { var i = 0; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; }), "odd": createPositionalPseudo(function( matchIndexes, length ) { var i = 1; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; }), "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { var i = argument < 0 ? argument + length : argument; for ( ; --i >= 0; ) { matchIndexes.push( i ); } return matchIndexes; }), "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { var i = argument < 0 ? argument + length : argument; for ( ; ++i < length; ) { matchIndexes.push( i ); } return matchIndexes; }) } }; Expr.pseudos["nth"] = Expr.pseudos["eq"]; // Add button/input type pseudos for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { Expr.pseudos[ i ] = createInputPseudo( i ); } for ( i in { submit: true, reset: true } ) { Expr.pseudos[ i ] = createButtonPseudo( i ); } // Easy API for creating new setFilters function setFilters() {} setFilters.prototype = Expr.filters = Expr.pseudos; Expr.setFilters = new setFilters(); tokenize = Sizzle.tokenize = function( selector, parseOnly ) { var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[ selector + " " ]; if ( cached ) { return parseOnly ? 0 : cached.slice( 0 ); } soFar = selector; groups = []; preFilters = Expr.preFilter; while ( soFar ) { // Comma and first run if ( !matched || (match = rcomma.exec( soFar )) ) { if ( match ) { // Don't consume trailing commas as valid soFar = soFar.slice( match[0].length ) || soFar; } groups.push( (tokens = []) ); } matched = false; // Combinators if ( (match = rcombinators.exec( soFar )) ) { matched = match.shift(); tokens.push({ value: matched, // Cast descendant combinators to space type: match[0].replace( rtrim, " " ) }); soFar = soFar.slice( matched.length ); } // Filters for ( type in Expr.filter ) { if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || (match = preFilters[ type ]( match ))) ) { matched = match.shift(); tokens.push({ value: matched, type: type, matches: match }); soFar = soFar.slice( matched.length ); } } if ( !matched ) { break; } } // Return the length of the invalid excess // if we're just parsing // Otherwise, throw an error or return tokens return parseOnly ? soFar.length : soFar ? Sizzle.error( selector ) : // Cache the tokens tokenCache( selector, groups ).slice( 0 ); }; function toSelector( tokens ) { var i = 0, len = tokens.length, selector = ""; for ( ; i < len; i++ ) { selector += tokens[i].value; } return selector; } function addCombinator( matcher, combinator, base ) { var dir = combinator.dir, checkNonElements = base && dir === "parentNode", doneName = done++; return combinator.first ? // Check against closest ancestor/preceding element function( elem, context, xml ) { while ( (elem = elem[ dir ]) ) { if ( elem.nodeType === 1 || checkNonElements ) { return matcher( elem, context, xml ); } } } : // Check against all ancestor/preceding elements function( elem, context, xml ) { var oldCache, uniqueCache, outerCache, newCache = [ dirruns, doneName ]; // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching if ( xml ) { while ( (elem = elem[ dir ]) ) { if ( elem.nodeType === 1 || checkNonElements ) { if ( matcher( elem, context, xml ) ) { return true; } } } } else { while ( (elem = elem[ dir ]) ) { if ( elem.nodeType === 1 || checkNonElements ) { outerCache = elem[ expando ] || (elem[ expando ] = {}); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); if ( (oldCache = uniqueCache[ dir ]) && oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { // Assign to newCache so results back-propagate to previous elements return (newCache[ 2 ] = oldCache[ 2 ]); } else { // Reuse newcache so results back-propagate to previous elements uniqueCache[ dir ] = newCache; // A match means we're done; a fail means we have to keep checking if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { return true; } } } } } }; } function elementMatcher( matchers ) { return matchers.length > 1 ? function( elem, context, xml ) { var i = matchers.length; while ( i-- ) { if ( !matchers[i]( elem, context, xml ) ) { return false; } } return true; } : matchers[0]; } function multipleContexts( selector, contexts, results ) { var i = 0, len = contexts.length; for ( ; i < len; i++ ) { Sizzle( selector, contexts[i], results ); } return results; } function condense( unmatched, map, filter, context, xml ) { var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = map != null; for ( ; i < len; i++ ) { if ( (elem = unmatched[i]) ) { if ( !filter || filter( elem, context, xml ) ) { newUnmatched.push( elem ); if ( mapped ) { map.push( i ); } } } } return newUnmatched; } function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { if ( postFilter && !postFilter[ expando ] ) { postFilter = setMatcher( postFilter ); } if ( postFinder && !postFinder[ expando ] ) { postFinder = setMatcher( postFinder, postSelector ); } return markFunction(function( seed, results, context, xml ) { var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, // Get initial elements from seed or context elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), // Prefilter to get matcher input, preserving a map for seed-results synchronization matcherIn = preFilter && ( seed || !selector ) ? condense( elems, preMap, preFilter, context, xml ) : elems, matcherOut = matcher ? // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, postFinder || ( seed ? preFilter : preexisting || postFilter ) ? // ...intermediate processing is necessary [] : // ...otherwise use results directly results : matcherIn; // Find primary matches if ( matcher ) { matcher( matcherIn, matcherOut, context, xml ); } // Apply postFilter if ( postFilter ) { temp = condense( matcherOut, postMap ); postFilter( temp, [], context, xml ); // Un-match failing elements by moving them back to matcherIn i = temp.length; while ( i-- ) { if ( (elem = temp[i]) ) { matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); } } } if ( seed ) { if ( postFinder || preFilter ) { if ( postFinder ) { // Get the final matcherOut by condensing this intermediate into postFinder contexts temp = []; i = matcherOut.length; while ( i-- ) { if ( (elem = matcherOut[i]) ) { // Restore matcherIn since elem is not yet a final match temp.push( (matcherIn[i] = elem) ); } } postFinder( null, (matcherOut = []), temp, xml ); } // Move matched elements from seed to results to keep them synchronized i = matcherOut.length; while ( i-- ) { if ( (elem = matcherOut[i]) && (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { seed[temp] = !(results[temp] = elem); } } } // Add elements to results, through postFinder if defined } else { matcherOut = condense( matcherOut === results ? matcherOut.splice( preexisting, matcherOut.length ) : matcherOut ); if ( postFinder ) { postFinder( null, results, matcherOut, xml ); } else { push.apply( results, matcherOut ); } } }); } function matcherFromTokens( tokens ) { var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[ tokens[0].type ], implicitRelative = leadingRelative || Expr.relative[" "], i = leadingRelative ? 1 : 0, // The foundational matcher ensures that elements are reachable from top-level context(s) matchContext = addCombinator( function( elem ) { return elem === checkContext; }, implicitRelative, true ), matchAnyContext = addCombinator( function( elem ) { return indexOf( checkContext, elem ) > -1; }, implicitRelative, true ), matchers = [ function( elem, context, xml ) { var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( (checkContext = context).nodeType ? matchContext( elem, context, xml ) : matchAnyContext( elem, context, xml ) ); // Avoid hanging onto element (issue #299) checkContext = null; return ret; } ]; for ( ; i < len; i++ ) { if ( (matcher = Expr.relative[ tokens[i].type ]) ) { matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; } else { matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); // Return special upon seeing a positional matcher if ( matcher[ expando ] ) { // Find the next relative operator (if any) for proper handling j = ++i; for ( ; j < len; j++ ) { if ( Expr.relative[ tokens[j].type ] ) { break; } } return setMatcher( i > 1 && elementMatcher( matchers ), i > 1 && toSelector( // If the preceding token was a descendant combinator, insert an implicit any-element `*` tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) ).replace( rtrim, "$1" ), matcher, i < j && matcherFromTokens( tokens.slice( i, j ) ), j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), j < len && toSelector( tokens ) ); } matchers.push( matcher ); } } return elementMatcher( matchers ); } function matcherFromGroupMatchers( elementMatchers, setMatchers ) { var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function( seed, context, xml, results, outermost ) { var elem, j, matcher, matchedCount = 0, i = "0", unmatched = seed && [], setMatched = [], contextBackup = outermostContext, // We must always have either seed elements or outermost context elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), // Use integer dirruns iff this is the outermost matcher dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), len = elems.length; if ( outermost ) { outermostContext = context === document || context || outermost; } // Add elements passing elementMatchers directly to results // Support: IE<9, Safari // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id for ( ; i !== len && (elem = elems[i]) != null; i++ ) { if ( byElement && elem ) { j = 0; if ( !context && elem.ownerDocument !== document ) { setDocument( elem ); xml = !documentIsHTML; } while ( (matcher = elementMatchers[j++]) ) { if ( matcher( elem, context || document, xml) ) { results.push( elem ); break; } } if ( outermost ) { dirruns = dirrunsUnique; } } // Track unmatched elements for set filters if ( bySet ) { // They will have gone through all possible matchers if ( (elem = !matcher && elem) ) { matchedCount--; } // Lengthen the array for every element, matched or not if ( seed ) { unmatched.push( elem ); } } } // `i` is now the count of elements visited above, and adding it to `matchedCount` // makes the latter nonnegative. matchedCount += i; // Apply set filters to unmatched elements // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` // equals `i`), unless we didn't visit _any_ elements in the above loop because we have // no element matchers and no seed. // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that // case, which will result in a "00" `matchedCount` that differs from `i` but is also // numerically zero. if ( bySet && i !== matchedCount ) { j = 0; while ( (matcher = setMatchers[j++]) ) { matcher( unmatched, setMatched, context, xml ); } if ( seed ) { // Reintegrate element matches to eliminate the need for sorting if ( matchedCount > 0 ) { while ( i-- ) { if ( !(unmatched[i] || setMatched[i]) ) { setMatched[i] = pop.call( results ); } } } // Discard index placeholder values to get only actual matches setMatched = condense( setMatched ); } // Add matches to results push.apply( results, setMatched ); // Seedless set matches succeeding multiple successful matchers stipulate sorting if ( outermost && !seed && setMatched.length > 0 && ( matchedCount + setMatchers.length ) > 1 ) { Sizzle.uniqueSort( results ); } } // Override manipulation of globals by nested matchers if ( outermost ) { dirruns = dirrunsUnique; outermostContext = contextBackup; } return unmatched; }; return bySet ? markFunction( superMatcher ) : superMatcher; } compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { var i, setMatchers = [], elementMatchers = [], cached = compilerCache[ selector + " " ]; if ( !cached ) { // Generate a function of recursive functions that can be used to check each element if ( !match ) { match = tokenize( selector ); } i = match.length; while ( i-- ) { cached = matcherFromTokens( match[i] ); if ( cached[ expando ] ) { setMatchers.push( cached ); } else { elementMatchers.push( cached ); } } // Cache the compiled function cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); // Save selector and tokenization cached.selector = selector; } return cached; }; /** * A low-level selection function that works with Sizzle's compiled * selector functions * @param {String|Function} selector A selector or a pre-compiled * selector function built with Sizzle.compile * @param {Element} context * @param {Array} [results] * @param {Array} [seed] A set of elements to match against */ select = Sizzle.select = function( selector, context, results, seed ) { var i, tokens, token, type, find, compiled = typeof selector === "function" && selector, match = !seed && tokenize( (selector = compiled.selector || selector) ); results = results || []; // Try to minimize operations if there is only one selector in the list and no seed // (the latter of which guarantees us context) if ( match.length === 1 ) { // Reduce context if the leading compound selector is an ID tokens = match[0] = match[0].slice( 0 ); if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && support.getById && context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; if ( !context ) { return results; // Precompiled matchers will still verify ancestry, so step up a level } else if ( compiled ) { context = context.parentNode; } selector = selector.slice( tokens.shift().value.length ); } // Fetch a seed set for right-to-left matching i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; while ( i-- ) { token = tokens[i]; // Abort if we hit a combinator if ( Expr.relative[ (type = token.type) ] ) { break; } if ( (find = Expr.find[ type ]) ) { // Search, expanding context for leading sibling combinators if ( (seed = find( token.matches[0].replace( runescape, funescape ), rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context )) ) { // If seed is empty or no tokens remain, we can return early tokens.splice( i, 1 ); selector = seed.length && toSelector( tokens ); if ( !selector ) { push.apply( results, seed ); return results; } break; } } } } // Compile and execute a filtering function if one is not provided // Provide `match` to avoid retokenization if we modified the selector above ( compiled || compile( selector, match ) )( seed, context, !documentIsHTML, results, !context || rsibling.test( selector ) && testContext( context.parentNode ) || context ); return results; }; // One-time assignments // Sort stability support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; // Support: Chrome 14-35+ // Always assume duplicates if they aren't passed to the comparison function support.detectDuplicates = !!hasDuplicate; // Initialize against the default document setDocument(); // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) // Detached nodes confoundingly follow *each other* support.sortDetached = assert(function( div1 ) { // Should return 1, but returns 4 (following) return div1.compareDocumentPosition( document.createElement("div") ) & 1; }); // Support: IE<8 // Prevent attribute/property "interpolation" // http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx if ( !assert(function( div ) { div.innerHTML = ""; return div.firstChild.getAttribute("href") === "#" ; }) ) { addHandle( "type|href|height|width", function( elem, name, isXML ) { if ( !isXML ) { return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); } }); } // Support: IE<9 // Use defaultValue in place of getAttribute("value") if ( !support.attributes || !assert(function( div ) { div.innerHTML = ""; div.firstChild.setAttribute( "value", "" ); return div.firstChild.getAttribute( "value" ) === ""; }) ) { addHandle( "value", function( elem, name, isXML ) { if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { return elem.defaultValue; } }); } // Support: IE<9 // Use getAttributeNode to fetch booleans when getAttribute lies if ( !assert(function( div ) { return div.getAttribute("disabled") == null; }) ) { addHandle( booleans, function( elem, name, isXML ) { var val; if ( !isXML ) { return elem[ name ] === true ? name.toLowerCase() : (val = elem.getAttributeNode( name )) && val.specified ? val.value : null; } }); } return Sizzle; })( window ); jQuery.find = Sizzle; jQuery.expr = Sizzle.selectors; jQuery.expr[ ":" ] = jQuery.expr.pseudos; jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; jQuery.text = Sizzle.getText; jQuery.isXMLDoc = Sizzle.isXML; jQuery.contains = Sizzle.contains; var dir = function( elem, dir, until ) { var matched = [], truncate = until !== undefined; while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { if ( elem.nodeType === 1 ) { if ( truncate && jQuery( elem ).is( until ) ) { break; } matched.push( elem ); } } return matched; }; var siblings = function( n, elem ) { var matched = []; for ( ; n; n = n.nextSibling ) { if ( n.nodeType === 1 && n !== elem ) { matched.push( n ); } } return matched; }; var rneedsContext = jQuery.expr.match.needsContext; var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); var risSimple = /^.[^:#\[\.,]*$/; // Implement the identical functionality for filter and not function winnow( elements, qualifier, not ) { if ( jQuery.isFunction( qualifier ) ) { return jQuery.grep( elements, function( elem, i ) { /* jshint -W018 */ return !!qualifier.call( elem, i, elem ) !== not; } ); } if ( qualifier.nodeType ) { return jQuery.grep( elements, function( elem ) { return ( elem === qualifier ) !== not; } ); } if ( typeof qualifier === "string" ) { if ( risSimple.test( qualifier ) ) { return jQuery.filter( qualifier, elements, not ); } qualifier = jQuery.filter( qualifier, elements ); } return jQuery.grep( elements, function( elem ) { return ( jQuery.inArray( elem, qualifier ) > -1 ) !== not; } ); } jQuery.filter = function( expr, elems, not ) { var elem = elems[ 0 ]; if ( not ) { expr = ":not(" + expr + ")"; } return elems.length === 1 && elem.nodeType === 1 ? jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { return elem.nodeType === 1; } ) ); }; jQuery.fn.extend( { find: function( selector ) { var i, ret = [], self = this, len = self.length; if ( typeof selector !== "string" ) { return this.pushStack( jQuery( selector ).filter( function() { for ( i = 0; i < len; i++ ) { if ( jQuery.contains( self[ i ], this ) ) { return true; } } } ) ); } for ( i = 0; i < len; i++ ) { jQuery.find( selector, self[ i ], ret ); } // Needed because $( selector, context ) becomes $( context ).find( selector ) ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); ret.selector = this.selector ? this.selector + " " + selector : selector; return ret; }, filter: function( selector ) { return this.pushStack( winnow( this, selector || [], false ) ); }, not: function( selector ) { return this.pushStack( winnow( this, selector || [], true ) ); }, is: function( selector ) { return !!winnow( this, // If this is a positional/relative selector, check membership in the returned set // so $("p:first").is("p:last") won't return true for a doc with two "p". typeof selector === "string" && rneedsContext.test( selector ) ? jQuery( selector ) : selector || [], false ).length; } } ); // Initialize a jQuery object // A central reference to the root jQuery(document) var rootjQuery, // A simple way to check for HTML strings // Prioritize #id over to avoid XSS via location.hash (#9521) // Strict HTML recognition (#11290: must start with <) rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, init = jQuery.fn.init = function( selector, context, root ) { var match, elem; // HANDLE: $(""), $(null), $(undefined), $(false) if ( !selector ) { return this; } // init accepts an alternate rootjQuery // so migrate can support jQuery.sub (gh-2101) root = root || rootjQuery; // Handle HTML strings if ( typeof selector === "string" ) { if ( selector.charAt( 0 ) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { // Assume that strings that start and end with <> are HTML and skip the regex check match = [ null, selector, null ]; } else { match = rquickExpr.exec( selector ); } // Match html or make sure no context is specified for #id if ( match && ( match[ 1 ] || !context ) ) { // HANDLE: $(html) -> $(array) if ( match[ 1 ] ) { context = context instanceof jQuery ? context[ 0 ] : context; // scripts is true for back-compat // Intentionally let the error be thrown if parseHTML is not present jQuery.merge( this, jQuery.parseHTML( match[ 1 ], context && context.nodeType ? context.ownerDocument || context : document, true ) ); // HANDLE: $(html, props) if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { for ( match in context ) { // Properties of context are called as methods if possible if ( jQuery.isFunction( this[ match ] ) ) { this[ match ]( context[ match ] ); // ...and otherwise set as attributes } else { this.attr( match, context[ match ] ); } } } return this; // HANDLE: $(#id) } else { elem = document.getElementById( match[ 2 ] ); // Check parentNode to catch when Blackberry 4.6 returns // nodes that are no longer in the document #6963 if ( elem && elem.parentNode ) { // Handle the case where IE and Opera return items // by name instead of ID if ( elem.id !== match[ 2 ] ) { return rootjQuery.find( selector ); } // Otherwise, we inject the element directly into the jQuery object this.length = 1; this[ 0 ] = elem; } this.context = document; this.selector = selector; return this; } // HANDLE: $(expr, $(...)) } else if ( !context || context.jquery ) { return ( context || root ).find( selector ); // HANDLE: $(expr, context) // (which is just equivalent to: $(context).find(expr) } else { return this.constructor( context ).find( selector ); } // HANDLE: $(DOMElement) } else if ( selector.nodeType ) { this.context = this[ 0 ] = selector; this.length = 1; return this; // HANDLE: $(function) // Shortcut for document ready } else if ( jQuery.isFunction( selector ) ) { return typeof root.ready !== "undefined" ? root.ready( selector ) : // Execute immediately if ready is not present selector( jQuery ); } if ( selector.selector !== undefined ) { this.selector = selector.selector; this.context = selector.context; } return jQuery.makeArray( selector, this ); }; // Give the init function the jQuery prototype for later instantiation init.prototype = jQuery.fn; // Initialize central reference rootjQuery = jQuery( document ); var rparentsprev = /^(?:parents|prev(?:Until|All))/, // methods guaranteed to produce a unique set when starting from a unique set guaranteedUnique = { children: true, contents: true, next: true, prev: true }; jQuery.fn.extend( { has: function( target ) { var i, targets = jQuery( target, this ), len = targets.length; return this.filter( function() { for ( i = 0; i < len; i++ ) { if ( jQuery.contains( this, targets[ i ] ) ) { return true; } } } ); }, closest: function( selectors, context ) { var cur, i = 0, l = this.length, matched = [], pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? jQuery( selectors, context || this.context ) : 0; for ( ; i < l; i++ ) { for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { // Always skip document fragments if ( cur.nodeType < 11 && ( pos ? pos.index( cur ) > -1 : // Don't pass non-elements to Sizzle cur.nodeType === 1 && jQuery.find.matchesSelector( cur, selectors ) ) ) { matched.push( cur ); break; } } } return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); }, // Determine the position of an element within // the matched set of elements index: function( elem ) { // No argument, return index in parent if ( !elem ) { return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; } // index in selector if ( typeof elem === "string" ) { return jQuery.inArray( this[ 0 ], jQuery( elem ) ); } // Locate the position of the desired element return jQuery.inArray( // If it receives a jQuery object, the first element is used elem.jquery ? elem[ 0 ] : elem, this ); }, add: function( selector, context ) { return this.pushStack( jQuery.uniqueSort( jQuery.merge( this.get(), jQuery( selector, context ) ) ) ); }, addBack: function( selector ) { return this.add( selector == null ? this.prevObject : this.prevObject.filter( selector ) ); } } ); function sibling( cur, dir ) { do { cur = cur[ dir ]; } while ( cur && cur.nodeType !== 1 ); return cur; } jQuery.each( { parent: function( elem ) { var parent = elem.parentNode; return parent && parent.nodeType !== 11 ? parent : null; }, parents: function( elem ) { return dir( elem, "parentNode" ); }, parentsUntil: function( elem, i, until ) { return dir( elem, "parentNode", until ); }, next: function( elem ) { return sibling( elem, "nextSibling" ); }, prev: function( elem ) { return sibling( elem, "previousSibling" ); }, nextAll: function( elem ) { return dir( elem, "nextSibling" ); }, prevAll: function( elem ) { return dir( elem, "previousSibling" ); }, nextUntil: function( elem, i, until ) { return dir( elem, "nextSibling", until ); }, prevUntil: function( elem, i, until ) { return dir( elem, "previousSibling", until ); }, siblings: function( elem ) { return siblings( ( elem.parentNode || {} ).firstChild, elem ); }, children: function( elem ) { return siblings( elem.firstChild ); }, contents: function( elem ) { return jQuery.nodeName( elem, "iframe" ) ? elem.contentDocument || elem.contentWindow.document : jQuery.merge( [], elem.childNodes ); } }, function( name, fn ) { jQuery.fn[ name ] = function( until, selector ) { var ret = jQuery.map( this, fn, until ); if ( name.slice( -5 ) !== "Until" ) { selector = until; } if ( selector && typeof selector === "string" ) { ret = jQuery.filter( selector, ret ); } if ( this.length > 1 ) { // Remove duplicates if ( !guaranteedUnique[ name ] ) { ret = jQuery.uniqueSort( ret ); } // Reverse order for parents* and prev-derivatives if ( rparentsprev.test( name ) ) { ret = ret.reverse(); } } return this.pushStack( ret ); }; } ); var rnotwhite = ( /\S+/g ); // Convert String-formatted options into Object-formatted ones function createOptions( options ) { var object = {}; jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { object[ flag ] = true; } ); return object; } /* * Create a callback list using the following parameters: * * options: an optional list of space-separated options that will change how * the callback list behaves or a more traditional option object * * By default a callback list will act like an event callback list and can be * "fired" multiple times. * * Possible options: * * once: will ensure the callback list can only be fired once (like a Deferred) * * memory: will keep track of previous values and will call any callback added * after the list has been fired right away with the latest "memorized" * values (like a Deferred) * * unique: will ensure a callback can only be added once (no duplicate in the list) * * stopOnFalse: interrupt callings when a callback returns false * */ jQuery.Callbacks = function( options ) { // Convert options from String-formatted to Object-formatted if needed // (we check in cache first) options = typeof options === "string" ? createOptions( options ) : jQuery.extend( {}, options ); var // Flag to know if list is currently firing firing, // Last fire value for non-forgettable lists memory, // Flag to know if list was already fired fired, // Flag to prevent firing locked, // Actual callback list list = [], // Queue of execution data for repeatable lists queue = [], // Index of currently firing callback (modified by add/remove as needed) firingIndex = -1, // Fire callbacks fire = function() { // Enforce single-firing locked = options.once; // Execute callbacks for all pending executions, // respecting firingIndex overrides and runtime changes fired = firing = true; for ( ; queue.length; firingIndex = -1 ) { memory = queue.shift(); while ( ++firingIndex < list.length ) { // Run callback and check for early termination if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && options.stopOnFalse ) { // Jump to end and forget the data so .add doesn't re-fire firingIndex = list.length; memory = false; } } } // Forget the data if we're done with it if ( !options.memory ) { memory = false; } firing = false; // Clean up if we're done firing for good if ( locked ) { // Keep an empty list if we have data for future add calls if ( memory ) { list = []; // Otherwise, this object is spent } else { list = ""; } } }, // Actual Callbacks object self = { // Add a callback or a collection of callbacks to the list add: function() { if ( list ) { // If we have memory from a past run, we should fire after adding if ( memory && !firing ) { firingIndex = list.length - 1; queue.push( memory ); } ( function add( args ) { jQuery.each( args, function( _, arg ) { if ( jQuery.isFunction( arg ) ) { if ( !options.unique || !self.has( arg ) ) { list.push( arg ); } } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { // Inspect recursively add( arg ); } } ); } )( arguments ); if ( memory && !firing ) { fire(); } } return this; }, // Remove a callback from the list remove: function() { jQuery.each( arguments, function( _, arg ) { var index; while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { list.splice( index, 1 ); // Handle firing indexes if ( index <= firingIndex ) { firingIndex--; } } } ); return this; }, // Check if a given callback is in the list. // If no argument is given, return whether or not list has callbacks attached. has: function( fn ) { return fn ? jQuery.inArray( fn, list ) > -1 : list.length > 0; }, // Remove all callbacks from the list empty: function() { if ( list ) { list = []; } return this; }, // Disable .fire and .add // Abort any current/pending executions // Clear all callbacks and values disable: function() { locked = queue = []; list = memory = ""; return this; }, disabled: function() { return !list; }, // Disable .fire // Also disable .add unless we have memory (since it would have no effect) // Abort any pending executions lock: function() { locked = true; if ( !memory ) { self.disable(); } return this; }, locked: function() { return !!locked; }, // Call all callbacks with the given context and arguments fireWith: function( context, args ) { if ( !locked ) { args = args || []; args = [ context, args.slice ? args.slice() : args ]; queue.push( args ); if ( !firing ) { fire(); } } return this; }, // Call all the callbacks with the given arguments fire: function() { self.fireWith( this, arguments ); return this; }, // To know if the callbacks have already been called at least once fired: function() { return !!fired; } }; return self; }; jQuery.extend( { Deferred: function( func ) { var tuples = [ // action, add listener, listener list, final state [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], [ "notify", "progress", jQuery.Callbacks( "memory" ) ] ], state = "pending", promise = { state: function() { return state; }, always: function() { deferred.done( arguments ).fail( arguments ); return this; }, then: function( /* fnDone, fnFail, fnProgress */ ) { var fns = arguments; return jQuery.Deferred( function( newDefer ) { jQuery.each( tuples, function( i, tuple ) { var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; // deferred[ done | fail | progress ] for forwarding actions to newDefer deferred[ tuple[ 1 ] ]( function() { var returned = fn && fn.apply( this, arguments ); if ( returned && jQuery.isFunction( returned.promise ) ) { returned.promise() .progress( newDefer.notify ) .done( newDefer.resolve ) .fail( newDefer.reject ); } else { newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); } } ); } ); fns = null; } ).promise(); }, // Get a promise for this deferred // If obj is provided, the promise aspect is added to the object promise: function( obj ) { return obj != null ? jQuery.extend( obj, promise ) : promise; } }, deferred = {}; // Keep pipe for back-compat promise.pipe = promise.then; // Add list-specific methods jQuery.each( tuples, function( i, tuple ) { var list = tuple[ 2 ], stateString = tuple[ 3 ]; // promise[ done | fail | progress ] = list.add promise[ tuple[ 1 ] ] = list.add; // Handle state if ( stateString ) { list.add( function() { // state = [ resolved | rejected ] state = stateString; // [ reject_list | resolve_list ].disable; progress_list.lock }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); } // deferred[ resolve | reject | notify ] deferred[ tuple[ 0 ] ] = function() { deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); return this; }; deferred[ tuple[ 0 ] + "With" ] = list.fireWith; } ); // Make the deferred a promise promise.promise( deferred ); // Call given func if any if ( func ) { func.call( deferred, deferred ); } // All done! return deferred; }, // Deferred helper when: function( subordinate /* , ..., subordinateN */ ) { var i = 0, resolveValues = slice.call( arguments ), length = resolveValues.length, // the count of uncompleted subordinates remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, // the master Deferred. // If resolveValues consist of only a single Deferred, just use that. deferred = remaining === 1 ? subordinate : jQuery.Deferred(), // Update function for both resolve and progress values updateFunc = function( i, contexts, values ) { return function( value ) { contexts[ i ] = this; values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; if ( values === progressValues ) { deferred.notifyWith( contexts, values ); } else if ( !( --remaining ) ) { deferred.resolveWith( contexts, values ); } }; }, progressValues, progressContexts, resolveContexts; // add listeners to Deferred subordinates; treat others as resolved if ( length > 1 ) { progressValues = new Array( length ); progressContexts = new Array( length ); resolveContexts = new Array( length ); for ( ; i < length; i++ ) { if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { resolveValues[ i ].promise() .progress( updateFunc( i, progressContexts, progressValues ) ) .done( updateFunc( i, resolveContexts, resolveValues ) ) .fail( deferred.reject ); } else { --remaining; } } } // if we're not waiting on anything, resolve the master if ( !remaining ) { deferred.resolveWith( resolveContexts, resolveValues ); } return deferred.promise(); } } ); // The deferred used on DOM ready var readyList; jQuery.fn.ready = function( fn ) { // Add the callback jQuery.ready.promise().done( fn ); return this; }; jQuery.extend( { // Is the DOM ready to be used? Set to true once it occurs. isReady: false, // A counter to track how many items to wait for before // the ready event fires. See #6781 readyWait: 1, // Hold (or release) the ready event holdReady: function( hold ) { if ( hold ) { jQuery.readyWait++; } else { jQuery.ready( true ); } }, // Handle when the DOM is ready ready: function( wait ) { // Abort if there are pending holds or we're already ready if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { return; } // Remember that the DOM is ready jQuery.isReady = true; // If a normal DOM Ready event fired, decrement, and wait if need be if ( wait !== true && --jQuery.readyWait > 0 ) { return; } // If there are functions bound, to execute readyList.resolveWith( document, [ jQuery ] ); // Trigger any bound ready events if ( jQuery.fn.triggerHandler ) { jQuery( document ).triggerHandler( "ready" ); jQuery( document ).off( "ready" ); } } } ); /** * Clean-up method for dom ready events */ function detach() { if ( document.addEventListener ) { document.removeEventListener( "DOMContentLoaded", completed ); window.removeEventListener( "load", completed ); } else { document.detachEvent( "onreadystatechange", completed ); window.detachEvent( "onload", completed ); } } /** * The ready event handler and self cleanup method */ function completed() { // readyState === "complete" is good enough for us to call the dom ready in oldIE if ( document.addEventListener || window.event.type === "load" || document.readyState === "complete" ) { detach(); jQuery.ready(); } } jQuery.ready.promise = function( obj ) { if ( !readyList ) { readyList = jQuery.Deferred(); // Catch cases where $(document).ready() is called // after the browser event has already occurred. // Support: IE6-10 // Older IE sometimes signals "interactive" too soon if ( document.readyState === "complete" || ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { // Handle it asynchronously to allow scripts the opportunity to delay ready window.setTimeout( jQuery.ready ); // Standards-based browsers support DOMContentLoaded } else if ( document.addEventListener ) { // Use the handy event callback document.addEventListener( "DOMContentLoaded", completed ); // A fallback to window.onload, that will always work window.addEventListener( "load", completed ); // If IE event model is used } else { // Ensure firing before onload, maybe late but safe also for iframes document.attachEvent( "onreadystatechange", completed ); // A fallback to window.onload, that will always work window.attachEvent( "onload", completed ); // If IE and not a frame // continually check to see if the document is ready var top = false; try { top = window.frameElement == null && document.documentElement; } catch ( e ) {} if ( top && top.doScroll ) { ( function doScrollCheck() { if ( !jQuery.isReady ) { try { // Use the trick by Diego Perini // http://javascript.nwbox.com/IEContentLoaded/ top.doScroll( "left" ); } catch ( e ) { return window.setTimeout( doScrollCheck, 50 ); } // detach all dom ready events detach(); // and execute any waiting functions jQuery.ready(); } } )(); } } } return readyList.promise( obj ); }; // Kick off the DOM ready check even if the user does not jQuery.ready.promise(); // Support: IE<9 // Iteration over object's inherited properties before its own var i; for ( i in jQuery( support ) ) { break; } support.ownFirst = i === "0"; // Note: most support tests are defined in their respective modules. // false until the test is run support.inlineBlockNeedsLayout = false; // Execute ASAP in case we need to set body.style.zoom jQuery( function() { // Minified: var a,b,c,d var val, div, body, container; body = document.getElementsByTagName( "body" )[ 0 ]; if ( !body || !body.style ) { // Return for frameset docs that don't have a body return; } // Setup div = document.createElement( "div" ); container = document.createElement( "div" ); container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; body.appendChild( container ).appendChild( div ); if ( typeof div.style.zoom !== "undefined" ) { // Support: IE<8 // Check if natively block-level elements act like inline-block // elements when setting their display to 'inline' and giving // them layout div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; if ( val ) { // Prevent IE 6 from affecting layout for positioned elements #11048 // Prevent IE from shrinking the body in IE 7 mode #12869 // Support: IE<8 body.style.zoom = 1; } } body.removeChild( container ); } ); ( function() { var div = document.createElement( "div" ); // Support: IE<9 support.deleteExpando = true; try { delete div.test; } catch ( e ) { support.deleteExpando = false; } // Null elements to avoid leaks in IE. div = null; } )(); var acceptData = function( elem ) { var noData = jQuery.noData[ ( elem.nodeName + " " ).toLowerCase() ], nodeType = +elem.nodeType || 1; // Do not set data on non-element DOM nodes because it will not be cleared (#8335). return nodeType !== 1 && nodeType !== 9 ? false : // Nodes accept data unless otherwise specified; rejection can be conditional !noData || noData !== true && elem.getAttribute( "classid" ) === noData; }; var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /([A-Z])/g; function dataAttr( elem, key, data ) { // If nothing was found internally, try to fetch any // data from the HTML5 data-* attribute if ( data === undefined && elem.nodeType === 1 ) { var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); data = elem.getAttribute( name ); if ( typeof data === "string" ) { try { data = data === "true" ? true : data === "false" ? false : data === "null" ? null : // Only convert to a number if it doesn't change the string +data + "" === data ? +data : rbrace.test( data ) ? jQuery.parseJSON( data ) : data; } catch ( e ) {} // Make sure we set the data so it isn't changed later jQuery.data( elem, key, data ); } else { data = undefined; } } return data; } // checks a cache object for emptiness function isEmptyDataObject( obj ) { var name; for ( name in obj ) { // if the public data object is empty, the private is still empty if ( name === "data" && jQuery.isEmptyObject( obj[ name ] ) ) { continue; } if ( name !== "toJSON" ) { return false; } } return true; } function internalData( elem, name, data, pvt /* Internal Use Only */ ) { if ( !acceptData( elem ) ) { return; } var ret, thisCache, internalKey = jQuery.expando, // We have to handle DOM nodes and JS objects differently because IE6-7 // can't GC object references properly across the DOM-JS boundary isNode = elem.nodeType, // Only DOM nodes need the global jQuery cache; JS object data is // attached directly to the object so GC can occur automatically cache = isNode ? jQuery.cache : elem, // Only defining an ID for JS objects if its cache already exists allows // the code to shortcut on the same path as a DOM node with no cache id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; // Avoid doing any more work than we need to when trying to get data on an // object that has no data at all if ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) && data === undefined && typeof name === "string" ) { return; } if ( !id ) { // Only DOM nodes need a new unique ID for each element since their data // ends up in the global cache if ( isNode ) { id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; } else { id = internalKey; } } if ( !cache[ id ] ) { // Avoid exposing jQuery metadata on plain JS objects when the object // is serialized using JSON.stringify cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; } // An object can be passed to jQuery.data instead of a key/value pair; this gets // shallow copied over onto the existing cache if ( typeof name === "object" || typeof name === "function" ) { if ( pvt ) { cache[ id ] = jQuery.extend( cache[ id ], name ); } else { cache[ id ].data = jQuery.extend( cache[ id ].data, name ); } } thisCache = cache[ id ]; // jQuery data() is stored in a separate object inside the object's internal data // cache in order to avoid key collisions between internal data and user-defined // data. if ( !pvt ) { if ( !thisCache.data ) { thisCache.data = {}; } thisCache = thisCache.data; } if ( data !== undefined ) { thisCache[ jQuery.camelCase( name ) ] = data; } // Check for both converted-to-camel and non-converted data property names // If a data property was specified if ( typeof name === "string" ) { // First Try to find as-is property data ret = thisCache[ name ]; // Test for null|undefined property data if ( ret == null ) { // Try to find the camelCased property ret = thisCache[ jQuery.camelCase( name ) ]; } } else { ret = thisCache; } return ret; } function internalRemoveData( elem, name, pvt ) { if ( !acceptData( elem ) ) { return; } var thisCache, i, isNode = elem.nodeType, // See jQuery.data for more information cache = isNode ? jQuery.cache : elem, id = isNode ? elem[ jQuery.expando ] : jQuery.expando; // If there is already no cache entry for this object, there is no // purpose in continuing if ( !cache[ id ] ) { return; } if ( name ) { thisCache = pvt ? cache[ id ] : cache[ id ].data; if ( thisCache ) { // Support array or space separated string names for data keys if ( !jQuery.isArray( name ) ) { // try the string as a key before any manipulation if ( name in thisCache ) { name = [ name ]; } else { // split the camel cased version by spaces unless a key with the spaces exists name = jQuery.camelCase( name ); if ( name in thisCache ) { name = [ name ]; } else { name = name.split( " " ); } } } else { // If "name" is an array of keys... // When data is initially created, via ("key", "val") signature, // keys will be converted to camelCase. // Since there is no way to tell _how_ a key was added, remove // both plain key and camelCase key. #12786 // This will only penalize the array argument path. name = name.concat( jQuery.map( name, jQuery.camelCase ) ); } i = name.length; while ( i-- ) { delete thisCache[ name[ i ] ]; } // If there is no data left in the cache, we want to continue // and let the cache object itself get destroyed if ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) { return; } } } // See jQuery.data for more information if ( !pvt ) { delete cache[ id ].data; // Don't destroy the parent cache unless the internal data object // had been the only thing left in it if ( !isEmptyDataObject( cache[ id ] ) ) { return; } } // Destroy the cache if ( isNode ) { jQuery.cleanData( [ elem ], true ); // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) /* jshint eqeqeq: false */ } else if ( support.deleteExpando || cache != cache.window ) { /* jshint eqeqeq: true */ delete cache[ id ]; // When all else fails, undefined } else { cache[ id ] = undefined; } } jQuery.extend( { cache: {}, // The following elements (space-suffixed to avoid Object.prototype collisions) // throw uncatchable exceptions if you attempt to set expando properties noData: { "applet ": true, "embed ": true, // ...but Flash objects (which have this classid) *can* handle expandos "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" }, hasData: function( elem ) { elem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ]; return !!elem && !isEmptyDataObject( elem ); }, data: function( elem, name, data ) { return internalData( elem, name, data ); }, removeData: function( elem, name ) { return internalRemoveData( elem, name ); }, // For internal use only. _data: function( elem, name, data ) { return internalData( elem, name, data, true ); }, _removeData: function( elem, name ) { return internalRemoveData( elem, name, true ); } } ); jQuery.fn.extend( { data: function( key, value ) { var i, name, data, elem = this[ 0 ], attrs = elem && elem.attributes; // Special expections of .data basically thwart jQuery.access, // so implement the relevant behavior ourselves // Gets all values if ( key === undefined ) { if ( this.length ) { data = jQuery.data( elem ); if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { i = attrs.length; while ( i-- ) { // Support: IE11+ // The attrs elements can be null (#14894) if ( attrs[ i ] ) { name = attrs[ i ].name; if ( name.indexOf( "data-" ) === 0 ) { name = jQuery.camelCase( name.slice( 5 ) ); dataAttr( elem, name, data[ name ] ); } } } jQuery._data( elem, "parsedAttrs", true ); } } return data; } // Sets multiple values if ( typeof key === "object" ) { return this.each( function() { jQuery.data( this, key ); } ); } return arguments.length > 1 ? // Sets one value this.each( function() { jQuery.data( this, key, value ); } ) : // Gets one value // Try to fetch any internally stored data first elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; }, removeData: function( key ) { return this.each( function() { jQuery.removeData( this, key ); } ); } } ); jQuery.extend( { queue: function( elem, type, data ) { var queue; if ( elem ) { type = ( type || "fx" ) + "queue"; queue = jQuery._data( elem, type ); // Speed up dequeue by getting out quickly if this is just a lookup if ( data ) { if ( !queue || jQuery.isArray( data ) ) { queue = jQuery._data( elem, type, jQuery.makeArray( data ) ); } else { queue.push( data ); } } return queue || []; } }, dequeue: function( elem, type ) { type = type || "fx"; var queue = jQuery.queue( elem, type ), startLength = queue.length, fn = queue.shift(), hooks = jQuery._queueHooks( elem, type ), next = function() { jQuery.dequeue( elem, type ); }; // If the fx queue is dequeued, always remove the progress sentinel if ( fn === "inprogress" ) { fn = queue.shift(); startLength--; } if ( fn ) { // Add a progress sentinel to prevent the fx queue from being // automatically dequeued if ( type === "fx" ) { queue.unshift( "inprogress" ); } // clear up the last queue stop function delete hooks.stop; fn.call( elem, next, hooks ); } if ( !startLength && hooks ) { hooks.empty.fire(); } }, // not intended for public consumption - generates a queueHooks object, // or returns the current one _queueHooks: function( elem, type ) { var key = type + "queueHooks"; return jQuery._data( elem, key ) || jQuery._data( elem, key, { empty: jQuery.Callbacks( "once memory" ).add( function() { jQuery._removeData( elem, type + "queue" ); jQuery._removeData( elem, key ); } ) } ); } } ); jQuery.fn.extend( { queue: function( type, data ) { var setter = 2; if ( typeof type !== "string" ) { data = type; type = "fx"; setter--; } if ( arguments.length < setter ) { return jQuery.queue( this[ 0 ], type ); } return data === undefined ? this : this.each( function() { var queue = jQuery.queue( this, type, data ); // ensure a hooks for this queue jQuery._queueHooks( this, type ); if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { jQuery.dequeue( this, type ); } } ); }, dequeue: function( type ) { return this.each( function() { jQuery.dequeue( this, type ); } ); }, clearQueue: function( type ) { return this.queue( type || "fx", [] ); }, // Get a promise resolved when queues of a certain type // are emptied (fx is the type by default) promise: function( type, obj ) { var tmp, count = 1, defer = jQuery.Deferred(), elements = this, i = this.length, resolve = function() { if ( !( --count ) ) { defer.resolveWith( elements, [ elements ] ); } }; if ( typeof type !== "string" ) { obj = type; type = undefined; } type = type || "fx"; while ( i-- ) { tmp = jQuery._data( elements[ i ], type + "queueHooks" ); if ( tmp && tmp.empty ) { count++; tmp.empty.add( resolve ); } } resolve(); return defer.promise( obj ); } } ); ( function() { var shrinkWrapBlocksVal; support.shrinkWrapBlocks = function() { if ( shrinkWrapBlocksVal != null ) { return shrinkWrapBlocksVal; } // Will be changed later if needed. shrinkWrapBlocksVal = false; // Minified: var b,c,d var div, body, container; body = document.getElementsByTagName( "body" )[ 0 ]; if ( !body || !body.style ) { // Test fired too early or in an unsupported environment, exit. return; } // Setup div = document.createElement( "div" ); container = document.createElement( "div" ); container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; body.appendChild( container ).appendChild( div ); // Support: IE6 // Check if elements with layout shrink-wrap their children if ( typeof div.style.zoom !== "undefined" ) { // Reset CSS: box-sizing; display; margin; border div.style.cssText = // Support: Firefox<29, Android 2.3 // Vendor-prefix box-sizing "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + "box-sizing:content-box;display:block;margin:0;border:0;" + "padding:1px;width:1px;zoom:1"; div.appendChild( document.createElement( "div" ) ).style.width = "5px"; shrinkWrapBlocksVal = div.offsetWidth !== 3; } body.removeChild( container ); return shrinkWrapBlocksVal; }; } )(); var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; var isHidden = function( elem, el ) { // isHidden might be called from jQuery#filter function; // in that case, element will be second argument elem = el || elem; return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); }; function adjustCSS( elem, prop, valueParts, tween ) { var adjusted, scale = 1, maxIterations = 20, currentValue = tween ? function() { return tween.cur(); } : function() { return jQuery.css( elem, prop, "" ); }, initial = currentValue(), unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), // Starting value computation is required for potential unit mismatches initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && rcssNum.exec( jQuery.css( elem, prop ) ); if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { // Trust units reported by jQuery.css unit = unit || initialInUnit[ 3 ]; // Make sure we update the tween properties later on valueParts = valueParts || []; // Iteratively approximate from a nonzero starting point initialInUnit = +initial || 1; do { // If previous iteration zeroed out, double until we get *something*. // Use string for doubling so we don't accidentally see scale as unchanged below scale = scale || ".5"; // Adjust and apply initialInUnit = initialInUnit / scale; jQuery.style( elem, prop, initialInUnit + unit ); // Update scale, tolerating zero or NaN from tween.cur() // Break the loop if scale is unchanged or perfect, or if we've just had enough. } while ( scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations ); } if ( valueParts ) { initialInUnit = +initialInUnit || +initial || 0; // Apply relative offset (+=/-=) if specified adjusted = valueParts[ 1 ] ? initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : +valueParts[ 2 ]; if ( tween ) { tween.unit = unit; tween.start = initialInUnit; tween.end = adjusted; } } return adjusted; } // Multifunctional method to get and set values of a collection // The value/s can optionally be executed if it's a function var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { var i = 0, length = elems.length, bulk = key == null; // Sets many values if ( jQuery.type( key ) === "object" ) { chainable = true; for ( i in key ) { access( elems, fn, i, key[ i ], true, emptyGet, raw ); } // Sets one value } else if ( value !== undefined ) { chainable = true; if ( !jQuery.isFunction( value ) ) { raw = true; } if ( bulk ) { // Bulk operations run against the entire set if ( raw ) { fn.call( elems, value ); fn = null; // ...except when executing function values } else { bulk = fn; fn = function( elem, key, value ) { return bulk.call( jQuery( elem ), value ); }; } } if ( fn ) { for ( ; i < length; i++ ) { fn( elems[ i ], key, raw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) ) ); } } } return chainable ? elems : // Gets bulk ? fn.call( elems ) : length ? fn( elems[ 0 ], key ) : emptyGet; }; var rcheckableType = ( /^(?:checkbox|radio)$/i ); var rtagName = ( /<([\w:-]+)/ ); var rscriptType = ( /^$|\/(?:java|ecma)script/i ); var rleadingWhitespace = ( /^\s+/ ); var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|" + "details|dialog|figcaption|figure|footer|header|hgroup|main|" + "mark|meter|nav|output|picture|progress|section|summary|template|time|video"; function createSafeFragment( document ) { var list = nodeNames.split( "|" ), safeFrag = document.createDocumentFragment(); if ( safeFrag.createElement ) { while ( list.length ) { safeFrag.createElement( list.pop() ); } } return safeFrag; } ( function() { var div = document.createElement( "div" ), fragment = document.createDocumentFragment(), input = document.createElement( "input" ); // Setup div.innerHTML = "
a"; // IE strips leading whitespace when .innerHTML is used support.leadingWhitespace = div.firstChild.nodeType === 3; // Make sure that tbody elements aren't automatically inserted // IE will insert them into empty tables support.tbody = !div.getElementsByTagName( "tbody" ).length; // Make sure that link elements get serialized correctly by innerHTML // This requires a wrapper element in IE support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; // Makes sure cloning an html5 element does not cause problems // Where outerHTML is undefined, this still works support.html5Clone = document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; // Check if a disconnected checkbox will retain its checked // value of true after appended to the DOM (IE6/7) input.type = "checkbox"; input.checked = true; fragment.appendChild( input ); support.appendChecked = input.checked; // Make sure textarea (and checkbox) defaultValue is properly cloned // Support: IE6-IE11+ div.innerHTML = ""; support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; // #11217 - WebKit loses check when the name is after the checked attribute fragment.appendChild( div ); // Support: Windows Web Apps (WWA) // `name` and `type` must use .setAttribute for WWA (#14901) input = document.createElement( "input" ); input.setAttribute( "type", "radio" ); input.setAttribute( "checked", "checked" ); input.setAttribute( "name", "t" ); div.appendChild( input ); // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 // old WebKit doesn't clone checked state correctly in fragments support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; // Support: IE<9 // Cloned elements keep attachEvent handlers, we use addEventListener on IE9+ support.noCloneEvent = !!div.addEventListener; // Support: IE<9 // Since attributes and properties are the same in IE, // cleanData must set properties to undefined rather than use removeAttribute div[ jQuery.expando ] = 1; support.attributes = !div.getAttribute( jQuery.expando ); } )(); // We have to close these tags to support XHTML (#13200) var wrapMap = { option: [ 1, "" ], legend: [ 1, "
", "
" ], area: [ 1, "", "" ], // Support: IE8 param: [ 1, "", "" ], thead: [ 1, "", "
" ], tr: [ 2, "", "
" ], col: [ 2, "", "
" ], td: [ 3, "", "
" ], // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, // unless wrapped in a div with non-breaking characters in front of it. _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] }; // Support: IE8-IE9 wrapMap.optgroup = wrapMap.option; wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; wrapMap.th = wrapMap.td; function getAll( context, tag ) { var elems, elem, i = 0, found = typeof context.getElementsByTagName !== "undefined" ? context.getElementsByTagName( tag || "*" ) : typeof context.querySelectorAll !== "undefined" ? context.querySelectorAll( tag || "*" ) : undefined; if ( !found ) { for ( found = [], elems = context.childNodes || context; ( elem = elems[ i ] ) != null; i++ ) { if ( !tag || jQuery.nodeName( elem, tag ) ) { found.push( elem ); } else { jQuery.merge( found, getAll( elem, tag ) ); } } } return tag === undefined || tag && jQuery.nodeName( context, tag ) ? jQuery.merge( [ context ], found ) : found; } // Mark scripts as having already been evaluated function setGlobalEval( elems, refElements ) { var elem, i = 0; for ( ; ( elem = elems[ i ] ) != null; i++ ) { jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[ i ], "globalEval" ) ); } } var rhtml = /<|&#?\w+;/, rtbody = / from table fragments if ( !support.tbody ) { // String was a , *may* have spurious elem = tag === "table" && !rtbody.test( elem ) ? tmp.firstChild : // String was a bare or wrap[ 1 ] === "
" && !rtbody.test( elem ) ? tmp : 0; j = elem && elem.childNodes.length; while ( j-- ) { if ( jQuery.nodeName( ( tbody = elem.childNodes[ j ] ), "tbody" ) && !tbody.childNodes.length ) { elem.removeChild( tbody ); } } } jQuery.merge( nodes, tmp.childNodes ); // Fix #12392 for WebKit and IE > 9 tmp.textContent = ""; // Fix #12392 for oldIE while ( tmp.firstChild ) { tmp.removeChild( tmp.firstChild ); } // Remember the top-level container for proper cleanup tmp = safe.lastChild; } } } // Fix #11356: Clear elements from fragment if ( tmp ) { safe.removeChild( tmp ); } // Reset defaultChecked for any radios and checkboxes // about to be appended to the DOM in IE 6/7 (#8060) if ( !support.appendChecked ) { jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); } i = 0; while ( ( elem = nodes[ i++ ] ) ) { // Skip elements already in the context collection (trac-4087) if ( selection && jQuery.inArray( elem, selection ) > -1 ) { if ( ignored ) { ignored.push( elem ); } continue; } contains = jQuery.contains( elem.ownerDocument, elem ); // Append to fragment tmp = getAll( safe.appendChild( elem ), "script" ); // Preserve script evaluation history if ( contains ) { setGlobalEval( tmp ); } // Capture executables if ( scripts ) { j = 0; while ( ( elem = tmp[ j++ ] ) ) { if ( rscriptType.test( elem.type || "" ) ) { scripts.push( elem ); } } } } tmp = null; return safe; } ( function() { var i, eventName, div = document.createElement( "div" ); // Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events) for ( i in { submit: true, change: true, focusin: true } ) { eventName = "on" + i; if ( !( support[ i ] = eventName in window ) ) { // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) div.setAttribute( eventName, "t" ); support[ i ] = div.attributes[ eventName ].expando === false; } } // Null elements to avoid leaks in IE. div = null; } )(); var rformElems = /^(?:input|select|textarea)$/i, rkeyEvent = /^key/, rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, rtypenamespace = /^([^.]*)(?:\.(.+)|)/; function returnTrue() { return true; } function returnFalse() { return false; } // Support: IE9 // See #13393 for more info function safeActiveElement() { try { return document.activeElement; } catch ( err ) { } } function on( elem, types, selector, data, fn, one ) { var origFn, type; // Types can be a map of types/handlers if ( typeof types === "object" ) { // ( types-Object, selector, data ) if ( typeof selector !== "string" ) { // ( types-Object, data ) data = data || selector; selector = undefined; } for ( type in types ) { on( elem, type, selector, data, types[ type ], one ); } return elem; } if ( data == null && fn == null ) { // ( types, fn ) fn = selector; data = selector = undefined; } else if ( fn == null ) { if ( typeof selector === "string" ) { // ( types, selector, fn ) fn = data; data = undefined; } else { // ( types, data, fn ) fn = data; data = selector; selector = undefined; } } if ( fn === false ) { fn = returnFalse; } else if ( !fn ) { return elem; } if ( one === 1 ) { origFn = fn; fn = function( event ) { // Can use an empty set, since event contains the info jQuery().off( event ); return origFn.apply( this, arguments ); }; // Use same guid so caller can remove using origFn fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); } return elem.each( function() { jQuery.event.add( this, types, fn, data, selector ); } ); } /* * Helper functions for managing events -- not part of the public interface. * Props to Dean Edwards' addEvent library for many of the ideas. */ jQuery.event = { global: {}, add: function( elem, types, handler, data, selector ) { var tmp, events, t, handleObjIn, special, eventHandle, handleObj, handlers, type, namespaces, origType, elemData = jQuery._data( elem ); // Don't attach events to noData or text/comment nodes (but allow plain objects) if ( !elemData ) { return; } // Caller can pass in an object of custom data in lieu of the handler if ( handler.handler ) { handleObjIn = handler; handler = handleObjIn.handler; selector = handleObjIn.selector; } // Make sure that the handler has a unique ID, used to find/remove it later if ( !handler.guid ) { handler.guid = jQuery.guid++; } // Init the element's event structure and main handler, if this is the first if ( !( events = elemData.events ) ) { events = elemData.events = {}; } if ( !( eventHandle = elemData.handle ) ) { eventHandle = elemData.handle = function( e ) { // Discard the second event of a jQuery.event.trigger() and // when an event is called after a page has unloaded return typeof jQuery !== "undefined" && ( !e || jQuery.event.triggered !== e.type ) ? jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : undefined; }; // Add elem as a property of the handle fn to prevent a memory leak // with IE non-native events eventHandle.elem = elem; } // Handle multiple events separated by a space types = ( types || "" ).match( rnotwhite ) || [ "" ]; t = types.length; while ( t-- ) { tmp = rtypenamespace.exec( types[ t ] ) || []; type = origType = tmp[ 1 ]; namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); // There *must* be a type, no attaching namespace-only handlers if ( !type ) { continue; } // If event changes its type, use the special event handlers for the changed type special = jQuery.event.special[ type ] || {}; // If selector defined, determine special event api type, otherwise given type type = ( selector ? special.delegateType : special.bindType ) || type; // Update special based on newly reset type special = jQuery.event.special[ type ] || {}; // handleObj is passed to all event handlers handleObj = jQuery.extend( { type: type, origType: origType, data: data, handler: handler, guid: handler.guid, selector: selector, needsContext: selector && jQuery.expr.match.needsContext.test( selector ), namespace: namespaces.join( "." ) }, handleObjIn ); // Init the event handler queue if we're the first if ( !( handlers = events[ type ] ) ) { handlers = events[ type ] = []; handlers.delegateCount = 0; // Only use addEventListener/attachEvent if the special events handler returns false if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { // Bind the global event handler to the element if ( elem.addEventListener ) { elem.addEventListener( type, eventHandle, false ); } else if ( elem.attachEvent ) { elem.attachEvent( "on" + type, eventHandle ); } } } if ( special.add ) { special.add.call( elem, handleObj ); if ( !handleObj.handler.guid ) { handleObj.handler.guid = handler.guid; } } // Add to the element's handler list, delegates in front if ( selector ) { handlers.splice( handlers.delegateCount++, 0, handleObj ); } else { handlers.push( handleObj ); } // Keep track of which events have ever been used, for event optimization jQuery.event.global[ type ] = true; } // Nullify elem to prevent memory leaks in IE elem = null; }, // Detach an event or set of events from an element remove: function( elem, types, handler, selector, mappedTypes ) { var j, handleObj, tmp, origCount, t, events, special, handlers, type, namespaces, origType, elemData = jQuery.hasData( elem ) && jQuery._data( elem ); if ( !elemData || !( events = elemData.events ) ) { return; } // Once for each type.namespace in types; type may be omitted types = ( types || "" ).match( rnotwhite ) || [ "" ]; t = types.length; while ( t-- ) { tmp = rtypenamespace.exec( types[ t ] ) || []; type = origType = tmp[ 1 ]; namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); // Unbind all events (on this namespace, if provided) for the element if ( !type ) { for ( type in events ) { jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); } continue; } special = jQuery.event.special[ type ] || {}; type = ( selector ? special.delegateType : special.bindType ) || type; handlers = events[ type ] || []; tmp = tmp[ 2 ] && new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); // Remove matching events origCount = j = handlers.length; while ( j-- ) { handleObj = handlers[ j ]; if ( ( mappedTypes || origType === handleObj.origType ) && ( !handler || handler.guid === handleObj.guid ) && ( !tmp || tmp.test( handleObj.namespace ) ) && ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { handlers.splice( j, 1 ); if ( handleObj.selector ) { handlers.delegateCount--; } if ( special.remove ) { special.remove.call( elem, handleObj ); } } } // Remove generic event handler if we removed something and no more handlers exist // (avoids potential for endless recursion during removal of special event handlers) if ( origCount && !handlers.length ) { if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { jQuery.removeEvent( elem, type, elemData.handle ); } delete events[ type ]; } } // Remove the expando if it's no longer used if ( jQuery.isEmptyObject( events ) ) { delete elemData.handle; // removeData also checks for emptiness and clears the expando if empty // so use it instead of delete jQuery._removeData( elem, "events" ); } }, trigger: function( event, data, elem, onlyHandlers ) { var handle, ontype, cur, bubbleType, special, tmp, i, eventPath = [ elem || document ], type = hasOwn.call( event, "type" ) ? event.type : event, namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; cur = tmp = elem = elem || document; // Don't do events on text and comment nodes if ( elem.nodeType === 3 || elem.nodeType === 8 ) { return; } // focus/blur morphs to focusin/out; ensure we're not firing them right now if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { return; } if ( type.indexOf( "." ) > -1 ) { // Namespaced trigger; create a regexp to match event type in handle() namespaces = type.split( "." ); type = namespaces.shift(); namespaces.sort(); } ontype = type.indexOf( ":" ) < 0 && "on" + type; // Caller can pass in a jQuery.Event object, Object, or just an event type string event = event[ jQuery.expando ] ? event : new jQuery.Event( type, typeof event === "object" && event ); // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) event.isTrigger = onlyHandlers ? 2 : 3; event.namespace = namespaces.join( "." ); event.rnamespace = event.namespace ? new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : null; // Clean up the event in case it is being reused event.result = undefined; if ( !event.target ) { event.target = elem; } // Clone any incoming data and prepend the event, creating the handler arg list data = data == null ? [ event ] : jQuery.makeArray( data, [ event ] ); // Allow special events to draw outside the lines special = jQuery.event.special[ type ] || {}; if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { return; } // Determine event propagation path in advance, per W3C events spec (#9951) // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { bubbleType = special.delegateType || type; if ( !rfocusMorph.test( bubbleType + type ) ) { cur = cur.parentNode; } for ( ; cur; cur = cur.parentNode ) { eventPath.push( cur ); tmp = cur; } // Only add window if we got to document (e.g., not plain obj or detached DOM) if ( tmp === ( elem.ownerDocument || document ) ) { eventPath.push( tmp.defaultView || tmp.parentWindow || window ); } } // Fire handlers on the event path i = 0; while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { event.type = i > 1 ? bubbleType : special.bindType || type; // jQuery handler handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); if ( handle ) { handle.apply( cur, data ); } // Native handler handle = ontype && cur[ ontype ]; if ( handle && handle.apply && acceptData( cur ) ) { event.result = handle.apply( cur, data ); if ( event.result === false ) { event.preventDefault(); } } } event.type = type; // If nobody prevented the default action, do it now if ( !onlyHandlers && !event.isDefaultPrevented() ) { if ( ( !special._default || special._default.apply( eventPath.pop(), data ) === false ) && acceptData( elem ) ) { // Call a native DOM method on the target with the same name name as the event. // Can't use an .isFunction() check here because IE6/7 fails that test. // Don't do default actions on window, that's where global variables be (#6170) if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { // Don't re-trigger an onFOO event when we call its FOO() method tmp = elem[ ontype ]; if ( tmp ) { elem[ ontype ] = null; } // Prevent re-triggering of the same event, since we already bubbled it above jQuery.event.triggered = type; try { elem[ type ](); } catch ( e ) { // IE<9 dies on focus/blur to hidden element (#1486,#12518) // only reproducible on winXP IE8 native, not IE9 in IE8 mode } jQuery.event.triggered = undefined; if ( tmp ) { elem[ ontype ] = tmp; } } } } return event.result; }, dispatch: function( event ) { // Make a writable jQuery.Event from the native event object event = jQuery.event.fix( event ); var i, j, ret, matched, handleObj, handlerQueue = [], args = slice.call( arguments ), handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], special = jQuery.event.special[ event.type ] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event args[ 0 ] = event; event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { return; } // Determine handlers handlerQueue = jQuery.event.handlers.call( this, event, handlers ); // Run delegates first; they may want to stop propagation beneath us i = 0; while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { event.currentTarget = matched.elem; j = 0; while ( ( handleObj = matched.handlers[ j++ ] ) && !event.isImmediatePropagationStopped() ) { // Triggered event must either 1) have no namespace, or 2) have namespace(s) // a subset or equal to those in the bound event (both can have no namespace). if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { event.handleObj = handleObj; event.data = handleObj.data; ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || handleObj.handler ).apply( matched.elem, args ); if ( ret !== undefined ) { if ( ( event.result = ret ) === false ) { event.preventDefault(); event.stopPropagation(); } } } } } // Call the postDispatch hook for the mapped type if ( special.postDispatch ) { special.postDispatch.call( this, event ); } return event.result; }, handlers: function( event, handlers ) { var i, matches, sel, handleObj, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target; // Support (at least): Chrome, IE9 // Find delegate handlers // Black-hole SVG instance trees (#13180) // // Support: Firefox<=42+ // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) if ( delegateCount && cur.nodeType && ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { /* jshint eqeqeq: false */ for ( ; cur != this; cur = cur.parentNode || this ) { /* jshint eqeqeq: true */ // Don't check non-elements (#13208) // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { matches = []; for ( i = 0; i < delegateCount; i++ ) { handleObj = handlers[ i ]; // Don't conflict with Object.prototype properties (#13203) sel = handleObj.selector + " "; if ( matches[ sel ] === undefined ) { matches[ sel ] = handleObj.needsContext ? jQuery( sel, this ).index( cur ) > -1 : jQuery.find( sel, this, null, [ cur ] ).length; } if ( matches[ sel ] ) { matches.push( handleObj ); } } if ( matches.length ) { handlerQueue.push( { elem: cur, handlers: matches } ); } } } } // Add the remaining (directly-bound) handlers if ( delegateCount < handlers.length ) { handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); } return handlerQueue; }, fix: function( event ) { if ( event[ jQuery.expando ] ) { return event; } // Create a writable copy of the event object and normalize some properties var i, prop, copy, type = event.type, originalEvent = event, fixHook = this.fixHooks[ type ]; if ( !fixHook ) { this.fixHooks[ type ] = fixHook = rmouseEvent.test( type ) ? this.mouseHooks : rkeyEvent.test( type ) ? this.keyHooks : {}; } copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; event = new jQuery.Event( originalEvent ); i = copy.length; while ( i-- ) { prop = copy[ i ]; event[ prop ] = originalEvent[ prop ]; } // Support: IE<9 // Fix target property (#1925) if ( !event.target ) { event.target = originalEvent.srcElement || document; } // Support: Safari 6-8+ // Target should not be a text node (#504, #13143) if ( event.target.nodeType === 3 ) { event.target = event.target.parentNode; } // Support: IE<9 // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) event.metaKey = !!event.metaKey; return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; }, // Includes some event props shared by KeyEvent and MouseEvent props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), fixHooks: {}, keyHooks: { props: "char charCode key keyCode".split( " " ), filter: function( event, original ) { // Add which for key events if ( event.which == null ) { event.which = original.charCode != null ? original.charCode : original.keyCode; } return event; } }, mouseHooks: { props: ( "button buttons clientX clientY fromElement offsetX offsetY " + "pageX pageY screenX screenY toElement" ).split( " " ), filter: function( event, original ) { var body, eventDoc, doc, button = original.button, fromElement = original.fromElement; // Calculate pageX/Y if missing and clientX/Y available if ( event.pageX == null && original.clientX != null ) { eventDoc = event.target.ownerDocument || document; doc = eventDoc.documentElement; body = eventDoc.body; event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); } // Add relatedTarget, if necessary if ( !event.relatedTarget && fromElement ) { event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; } // Add which for click: 1 === left; 2 === middle; 3 === right // Note: button is not normalized, so don't use it if ( !event.which && button !== undefined ) { event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); } return event; } }, special: { load: { // Prevent triggered image.load events from bubbling to window.load noBubble: true }, focus: { // Fire native event if possible so blur/focus sequence is correct trigger: function() { if ( this !== safeActiveElement() && this.focus ) { try { this.focus(); return false; } catch ( e ) { // Support: IE<9 // If we error on focus to hidden element (#1486, #12518), // let .trigger() run the handlers } } }, delegateType: "focusin" }, blur: { trigger: function() { if ( this === safeActiveElement() && this.blur ) { this.blur(); return false; } }, delegateType: "focusout" }, click: { // For checkbox, fire native event so checked state will be right trigger: function() { if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { this.click(); return false; } }, // For cross-browser consistency, don't fire native .click() on links _default: function( event ) { return jQuery.nodeName( event.target, "a" ); } }, beforeunload: { postDispatch: function( event ) { // Support: Firefox 20+ // Firefox doesn't alert if the returnValue field is not set. if ( event.result !== undefined && event.originalEvent ) { event.originalEvent.returnValue = event.result; } } } }, // Piggyback on a donor event to simulate a different one simulate: function( type, elem, event ) { var e = jQuery.extend( new jQuery.Event(), event, { type: type, isSimulated: true // Previously, `originalEvent: {}` was set here, so stopPropagation call // would not be triggered on donor event, since in our own // jQuery.event.stopPropagation function we had a check for existence of // originalEvent.stopPropagation method, so, consequently it would be a noop. // // Guard for simulated events was moved to jQuery.event.stopPropagation function // since `originalEvent` should point to the original event for the // constancy with other events and for more focused logic } ); jQuery.event.trigger( e, null, elem ); if ( e.isDefaultPrevented() ) { event.preventDefault(); } } }; jQuery.removeEvent = document.removeEventListener ? function( elem, type, handle ) { // This "if" is needed for plain objects if ( elem.removeEventListener ) { elem.removeEventListener( type, handle ); } } : function( elem, type, handle ) { var name = "on" + type; if ( elem.detachEvent ) { // #8545, #7054, preventing memory leaks for custom events in IE6-8 // detachEvent needed property on element, by name of that event, // to properly expose it to GC if ( typeof elem[ name ] === "undefined" ) { elem[ name ] = null; } elem.detachEvent( name, handle ); } }; jQuery.Event = function( src, props ) { // Allow instantiation without the 'new' keyword if ( !( this instanceof jQuery.Event ) ) { return new jQuery.Event( src, props ); } // Event object if ( src && src.type ) { this.originalEvent = src; this.type = src.type; // Events bubbling up the document may have been marked as prevented // by a handler lower down the tree; reflect the correct value. this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && // Support: IE < 9, Android < 4.0 src.returnValue === false ? returnTrue : returnFalse; // Event type } else { this.type = src; } // Put explicitly provided properties onto the event object if ( props ) { jQuery.extend( this, props ); } // Create a timestamp if incoming event doesn't have one this.timeStamp = src && src.timeStamp || jQuery.now(); // Mark it as fixed this[ jQuery.expando ] = true; }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html jQuery.Event.prototype = { constructor: jQuery.Event, isDefaultPrevented: returnFalse, isPropagationStopped: returnFalse, isImmediatePropagationStopped: returnFalse, preventDefault: function() { var e = this.originalEvent; this.isDefaultPrevented = returnTrue; if ( !e ) { return; } // If preventDefault exists, run it on the original event if ( e.preventDefault ) { e.preventDefault(); // Support: IE // Otherwise set the returnValue property of the original event to false } else { e.returnValue = false; } }, stopPropagation: function() { var e = this.originalEvent; this.isPropagationStopped = returnTrue; if ( !e || this.isSimulated ) { return; } // If stopPropagation exists, run it on the original event if ( e.stopPropagation ) { e.stopPropagation(); } // Support: IE // Set the cancelBubble property of the original event to true e.cancelBubble = true; }, stopImmediatePropagation: function() { var e = this.originalEvent; this.isImmediatePropagationStopped = returnTrue; if ( e && e.stopImmediatePropagation ) { e.stopImmediatePropagation(); } this.stopPropagation(); } }; // Create mouseenter/leave events using mouseover/out and event-time checks // so that event delegation works in jQuery. // Do the same for pointerenter/pointerleave and pointerover/pointerout // // Support: Safari 7 only // Safari sends mouseenter too often; see: // https://code.google.com/p/chromium/issues/detail?id=470258 // for the description of the bug (it existed in older Chrome versions as well). jQuery.each( { mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", pointerleave: "pointerout" }, function( orig, fix ) { jQuery.event.special[ orig ] = { delegateType: fix, bindType: fix, handle: function( event ) { var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj; // For mouseenter/leave call the handler if related is outside the target. // NB: No relatedTarget if the mouse left/entered the browser window if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { event.type = handleObj.origType; ret = handleObj.handler.apply( this, arguments ); event.type = fix; } return ret; } }; } ); // IE submit delegation if ( !support.submit ) { jQuery.event.special.submit = { setup: function() { // Only need this for delegated form submit events if ( jQuery.nodeName( this, "form" ) ) { return false; } // Lazy-add a submit handler when a descendant form may potentially be submitted jQuery.event.add( this, "click._submit keypress._submit", function( e ) { // Node name check avoids a VML-related crash in IE (#9807) var elem = e.target, form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? // Support: IE <=8 // We use jQuery.prop instead of elem.form // to allow fixing the IE8 delegated submit issue (gh-2332) // by 3rd party polyfills/workarounds. jQuery.prop( elem, "form" ) : undefined; if ( form && !jQuery._data( form, "submit" ) ) { jQuery.event.add( form, "submit._submit", function( event ) { event._submitBubble = true; } ); jQuery._data( form, "submit", true ); } } ); // return undefined since we don't need an event listener }, postDispatch: function( event ) { // If form was submitted by the user, bubble the event up the tree if ( event._submitBubble ) { delete event._submitBubble; if ( this.parentNode && !event.isTrigger ) { jQuery.event.simulate( "submit", this.parentNode, event ); } } }, teardown: function() { // Only need this for delegated form submit events if ( jQuery.nodeName( this, "form" ) ) { return false; } // Remove delegated handlers; cleanData eventually reaps submit handlers attached above jQuery.event.remove( this, "._submit" ); } }; } // IE change delegation and checkbox/radio fix if ( !support.change ) { jQuery.event.special.change = { setup: function() { if ( rformElems.test( this.nodeName ) ) { // IE doesn't fire change on a check/radio until blur; trigger it on click // after a propertychange. Eat the blur-change in special.change.handle. // This still fires onchange a second time for check/radio after blur. if ( this.type === "checkbox" || this.type === "radio" ) { jQuery.event.add( this, "propertychange._change", function( event ) { if ( event.originalEvent.propertyName === "checked" ) { this._justChanged = true; } } ); jQuery.event.add( this, "click._change", function( event ) { if ( this._justChanged && !event.isTrigger ) { this._justChanged = false; } // Allow triggered, simulated change events (#11500) jQuery.event.simulate( "change", this, event ); } ); } return false; } // Delegated event; lazy-add a change handler on descendant inputs jQuery.event.add( this, "beforeactivate._change", function( e ) { var elem = e.target; if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "change" ) ) { jQuery.event.add( elem, "change._change", function( event ) { if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { jQuery.event.simulate( "change", this.parentNode, event ); } } ); jQuery._data( elem, "change", true ); } } ); }, handle: function( event ) { var elem = event.target; // Swallow native change events from checkbox/radio, we already triggered them above if ( this !== elem || event.isSimulated || event.isTrigger || ( elem.type !== "radio" && elem.type !== "checkbox" ) ) { return event.handleObj.handler.apply( this, arguments ); } }, teardown: function() { jQuery.event.remove( this, "._change" ); return !rformElems.test( this.nodeName ); } }; } // Support: Firefox // Firefox doesn't have focus(in | out) events // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 // // Support: Chrome, Safari // focus(in | out) events fire after focus & blur events, // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order // Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857 if ( !support.focusin ) { jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { // Attach a single capturing handler on the document while someone wants focusin/focusout var handler = function( event ) { jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); }; jQuery.event.special[ fix ] = { setup: function() { var doc = this.ownerDocument || this, attaches = jQuery._data( doc, fix ); if ( !attaches ) { doc.addEventListener( orig, handler, true ); } jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); }, teardown: function() { var doc = this.ownerDocument || this, attaches = jQuery._data( doc, fix ) - 1; if ( !attaches ) { doc.removeEventListener( orig, handler, true ); jQuery._removeData( doc, fix ); } else { jQuery._data( doc, fix, attaches ); } } }; } ); } jQuery.fn.extend( { on: function( types, selector, data, fn ) { return on( this, types, selector, data, fn ); }, one: function( types, selector, data, fn ) { return on( this, types, selector, data, fn, 1 ); }, off: function( types, selector, fn ) { var handleObj, type; if ( types && types.preventDefault && types.handleObj ) { // ( event ) dispatched jQuery.Event handleObj = types.handleObj; jQuery( types.delegateTarget ).off( handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler ); return this; } if ( typeof types === "object" ) { // ( types-object [, selector] ) for ( type in types ) { this.off( type, selector, types[ type ] ); } return this; } if ( selector === false || typeof selector === "function" ) { // ( types [, fn] ) fn = selector; selector = undefined; } if ( fn === false ) { fn = returnFalse; } return this.each( function() { jQuery.event.remove( this, types, fn, selector ); } ); }, trigger: function( type, data ) { return this.each( function() { jQuery.event.trigger( type, data, this ); } ); }, triggerHandler: function( type, data ) { var elem = this[ 0 ]; if ( elem ) { return jQuery.event.trigger( type, data, elem, true ); } } } ); var rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, rnoshimcache = new RegExp( "<(?:" + nodeNames + ")[\\s/>]", "i" ), rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, // Support: IE 10-11, Edge 10240+ // In IE/Edge using regex groups here causes severe slowdowns. // See https://connect.microsoft.com/IE/feedback/details/1736512/ rnoInnerhtml = /\s*$/g, safeFragment = createSafeFragment( document ), fragmentDiv = safeFragment.appendChild( document.createElement( "div" ) ); // Support: IE<8 // Manipulating tables requires a tbody function manipulationTarget( elem, content ) { return jQuery.nodeName( elem, "table" ) && jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? elem.getElementsByTagName( "tbody" )[ 0 ] || elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : elem; } // Replace/restore the type attribute of script elements for safe DOM manipulation function disableScript( elem ) { elem.type = ( jQuery.find.attr( elem, "type" ) !== null ) + "/" + elem.type; return elem; } function restoreScript( elem ) { var match = rscriptTypeMasked.exec( elem.type ); if ( match ) { elem.type = match[ 1 ]; } else { elem.removeAttribute( "type" ); } return elem; } function cloneCopyEvent( src, dest ) { if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { return; } var type, i, l, oldData = jQuery._data( src ), curData = jQuery._data( dest, oldData ), events = oldData.events; if ( events ) { delete curData.handle; curData.events = {}; for ( type in events ) { for ( i = 0, l = events[ type ].length; i < l; i++ ) { jQuery.event.add( dest, type, events[ type ][ i ] ); } } } // make the cloned public data object a copy from the original if ( curData.data ) { curData.data = jQuery.extend( {}, curData.data ); } } function fixCloneNodeIssues( src, dest ) { var nodeName, e, data; // We do not need to do anything for non-Elements if ( dest.nodeType !== 1 ) { return; } nodeName = dest.nodeName.toLowerCase(); // IE6-8 copies events bound via attachEvent when using cloneNode. if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { data = jQuery._data( dest ); for ( e in data.events ) { jQuery.removeEvent( dest, e, data.handle ); } // Event data gets referenced instead of copied if the expando gets copied too dest.removeAttribute( jQuery.expando ); } // IE blanks contents when cloning scripts, and tries to evaluate newly-set text if ( nodeName === "script" && dest.text !== src.text ) { disableScript( dest ).text = src.text; restoreScript( dest ); // IE6-10 improperly clones children of object elements using classid. // IE10 throws NoModificationAllowedError if parent is null, #12132. } else if ( nodeName === "object" ) { if ( dest.parentNode ) { dest.outerHTML = src.outerHTML; } // This path appears unavoidable for IE9. When cloning an object // element in IE9, the outerHTML strategy above is not sufficient. // If the src has innerHTML and the destination does not, // copy the src.innerHTML into the dest.innerHTML. #10324 if ( support.html5Clone && ( src.innerHTML && !jQuery.trim( dest.innerHTML ) ) ) { dest.innerHTML = src.innerHTML; } } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { // IE6-8 fails to persist the checked state of a cloned checkbox // or radio button. Worse, IE6-7 fail to give the cloned element // a checked appearance if the defaultChecked value isn't also set dest.defaultChecked = dest.checked = src.checked; // IE6-7 get confused and end up setting the value of a cloned // checkbox/radio button to an empty string instead of "on" if ( dest.value !== src.value ) { dest.value = src.value; } // IE6-8 fails to return the selected option to the default selected // state when cloning options } else if ( nodeName === "option" ) { dest.defaultSelected = dest.selected = src.defaultSelected; // IE6-8 fails to set the defaultValue to the correct value when // cloning other types of input fields } else if ( nodeName === "input" || nodeName === "textarea" ) { dest.defaultValue = src.defaultValue; } } function domManip( collection, args, callback, ignored ) { // Flatten any nested arrays args = concat.apply( [], args ); var first, node, hasScripts, scripts, doc, fragment, i = 0, l = collection.length, iNoClone = l - 1, value = args[ 0 ], isFunction = jQuery.isFunction( value ); // We can't cloneNode fragments that contain checked, in WebKit if ( isFunction || ( l > 1 && typeof value === "string" && !support.checkClone && rchecked.test( value ) ) ) { return collection.each( function( index ) { var self = collection.eq( index ); if ( isFunction ) { args[ 0 ] = value.call( this, index, self.html() ); } domManip( self, args, callback, ignored ); } ); } if ( l ) { fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); first = fragment.firstChild; if ( fragment.childNodes.length === 1 ) { fragment = first; } // Require either new content or an interest in ignored elements to invoke the callback if ( first || ignored ) { scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); hasScripts = scripts.length; // Use the original fragment for the last item // instead of the first because it can end up // being emptied incorrectly in certain situations (#8070). for ( ; i < l; i++ ) { node = fragment; if ( i !== iNoClone ) { node = jQuery.clone( node, true, true ); // Keep references to cloned scripts for later restoration if ( hasScripts ) { // Support: Android<4.1, PhantomJS<2 // push.apply(_, arraylike) throws on ancient WebKit jQuery.merge( scripts, getAll( node, "script" ) ); } } callback.call( collection[ i ], node, i ); } if ( hasScripts ) { doc = scripts[ scripts.length - 1 ].ownerDocument; // Reenable scripts jQuery.map( scripts, restoreScript ); // Evaluate executable scripts on first document insertion for ( i = 0; i < hasScripts; i++ ) { node = scripts[ i ]; if ( rscriptType.test( node.type || "" ) && !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { if ( node.src ) { // Optional AJAX dependency, but won't run scripts if not present if ( jQuery._evalUrl ) { jQuery._evalUrl( node.src ); } } else { jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ) .replace( rcleanScript, "" ) ); } } } } // Fix #11809: Avoid leaking memory fragment = first = null; } } return collection; } function remove( elem, selector, keepData ) { var node, elems = selector ? jQuery.filter( selector, elem ) : elem, i = 0; for ( ; ( node = elems[ i ] ) != null; i++ ) { if ( !keepData && node.nodeType === 1 ) { jQuery.cleanData( getAll( node ) ); } if ( node.parentNode ) { if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { setGlobalEval( getAll( node, "script" ) ); } node.parentNode.removeChild( node ); } } return elem; } jQuery.extend( { htmlPrefilter: function( html ) { return html.replace( rxhtmlTag, "<$1>" ); }, clone: function( elem, dataAndEvents, deepDataAndEvents ) { var destElements, node, clone, i, srcElements, inPage = jQuery.contains( elem.ownerDocument, elem ); if ( support.html5Clone || jQuery.isXMLDoc( elem ) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { clone = elem.cloneNode( true ); // IE<=8 does not properly clone detached, unknown element nodes } else { fragmentDiv.innerHTML = elem.outerHTML; fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); } if ( ( !support.noCloneEvent || !support.noCloneChecked ) && ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 destElements = getAll( clone ); srcElements = getAll( elem ); // Fix all IE cloning issues for ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) { // Ensure that the destination node is not null; Fixes #9587 if ( destElements[ i ] ) { fixCloneNodeIssues( node, destElements[ i ] ); } } } // Copy the events from the original to the clone if ( dataAndEvents ) { if ( deepDataAndEvents ) { srcElements = srcElements || getAll( elem ); destElements = destElements || getAll( clone ); for ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) { cloneCopyEvent( node, destElements[ i ] ); } } else { cloneCopyEvent( elem, clone ); } } // Preserve script evaluation history destElements = getAll( clone, "script" ); if ( destElements.length > 0 ) { setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); } destElements = srcElements = node = null; // Return the cloned set return clone; }, cleanData: function( elems, /* internal */ forceAcceptData ) { var elem, type, id, data, i = 0, internalKey = jQuery.expando, cache = jQuery.cache, attributes = support.attributes, special = jQuery.event.special; for ( ; ( elem = elems[ i ] ) != null; i++ ) { if ( forceAcceptData || acceptData( elem ) ) { id = elem[ internalKey ]; data = id && cache[ id ]; if ( data ) { if ( data.events ) { for ( type in data.events ) { if ( special[ type ] ) { jQuery.event.remove( elem, type ); // This is a shortcut to avoid jQuery.event.remove's overhead } else { jQuery.removeEvent( elem, type, data.handle ); } } } // Remove cache only if it was not already removed by jQuery.event.remove if ( cache[ id ] ) { delete cache[ id ]; // Support: IE<9 // IE does not allow us to delete expando properties from nodes // IE creates expando attributes along with the property // IE does not have a removeAttribute function on Document nodes if ( !attributes && typeof elem.removeAttribute !== "undefined" ) { elem.removeAttribute( internalKey ); // Webkit & Blink performance suffers when deleting properties // from DOM nodes, so set to undefined instead // https://code.google.com/p/chromium/issues/detail?id=378607 } else { elem[ internalKey ] = undefined; } deletedIds.push( id ); } } } } } } ); jQuery.fn.extend( { // Keep domManip exposed until 3.0 (gh-2225) domManip: domManip, detach: function( selector ) { return remove( this, selector, true ); }, remove: function( selector ) { return remove( this, selector ); }, text: function( value ) { return access( this, function( value ) { return value === undefined ? jQuery.text( this ) : this.empty().append( ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value ) ); }, null, value, arguments.length ); }, append: function() { return domManip( this, arguments, function( elem ) { if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { var target = manipulationTarget( this, elem ); target.appendChild( elem ); } } ); }, prepend: function() { return domManip( this, arguments, function( elem ) { if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { var target = manipulationTarget( this, elem ); target.insertBefore( elem, target.firstChild ); } } ); }, before: function() { return domManip( this, arguments, function( elem ) { if ( this.parentNode ) { this.parentNode.insertBefore( elem, this ); } } ); }, after: function() { return domManip( this, arguments, function( elem ) { if ( this.parentNode ) { this.parentNode.insertBefore( elem, this.nextSibling ); } } ); }, empty: function() { var elem, i = 0; for ( ; ( elem = this[ i ] ) != null; i++ ) { // Remove element nodes and prevent memory leaks if ( elem.nodeType === 1 ) { jQuery.cleanData( getAll( elem, false ) ); } // Remove any remaining nodes while ( elem.firstChild ) { elem.removeChild( elem.firstChild ); } // If this is a select, ensure that it displays empty (#12336) // Support: IE<9 if ( elem.options && jQuery.nodeName( elem, "select" ) ) { elem.options.length = 0; } } return this; }, clone: function( dataAndEvents, deepDataAndEvents ) { dataAndEvents = dataAndEvents == null ? false : dataAndEvents; deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; return this.map( function() { return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); } ); }, html: function( value ) { return access( this, function( value ) { var elem = this[ 0 ] || {}, i = 0, l = this.length; if ( value === undefined ) { return elem.nodeType === 1 ? elem.innerHTML.replace( rinlinejQuery, "" ) : undefined; } // See if we can take a shortcut and just use innerHTML if ( typeof value === "string" && !rnoInnerhtml.test( value ) && ( support.htmlSerialize || !rnoshimcache.test( value ) ) && ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { value = jQuery.htmlPrefilter( value ); try { for ( ; i < l; i++ ) { // Remove element nodes and prevent memory leaks elem = this[ i ] || {}; if ( elem.nodeType === 1 ) { jQuery.cleanData( getAll( elem, false ) ); elem.innerHTML = value; } } elem = 0; // If using innerHTML throws an exception, use the fallback method } catch ( e ) {} } if ( elem ) { this.empty().append( value ); } }, null, value, arguments.length ); }, replaceWith: function() { var ignored = []; // Make the changes, replacing each non-ignored context element with the new content return domManip( this, arguments, function( elem ) { var parent = this.parentNode; if ( jQuery.inArray( this, ignored ) < 0 ) { jQuery.cleanData( getAll( this ) ); if ( parent ) { parent.replaceChild( elem, this ); } } // Force callback invocation }, ignored ); } } ); jQuery.each( { appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function( name, original ) { jQuery.fn[ name ] = function( selector ) { var elems, i = 0, ret = [], insert = jQuery( selector ), last = insert.length - 1; for ( ; i <= last; i++ ) { elems = i === last ? this : this.clone( true ); jQuery( insert[ i ] )[ original ]( elems ); // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() push.apply( ret, elems.get() ); } return this.pushStack( ret ); }; } ); var iframe, elemdisplay = { // Support: Firefox // We have to pre-define these values for FF (#10227) HTML: "block", BODY: "block" }; /** * Retrieve the actual display of a element * @param {String} name nodeName of the element * @param {Object} doc Document object */ // Called only from within defaultDisplay function actualDisplay( name, doc ) { var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), display = jQuery.css( elem[ 0 ], "display" ); // We don't have any data stored on the element, // so use "detach" method as fast way to get rid of the element elem.detach(); return display; } /** * Try to determine the default display value of an element * @param {String} nodeName */ function defaultDisplay( nodeName ) { var doc = document, display = elemdisplay[ nodeName ]; if ( !display ) { display = actualDisplay( nodeName, doc ); // If the simple way fails, read from inside an iframe if ( display === "none" || !display ) { // Use the already-created iframe if possible iframe = ( iframe || jQuery( "' ); iframe.setStyles( { width: '100%', height: '100%' } ); iframe.addClass( 'cke_wysiwyg_frame' ).addClass( 'cke_reset' ); var contentSpace = editor.ui.space( 'contents' ); contentSpace.append( iframe ); // Asynchronous iframe loading is only required in IE>8 and Gecko (other reasons probably). // Do not use it on WebKit as it'll break the browser-back navigation. var useOnloadEvent = ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) || CKEDITOR.env.gecko; if ( useOnloadEvent ) iframe.on( 'load', onLoad ); var frameLabel = editor.title, helpLabel = editor.fire( 'ariaEditorHelpLabel', {} ).label; if ( frameLabel ) { if ( CKEDITOR.env.ie && helpLabel ) frameLabel += ', ' + helpLabel; iframe.setAttribute( 'title', frameLabel ); } if ( helpLabel ) { var labelId = CKEDITOR.tools.getNextId(), desc = CKEDITOR.dom.element.createFromHtml( '' + helpLabel + '' ); contentSpace.append( desc, 1 ); iframe.setAttribute( 'aria-describedby', labelId ); } // Remove the ARIA description. editor.on( 'beforeModeUnload', function( evt ) { evt.removeListener(); if ( desc ) desc.remove(); } ); iframe.setAttributes( { tabIndex: editor.tabIndex, allowTransparency: 'true' } ); // Execute onLoad manually for all non IE||Gecko browsers. !useOnloadEvent && onLoad(); editor.fire( 'ariaWidget', iframe ); function onLoad( evt ) { evt && evt.removeListener(); editor.editable( new framedWysiwyg( editor, iframe.$.contentWindow.document.body ) ); editor.setData( editor.getData( 1 ), callback ); } } ); } } ); /** * Adds the path to a stylesheet file to the exisiting {@link CKEDITOR.config#contentsCss} value. * * **Note:** This method is available only with the `wysiwygarea` plugin and only affects * classic editors based on it (so it does not affect inline editors). * * editor.addContentsCss( 'assets/contents.css' ); * * @since 4.4 * @param {String} cssPath The path to the stylesheet file which should be added. * @member CKEDITOR.editor */ CKEDITOR.editor.prototype.addContentsCss = function( cssPath ) { var cfg = this.config, curContentsCss = cfg.contentsCss; // Convert current value into array. if ( !CKEDITOR.tools.isArray( curContentsCss ) ) cfg.contentsCss = curContentsCss ? [ curContentsCss ] : []; cfg.contentsCss.push( cssPath ); }; function onDomReady( win ) { var editor = this.editor, doc = win.document, body = doc.body; // Remove helper scripts from the DOM. var script = doc.getElementById( 'cke_actscrpt' ); script && script.parentNode.removeChild( script ); script = doc.getElementById( 'cke_shimscrpt' ); script && script.parentNode.removeChild( script ); script = doc.getElementById( 'cke_basetagscrpt' ); script && script.parentNode.removeChild( script ); body.contentEditable = true; if ( CKEDITOR.env.ie ) { // Don't display the focus border. body.hideFocus = true; // Disable and re-enable the body to avoid IE from // taking the editing focus at startup. (#141 / #523) body.disabled = true; body.removeAttribute( 'disabled' ); } delete this._.isLoadingData; // Play the magic to alter element reference to the reloaded one. this.$ = body; doc = new CKEDITOR.dom.document( doc ); this.setup(); this.fixInitialSelection(); if ( CKEDITOR.env.ie ) { doc.getDocumentElement().addClass( doc.$.compatMode ); // Prevent IE from leaving new paragraph after deleting all contents in body. (#6966) editor.config.enterMode != CKEDITOR.ENTER_P && this.attachListener( doc, 'selectionchange', function() { var body = doc.getBody(), sel = editor.getSelection(), range = sel && sel.getRanges()[ 0 ]; if ( range && body.getHtml().match( /^

(?: |
)<\/p>$/i ) && range.startContainer.equals( body ) ) { // Avoid the ambiguity from a real user cursor position. setTimeout( function() { range = editor.getSelection().getRanges()[ 0 ]; if ( !range.startContainer.equals( 'body' ) ) { body.getFirst().remove( 1 ); range.moveToElementEditEnd( body ); range.select(); } }, 0 ); } } ); } // Fix problem with cursor not appearing in Webkit and IE11+ when clicking below the body (#10945, #10906). // Fix for older IEs (8-10 and QM) is placed inside selection.js. if ( CKEDITOR.env.webkit || ( CKEDITOR.env.ie && CKEDITOR.env.version > 10 ) ) { doc.getDocumentElement().on( 'mousedown', function( evt ) { if ( evt.data.getTarget().is( 'html' ) ) { // IE needs this timeout. Webkit does not, but it does not cause problems too. setTimeout( function() { editor.editable().focus(); } ); } } ); } // Config props: disableObjectResizing and disableNativeTableHandles handler. objectResizeDisabler( editor ); // Enable dragging of position:absolute elements in IE. try { editor.document.$.execCommand( '2D-position', false, true ); } catch ( e ) {} if ( CKEDITOR.env.gecko || CKEDITOR.env.ie && editor.document.$.compatMode == 'CSS1Compat' ) { this.attachListener( this, 'keydown', function( evt ) { var keyCode = evt.data.getKeystroke(); // PageUp OR PageDown if ( keyCode == 33 || keyCode == 34 ) { // PageUp/PageDown scrolling is broken in document // with standard doctype, manually fix it. (#4736) if ( CKEDITOR.env.ie ) { setTimeout( function() { editor.getSelection().scrollIntoView(); }, 0 ); } // Page up/down cause editor selection to leak // outside of editable thus we try to intercept // the behavior, while it affects only happen // when editor contents are not overflowed. (#7955) else if ( editor.window.$.innerHeight > this.$.offsetHeight ) { var range = editor.createRange(); range[ keyCode == 33 ? 'moveToElementEditStart' : 'moveToElementEditEnd' ]( this ); range.select(); evt.data.preventDefault(); } } } ); } if ( CKEDITOR.env.ie ) { // [IE] Iframe will still keep the selection when blurred, if // focus is moved onto a non-editing host, e.g. link or button, but // it becomes a problem for the object type selection, since the resizer // handler attached on it will mark other part of the UI, especially // for the dialog. (#8157) // [IE<8 & Opera] Even worse For old IEs, the cursor will not vanish even if // the selection has been moved to another text input in some cases. (#4716) // // Now the range restore is disabled, so we simply force IE to clean // up the selection before blur. this.attachListener( doc, 'blur', function() { // Error proof when the editor is not visible. (#6375) try { doc.$.selection.empty(); } catch ( er ) {} } ); } if ( CKEDITOR.env.iOS ) { // [iOS] If touch is bound to any parent of the iframe blur happens on any touch // event and body becomes the focused element (#10714). this.attachListener( doc, 'touchend', function() { win.focus(); } ); } var title = editor.document.getElementsByTag( 'title' ).getItem( 0 ); // document.title is malfunctioning on Chrome, so get value from the element (#12402). title.data( 'cke-title', title.getText() ); // [IE] JAWS will not recognize the aria label we used on the iframe // unless the frame window title string is used as the voice label, // backup the original one and restore it on output. if ( CKEDITOR.env.ie ) editor.document.$.title = this._.docTitle; CKEDITOR.tools.setTimeout( function() { // Editable is ready after first setData. if ( this.status == 'unloaded' ) this.status = 'ready'; editor.fire( 'contentDom' ); if ( this._.isPendingFocus ) { editor.focus(); this._.isPendingFocus = false; } setTimeout( function() { editor.fire( 'dataReady' ); }, 0 ); }, 0, this ); } var framedWysiwyg = CKEDITOR.tools.createClass( { $: function() { this.base.apply( this, arguments ); this._.frameLoadedHandler = CKEDITOR.tools.addFunction( function( win ) { // Avoid opening design mode in a frame window thread, // which will cause host page scrolling.(#4397) CKEDITOR.tools.setTimeout( onDomReady, 0, this, win ); }, this ); this._.docTitle = this.getWindow().getFrame().getAttribute( 'title' ); }, base: CKEDITOR.editable, proto: { setData: function( data, isSnapshot ) { var editor = this.editor; if ( isSnapshot ) { this.setHtml( data ); this.fixInitialSelection(); // Fire dataReady for the consistency with inline editors // and because it makes sense. (#10370) editor.fire( 'dataReady' ); } else { this._.isLoadingData = true; editor._.dataStore = { id: 1 }; var config = editor.config, fullPage = config.fullPage, docType = config.docType; // Build the additional stuff to be included into . var headExtra = CKEDITOR.tools.buildStyleHtml( iframeCssFixes() ).replace( /' } ] } ], buttons: [ CKEDITOR.dialog.cancelButton ] }; } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/0000755000201500020150000000000014517055557024254 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/zh.js0000644000201500020150000001111414517055557025231 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'zh', { title: '輔助工具指南', contents: '說明內容。若要關閉此對話框請按「ESC」。', legend: [ { name: '一般', items: [ { name: '編輯器工具列', legend: '請按 ${toolbarFocus} 以導覽到工具列。利用 TAB 或 SHIFT+TAB 以便移動到下一個及前一個工具列群組。利用右方向鍵或左方向鍵以便移動到下一個及上一個工具列按鈕。按下空白鍵或 ENTER 鍵啟用工具列按鈕。' }, { name: '編輯器對話方塊', legend: '在對話框中,按下 TAB 鍵以導覽到下一個對話框元素,按下 SHIFT+TAB 以移動到上一個對話框元素,按下 ENTER 以遞交對話框,按下 ESC 以取消對話框。當對話框有多個分頁時,可以使用 ALT+F10 或是在對話框分頁順序中的一部份按下 TAB 以使用分頁列表。焦點在分頁列表上時,分別使用右方向鍵及左方向鍵移動到下一個及上一個分頁。' }, { name: '編輯器內容功能表', legend: '請按下「${contextMenu}」或是「應用程式鍵」以開啟內容選單。以「TAB」或是「↓」鍵移動到下一個選單選項。以「SHIFT + TAB」或是「↑」鍵移動到上一個選單選項。按下「空白鍵」或是「ENTER」鍵以選取選單選項。以「空白鍵」或「ENTER」或「→」開啟目前選項之子選單。以「ESC」或「←」回到父選單。以「ESC」鍵關閉內容選單」。' }, { name: '編輯器清單方塊', legend: '在清單方塊中,使用 TAB 或下方向鍵移動到下一個列表項目。使用 SHIFT+TAB 或上方向鍵移動到上一個列表項目。按下空白鍵或 ENTER 以選取列表選項。按下 ESC 以關閉清單方塊。' }, { name: '編輯器元件路徑工具列', legend: '請按 ${elementsPathFocus} 以瀏覽元素路徑列。利用 TAB 或右方向鍵以便移動到下一個元素按鈕。利用 SHIFT 或左方向鍵以便移動到上一個按鈕。按下空白鍵或 ENTER 鍵來選取在編輯器中的元素。' } ] }, { name: '命令', items: [ { name: '復原命令', legend: '請按下「${undo}」' }, { name: '重複命令', legend: '請按下「 ${redo}」' }, { name: '粗體命令', legend: '請按下「${bold}」' }, { name: '斜體', legend: '請按下「${italic}」' }, { name: '底線命令', legend: '請按下「${underline}」' }, { name: '連結', legend: '請按下「${link}」' }, { name: '隱藏工具列', legend: '請按下「${toolbarCollapse}」' }, { name: '存取前一個焦點空間命令', legend: '請按下 ${accessPreviousSpace} 以存取最近但無法靠近之插字符號前的焦點空間。舉例:二個相鄰的 HR 元素。\r\n重複按鍵以存取較遠的焦點空間。' }, { name: '存取下一個焦點空間命令', legend: '請按下 ${accessNextSpace} 以存取最近但無法靠近之插字符號後的焦點空間。舉例:二個相鄰的 HR 元素。\r\n重複按鍵以存取較遠的焦點空間。' }, { name: '協助工具說明', legend: '請按下「${a11yHelp}」' } ] } ], backspace: '退格鍵', tab: 'Tab', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Caps Lock', escape: 'Esc', pageUp: 'Page Up', pageDown: 'Page Down', end: 'End', home: 'Home', leftArrow: '向左箭號', upArrow: '向上鍵號', rightArrow: '向右鍵號', downArrow: '向下鍵號', insert: '插入', 'delete': '刪除', leftWindowKey: '左方 Windows 鍵', rightWindowKey: '右方 Windows 鍵', selectKey: '選擇鍵', numpad0: 'Numpad 0', numpad1: 'Numpad 1', numpad2: 'Numpad 2', numpad3: 'Numpad 3', numpad4: 'Numpad 4', numpad5: 'Numpad 5', numpad6: 'Numpad 6', numpad7: 'Numpad 7', numpad8: 'Numpad 8', numpad9: 'Numpad 9', multiply: '乘號', add: '新增', subtract: '減號', decimalPoint: '小數點', divide: '除號', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: '分號', equalSign: '等號', comma: '逗號', dash: '虛線', period: '句點', forwardSlash: '斜線', graveAccent: '抑音符號', openBracket: '左方括號', backSlash: '反斜線', closeBracket: '右方括號', singleQuote: '單引號' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/nb.js0000644000201500020150000001152114517055557025211 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'nb', { title: 'Instruksjoner for tilgjengelighet', contents: 'Innhold for hjelp. Trykk ESC for å lukke denne dialogen.', legend: [ { name: 'Generelt', items: [ { name: 'Verktøylinje for editor', legend: 'Trykk ${toolbarFocus} for å navigere til verktøylinjen. Flytt til neste og forrige verktøylinjegruppe med TAB og SHIFT+TAB. Flytt til neste og forrige verktøylinjeknapp med HØYRE PILTAST og VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å aktivere verktøylinjeknappen.' }, { name: 'Dialog for editor', legend: 'Mens du er i en dialog, trykk TAB for å navigere til neste dialogelement, trykk SHIFT+TAB for å flytte til forrige dialogelement, trykk ENTER for å akseptere dialogen, trykk ESC for å avbryte dialogen. Når en dialog har flere faner, kan fanelisten nås med enten ALT+F10 eller med TAB. Når fanelisten er fokusert, går man til neste og forrige fane med henholdsvis HØYRE og VENSTRE PILTAST.' }, { name: 'Kontekstmeny for editor', legend: 'Trykk ${contextMenu} eller MENYKNAPP for å åpne kontekstmeny. Gå til neste alternativ i menyen med TAB eller PILTAST NED. Gå til forrige alternativ med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge menyalternativet. Åpne undermenyen på valgt alternativ med MELLOMROM eller ENTER eller HØYRE PILTAST. Gå tilbake til overordnet menyelement med ESC eller VENSTRE PILTAST. Lukk kontekstmenyen med ESC.' }, { name: 'Listeboks for editor', legend: 'I en listeboks, gå til neste alternativ i listen med TAB eller PILTAST NED. Gå til forrige alternativ i listen med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge alternativet i listen. Trykk ESC for å lukke listeboksen.' }, { name: 'Verktøylinje for elementsti', legend: 'Trykk ${elementsPathFocus} for å navigere til verktøylinjen som viser elementsti. Gå til neste elementknapp med TAB eller HØYRE PILTAST. Gå til forrige elementknapp med SHIFT+TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge elementet i editoren.' } ] }, { name: 'Hurtigtaster', items: [ { name: 'Angre', legend: 'Trykk ${undo}' }, { name: 'Gjør om', legend: 'Trykk ${redo}' }, { name: 'Fet tekst', legend: 'Trykk ${bold}' }, { name: 'Kursiv tekst', legend: 'Trykk ${italic}' }, { name: 'Understreking', legend: 'Trykk ${underline}' }, { name: 'Lenke', legend: 'Trykk ${link}' }, { name: 'Skjul verktøylinje', legend: 'Trykk ${toolbarCollapse}' }, { name: 'Gå til forrige fokusområde', legend: 'Trykk ${accessPreviousSpace} for å komme til nærmeste fokusområde før skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet.' }, { name: 'Gå til neste fokusområde', legend: 'Trykk ${accessNextSpace} for å komme til nærmeste fokusområde etter skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet.' }, { name: 'Hjelp for tilgjengelighet', legend: 'Trykk ${a11yHelp}' } ] } ], backspace: 'Backspace', tab: 'Tabulator', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Caps Lock', escape: 'Escape', pageUp: 'Page Up', pageDown: 'Page Down', end: 'End', home: 'Home', leftArrow: 'Venstre piltast', upArrow: 'Opp-piltast', rightArrow: 'Høyre piltast', downArrow: 'Ned-piltast', insert: 'Insert', 'delete': 'Delete', leftWindowKey: 'Venstre Windows-tast', rightWindowKey: 'Høyre Windows-tast', selectKey: 'Velg nøkkel', numpad0: 'Numerisk tastatur 0', numpad1: 'Numerisk tastatur 1', numpad2: 'Numerisk tastatur 2', numpad3: 'Numerisk tastatur 3', numpad4: 'Numerisk tastatur 4', numpad5: 'Numerisk tastatur 5', numpad6: 'Numerisk tastatur 6', numpad7: 'Numerisk tastatur 7', numpad8: 'Numerisk tastatur 8', numpad9: 'Numerisk tastatur 9', multiply: 'Multipliser', add: 'Legg til', subtract: 'Trekk fra', decimalPoint: 'Desimaltegn', divide: 'Divider', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Semikolon', equalSign: 'Likhetstegn', comma: 'Komma', dash: 'Bindestrek', period: 'Punktum', forwardSlash: 'Forover skråstrek', graveAccent: 'Grav aksent', openBracket: 'Åpne parentes', backSlash: 'Bakover skråstrek', closeBracket: 'Lukk parentes', singleQuote: 'Enkelt sitattegn' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/eo.js0000644000201500020150000001216414517055557025221 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'eo', { title: 'Uzindikoj pri atingeblo', contents: 'Helpilenhavo. Por fermi tiun dialogon, premu la ESKAPAN klavon.', legend: [ { name: 'Ĝeneralaĵoj', items: [ { name: 'Ilbreto de la redaktilo', legend: 'Premu ${toolbarFocus} por atingi la ilbreton. Moviĝu al la sekva aŭ antaŭa grupoj de la ilbreto per la klavoj TABA kaj MAJUSKLIGA+TABA. Moviĝu al la sekva aŭ antaŭa butonoj de la ilbreto per la klavoj SAGO DEKSTREN kaj SAGO MALDEKSTREN. Premu la SPACETklavon aŭ la ENENklavon por aktivigi la ilbretbutonon.' }, { name: 'Redaktildialogo', legend: 'Inside 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.' // MISSING }, { name: 'Kunteksta menuo de la redaktilo', legend: 'Premu ${contextMenu} aŭ entajpu la KLAVKOMBINAĴON por malfermi la kuntekstan menuon. Poste moviĝu al la sekva opcio de la menuo per la klavoj TABA aŭ SAGO SUBEN. Moviĝu al la antaŭa opcio per la klavoj MAJUSKLGA + TABA aŭ SAGO SUPREN. Premu la SPACETklavon aŭ ENENklavon por selekti la menuopcion. Malfermu la submenuon de la kuranta opcio per la SPACETklavo aŭ la ENENklavo aŭ la SAGO DEKSTREN. Revenu al la elemento de la patra menuo per la klavoj ESKAPA aŭ SAGO MALDEKSTREN. Fermu la kuntekstan menuon per la ESKAPA klavo.' }, { name: 'Fallisto de la redaktilo', legend: 'En fallisto, moviĝu al la sekva listelemento per la klavoj TABA aŭ SAGO SUBEN. Moviĝu al la antaŭa listelemento per la klavoj MAJUSKLIGA+TABA aŭ SAGO SUPREN. Premu la SPACETklavon aŭ ENENklavon por selekti la opcion en la listo. Premu la ESKAPAN klavon por fermi la falmenuon.' }, { name: 'Breto indikanta la vojon al la redaktilelementoj', legend: 'Premu ${elementsPathFocus} por navigi al la breto indikanta la vojon al la redaktilelementoj. Moviĝu al la butono de la sekva elemento per la klavoj TABA aŭ SAGO DEKSTREN. Moviĝu al la butono de la antaŭa elemento per la klavoj MAJUSKLIGA+TABA aŭ SAGO MALDEKSTREN. Premu la SPACETklavon aŭ ENENklavon por selekti la elementon en la redaktilo.' } ] }, { name: 'Komandoj', items: [ { name: 'Komando malfari', legend: 'Premu ${undo}' }, { name: 'Komando refari', legend: 'Premu ${redo}' }, { name: 'Komando grasa', legend: 'Premu ${bold}' }, { name: 'Komando kursiva', legend: 'Premu ${italic}' }, { name: 'Komando substreki', legend: 'Premu ${underline}' }, { name: 'Komando ligilo', legend: 'Premu ${link}' }, { name: 'Komando faldi la ilbreton', legend: 'Premu ${toolbarCollapse}' }, { name: 'Komando por atingi la antaŭan fokusan spacon', legend: 'Press ${accessPreviousSpace} por atingi la plej proksiman neatingeblan fokusan spacon antaŭ la kursoro, ekzemple : du kuntuŝiĝajn HR elementojn. Ripetu la klavkombinaĵon por atingi malproksimajn fokusajn spacojn.' }, { name: 'Komando por atingi la sekvan fokusan spacon', legend: 'Press ${accessNextSpace} por atingi la plej proksiman neatingeblan fokusan spacon post la kursoro, ekzemple : du kuntuŝiĝajn HR elementojn. Ripetu la klavkombinajôn por atingi malproksimajn fokusajn spacojn' }, { name: 'Helpilo pri atingeblo', legend: 'Premu ${a11yHelp}' } ] } ], backspace: 'Retropaŝo', tab: 'Tabo', enter: 'Enigi', shift: 'Registrumo', ctrl: 'Stirklavo', alt: 'Alt-klavo', pause: 'Paŭzo', capslock: 'Majuskla baskulo', escape: 'Eskapa klavo', pageUp: 'Antaŭa Paĝo', pageDown: 'Sekva Paĝo', end: 'Fino', home: 'Hejmo', leftArrow: 'Sago Maldekstren', upArrow: 'Sago Supren', rightArrow: 'Sago Dekstren', downArrow: 'Sago Suben', insert: 'Enmeti', 'delete': 'Forigi', leftWindowKey: 'Maldekstra Windows-klavo', rightWindowKey: 'Dekstra Windows-klavo', selectKey: 'Selektklavo', numpad0: 'Nombra Klavaro 0', numpad1: 'Nombra Klavaro 1', numpad2: 'Nombra Klavaro 2', numpad3: 'Nombra Klavaro 3', numpad4: 'Nombra Klavaro 4', numpad5: 'Nombra Klavaro 5', numpad6: 'Nombra Klavaro 6', numpad7: 'Nombra Klavaro 7', numpad8: 'Nombra Klavaro 8', numpad9: 'Nombra Klavaro 9', multiply: 'Obligi', add: 'Almeti', subtract: 'Subtrahi', decimalPoint: 'Dekuma Punkto', divide: 'Dividi', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Nombra Baskulo', scrollLock: 'Ruluma Baskulo', semiColon: 'Punktokomo', equalSign: 'Egalsigno', comma: 'Komo', dash: 'Haltostreko', period: 'Punkto', forwardSlash: 'Oblikvo', graveAccent: 'Malakuto', openBracket: 'Malferma Krampo', backSlash: 'Retroklino', closeBracket: 'Ferma Krampo', singleQuote: 'Citilo' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/es.js0000644000201500020150000001211614517055557025222 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'es', { title: 'Instrucciones de accesibilidad', contents: 'Ayuda. Para cerrar presione ESC.', legend: [ { name: 'General', items: [ { name: 'Barra de herramientas del editor', legend: 'Presiona ${toolbarFocus} para navegar por la barra de herramientas. Para moverse por los distintos grupos de herramientas usa las teclas TAB y MAY+TAB. Para moverse por las distintas herramientas usa FLECHA DERECHA o FECHA IZQUIERDA. Presiona "espacio" o "intro" para activar la herramienta.' }, { name: 'Editor de diálogo', legend: 'Inside 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.' // MISSING }, { name: 'Editor del menú contextual', legend: 'Presiona ${contextMenu} o TECLA MENÚ para abrir el menú contextual. Entonces muévete a la siguiente opción del menú con TAB o FLECHA ABAJO. Muévete a la opción previa con SHIFT + TAB o FLECHA ARRIBA. Presiona ESPACIO o ENTER para seleccionar la opción del menú. Abre el submenú de la opción actual con ESPACIO o ENTER o FLECHA DERECHA. Regresa al elemento padre del menú con ESC o FLECHA IZQUIERDA. Cierra el menú contextual con ESC.' }, { name: 'Lista del Editor', legend: 'Dentro de una lista, te mueves al siguiente elemento de la lista con TAB o FLECHA ABAJO. Te mueves al elemento previo de la lista con SHIFT+TAB o FLECHA ARRIBA. Presiona ESPACIO o ENTER para elegir la opción de la lista. Presiona ESC para cerrar la lista.' }, { name: 'Barra de Ruta del Elemento en el Editor', legend: 'Presiona ${elementsPathFocus} para navegar a los elementos de la barra de ruta. Te mueves al siguiente elemento botón con TAB o FLECHA DERECHA. Te mueves al botón previo con SHIFT+TAB o FLECHA IZQUIERDA. Presiona ESPACIO o ENTER para seleccionar el elemento en el editor.' } ] }, { name: 'Comandos', items: [ { name: 'Comando deshacer', legend: 'Presiona ${undo}' }, { name: 'Comando rehacer', legend: 'Presiona ${redo}' }, { name: 'Comando negrita', legend: 'Presiona ${bold}' }, { name: 'Comando itálica', legend: 'Presiona ${italic}' }, { name: 'Comando subrayar', legend: 'Presiona ${underline}' }, { name: 'Comando liga', legend: 'Presiona ${liga}' }, { name: 'Comando colapsar barra de herramientas', legend: 'Presiona ${toolbarCollapse}' }, { name: 'Comando accesar el anterior espacio de foco', legend: 'Presiona ${accessPreviousSpace} para accesar el espacio de foco no disponible más cercano anterior al cursor, por ejemplo: dos elementos HR adyacentes. Repite la combinación de teclas para alcanzar espacios de foco distantes.' }, { name: 'Comando accesar el siguiente spacio de foco', legend: 'Presiona ${accessNextSpace} para accesar el espacio de foco no disponible más cercano después del cursor, por ejemplo: dos elementos HR adyacentes. Repite la combinación de teclas para alcanzar espacios de foco distantes.' }, { name: 'Ayuda de Accesibilidad', legend: 'Presiona ${a11yHelp}' } ] } ], backspace: 'Retroceso', tab: 'Tabulador', enter: 'Ingresar', shift: 'Mayús.', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pausa', capslock: 'Bloq. Mayús.', escape: 'Escape', pageUp: 'Regresar Página', pageDown: 'Avanzar Página', end: 'Fin', home: 'Inicio', leftArrow: 'Flecha Izquierda', upArrow: 'Flecha Arriba', rightArrow: 'Flecha Derecha', downArrow: 'Flecha Abajo', insert: 'Insertar', 'delete': 'Suprimir', leftWindowKey: 'Tecla Windows Izquierda', rightWindowKey: 'Tecla Windows Derecha', selectKey: 'Tecla de Selección', numpad0: 'Tecla 0 del teclado numérico', numpad1: 'Tecla 1 del teclado numérico', numpad2: 'Tecla 2 del teclado numérico', numpad3: 'Tecla 3 del teclado numérico', numpad4: 'Tecla 4 del teclado numérico', numpad5: 'Tecla 5 del teclado numérico', numpad6: 'Tecla 6 del teclado numérico', numpad7: 'Tecla 7 del teclado numérico', numpad8: 'Tecla 8 del teclado numérico', numpad9: 'Tecla 9 del teclado numérico', multiply: 'Multiplicar', add: 'Sumar', subtract: 'Restar', decimalPoint: 'Punto Decimal', divide: 'Dividir', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Punto y coma', equalSign: 'Signo de Igual', comma: 'Coma', dash: 'Guión', period: 'Punto', forwardSlash: 'Diagonal', graveAccent: 'Acento Grave', openBracket: 'Abrir llave', backSlash: 'Diagonal Invertida', closeBracket: 'Cerrar llave', singleQuote: 'Comillas simples' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/ro.js0000644000201500020150000001270614517055557025240 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'ro', { title: 'Instrucțiuni de accesibilitate', contents: 'Cuprins. Pentru a închide acest dialog, apăsați tasta ESC.', legend: [ { name: 'General', items: [ { name: 'Editează bara instrumente.', legend: 'Apasă ${toolbarFocus} pentru a naviga prin bara de instrumente. Pentru a te mișca prin grupurile de instrumente folosește tastele TAB și SHIFT+TAB. Pentru a te mișca intre diverse instrumente folosește tastele SĂGEATĂ DREAPTA sau SĂGEATĂ STÂNGA. Apasă butonul SPAȚIU sau ENTER pentru activarea instrumentului.' }, { name: 'Dialog editor', legend: 'Inside 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.' // MISSING }, { name: 'Editor meniu contextual', legend: 'Apasă ${contextMenu} sau TASTA MENIU pentru a deschide meniul contextual. Treci la următoarea opțiune din meniu cu TAB sau SĂGEATĂ JOS. Treci la opțiunea anterioară cu SHIFT+TAB sau SĂGEATĂ SUS. Apasă SPAȚIU sau ENTER pentru a selecta opțiunea din meniu. Deschide sub-meniul opțiunii curente cu SPAȚIU sau ENTER sau SĂGEATĂ DREAPTA. Revino la elementul din meniul părinte cu ESC sau SĂGEATĂ STÂNGA. Închide meniul de context cu ESC.' }, { name: 'Editor Casetă Listă', legend: 'În interiorul unei liste, treci la următorull element cu TAB sau SĂGEATĂ JOS. Treci la elementul anterior din listă cu SHIFT+TAB sau SĂGEATĂ SUS. Apasă SPAȚIU sau ENTER pentru a selecta opțiunea din listă. Apasă ESC pentru a închide lista.' }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'Comenzi', items: [ { name: ' Undo command', // MISSING legend: 'Apasă ${undo}' }, { name: 'Comanda precedentă', legend: 'Apasă ${redo}' }, { name: 'Comanda Îngroșat', legend: 'Apasă ${bold}' }, { name: 'Comanda Inclinat', legend: 'Apasă ${italic}' }, { name: 'Comanda Subliniere', legend: 'Apasă ${underline}' }, { name: 'Comanda Legatură', legend: 'Apasă ${link}' }, { name: ' Toolbar Collapse command', // MISSING legend: 'Press ${toolbarCollapse}' // MISSING }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: ' Accessibility Help', // MISSING legend: 'Press ${a11yHelp}' // MISSING } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/hr.js0000644000201500020150000001235314517055557025227 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'hr', { title: 'Upute dostupnosti', contents: 'Sadržaj pomoći. Za zatvaranje pritisnite ESC.', legend: [ { name: 'Općenito', items: [ { name: 'Alatna traka', legend: 'Pritisni ${toolbarFocus} za navigaciju do alatne trake. Pomicanje do prethodne ili sljedeće alatne grupe vrši se pomoću SHIFT+TAB i TAB. Pomicanje do prethodnog ili sljedećeg gumba u alatnoj traci vrši se pomoću lijeve i desne strelice kursora. Pritisnite SPACE ili ENTER za aktivaciju alatne trake.' }, { name: 'Dijalog', legend: 'Inside 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.' // MISSING }, { name: 'Kontekstni izbornik', legend: 'Pritisnite ${contextMenu} ili APPLICATION tipku za otvaranje kontekstnog izbornika. Pomicanje se vrši TAB ili strelicom kursora prema dolje ili SHIFT+TAB ili strelica kursora prema gore. SPACE ili ENTER odabiru opciju izbornika. Otvorite podizbornik trenutne opcije sa SPACE, ENTER ili desna strelica kursora. Povratak na prethodni izbornik vrši se sa ESC ili lijevom strelicom kursora. Zatvaranje se vrši pritiskom na tipku ESC.' }, { name: 'Lista', legend: 'Unutar list-boxa, pomicanje na sljedeću stavku vrši se sa TAB ili strelica kursora prema dolje. Na prethodnu sa SHIFT+TAB ili strelica prema gore. Pritiskom na SPACE ili ENTER odabire se stavka ili ESC za zatvaranje.' }, { name: 'Traka putanje elemenata', legend: 'Pritisnite ${elementsPathFocus} za navigaciju po putanji elemenata. Pritisnite TAB ili desnu strelicu kursora za pomicanje na sljedeći element ili SHIFT+TAB ili lijeva strelica kursora za pomicanje na prethodni element. Pritiskom na SPACE ili ENTER vrši se odabir elementa.' } ] }, { name: 'Naredbe', items: [ { name: 'Vrati naredbu', legend: 'Pritisni ${undo}' }, { name: 'Ponovi naredbu', legend: 'Pritisni ${redo}' }, { name: 'Bold naredba', legend: 'Pritisni ${bold}' }, { name: 'Italic naredba', legend: 'Pritisni ${italic}' }, { name: 'Underline naredba', legend: 'Pritisni ${underline}' }, { name: 'Link naredba', legend: 'Pritisni ${link}' }, { name: 'Smanji alatnu traku naredba', legend: 'Pritisni ${toolbarCollapse}' }, { name: 'Access previous focus space naredba', legend: 'Pritisni ${accessPreviousSpace} za pristup najbližem nedostupnom razmaku prije kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak.' }, { name: 'Access next focus space naredba', legend: 'Pritisni ${accessNextSpace} za pristup najbližem nedostupnom razmaku nakon kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak.' }, { name: 'Pomoć za dostupnost', legend: 'Pritisni ${a11yHelp}' } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/it.js0000644000201500020150000001250314517055557025227 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'it', { title: 'Istruzioni di Accessibilità', contents: 'Contenuti di Aiuto. Per chiudere questa finestra premi ESC.', legend: [ { name: 'Generale', items: [ { name: 'Barra degli strumenti Editor', legend: 'Premere ${toolbarFocus} per passare alla barra degli strumenti. Usare TAB per spostarsi al gruppo successivo, MAIUSC+TAB per spostarsi a quello precedente. Usare FRECCIA DESTRA per spostarsi al pulsante successivo, FRECCIA SINISTRA per spostarsi a quello precedente. Premere SPAZIO o INVIO per attivare il pulsante della barra degli strumenti.' }, { name: 'Finestra Editor', legend: 'All\'interno di una finestra di dialogo è possibile premere TAB per passare all\'elemento successivo della finestra, MAIUSC+TAB per passare a quello precedente; premere INVIO per inviare i dati della finestra, oppure ESC per annullare l\'operazione. Quando una finestra di dialogo ha più schede, è possibile passare all\'elenco delle schede sia con ALT+F10 che con TAB, in base all\'ordine delle tabulazioni della finestra. Quando l\'elenco delle schede è attivo, premere la FRECCIA DESTRA o la FRECCIA SINISTRA per passare rispettivamente alla scheda successiva o a quella precedente.' }, { name: 'Menù contestuale Editor', legend: 'Premi ${contextMenu} o TASTO APPLICAZIONE per aprire il menu contestuale. Dunque muoviti all\'opzione successiva del menu con il tasto TAB o con la Freccia Sotto. Muoviti all\'opzione precedente con MAIUSC+TAB o con Freccia Sopra. Premi SPAZIO o INVIO per scegliere l\'opzione di menu. Apri il sottomenu dell\'opzione corrente con SPAZIO o INVIO oppure con la Freccia Destra. Torna indietro al menu superiore con ESC oppure Freccia Sinistra. Chiudi il menu contestuale con ESC.' }, { name: 'Box Lista Editor', legend: 'All\'interno di un elenco di opzioni, per spostarsi all\'elemento successivo premere TAB oppure FRECCIA GIÙ. Per spostarsi all\'elemento precedente usare SHIFT+TAB oppure FRECCIA SU. Premere SPAZIO o INVIO per selezionare l\'elemento della lista. Premere ESC per chiudere l\'elenco di opzioni.' }, { name: 'Barra percorso elementi editor', legend: 'Premere ${elementsPathFocus} per passare agli elementi della barra del percorso. Usare TAB o FRECCIA DESTRA per passare al pulsante successivo. Per passare al pulsante precedente premere MAIUSC+TAB o FRECCIA SINISTRA. Premere SPAZIO o INVIO per selezionare l\'elemento nell\'editor.' } ] }, { name: 'Comandi', items: [ { name: ' Annulla comando', legend: 'Premi ${undo}' }, { name: ' Ripeti comando', legend: 'Premi ${redo}' }, { name: ' Comando Grassetto', legend: 'Premi ${bold}' }, { name: ' Comando Corsivo', legend: 'Premi ${italic}' }, { name: ' Comando Sottolineato', legend: 'Premi ${underline}' }, { name: ' Comando Link', legend: 'Premi ${link}' }, { name: ' Comando riduci barra degli strumenti', legend: 'Premi ${toolbarCollapse}' }, { name: 'Comando di accesso al precedente spazio di focus', legend: 'Premi ${accessPreviousSpace} per accedere il più vicino spazio di focus non raggiungibile prima del simbolo caret, per esempio due elementi HR adiacenti. Ripeti la combinazione di tasti per raggiungere spazi di focus distanti.' }, { name: 'Comando di accesso al prossimo spazio di focus', legend: 'Premi ${accessNextSpace} per accedere il più vicino spazio di focus non raggiungibile dopo il simbolo caret, per esempio due elementi HR adiacenti. Ripeti la combinazione di tasti per raggiungere spazi di focus distanti.' }, { name: ' Aiuto Accessibilità', legend: 'Premi ${a11yHelp}' } ] } ], backspace: 'Backspace', tab: 'Tab', enter: 'Invio', shift: 'Maiusc', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pausa', capslock: 'Bloc Maiusc', escape: 'Esc', pageUp: 'Pagina sù', pageDown: 'Pagina giù', end: 'Fine', home: 'Inizio', leftArrow: 'Freccia sinistra', upArrow: 'Freccia su', rightArrow: 'Freccia destra', downArrow: 'Freccia giù', insert: 'Ins', 'delete': 'Canc', leftWindowKey: 'Tasto di Windows sinistro', rightWindowKey: 'Tasto di Windows destro', selectKey: 'Tasto di selezione', numpad0: '0 sul tastierino numerico', numpad1: '1 sul tastierino numerico', numpad2: '2 sul tastierino numerico', numpad3: '3 sul tastierino numerico', numpad4: '4 sul tastierino numerico', numpad5: '5 sul tastierino numerico', numpad6: '6 sul tastierino numerico', numpad7: '7 sul tastierino numerico', numpad8: '8 sul tastierino numerico', numpad9: '9 sul tastierino numerico', multiply: 'Moltiplicazione', add: 'Più', subtract: 'Sottrazione', decimalPoint: 'Punto decimale', divide: 'Divisione', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Bloc Num', scrollLock: 'Bloc Scorr', semiColon: 'Punto-e-virgola', equalSign: 'Segno di uguale', comma: 'Virgola', dash: 'Trattino', period: 'Punto', forwardSlash: 'Barra', graveAccent: 'Accento grave', openBracket: 'Parentesi quadra aperta', backSlash: 'Barra rovesciata', closeBracket: 'Parentesi quadra chiusa', singleQuote: 'Apostrofo' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/sk.js0000644000201500020150000001215314517055557025231 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'sk', { title: 'Inštrukcie prístupnosti', contents: 'Pomocný obsah. Pre zatvorenie tohto okna, stlačte ESC.', legend: [ { name: 'Všeobecne', items: [ { name: 'Lišta nástrojov editora', legend: 'Stlačte ${toolbarFocus} pre navigáciu na lištu nástrojov. Medzi ďalšou a predchádzajúcou lištou nástrojov sa pohybujete s TAB a SHIFT+TAB. Medzi ďalším a predchádzajúcim tlačidlom na lište nástrojov sa pohybujete s pravou šípkou a ľavou šípkou. Stlačte medzerník alebo ENTER pre aktiváciu tlačidla lišty nástrojov.' }, { name: 'Editorový dialóg', legend: 'Inside 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.' // MISSING }, { name: 'Editorové kontextové menu', legend: 'Stlačte ${contextMenu} alebo APPLICATION KEY pre otvorenie kontextového menu. Potom sa presúvajte na ďalšie možnosti menu s TAB alebo dolnou šípkou. Presunte sa k predchádzajúcej možnosti s SHIFT+TAB alebo hornou šípkou. Stlačte medzerník alebo ENTER pre výber možnosti menu. Otvorte pod-menu danej možnosti s medzerníkom, alebo ENTER, alebo pravou šípkou. Vráťte sa späť do položky rodičovského menu s ESC alebo ľavou šípkou. Zatvorte kontextové menu s ESC.' }, { name: 'Editorov box zoznamu', legend: 'V boxe zoznamu, presuňte sa na ďalšiu položku v zozname s TAB alebo dolnou šípkou. Presuňte sa k predchádzajúcej položke v zozname so SHIFT+TAB alebo hornou šípkou. Stlačte medzerník alebo ENTER pre výber možnosti zoznamu. Stlačte ESC pre zatvorenie boxu zoznamu.' }, { name: 'Editorove pásmo cesty prvku', legend: 'Stlačte ${elementsPathFocus} pre navigovanie na pásmo cesty elementu. Presuňte sa na tlačidlo ďalšieho prvku s TAB alebo pravou šípkou. Presuňte sa k predchádzajúcemu tlačidlu s SHIFT+TAB alebo ľavou šípkou. Stlačte medzerník alebo ENTER pre výber prvku v editore.' } ] }, { name: 'Príkazy', items: [ { name: 'Vrátiť príkazy', legend: 'Stlačte ${undo}' }, { name: 'Nanovo vrátiť príkaz', legend: 'Stlačte ${redo}' }, { name: 'Príkaz na stučnenie', legend: 'Stlačte ${bold}' }, { name: 'Príkaz na kurzívu', legend: 'Stlačte ${italic}' }, { name: 'Príkaz na podčiarknutie', legend: 'Stlačte ${underline}' }, { name: 'Príkaz na odkaz', legend: 'Stlačte ${link}' }, { name: 'Príkaz na zbalenie lišty nástrojov', legend: 'Stlačte ${toolbarCollapse}' }, { name: 'Prejsť na predchádzajúcu zamerateľnú medzeru príkazu', legend: 'Stlačte ${accessPreviousSpace} pre prístup na najbližšie nedosiahnuteľné zamerateľné medzery pred vsuvkuo. Napríklad: dve za sebou idúce horizontálne čiary. Opakujte kombináciu klávesov pre dosiahnutie vzdialených zamerateľných medzier.' }, { name: 'Prejsť na ďalší ', legend: 'Stlačte ${accessNextSpace} pre prístup na najbližšie nedosiahnuteľné zamerateľné medzery po vsuvke. Napríklad: dve za sebou idúce horizontálne čiary. Opakujte kombináciu klávesov pre dosiahnutie vzdialených zamerateľných medzier.' }, { name: 'Pomoc prístupnosti', legend: 'Stlačte ${a11yHelp}' } ] } ], backspace: 'Backspace', tab: 'Tab', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Caps Lock', escape: 'Escape', pageUp: 'Stránka hore', pageDown: 'Stránka dole', end: 'End', home: 'Home', leftArrow: 'Šípka naľavo', upArrow: 'Šípka hore', rightArrow: 'Šípka napravo', downArrow: 'Šípka dole', insert: 'Insert', 'delete': 'Delete', leftWindowKey: 'Ľavé Windows tlačidlo', rightWindowKey: 'Pravé Windows tlačidlo', selectKey: 'Tlačidlo Select', numpad0: 'Numpad 0', numpad1: 'Numpad 1', numpad2: 'Numpad 2', numpad3: 'Numpad 3', numpad4: 'Numpad 4', numpad5: 'Numpad 5', numpad6: 'Numpad 6', numpad7: 'Numpad 7', numpad8: 'Numpad 8', numpad9: 'Numpad 9', multiply: 'Násobenie', add: 'Sčítanie', subtract: 'Odčítanie', decimalPoint: 'Desatinná čiarka', divide: 'Delenie', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Bodkočiarka', equalSign: 'Rovná sa', comma: 'Čiarka', dash: 'Pomĺčka', period: 'Bodka', forwardSlash: 'Lomítko', graveAccent: 'Zdôrazňovanie prízvuku', openBracket: 'Hranatá zátvorka otváracia', backSlash: 'Backslash', closeBracket: 'Hranatá zátvorka zatváracia', singleQuote: 'Jednoduché úvodzovky' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/pt.js0000644000201500020150000001235514517055557025243 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'pt', { title: 'Instruções de acessibilidade', contents: 'Conteúdo de ajuda. Use a tecla ESC para fechar esta janela.', legend: [ { name: 'Geral', items: [ { name: 'Barra de ferramentas do editor', legend: 'Clique em ${toolbarFocus} para navegar para a barra de ferramentas. Vá para o grupo da barra de ferramentas anterior e seguinte com TAB e SHIFT+TAB. Vá para o botão da barra de ferramentas anterior com a SETA DIREITA ou ESQUERDA. Pressione ESPAÇO ou ENTER para ativar o botão da barra de ferramentas.' }, { name: 'Janela do Editor', legend: 'Inside 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.' // MISSING }, { name: 'Menu de Contexto do Editor', legend: 'Clique em ${contextMenu} ou TECLA APLICAÇÃO para abrir o menu de contexto. Depois vá para a opção do menu seguinte com TAB ou SETA PARA BAIXO. Vá para a opção anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu. Abra o submenu da opção atual com ESPAÇO, ENTER ou SETA DIREITA. GVá para o item do menu parente com ESC ou SETA ESQUERDA. Feche o menu de contexto com ESC.' }, { name: 'Editor de caixa em lista', legend: 'Dentro da caixa da lista, vá para o itemda lista seguinte com TAB ou SETA PARA BAIXO. Move Vá parao item da lista anterior com SHIFT+TAB ou SETA PARA BAIXO. Pressione ESPAÇO ou ENTER para selecionar a opção da lista. Pressione ESC para fechar a caisa da lista.' }, { name: 'Caminho Barra Elemento Editor', legend: 'Clique em ${elementsPathFocus} para navegar para a barra do caminho dos elementos. Vá para o botão do elemento seguinte com TAB ou SETA DIREITA. Vá para o botão anterior com SHIFT+TAB ou SETA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar o elemento no editor.' } ] }, { name: 'Comandos', items: [ { name: 'Comando de Anular', legend: 'Carregar ${undo}' }, { name: 'Comando de Refazer', legend: 'Pressione ${redo}' }, { name: 'Comando de Negrito', legend: 'Pressione ${bold}' }, { name: 'Comando de Itálico', legend: 'Pressione ${italic}' }, { name: 'Comando de Sublinhado', legend: 'Pressione ${underline}' }, { name: 'Comando de Hiperligação', legend: 'Pressione ${link}' }, { name: 'Comando de Ocultar Barra de Ferramentas', legend: 'Pressione ${toolbarCollapse}' }, { name: 'Acesso comando do espaço focus anterior', legend: 'Clique em ${accessPreviousSpace} para aceder ao espaço do focos inalcançável mais perto antes do sinal de omissão, por exemplo: dois elementos HR adjacentes. Repetir a combinação da chave para alcançar os espaços dos focos distantes.' }, { name: 'Acesso comando do espaço focus seguinte', legend: 'Pressione ${accessNextSpace} para aceder ao espaço do focos inalcançável mais perto depois do sinal de omissão, por exemplo: dois elementos HR adjacentes. Repetir a combinação da chave para alcançar os espaços dos focos distantes.' }, { name: 'Ajuda a acessibilidade', legend: 'Pressione ${a11yHelp}' } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pausa', capslock: 'Maiúsculas', escape: 'Esc', pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'Fim', home: 'Entrada', leftArrow: 'Seta esquerda', upArrow: 'Seta para cima', rightArrow: 'Seta direita', downArrow: 'Seta para baixo', insert: 'Inserir', 'delete': 'Eliminar', leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiplicar', add: 'Adicionar', subtract: 'Subtrair', decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Vírgula', dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Acento grave', openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/si.js0000644000201500020150000001604514517055557025233 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'si', { title: 'ළඟා වියහැකි ', contents: 'උදව් සඳහා අන්තර්ගතය.නික්මයෙමට ESC බොත්තම ඔබන්න', legend: [ { name: 'පොදු කරුණු', items: [ { name: 'සංස්කරණ මෙවලම් ', legend: 'ඔබන්න ${මෙවලම් තීරු අවධානය} මෙවලම් තීරුවේ එහා මෙහා යෑමට.ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරුකාණ්ඩය හා TAB හා SHIFT+TAB .ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරු බොත්තම සමග RIGHT ARROW හෝ LEFT ARROW.මෙවලම් තීරු බොත්තම සක්‍රිය කර ගැනීමට SPACE හෝ ENTER බොත්තම ඔබන්න.' }, { name: 'සංස්කරණ ', legend: 'Inside 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.' // MISSING }, { name: 'සංස්කරණ අඩංගුවට ', legend: 'ඔබන්න ${අන්තර්ගත මෙනුව} හෝ APPLICATION KEY අන්තර්ගත-මෙනුව විවුරතකිරීමට. ඊළඟ මෙනුව-ව්කල්පයන්ට යෑමට TAB හෝ DOWN ARROW බොත්තම ද, පෙර විකල්පයන්ටයෑමට SHIFT+TAB හෝ UP ARROW බොත්තම ද, මෙනුව-ව්කල්පයන් තේරීමට SPACE හෝ ENTER බොත්තම ද, දැනට විවුර්තව ඇති උප-මෙනුවක වීකල්ප තේරීමට SPACE හෝ ENTER හෝ RIGHT ARROW ද, නැවත පෙර ප්‍රධාන මෙනුවට යෑමට ESC හෝ LEFT ARROW බොත්තම ද. අන්තර්ගත-මෙනුව වැසීමට ESC බොත්තම ද ඔබන්න.' }, { name: 'සංස්කරණ තේරුම් ', legend: 'තේරුම් කොටුව තුළ , ඊළඟ අයිතමයට යෑමට TAB හෝ DOWN ARROW , පෙර අයිතමයට යෑමට SHIFT+TAB හෝ UP ARROW . අයිතම විකල්පයන් තේරීමට SPACE හෝ ENTER ,තේරුම් කොටුව වැසීමට ESC බොත්තම් ද ඔබන්න.' }, { name: 'සංස්කරණ අංග සහිත ', legend: 'ඔබන්න ${මෙවලම් තීරු අවධානය} මෙවලම් තීරුවේ එහා මෙහා යෑමට.ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරුකාණ්ඩය හා TAB හා SHIFT+TAB .ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරු බොත්තම සමග RIGHT ARROW හෝ LEFT ARROW.මෙවලම් තීරු බොත්තම සක්‍රිය කර ගැනීමට SPACE හෝ ENTER බොත්තම ඔබන්න.' } ] }, { name: 'විධාන', items: [ { name: 'විධානය වෙනස් ', legend: 'ඔබන්න ${වෙනස් කිරීම}' }, { name: 'විධාන නැවත් පෙර පරිදිම වෙනස්කර ගැනීම.', legend: 'ඔබන්න ${නැවත් පෙර පරිදිම වෙනස්කර ගැනීම}' }, { name: 'තද අකුරින් විධාන', legend: 'ඔබන්න ${තද }' }, { name: 'බැධී අකුරු විධාන', legend: 'ඔබන්න ${බැධී අකුරු }' }, { name: 'යටින් ඉරි ඇද ඇති විධාන.', legend: 'ඔබන්න ${යටින් ඉරි ඇද ඇති}' }, { name: 'සම්බන්ධිත විධාන', legend: 'ඔබන්න ${සම්බන්ධ }' }, { name: 'මෙවලම් තීරු හැකුලුම් විධාන', legend: 'ඔබන්න ${මෙවලම් තීරු හැකුලුම් }' }, { name: 'යොමුවීමට පෙර වැදගත් විධාන', legend: 'ඔබන්න ${යොමුවීමට ඊළඟ }' }, { name: 'යොමුවීමට ඊළග වැදගත් විධාන', legend: 'ඔබන්න ${යොමුවීමට ඊළඟ }' }, { name: 'ප්‍රවේශ ', legend: 'ඔබන්න ${a11y }' } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/ko.js0000644000201500020150000001377014517055557025233 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'ko', { title: '접근성 설명', contents: '도움말. 이 창을 닫으시려면 ESC 를 누르세요.', legend: [ { name: '일반', items: [ { name: '편집기 툴바', legend: '툴바를 탐색하시려면 ${toolbarFocus} 를 투르세요. 이전/다음 툴바 그룹으로 이동하시려면 TAB 키 또는 SHIFT+TAB 키를 누르세요. 이전/다음 툴바 버튼으로 이동하시려면 오른쪽 화살표 키 또는 왼쪽 화살표 키를 누르세요. 툴바 버튼을 활성화 하려면 SPACE 키 또는 ENTER 키를 누르세요.' }, { name: '편집기 다이얼로그', legend: 'TAB 키를 누르면 다음 대화상자로 이동하고, SHIFT+TAB 키를 누르면 이전 대화상자로 이동합니다. 대화상자를 제출하려면 ENTER 키를 누르고, ESC 키를 누르면 대화상자를 취소합니다. 대화상자에 탭이 여러개 있을 때, ALT+F10 키 또는 TAB 키를 누르면 순서에 따라 탭 목록에 도달할 수 있습니다. 탭 목록에 초점이 맞을 때, 오른쪽과 왼쪽 화살표 키를 이용하면 각각 다음과 이전 탭으로 이동할 수 있습니다.' }, { name: '편집기 환경 메뉴', legend: '${contextMenu} 또는 어플리케이션 키를 누르면 환경-메뉴를 열 수 있습니다. 환경-메뉴에서 TAB 키 또는 아래 화살표 키를 누르면 다음 메뉴 옵션으로 이동할 수 있습니다. 이전 옵션으로 이동은 SHIFT+TAB 키 또는 위 화살표 키를 눌러서 할 수 있습니다. 스페이스 키 또는 ENTER 키를 눌러서 메뉴 옵션을 선택할 수 있습니다. 스페이스 키 또는 ENTER 키 또는 오른쪽 화살표 키를 눌러서 하위 메뉴를 열 수 있습니다. 부모 메뉴 항목으로 돌아가려면 ESC 키 또는 왼쪽 화살표 키를 누릅니다. ESC 키를 눌러서 환경-메뉴를 닫습니다.' }, { name: '편집기 목록 박스', legend: '리스트-박스 내에서, 목록의 다음 항목으로 이동하려면 TAB 키 또는 아래쪽 화살표 키를 누릅니다. 목록의 이전 항목으로 이동하려면 SHIFT+TAB 키 또는 위쪽 화살표 키를 누릅니다. 스페이스 키 또는 ENTER 키를 누르면 목록의 해당 옵션을 선택합니다. ESC 키를 눌러서 리스트-박스를 닫을 수 있습니다.' }, { name: '편집기 요소 경로 막대', legend: '${elementsPathFocus}를 눌러서 요소 경로 막대를 탐색할 수 있습니다. 다음 요소로 이동하려면 TAB 키 또는 오른쪽 화살표 키를 누릅니다. SHIFT+TAB 키 또는 왼쪽 화살표 키를 누르면 이전 버튼으로 이동할 수 있습니다. 스페이스 키나 ENTER 키를 누르면 편집기의 해당 항목을 선택합니다.' } ] }, { name: '명령', items: [ { name: ' 명령 실행 취소', legend: '${undo} 누르시오' }, { name: ' 명령 다시 실행', legend: '${redo} 누르시오' }, { name: ' 굵게 명령', legend: '${bold} 누르시오' }, { name: ' 기울임 꼴 명령', legend: '${italic} 누르시오' }, { name: ' 밑줄 명령', legend: '${underline} 누르시오' }, { name: ' 링크 명령', legend: '${link} 누르시오' }, { name: ' 툴바 줄이기 명령', legend: '${toolbarCollapse} 누르시오' }, { name: ' 이전 포커스 공간 접근 명령', legend: '탈자 기호(^) 이전에 ${accessPreviousSpace} 를 누르면, 접근 불가능하면서 가장 가까운 포커스 영역에 접근합니다. 예를 들면, 두 인접한 HR 요소가 있습니다. 키 조합을 반복해서 멀리있는 포커스 영역들에 도달할 수 있습니다.' }, { name: '다음 포커스 공간 접근 명령', legend: '탈자 기호(^) 다음에 ${accessNextSpace} 를 누르면, 접근 불가능하면서 가장 가까운 포커스 영역에 접근합니다. 예를 들면, 두 인접한 HR 요소가 있습니다. 키 조합을 반복해서 멀리있는 포커스 영역들에 도달할 수 있습니다. ' }, { name: ' 접근성 도움말', legend: '${a11yHelp} 누르시오' } ] } ], backspace: 'Backspace 키', tab: '탭 키', enter: '엔터 키', shift: '시프트 키', ctrl: '컨트롤 키', alt: '알트 키', pause: '일시정지 키', capslock: '캡스 록 키', escape: '이스케이프 키', pageUp: '페이지 업 키', pageDown: '페이지 다운 키', end: '엔드 키', home: '홈 키', leftArrow: '왼쪽 화살표 키', upArrow: '위쪽 화살표 키', rightArrow: '오른쪽 화살표 키', downArrow: '아래쪽 화살표 키', insert: '인서트 키', 'delete': '삭제 키', leftWindowKey: '왼쪽 윈도우 키', rightWindowKey: '오른쪽 윈도우 키', selectKey: '셀렉트 키', numpad0: '숫자 패드 0 키', numpad1: '숫자 패드 1 키', numpad2: '숫자 패드 2 키', numpad3: '숫자 패드 3 키', numpad4: '숫자 패드 4 키', numpad5: '숫자 패드 5 키', numpad6: '숫자 패드 6 키', numpad7: '숫자 패드 7 키', numpad8: '숫자 패드 8 키', numpad9: '숫자 패드 9 키', multiply: '곱셈(*) 키', add: '덧셈(+) 키', subtract: '뺄셈(-) 키', decimalPoint: '온점(.) 키', divide: '나눗셈(/) 키', f1: 'F1 키', f2: 'F2 키', f3: 'F3 키', f4: 'F4 키', f5: 'F5 키', f6: 'F6 키', f7: 'F7 키', f8: 'F8 키', f9: 'F9 키', f10: 'F10 키', f11: 'F11 키', f12: 'F12 키', numLock: 'Num Lock 키', scrollLock: 'Scroll Lock 키', semiColon: '세미콜론(;) 키', equalSign: '등호(=) 키', comma: '쉼표(,) 키', dash: '대시(-) 키', period: '온점(.) 키', forwardSlash: '슬래시(/) 키', graveAccent: '억음 악센트(`) 키', openBracket: '브라켓 열기([) 키', backSlash: '역슬래시(\\\\) 키', closeBracket: '브라켓 닫기(]) 키', singleQuote: '외 따옴표(\') 키' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/mk.js0000644000201500020150000001300014517055557025213 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'mk', { title: 'Инструкции за пристапност', contents: 'Содржина на делот за помош. За да го затворите овој дијалот притиснете ESC.', legend: [ { name: 'Општо', items: [ { name: 'Мени за едиторот', legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING }, { name: 'Дијалот за едиторот', legend: 'Inside 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.' // MISSING }, { name: 'Editor Context Menu', // MISSING 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.' // MISSING }, { name: 'Editor List Box', // MISSING 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.' // MISSING }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'Commands', // MISSING items: [ { name: ' Undo command', // MISSING legend: 'Press ${undo}' // MISSING }, { name: ' Redo command', // MISSING legend: 'Press ${redo}' // MISSING }, { name: ' Bold command', // MISSING legend: 'Press ${bold}' // MISSING }, { name: ' Italic command', // MISSING legend: 'Press ${italic}' // MISSING }, { name: ' Underline command', // MISSING legend: 'Press ${underline}' // MISSING }, { name: ' Link command', // MISSING legend: 'Press ${link}' // MISSING }, { name: ' Toolbar Collapse command', // MISSING legend: 'Press ${toolbarCollapse}' // MISSING }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: ' Accessibility Help', // MISSING legend: 'Press ${a11yHelp}' // MISSING } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/cy.js0000644000201500020150000001222614517055557025230 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'cy', { title: 'Canllawiau Hygyrchedd', contents: 'Cynnwys Cymorth. I gau y deialog hwn, pwyswch ESC.', legend: [ { name: 'Cyffredinol', items: [ { name: 'Bar Offer y Golygydd', legend: 'Pwyswch $ {toolbarFocus} i fynd at y bar offer. Symudwch i\'r grŵp bar offer nesaf a blaenorol gyda TAB a SHIFT+TAB. Symudwch i\'r botwm bar offer nesaf a blaenorol gyda SAETH DDE neu SAETH CHWITH. Pwyswch SPACE neu ENTER i wneud botwm y bar offer yn weithredol.' }, { name: 'Deialog y Golygydd', legend: 'Inside 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.' // MISSING }, { name: 'Dewislen Cyd-destun y Golygydd', legend: 'Pwyswch $ {contextMenu} neu\'r ALLWEDD \'APPLICATION\' i agor y ddewislen cyd-destun. Yna symudwch i\'r opsiwn ddewislen nesaf gyda\'r TAB neu\'r SAETH I LAWR. Symudwch i\'r opsiwn blaenorol gyda SHIFT+TAB neu\'r SAETH I FYNY. Pwyswch SPACE neu ENTER i ddewis yr opsiwn ddewislen. Agorwch is-dewislen yr opsiwn cyfredol gyda SPACE neu ENTER neu SAETH DDE. Ewch yn ôl i\'r eitem ar y ddewislen uwch gydag ESC neu SAETH CHWITH. Ceuwch y ddewislen cyd-destun gydag ESC.' }, { name: 'Blwch Rhestr y Golygydd', legend: 'Tu mewn y blwch rhestr, ewch i\'r eitem rhestr nesaf gyda TAB neu\'r SAETH I LAWR. Symudwch i restr eitem flaenorol gyda SHIFT+TAB neu SAETH I FYNY. Pwyswch SPACE neu ENTER i ddewis yr opsiwn o\'r rhestr. Pwyswch ESC i gau\'r rhestr.' }, { name: 'Bar Llwybr Elfen y Golygydd', legend: 'Pwyswch ${elementsPathFocus} i fynd i\'r bar llwybr elfennau. Symudwch i fotwm yr elfen nesaf gyda TAB neu SAETH DDE. Symudwch i fotwm blaenorol gyda SHIFT+TAB neu SAETH CHWITH. Pwyswch SPACE neu ENTER i ddewis yr elfen yn y golygydd.' } ] }, { name: 'Gorchmynion', items: [ { name: 'Gorchymyn dadwneud', legend: 'Pwyswch ${undo}' }, { name: 'Gorchymyn ailadrodd', legend: 'Pwyswch ${redo}' }, { name: 'Gorchymyn Bras', legend: 'Pwyswch ${bold}' }, { name: 'Gorchymyn italig', legend: 'Pwyswch ${italig}' }, { name: 'Gorchymyn tanlinellu', legend: 'Pwyso ${underline}' }, { name: 'Gorchymyn dolen', legend: 'Pwyswch ${link}' }, { name: 'Gorchymyn Cwympo\'r Dewislen', legend: 'Pwyswch ${toolbarCollapse}' }, { name: 'Myned i orchymyn bwlch ffocws blaenorol', legend: 'Pwyswch ${accessPreviousSpace} i fyned i\'r "blwch ffocws sydd methu ei gyrraedd" cyn y caret, er enghraifft: dwy elfen HR drws nesaf i\'w gilydd. AIladroddwch y cyfuniad allwedd i gyrraedd bylchau ffocws pell.' }, { name: 'Ewch i\'r gorchymyn blwch ffocws nesaf', legend: 'Pwyswch ${accessNextSpace} i fyned i\'r blwch ffocws agosaf nad oes modd ei gyrraedd ar ôl y caret, er enghraifft: dwy elfen HR drws nesaf i\'w gilydd. Ailadroddwch y cyfuniad allwedd i gyrraedd blychau ffocws pell.' }, { name: 'Cymorth Hygyrchedd', legend: 'Pwyswch ${a11yHelp}' } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/uk.js0000644000201500020150000001504714517055557025240 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'uk', { title: 'Спеціальні Інструкції', contents: 'Довідка. Натисніть ESC і вона зникне.', legend: [ { name: 'Основне', items: [ { name: 'Панель Редактора', legend: 'Натисніть ${toolbarFocus} для переходу до панелі інструментів. Для переміщення між групами панелі інструментів використовуйте TAB і SHIFT+TAB. Для переміщення між кнопками панелі іструментів використовуйте кнопки СТРІЛКА ВПРАВО або ВЛІВО. Натисніть ПРОПУСК або ENTER для запуску кнопки панелі інструментів.' }, { name: 'Діалог Редактора', legend: 'Inside 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.' // MISSING }, { name: 'Контекстне Меню Редактора', legend: 'Press ${contextMenu} or APPLICATION KEY to open context-menu. Потім перейдіть до наступного пункту меню за допомогою TAB або СТРІЛКИ ВНИЗ. Натисніть ПРОПУСК або ENTER для вибору параметру меню. Відкрийте підменю поточного параметру, натиснувши ПРОПУСК або ENTER або СТРІЛКУ ВПРАВО. Перейдіть до батьківського елемента меню, натиснувши ESC або СТРІЛКУ ВЛІВО. Закрийте контекстне меню, натиснувши ESC.' }, { name: 'Скринька Списків Редактора', legend: 'Всередині списку переходимо до наступного пункту списку клавішею TAB або СТРІЛКА ВНИЗ. Перейти до попереднього елемента списку можна SHIFT+TAB або СТРІЛКА ВГОРУ. Натисніть ПРОПУСК або ENTER, щоб вибрати параметр списку. Натисніть клавішу ESC, щоб закрити список.' }, { name: 'Шлях до елемента редактора', legend: 'Натисніть ${elementsPathFocus} для навігації між елементами панелі. Перейдіть до наступного елемента кнопкою TAB або СТРІЛКА ВПРАВО. Перейдіть до попереднього елемента кнопкою SHIFT+TAB або СТРІЛКА ВЛІВО. Натисніть ПРОПУСК або ENTER для вибору елемента в редакторі.' } ] }, { name: 'Команди', items: [ { name: 'Відмінити команду', legend: 'Натисніть ${undo}' }, { name: 'Повторити', legend: 'Натисніть ${redo}' }, { name: 'Жирний', legend: 'Натисніть ${bold}' }, { name: 'Курсив', legend: 'Натисніть ${italic}' }, { name: 'Підкреслений', legend: 'Натисніть ${underline}' }, { name: 'Посилання', legend: 'Натисніть ${link}' }, { name: 'Згорнути панель інструментів', legend: 'Натисніть ${toolbarCollapse}' }, { name: 'Доступ до попереднього місця фокусування', legend: 'Натисніть ${accessNextSpace} для доступу до найближчої недосяжної області фокусування перед кареткою, наприклад: два сусідні елементи HR. Повторіть комбінацію клавіш для досягнення віддалених областей фокусування.' }, { name: 'Доступ до наступного місця фокусування', legend: 'Натисніть ${accessNextSpace} для доступу до найближчої недосяжної області фокусування після каретки, наприклад: два сусідні елементи HR. Повторіть комбінацію клавіш для досягнення віддалених областей фокусування.' }, { name: 'Допомога з доступності', legend: 'Натисніть ${a11yHelp}' } ] } ], backspace: 'Backspace', tab: 'Tab', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Caps Lock', escape: 'Esc', pageUp: 'Page Up', pageDown: 'Page Down', end: 'End', home: 'Home', leftArrow: 'Ліва стрілка', upArrow: 'Стрілка вгору', rightArrow: 'Права стрілка', downArrow: 'Стрілка вниз', insert: 'Вставити', 'delete': 'Видалити', leftWindowKey: 'Ліва клавіша Windows', rightWindowKey: 'Права клавіша Windows', selectKey: 'Виберіть клавішу', numpad0: 'Numpad 0', numpad1: 'Numpad 1', numpad2: 'Numpad 2', numpad3: 'Numpad 3', numpad4: 'Numpad 4', numpad5: 'Numpad 5', numpad6: 'Numpad 6', numpad7: 'Numpad 7', numpad8: 'Numpad 8', numpad9: 'Numpad 9', multiply: 'Множення', add: 'Додати', subtract: 'Віднімання', decimalPoint: 'Десяткова кома', divide: 'Ділення', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Крапка з комою', equalSign: 'Знак рівності', comma: 'Кома', dash: 'Тире', period: 'Період', forwardSlash: 'Коса риска', graveAccent: 'Гравіс', openBracket: 'Відкрити дужку', backSlash: 'Зворотна коса риска', closeBracket: 'Закрити дужку', singleQuote: 'Одинарні лапки' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/zh-cn.js0000644000201500020150000001110314517055557025625 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'zh-cn', { title: '辅助功能说明', contents: '帮助内容。要关闭此对话框请按 ESC 键。', legend: [ { name: '常规', items: [ { name: '编辑器工具栏', legend: '按 ${toolbarFocus} 切换到工具栏,使用 TAB 键和 SHIFT+TAB 组合键移动到上一个和下一个工具栏组。使用左右箭头键移动到上一个或下一个工具栏按钮。按空格键或回车键以选中工具栏按钮。' }, { name: '编辑器对话框', legend: '在对话框内,按 TAB 键移动到下一个字段,按 SHIFT + TAB 组合键移动到上一个字段,按 ENTER 键提交对话框,按 ESC 键取消对话框。对于有多选项卡的对话框,可以按 ALT + F10 直接切换到或者按 TAB 键逐步移到选项卡列表,当焦点移到选项卡列表时可以用左右箭头键来移动到前后的选项卡。' }, { name: '编辑器上下文菜单', legend: '用 ${contextMenu} 或者“应用程序键”打开上下文菜单。然后用 TAB 键或者下箭头键来移动到下一个菜单项;SHIFT + TAB 组合键或者上箭头键移动到上一个菜单项。用 SPACE 键或者 ENTER 键选择菜单项。用 SPACE 键,ENTER 键或者右箭头键打开子菜单。返回菜单用 ESC 键或者左箭头键。用 ESC 键关闭上下文菜单。' }, { name: '编辑器列表框', legend: '在列表框中,移到下一列表项用 TAB 键或者下箭头键。移到上一列表项用SHIFT+TAB 组合键或者上箭头键,用 SPACE 键或者 ENTER 键选择列表项。用 ESC 键收起列表框。' }, { name: '编辑器元素路径栏', legend: '按 ${elementsPathFocus} 以导航到元素路径栏,使用 TAB 键或右箭头键选择下一个元素,使用 SHIFT+TAB 组合键或左箭头键选择上一个元素,按空格键或回车键以选定编辑器里的元素。' } ] }, { name: '命令', items: [ { name: ' 撤消命令', legend: '按 ${undo}' }, { name: ' 重做命令', legend: '按 ${redo}' }, { name: ' 加粗命令', legend: '按 ${bold}' }, { name: ' 倾斜命令', legend: '按 ${italic}' }, { name: ' 下划线命令', legend: '按 ${underline}' }, { name: ' 链接命令', legend: '按 ${link}' }, { name: ' 工具栏折叠命令', legend: '按 ${toolbarCollapse}' }, { name: '访问前一个焦点区域的命令', legend: '按 ${accessPreviousSpace} 访问^符号前最近的不可访问的焦点区域,例如:两个相邻的 HR 元素。重复此组合按键可以到达远处的焦点区域。' }, { name: '访问下一个焦点区域命令', legend: '按 ${accessNextSpace} 以访问^符号后最近的不可访问的焦点区域。例如:两个相邻的 HR 元素。重复此组合按键可以到达远处的焦点区域。' }, { name: '辅助功能帮助', legend: '按 ${a11yHelp}' } ] } ], backspace: '退格键', tab: 'Tab 键', enter: '回车键', shift: 'Shift 键', ctrl: 'Ctrl 键', alt: 'Alt 键', pause: '暂停键', capslock: '大写锁定键', escape: 'Esc 键', pageUp: '上翻页键', pageDown: '下翻页键', end: '行尾键', home: '行首键', leftArrow: '向左箭头键', upArrow: '向上箭头键', rightArrow: '向右箭头键', downArrow: '向下箭头键', insert: '插入键', 'delete': '删除键', leftWindowKey: '左 WIN 键', rightWindowKey: '右 WIN 键', selectKey: '选择键', numpad0: '小键盘 0 键', numpad1: '小键盘 1 键', numpad2: '小键盘 2 键', numpad3: '小键盘 3 键', numpad4: '小键盘 4 键', numpad5: '小键盘 5 键', numpad6: '小键盘 6 键', numpad7: '小键盘 7 键', numpad8: '小键盘 8 键', numpad9: '小键盘 9 键', multiply: '星号键', add: '加号键', subtract: '减号键', decimalPoint: '小数点键', divide: '除号键', f1: 'F1 键', f2: 'F2 键', f3: 'F3 键', f4: 'F4 键', f5: 'F5 键', f6: 'F6 键', f7: 'F7 键', f8: 'F8 键', f9: 'F9 键', f10: 'F10 键', f11: 'F11 键', f12: 'F12 键', numLock: '数字锁定键', scrollLock: '滚动锁定键', semiColon: '分号键', equalSign: '等号键', comma: '逗号键', dash: '短划线键', period: '句号键', forwardSlash: '斜杠键', graveAccent: '重音符键', openBracket: '左中括号键', backSlash: '反斜杠键', closeBracket: '右中括号键', singleQuote: '单引号键' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/sv.js0000644000201500020150000001136714517055557025252 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'sv', { title: 'Hjälpmedelsinstruktioner', contents: 'Hjälpinnehåll. För att stänga denna dialogruta trycker du på ESC.', legend: [ { name: 'Allmänt', items: [ { name: 'Editor verktygsfält', legend: 'Tryck på ${toolbarFocus} för att navigera till verktygsfältet. Flytta till nästa och föregående verktygsfältsgrupp med TAB och SHIFT+TAB. Flytta till nästa och föregående knapp i verktygsfältet med HÖGERPIL eller VÄNSTERPIL. Tryck SPACE eller ENTER för att aktivera knappen i verktygsfältet.' }, { name: 'Dialogeditor', legend: 'Inuti en dialogruta, tryck TAB för att navigera till nästa fält i dialogrutan, tryck SKIFT+TAB för att flytta till föregående fält, tryck ENTER för att skicka. Du avbryter och stänger dialogen med ESC. För dialogrutor som har flera flikar, tryck ALT+F10 eller TAB för att navigera till fliklistan. med fliklistan vald flytta till nästa och föregående flik med HÖGER- eller VÄNSTERPIL.' }, { name: 'Editor för innehållsmeny', legend: 'Tryck på $ {contextMenu} eller PROGRAMTANGENTEN för att öppna snabbmenyn. Flytta sedan till nästa menyalternativ med TAB eller NEDPIL. Flytta till föregående alternativ med SHIFT + TABB eller UPPIL. Tryck Space eller ENTER för att välja menyalternativ. Öppna undermeny av nuvarande alternativ med SPACE eller ENTER eller HÖGERPIL. Gå tillbaka till överordnade menyalternativ med ESC eller VÄNSTERPIL. Stäng snabbmenyn med ESC.' }, { name: 'Editor för list-box', legend: 'Inuti en list-box, gå till nästa listobjekt med TAB eller NEDPIL. Flytta till föregående listobjekt med SHIFT+TAB eller UPPIL. Tryck SPACE eller ENTER för att välja listan alternativet. Tryck ESC för att stänga list-boxen.' }, { name: 'Editor för elementens sökväg', legend: 'Tryck på ${elementsPathFocus} för att navigera till verktygsfältet för elementens sökvägar. Flytta till nästa elementknapp med TAB eller HÖGERPIL. Flytta till föregående knapp med SKIFT+TAB eller VÄNSTERPIL. Tryck SPACE eller ENTER för att välja element i redigeraren.' } ] }, { name: 'Kommandon', items: [ { name: 'Ångra kommando', legend: 'Tryck på ${undo}' }, { name: 'Gör om kommando', legend: 'Tryck på ${redo}' }, { name: 'Kommandot fet stil', legend: 'Tryck på ${bold}' }, { name: 'Kommandot kursiv', legend: 'Tryck på ${italic}' }, { name: 'Kommandot understruken', legend: 'Tryck på ${underline}' }, { name: 'Kommandot länk', legend: 'Tryck på ${link}' }, { name: 'Verktygsfält Dölj kommandot', legend: 'Tryck på ${toolbarCollapse}' }, { name: 'Gå till föregående fokus plats', legend: 'Tryck på ${accessPreviousSpace} för att gå till närmast onåbara utrymme före markören, exempel: två intilliggande HR element. Repetera tangentkombinationen för att gå till nästa.' }, { name: 'Tillgå nästa fokuskommandots utrymme', legend: 'Tryck ${accessNextSpace} på för att komma åt den närmaste onåbar fokus utrymme efter cirkumflex, till exempel: två intilliggande HR element. Upprepa tangentkombinationen för att nå avlägsna fokus utrymmen.' }, { name: 'Hjälp om tillgänglighet', legend: 'Tryck ${a11yHelp}' } ] } ], backspace: 'Backsteg', tab: 'Tab', enter: 'Retur', shift: 'Skift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Paus', capslock: 'Caps lock', escape: 'Escape', pageUp: 'Sida Up', pageDown: 'Sida Ned', end: 'Slut', home: 'Hem', leftArrow: 'Vänsterpil', upArrow: 'Uppil', rightArrow: 'Högerpil', downArrow: 'Nedåtpil', insert: 'Infoga', 'delete': 'Radera', leftWindowKey: 'Vänster Windowstangent', rightWindowKey: 'Höger Windowstangent', selectKey: 'Välj tangent', numpad0: 'Nummer 0', numpad1: 'Nummer 1', numpad2: 'Nummer 2', numpad3: 'Nummer 3', numpad4: 'Nummer 4', numpad5: 'Nummer 5', numpad6: 'Nummer 6', numpad7: 'Nummer 7', numpad8: 'Nummer 8', numpad9: 'Nummer 9', multiply: 'Multiplicera', add: 'Addera', subtract: 'Minus', decimalPoint: 'Decimalpunkt', divide: 'Dividera', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Semikolon', equalSign: 'Lika med tecken', comma: 'Komma', dash: 'Minus', period: 'Punkt', forwardSlash: 'Snedstreck framåt', graveAccent: 'Accent', openBracket: 'Öppningsparentes', backSlash: 'Snedstreck bakåt', closeBracket: 'Slutparentes', singleQuote: 'Enkelt Citattecken' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/lt.js0000644000201500020150000001263614517055557025241 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'lt', { title: 'Accessibility Instructions', // MISSING contents: 'Help Contents. To close this dialog press ESC.', // MISSING legend: [ { name: 'Bendros savybės', items: [ { name: 'Editor Toolbar', // MISSING legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING }, { name: 'Editor Dialog', // MISSING legend: 'Inside 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.' // MISSING }, { name: 'Editor Context Menu', // MISSING 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.' // MISSING }, { name: 'Editor List Box', // MISSING 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.' // MISSING }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'Commands', // MISSING items: [ { name: ' Undo command', // MISSING legend: 'Press ${undo}' // MISSING }, { name: ' Redo command', // MISSING legend: 'Press ${redo}' // MISSING }, { name: ' Bold command', // MISSING legend: 'Press ${bold}' // MISSING }, { name: ' Italic command', // MISSING legend: 'Press ${italic}' // MISSING }, { name: ' Underline command', // MISSING legend: 'Press ${underline}' // MISSING }, { name: ' Link command', // MISSING legend: 'Press ${link}' // MISSING }, { name: ' Toolbar Collapse command', // MISSING legend: 'Press ${toolbarCollapse}' // MISSING }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: ' Accessibility Help', // MISSING legend: 'Press ${a11yHelp}' // MISSING } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/fr-ca.js0000644000201500020150000001360214517055557025604 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'fr-ca', { title: 'Instructions d\'accessibilité', contents: 'Contenu de l\'aide. Pour fermer cette fenêtre, appuyez sur ESC.', legend: [ { name: 'Général', items: [ { name: 'Barre d\'outil de l\'éditeur', legend: 'Appuyer sur ${toolbarFocus} pour accéder à la barre d\'outils. Se déplacer vers les groupes suivant ou précédent de la barre d\'outil avec les touches TAB et SHIFT+TAB. Se déplacer vers les boutons suivant ou précédent de la barre d\'outils avec les touches FLECHE DROITE et FLECHE GAUCHE. Appuyer sur la barre d\'espace ou la touche ENTRER pour activer le bouton de barre d\'outils.' }, { name: 'Dialogue de l\'éditeur', legend: 'Inside 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.' // MISSING }, { name: 'Menu contextuel de l\'éditeur', legend: 'Appuyer sur ${contextMenu} ou entrer le RACCOURCI CLAVIER pour ouvrir le menu contextuel. Puis se déplacer vers l\'option suivante du menu avec les touches TAB ou FLECHE BAS. Se déplacer vers l\'option précédente avec les touches SHIFT+TAB ou FLECHE HAUT. appuyer sur la BARRE D\'ESPACE ou la touche ENTREE pour sélectionner l\'option du menu. Oovrir le sous-menu de l\'option courante avec la BARRE D\'ESPACE ou les touches ENTREE ou FLECHE DROITE. Revenir à l\'élément de menu parent avec les touches ESC ou FLECHE GAUCHE. Fermer le menu contextuel avec ESC.' }, { name: 'Menu déroulant de l\'éditeur', legend: 'A l\'intérieur d\'une liste en menu déroulant, se déplacer vers l\'élément suivant de la liste avec les touches TAB ou FLECHE BAS. Se déplacer vers l\'élément précédent de la liste avec les touches SHIFT+TAB ou FLECHE HAUT. Appuyer sur la BARRE D\'ESPACE ou sur ENTREE pour sélectionner l\'option dans la liste. Appuyer sur ESC pour fermer le menu déroulant.' }, { name: 'Barre d\'emplacement des éléments de l\'éditeur', legend: 'Appuyer sur ${elementsPathFocus} pour naviguer vers la barre d\'emplacement des éléments de léditeur. Se déplacer vers le bouton d\'élément suivant avec les touches TAB ou FLECHE DROITE. Se déplacer vers le bouton d\'élément précédent avec les touches SHIFT+TAB ou FLECHE GAUCHE. Appuyer sur la BARRE D\'ESPACE ou sur ENTREE pour sélectionner l\'élément dans l\'éditeur.' } ] }, { name: 'Commandes', items: [ { name: 'Annuler', legend: 'Appuyer sur ${undo}' }, { name: 'Refaire', legend: 'Appuyer sur ${redo}' }, { name: 'Gras', legend: 'Appuyer sur ${bold}' }, { name: 'Italique', legend: 'Appuyer sur ${italic}' }, { name: 'Souligné', legend: 'Appuyer sur ${underline}' }, { name: 'Lien', legend: 'Appuyer sur ${link}' }, { name: 'Enrouler la barre d\'outils', legend: 'Appuyer sur ${toolbarCollapse}' }, { name: 'Accéder à l\'objet de focus précédent', legend: 'Appuyer ${accessPreviousSpace} pour accéder au prochain espace disponible avant le curseur, par exemple: deux éléments HR adjacents. Répéter la combinaison pour joindre les éléments d\'espaces distantes.' }, { name: 'Accéder au prochain objet de focus', legend: 'Appuyer ${accessNextSpace} pour accéder au prochain espace disponible après le curseur, par exemple: deux éléments HR adjacents. Répéter la combinaison pour joindre les éléments d\'espaces distantes.' }, { name: 'Aide d\'accessibilité', legend: 'Appuyer sur ${a11yHelp}' } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/et.js0000644000201500020150000001262314517055557025226 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'et', { title: 'Accessibility Instructions', // MISSING contents: 'Abi sisu. Selle dialoogi sulgemiseks vajuta ESC klahvi.', legend: [ { name: 'Üldine', items: [ { name: 'Editor Toolbar', // MISSING legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING }, { name: 'Editor Dialog', // MISSING legend: 'Inside 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.' // MISSING }, { name: 'Editor Context Menu', // MISSING 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.' // MISSING }, { name: 'Editor List Box', // MISSING 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.' // MISSING }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'Commands', // MISSING items: [ { name: ' Undo command', // MISSING legend: 'Press ${undo}' // MISSING }, { name: ' Redo command', // MISSING legend: 'Press ${redo}' // MISSING }, { name: ' Bold command', // MISSING legend: 'Press ${bold}' // MISSING }, { name: ' Italic command', // MISSING legend: 'Press ${italic}' // MISSING }, { name: ' Underline command', // MISSING legend: 'Press ${underline}' // MISSING }, { name: ' Link command', // MISSING legend: 'Press ${link}' // MISSING }, { name: ' Toolbar Collapse command', // MISSING legend: 'Press ${toolbarCollapse}' // MISSING }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: ' Accessibility Help', // MISSING legend: 'Press ${a11yHelp}' // MISSING } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/pl.js0000644000201500020150000001257714517055557025241 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'pl', { title: 'Instrukcje dotyczące dostępności', contents: 'Zawartość pomocy. Wciśnij ESC, aby zamknąć to okno.', legend: [ { name: 'Informacje ogólne', items: [ { name: 'Pasek narzędzi edytora', legend: 'Naciśnij ${toolbarFocus}, by przejść do paska narzędzi. Przejdź do następnej i poprzedniej grupy narzędzi używając TAB oraz SHIFT+TAB. Przejdź do następnego i poprzedniego przycisku paska narzędzi za pomocą STRZAŁKI W PRAWO lub STRZAŁKI W LEWO. Naciśnij SPACJĘ lub ENTER by aktywować przycisk paska narzędzi.' }, { name: 'Okno dialogowe edytora', legend: 'Wewnątrz okna dialogowego naciśnij TAB, by przejść do kolejnego elementu tego okna lub SHIFT+TAB, by przejść do poprzedniego elementu okna. Naciśnij ENTER w celu zatwierdzenia opcji okna dialogowego lub ESC w celu anulowania zmian. Jeśli okno dialogowe ma kilka zakładek, do listy zakładek można przejść za pomocą ALT+F10 lub TAB. Gdy lista zakładek jest aktywna, możesz przejść do kolejnej i poprzedniej zakładki za pomocą STRZAŁKI W PRAWO i STRZAŁKI W LEWO.' }, { name: 'Menu kontekstowe edytora', legend: 'Wciśnij ${contextMenu} lub PRZYCISK APLIKACJI aby otworzyć menu kontekstowe. Przejdź do następnej pozycji menu wciskając TAB lub STRZAŁKĘ W DÓŁ. Przejdź do poprzedniej pozycji menu wciskając SHIFT + TAB lub STRZAŁKĘ W GÓRĘ. Wciśnij SPACJĘ lub ENTER aby wygrać pozycję menu. Otwórz pod-menu obecnej pozycji wciskając SPACJĘ lub ENTER lub STRZAŁKĘ W PRAWO. Wróć do pozycji nadrzędnego menu wciskając ESC lub STRZAŁKĘ W LEWO. Zamknij menu wciskając ESC.' }, { name: 'Lista w edytorze', legend: 'Wewnątrz listy przejdź do kolejnego elementu listy za pomocą przycisku TAB lub STRZAŁKI W DÓŁ. Przejdź do poprzedniego elementu listy za pomocą SHIFT+TAB lub STRZAŁKI W GÓRĘ. Naciśnij SPACJĘ lub ENTER w celu wybrania opcji z listy. Naciśnij ESC, by zamknąć listę.' }, { name: 'Pasek ścieżki elementów edytora', legend: 'Naciśnij ${elementsPathFocus} w celu przejścia do paska ścieżki elementów edytora. W celu przejścia do kolejnego elementu naciśnij klawisz TAB lub STRZAŁKI W PRAWO. W celu przejścia do poprzedniego elementu naciśnij klawisze SHIFT+TAB lub STRZAŁKI W LEWO. By wybrać element w edytorze, użyj klawisza SPACJI lub ENTER.' } ] }, { name: 'Polecenia', items: [ { name: 'Polecenie Cofnij', legend: 'Naciśnij ${undo}' }, { name: 'Polecenie Ponów', legend: 'Naciśnij ${redo}' }, { name: 'Polecenie Pogrubienie', legend: 'Naciśnij ${bold}' }, { name: 'Polecenie Kursywa', legend: 'Naciśnij ${italic}' }, { name: 'Polecenie Podkreślenie', legend: 'Naciśnij ${underline}' }, { name: 'Polecenie Wstaw/ edytuj odnośnik', legend: 'Naciśnij ${link}' }, { name: 'Polecenie schowaj pasek narzędzi', legend: 'Naciśnij ${toolbarCollapse}' }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: 'Pomoc dotycząca dostępności', legend: 'Naciśnij ${a11yHelp}' } ] } ], backspace: 'Backspace', tab: 'Tab', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Caps Lock', escape: 'Escape', pageUp: 'Page Up', pageDown: 'Page Down', end: 'End', home: 'Home', leftArrow: 'Strzałka w lewo', upArrow: 'Strzałka w górę', rightArrow: 'Strzałka w prawo', downArrow: 'Strzałka w dół', insert: 'Insert', 'delete': 'Delete', leftWindowKey: 'Lewy klawisz Windows', rightWindowKey: 'Prawy klawisz Windows', selectKey: 'Klawisz wyboru', numpad0: 'Klawisz 0 na klawiaturze numerycznej', numpad1: 'Klawisz 1 na klawiaturze numerycznej', numpad2: 'Klawisz 2 na klawiaturze numerycznej', numpad3: 'Klawisz 3 na klawiaturze numerycznej', numpad4: 'Klawisz 4 na klawiaturze numerycznej', numpad5: 'Klawisz 5 na klawiaturze numerycznej', numpad6: 'Klawisz 6 na klawiaturze numerycznej', numpad7: 'Klawisz 7 na klawiaturze numerycznej', numpad8: 'Klawisz 8 na klawiaturze numerycznej', numpad9: 'Klawisz 9 na klawiaturze numerycznej', multiply: 'Przemnóż', add: 'Plus', subtract: 'Minus', decimalPoint: 'Separator dziesiętny', divide: 'Podziel', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Średnik', equalSign: 'Znak równości', comma: 'Przecinek', dash: 'Pauza', period: 'Kropka', forwardSlash: 'Ukośnik prawy', graveAccent: 'Akcent słaby', openBracket: 'Nawias kwadratowy otwierający', backSlash: 'Ukośnik lewy', closeBracket: 'Nawias kwadratowy zamykający', singleQuote: 'Apostrof' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/bg.js0000644000201500020150000001262614517055557025211 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'bg', { title: 'Accessibility Instructions', // MISSING contents: 'Help Contents. To close this dialog press ESC.', // MISSING legend: [ { name: 'Общо', items: [ { name: 'Editor Toolbar', // MISSING legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING }, { name: 'Editor Dialog', // MISSING legend: 'Inside 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.' // MISSING }, { name: 'Editor Context Menu', // MISSING 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.' // MISSING }, { name: 'Editor List Box', // MISSING 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.' // MISSING }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'Commands', // MISSING items: [ { name: ' Undo command', // MISSING legend: 'Press ${undo}' // MISSING }, { name: ' Redo command', // MISSING legend: 'Press ${redo}' // MISSING }, { name: ' Bold command', // MISSING legend: 'Press ${bold}' // MISSING }, { name: ' Italic command', // MISSING legend: 'Press ${italic}' // MISSING }, { name: ' Underline command', // MISSING legend: 'Press ${underline}' // MISSING }, { name: ' Link command', // MISSING legend: 'Press ${link}' // MISSING }, { name: ' Toolbar Collapse command', // MISSING legend: 'Press ${toolbarCollapse}' // MISSING }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: ' Accessibility Help', // MISSING legend: 'Press ${a11yHelp}' // MISSING } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/fa.js0000644000201500020150000001436014517055557025204 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'fa', { title: 'دستورالعمل‌های دسترسی', contents: 'راهنمای فهرست مطالب. برای بستن این کادر محاوره‌ای ESC را فشار دهید.', legend: [ { name: 'عمومی', items: [ { name: 'نوار ابزار ویرایشگر', legend: '${toolbarFocus} را برای باز کردن نوار ابزار بفشارید. با کلید Tab و Shift+Tab در مجموعه نوار ابزار بعدی و قبلی حرکت کنید. برای حرکت در کلید نوار ابزار قبلی و بعدی با کلید جهت‌نمای راست و چپ جابجا شوید. کلید Space یا Enter را برای فعال کردن کلید نوار ابزار بفشارید.' }, { name: 'پنجره محاورهای ویرایشگر', legend: 'Inside 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.' // MISSING }, { name: 'منوی متنی ویرایشگر', legend: '${contextMenu} یا کلید برنامههای کاربردی را برای باز کردن منوی متن را بفشارید. سپس میتوانید برای حرکت به گزینه بعدی منو با کلید Tab و یا کلید جهتنمای پایین جابجا شوید. حرکت به گزینه قبلی با Shift+Tab یا کلید جهتنمای بالا. فشردن Space یا Enter برای انتخاب یک گزینه از منو. باز کردن زیر شاخه گزینه منو جاری با کلید Space یا Enter و یا کلید جهتنمای راست و چپ. بازگشت به منوی والد با کلید Esc یا کلید جهتنمای چپ. بستن منوی متن با Esc.' }, { name: 'جعبه فهرست ویرایشگر', legend: 'در داخل جعبه لیست، قلم دوم از اقلام لیست بعدی را با TAB و یا Arrow Down حرکت دهید. انتقال به قلم دوم از اقلام لیست قبلی را با SHIFT + TAB یا UP ARROW. کلید Space یا ENTER را برای انتخاب گزینه لیست بفشارید. کلید ESC را برای بستن جعبه لیست بفشارید.' }, { name: 'ویرایشگر عنصر نوار راه', legend: 'برای رفتن به مسیر عناصر ${elementsPathFocus} را بفشارید. حرکت به کلید عنصر بعدی با کلید Tab یا کلید جهت‌نمای راست. برگشت به کلید قبلی با Shift+Tab یا کلید جهت‌نمای چپ. فشردن Space یا Enter برای انتخاب یک عنصر در ویرایشگر.' } ] }, { name: 'فرمان‌ها', items: [ { name: 'بازگشت به آخرین فرمان', legend: 'فشردن ${undo}' }, { name: 'انجام مجدد فرمان', legend: 'فشردن ${redo}' }, { name: 'فرمان درشت کردن متن', legend: 'فشردن ${bold}' }, { name: 'فرمان کج کردن متن', legend: 'فشردن ${italic}' }, { name: 'فرمان زیرخطدار کردن متن', legend: 'فشردن ${underline}' }, { name: 'فرمان پیوند دادن', legend: 'فشردن ${link}' }, { name: 'بستن نوار ابزار فرمان', legend: 'فشردن ${toolbarCollapse}' }, { name: 'دسترسی به فرمان محل تمرکز قبلی', legend: 'فشردن ${accessPreviousSpace} برای دسترسی به نزدیک‌ترین فضای قابل دسترسی تمرکز قبل از هشتک، برای مثال: دو عنصر مجاور HR -خط افقی-. تکرار کلید ترکیبی برای رسیدن به فضاهای تمرکز از راه دور.' }, { name: 'دسترسی به فضای دستور بعدی', legend: 'برای دسترسی به نزدیک‌ترین فضای تمرکز غیر قابل دسترس، ${accessNextSpace} را پس از علامت هشتک بفشارید، برای مثال: دو عنصر مجاور HR -خط افقی-. کلید ترکیبی را برای رسیدن به فضای تمرکز تکرار کنید.' }, { name: 'راهنمای دسترسی', legend: 'فشردن ${a11yHelp}' } ] } ], backspace: 'عقبگرد', tab: 'برگه', enter: 'ورود', shift: 'تعویض', ctrl: 'کنترل', alt: 'دگرساز', pause: 'توقف', capslock: 'Caps Lock', escape: 'گریز', pageUp: 'صفحه به بالا', pageDown: 'صفحه به پایین', end: 'پایان', home: 'خانه', leftArrow: 'پیکان چپ', upArrow: 'پیکان بالا', rightArrow: 'پیکان راست', downArrow: 'پیکان پایین', insert: 'ورود', 'delete': 'حذف', leftWindowKey: 'کلید چپ ویندوز', rightWindowKey: 'کلید راست ویندوز', selectKey: 'انتخاب کلید', numpad0: 'کلید شماره 0', numpad1: 'کلید شماره 1', numpad2: 'کلید شماره 2', numpad3: 'کلید شماره 3', numpad4: 'کلید شماره 4', numpad5: 'کلید شماره 5', numpad6: 'کلید شماره 6', numpad7: 'کلید شماره 7', numpad8: 'کلید شماره 8', numpad9: 'کلید شماره 9', multiply: 'ضرب', add: 'افزودن', subtract: 'تفریق', decimalPoint: 'نقطه‌ی اعشار', divide: 'جدا کردن', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Semicolon', equalSign: 'علامت تساوی', comma: 'کاما', dash: 'خط تیره', period: 'دوره', forwardSlash: 'Forward Slash', graveAccent: 'Grave Accent', openBracket: 'Open Bracket', backSlash: 'Backslash', closeBracket: 'Close Bracket', singleQuote: 'Single Quote' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/ku.js0000644000201500020150000001356514517055557025243 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'ku', { title: 'ڕێنمای لەبەردەستدابوون', contents: 'پێکهاتەی یارمەتی. کلیك ESC بۆ داخستنی ئەم دیالۆگه.', legend: [ { name: 'گشتی', items: [ { name: 'تووڵامرازی دەستكاریكەر', legend: 'کلیك ${toolbarFocus} بۆ ڕابەری تووڵامراز. بۆ گواستنەوەی پێشوو داهاتووی گرووپی تووڵامرازی داگرتنی کلیلی TAB لەگەڵ‌ SHIFT+TAB. بۆ گواستنەوەی پێشوو داهاتووی دووگمەی تووڵامرازی لەڕێی کلیلی تیری دەستی ڕاست یان کلیلی تیری دەستی چەپ. کلیکی کلیلی SPACE یان ENTER بۆ چالاککردنی دووگمەی تووڵامراز.' }, { name: 'دیالۆگی دەستكاریكەر', legend: 'Inside 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.' // MISSING }, { name: 'پێڕستی سەرنووسەر', legend: 'کلیك ${contextMenu} یان دوگمەی لیسته‌(Menu) بۆ کردنەوەی لیستەی دەق. بۆ چوونە هەڵبژاردەیەکی تر له‌ لیسته‌ کلیکی کلیلی TAB یان کلیلی تیری ڕوو لەخوارەوه‌ بۆ چوون بۆ هەڵبژاردەی پێشوو کلیکی کلیلی SHIFT+TAB یان کلیلی تیری ڕوو له‌ سەرەوە. داگرتنی کلیلی SPACE یان ENTER بۆ هەڵبژاردنی هەڵبژاردەی لیسته‌. بۆ کردنەوەی لقی ژێر لیسته‌ لەهەڵبژاردەی لیستە کلیکی کلیلی SPACE یان ENTER یان کلیلی تیری دەستی ڕاست. بۆ گەڕانەوه بۆ سەرەوەی لیسته‌ کلیکی کلیلی ESC یان کلیلی تیری دەستی چەپ. بۆ داخستنی لیستە کلیكی کلیلی ESC بکە.' }, { name: 'لیستی سنووقی سەرنووسەر', legend: 'لەناو سنوقی لیست, چۆن بۆ هەڵنبژاردەی لیستێکی تر کلیکی کلیلی TAB یان کلیلی تیری ڕوو لەخوار. چوون بۆ هەڵبژاردەی لیستی پێشوو کلیکی کلیلی SHIFT+TAB یان کلیلی تیری ڕوو لەسەرەوه‌. کلیکی کلیلی SPACE یان ENTER بۆ دیاریکردنی ‌هەڵبژاردەی لیست. کلیکی کلیلی ESC بۆ داخستنی سنوقی لیست.' }, { name: 'تووڵامرازی توخم', legend: 'کلیك ${elementsPathFocus} بۆ ڕابەری تووڵامرازی توخمەکان. چوون بۆ دوگمەی توخمێکی تر کلیکی کلیلی TAB یان کلیلی تیری دەستی ڕاست. چوون بۆ دوگمەی توخمی پێشوو کلیلی SHIFT+TAB یان کلیکی کلیلی تیری دەستی چەپ. داگرتنی کلیلی SPACE یان ENTER بۆ دیاریکردنی توخمەکه‌ لەسەرنووسه.' } ] }, { name: 'فەرمانەکان', items: [ { name: 'پووچکردنەوەی فەرمان', legend: 'کلیك ${undo}' }, { name: 'هەڵگەڕانەوەی فەرمان', legend: 'کلیك ${redo}' }, { name: 'فەرمانی دەقی قەڵەو', legend: 'کلیك ${bold}' }, { name: 'فەرمانی دەقی لار', legend: 'کلیك ${italic}' }, { name: 'فەرمانی ژێرهێڵ', legend: 'کلیك ${underline}' }, { name: 'فەرمانی به‌ستەر', legend: 'کلیك ${link}' }, { name: 'شاردەنەوەی تووڵامراز', legend: 'کلیك ${toolbarCollapse}' }, { name: 'چوونەناو سەرنجدانی پێشوی فەرمانی بۆشایی', legend: 'کلیک ${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.' }, { name: 'چوونەناو سەرنجدانی داهاتووی فەرمانی بۆشایی', legend: 'کلیک ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' }, { name: 'دەستپێگەیشتنی یارمەتی', legend: 'کلیك ${a11yHelp}' } ] } ], backspace: 'Backspace', tab: 'Tab', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Caps Lock', escape: 'Escape', pageUp: 'Page Up', pageDown: 'Page Down', end: 'End', home: 'Home', leftArrow: 'Left Arrow', upArrow: 'Up Arrow', rightArrow: 'Right Arrow', downArrow: 'Down Arrow', insert: 'Insert', 'delete': 'Delete', leftWindowKey: 'پەنجەرەی چەپ', rightWindowKey: 'پەنجەرەی ڕاست', selectKey: 'Select', numpad0: 'Numpad 0', // MISSING numpad1: '1', numpad2: '2', numpad3: '3', numpad4: '4', numpad5: '5', numpad6: '6', numpad7: '7', numpad8: '8', numpad9: '9', multiply: '*', add: '+', subtract: '-', decimalPoint: '.', divide: '/', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: ';', equalSign: '=', comma: ',', dash: '-', period: '.', forwardSlash: '/', graveAccent: '`', openBracket: '[', backSlash: '\\\\', closeBracket: '}', singleQuote: '\'' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/el.js0000644000201500020150000001652714517055557025225 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'el', { title: 'Οδηγίες Προσβασιμότητας', contents: 'Περιεχόμενα Βοήθειας. Πατήστε ESC για κλείσιμο.', legend: [ { name: 'Γενικά', items: [ { name: 'Εργαλειοθήκη Επεξεργαστή', legend: 'Πατήστε ${toolbarFocus} για να περιηγηθείτε στην γραμμή εργαλείων. Μετακινηθείτε ανάμεσα στις ομάδες της γραμμής εργαλείων με TAB και SHIFT+TAB. Μετακινηθείτε ανάμεσα στα κουμπιά εργαλείων με το ΔΕΞΙ ή ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να ενεργοποιήσετε το ενεργό κουμπί εργαλείου.' }, { name: 'Παράθυρο Διαλόγου Επεξεργαστή', legend: 'Inside 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.' // MISSING }, { name: 'Αναδυόμενο Μενού Επεξεργαστή', legend: 'Πατήστε ${contextMenu} ή APPLICATION KEY για να ανοίξετε το αναδυόμενο μενού. Μετά μετακινηθείτε στην επόμενη επιλογή του μενού με TAB ή ΚΑΤΩ ΒΕΛΑΚΙ. Μετακινηθείτε στην προηγούμενη επιλογή με SHIFT+TAB ή το ΠΑΝΩ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξτε το τρέχων στοιχείο. Ανοίξτε το αναδυόμενο μενού της τρέχουσας επιλογής με ΔΙΑΣΤΗΜΑ ή ENTER ή το ΔΕΞΙ ΒΕΛΑΚΙ. Μεταβείτε πίσω στο αρχικό στοιχείο μενού με το ESC ή το ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Κλείστε το αναδυόμενο μενού με ESC.' }, { name: 'Κουτί Λίστας Επεξεργαστών', legend: 'Μέσα σε ένα κουτί λίστας, μετακινηθείτε στο επόμενο στοιχείο με TAB ή ΚΑΤΩ ΒΕΛΑΚΙ. Μετακινηθείτε στο προηγούμενο στοιχείο με SHIFT+TAB ή το ΠΑΝΩ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξετε ένα στοιχείο. Πατήστε ESC για να κλείσετε το κουτί της λίστας.' }, { name: 'Μπάρα Διαδρομών Στοιχείων Επεξεργαστή', legend: 'Πατήστε ${elementsPathFocus} για να περιηγηθείτε στην μπάρα διαδρομών στοιχείων του επεξεργαστή. Μετακινηθείτε στο κουμπί του επόμενου στοιχείου με το TAB ή το ΔΕΞΙ ΒΕΛΑΚΙ. Μετακινηθείτε στο κουμπί του προηγούμενου στοιχείου με το SHIFT+TAB ή το ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξετε το στοιχείο στον επεξεργαστή.' } ] }, { name: 'Εντολές', items: [ { name: 'Εντολή αναίρεσης', legend: 'Πατήστε ${undo}' }, { name: 'Εντολή επανάληψης', legend: 'Πατήστε ${redo}' }, { name: 'Εντολή έντονης γραφής', legend: 'Πατήστε ${bold}' }, { name: 'Εντολή πλάγιας γραφής', legend: 'Πατήστε ${italic}' }, { name: 'Εντολή υπογράμμισης', legend: 'Πατήστε ${underline}' }, { name: 'Εντολή συνδέσμου', legend: 'Πατήστε ${link}' }, { name: 'Εντολή Σύμπτηξης Εργαλειοθήκης', legend: 'Πατήστε ${toolbarCollapse}' }, { name: 'Πρόσβαση στην προηγούμενη εντολή του χώρου εστίασης ', legend: 'Πατήστε ${accessPreviousSpace} για να έχετε πρόσβαση στον πιο κοντινό χώρο εστίασης πριν το δρομέα, για παράδειγμα: δύο παρακείμενα στοιχεία ΥΕ. Επαναλάβετε το συνδυασμό πλήκτρων για να φθάσετε στους χώρους μακρινής εστίασης. ' }, { name: 'Πρόσβαση στην επόμενη εντολή του χώρου εστίασης', legend: 'Πατήστε ${accessNextSpace} για να έχετε πρόσβαση στον πιο κοντινό χώρο εστίασης μετά το δρομέα, για παράδειγμα: δύο παρακείμενα στοιχεία ΥΕ. Επαναλάβετε το συνδυασμό πλήκτρων για τους χώρους μακρινής εστίασης. ' }, { name: 'Βοήθεια Προσβασιμότητας', legend: 'Πατήστε ${a11yHelp}' } ] } ], backspace: 'Backspace', tab: 'Tab', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Caps Lock', escape: 'Escape', pageUp: 'Page Up', pageDown: 'Page Down', end: 'End', home: 'Home', leftArrow: 'Αριστερό Βέλος', upArrow: 'Πάνω Βέλος', rightArrow: 'Δεξί Βέλος', downArrow: 'Κάτω Βέλος', insert: 'Insert ', 'delete': 'Delete', leftWindowKey: 'Αριστερό Πλήκτρο Windows', rightWindowKey: 'Δεξί Πλήκτρο Windows', selectKey: 'Πλήκτρο Select', numpad0: 'Αριθμητικό πληκτρολόγιο 0', numpad1: 'Αριθμητικό Πληκτρολόγιο 1', numpad2: 'Αριθμητικό πληκτρολόγιο 2', numpad3: 'Αριθμητικό πληκτρολόγιο 3', numpad4: 'Αριθμητικό πληκτρολόγιο 4', numpad5: 'Αριθμητικό πληκτρολόγιο 5', numpad6: 'Αριθμητικό πληκτρολόγιο 6', numpad7: 'Αριθμητικό πληκτρολόγιο 7', numpad8: 'Αριθμητικό πληκτρολόγιο 8', numpad9: 'Αριθμητικό πληκτρολόγιο 9', multiply: 'Πολλαπλασιασμός', add: 'Πρόσθεση', subtract: 'Αφαίρεση', decimalPoint: 'Υποδιαστολή', divide: 'Διαίρεση', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: '6', f7: '7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Ερωτηματικό', equalSign: 'Σύμβολο Ισότητας', comma: 'Κόμμα', dash: 'Παύλα', period: 'Τελεία', forwardSlash: 'Κάθετος', graveAccent: 'Βαρεία', openBracket: 'Άνοιγμα Παρένθεσης', backSlash: 'Ανάστροφη Κάθετος', closeBracket: 'Κλείσιμο Παρένθεσης', singleQuote: 'Απόστροφος' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/fi.js0000644000201500020150000001264714517055557025222 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'fi', { title: 'Saavutettavuus ohjeet', contents: 'Ohjeen sisällöt. Sulkeaksesi tämän dialogin paina ESC.', legend: [ { name: 'Yleinen', items: [ { name: 'Editorin työkalupalkki', legend: 'Paina ${toolbarFocus} siirtyäksesi työkalupalkkiin. Siirry seuraavaan ja edelliseen työkalupalkin ryhmään TAB ja SHIFT+TAB näppäimillä. Siirry seuraavaan ja edelliseen työkalupainikkeeseen käyttämällä NUOLI OIKEALLE tai NUOLI VASEMMALLE näppäimillä. Paina VÄLILYÖNTI tai ENTER näppäintä aktivoidaksesi työkalupainikkeen.' }, { name: 'Editorin dialogi', legend: 'Inside 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.' // MISSING }, { name: 'Editorin oheisvalikko', legend: 'Paina ${contextMenu} tai SOVELLUSPAINIKETTA avataksesi oheisvalikon. Liiku seuraavaan valikon vaihtoehtoon TAB tai NUOLI ALAS näppäimillä. Siirry edelliseen vaihtoehtoon SHIFT+TAB tai NUOLI YLÖS näppäimillä. Paina VÄLILYÖNTI tai ENTER valitaksesi valikon kohdan. Avataksesi nykyisen kohdan alivalikon paina VÄLILYÖNTI tai ENTER tai NUOLI OIKEALLE painiketta. Siirtyäksesi takaisin valikon ylemmälle tasolle paina ESC tai NUOLI vasemmalle. Oheisvalikko suljetaan ESC painikkeella.' }, { name: 'Editorin listalaatikko', legend: 'Listalaatikon sisällä siirry seuraavaan listan kohtaan TAB tai NUOLI ALAS painikkeilla. Siirry edelliseen listan kohtaan SHIFT+TAB tai NUOLI YLÖS painikkeilla. Paina VÄLILYÖNTI tai ENTER valitaksesi listan vaihtoehdon. Paina ESC sulkeaksesi listalaatikon.' }, { name: 'Editorin elementtipolun palkki', legend: 'Paina ${elementsPathFocus} siirtyäksesi elementtipolun palkkiin. Siirry seuraavaan elementtipainikkeeseen TAB tai NUOLI OIKEALLE painikkeilla. Siirry aiempaan painikkeeseen SHIFT+TAB tai NUOLI VASEMMALLE painikkeilla. Paina VÄLILYÖNTI tai ENTER valitaksesi elementin editorissa.' } ] }, { name: 'Komennot', items: [ { name: 'Peruuta komento', legend: 'Paina ${undo}' }, { name: 'Tee uudelleen komento', legend: 'Paina ${redo}' }, { name: 'Lihavoi komento', legend: 'Paina ${bold}' }, { name: 'Kursivoi komento', legend: 'Paina ${italic}' }, { name: 'Alleviivaa komento', legend: 'Paina ${underline}' }, { name: 'Linkki komento', legend: 'Paina ${link}' }, { name: 'Pienennä työkalupalkki komento', legend: 'Paina ${toolbarCollapse}' }, { name: 'Siirry aiempaan fokustilaan komento', legend: 'Paina ${accessPreviousSpace} siiryäksesi lähimpään kursorin edellä olevaan saavuttamattomaan fokustilaan, esimerkiksi: kaksi vierekkäistä HR elementtiä. Toista näppäinyhdistelmää päästäksesi kauempana oleviin fokustiloihin.' }, { name: 'Siirry seuraavaan fokustilaan komento', legend: 'Paina ${accessPreviousSpace} siiryäksesi lähimpään kursorin jälkeen olevaan saavuttamattomaan fokustilaan, esimerkiksi: kaksi vierekkäistä HR elementtiä. Toista näppäinyhdistelmää päästäksesi kauempana oleviin fokustiloihin.' }, { name: 'Saavutettavuus ohjeet', legend: 'Paina ${a11yHelp}' } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numeronäppäimistö 0', numpad1: 'Numeronäppäimistö 1', numpad2: 'Numeronäppäimistö 2', numpad3: 'Numeronäppäimistö 3', numpad4: 'Numeronäppäimistö 4', numpad5: 'Numeronäppäimistö 5', numpad6: 'Numeronäppäimistö 6', numpad7: 'Numeronäppäimistö 7', numpad8: 'Numeronäppäimistö 8', numpad9: 'Numeronäppäimistö 9', multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Puolipiste', equalSign: 'Equal Sign', // MISSING comma: 'Pilkku', dash: 'Dash', // MISSING period: 'Piste', forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/ru.js0000644000201500020150000001451614517055557025247 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'ru', { title: 'Горячие клавиши', contents: 'Помощь. Для закрытия этого окна нажмите ESC.', legend: [ { name: 'Основное', items: [ { name: 'Панель инструментов', legend: 'Нажмите ${toolbarFocus} для перехода к панели инструментов. Для перемещения между группами панели инструментов используйте TAB и SHIFT+TAB. Для перемещения между кнопками панели иструментов используйте кнопки ВПРАВО или ВЛЕВО. Нажмите ПРОБЕЛ или ENTER для запуска кнопки панели инструментов.' }, { name: 'Диалоги', legend: 'Inside 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.' // MISSING }, { name: 'Контекстное меню', legend: 'Нажмите ${contextMenu} или клавишу APPLICATION, чтобы открыть контекстное меню. Затем перейдите к следующему пункту меню с помощью TAB или стрелкой "ВНИЗ". Переход к предыдущей опции - SHIFT+TAB или стрелкой "ВВЕРХ". Нажмите SPACE, или ENTER, чтобы задействовать опцию меню. Открыть подменю текущей опции - SPACE или ENTER или стрелкой "ВПРАВО". Возврат к родительскому пункту меню - ESC или стрелкой "ВЛЕВО". Закрытие контекстного меню - ESC.' }, { name: 'Редактор списка', legend: 'Внутри окна списка, переход к следующему пункту списка - TAB или стрелкой "ВНИЗ". Переход к предыдущему пункту списка - SHIFT+TAB или стрелкой "ВВЕРХ". Нажмите SPACE, или ENTER, чтобы задействовать опцию списка. Нажмите ESC, чтобы закрыть окно списка.' }, { name: 'Путь к элементу', legend: 'Нажмите ${elementsPathFocus}, чтобы перейти к панели пути элементов. Переход к следующей кнопке элемента - TAB или стрелкой "ВПРАВО". Переход к предыдущей кнопку - SHIFT+TAB или стрелкой "ВЛЕВО". Нажмите SPACE, или ENTER, чтобы выбрать элемент в редакторе.' } ] }, { name: 'Команды', items: [ { name: 'Отменить', legend: 'Нажмите ${undo}' }, { name: 'Повторить', legend: 'Нажмите ${redo}' }, { name: 'Полужирный', legend: 'Нажмите ${bold}' }, { name: 'Курсив', legend: 'Нажмите ${italic}' }, { name: 'Подчеркнутый', legend: 'Нажмите ${underline}' }, { name: 'Гиперссылка', legend: 'Нажмите ${link}' }, { name: 'Свернуть панель инструментов', legend: 'Нажмите ${toolbarCollapse}' }, { name: 'Команды доступа к предыдущему фокусному пространству', legend: 'Нажмите ${accessPreviousSpace}, чтобы обратиться к ближайшему недостижимому фокусному пространству перед символом "^", например: два смежных HR элемента. Повторите комбинацию клавиш, чтобы достичь отдаленных фокусных пространств.' }, { name: 'Команды доступа к следующему фокусному пространству', legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' }, { name: 'Справка по горячим клавишам', legend: 'Нажмите ${a11yHelp}' } ] } ], backspace: 'Backspace', tab: 'Tab', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Caps Lock', escape: 'Esc', pageUp: 'Page Up', pageDown: 'Page Down', end: 'End', home: 'Home', leftArrow: 'Стрелка влево', upArrow: 'Стрелка вверх', rightArrow: 'Стрелка вправо', downArrow: 'Стрелка вниз', insert: 'Insert', 'delete': 'Delete', leftWindowKey: 'Левая клавиша Windows', rightWindowKey: 'Правая клавиша Windows', selectKey: 'Выбрать', numpad0: 'Цифра 0', numpad1: 'Цифра 1', numpad2: 'Цифра 2', numpad3: 'Цифра 3', numpad4: 'Цифра 4', numpad5: 'Цифра 5', numpad6: 'Цифра 6', numpad7: 'Цифра 7', numpad8: 'Цифра 8', numpad9: 'Цифра 9', multiply: 'Умножить', add: 'Плюс', subtract: 'Вычесть', decimalPoint: 'Десятичная точка', divide: 'Делить', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Точка с запятой', equalSign: 'Равно', comma: 'Запятая', dash: 'Тире', period: 'Точка', forwardSlash: 'Наклонная черта', graveAccent: 'Апостроф', openBracket: 'Открыть скобку', backSlash: 'Обратная наклонная черта', closeBracket: 'Закрыть скобку', singleQuote: 'Одинарная кавычка' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/gl.js0000644000201500020150000001161314517055557025216 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'gl', { title: 'Instrucións de accesibilidade', contents: 'Axuda. Para pechar este diálogo prema ESC.', legend: [ { name: 'Xeral', items: [ { name: 'Barra de ferramentas do editor', legend: 'Prema ${toolbarFocus} para navegar pola barra de ferramentas. Para moverse polos distintos grupos de ferramentas use as teclas TAB e MAIÚS+TAB. Para moverse polas distintas ferramentas use FRECHA DEREITA ou FRECHA ESQUERDA. Prema ESPAZO ou INTRO para activar o botón da barra de ferramentas.' }, { name: 'Editor de diálogo', legend: 'Inside 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.' // MISSING }, { name: 'Editor do menú contextual', legend: 'Prema ${contextMenu} ou a TECLA MENÚ para abrir o menú contextual. A seguir móvase á seguinte opción do menú con TAB ou FRECHA ABAIXO. Móvase á opción anterior con MAIÚS + TAB ou FRECHA ARRIBA. Prema ESPAZO ou INTRO para seleccionar a opción do menú. Abra o submenú da opción actual con ESPAZO ou INTRO ou FRECHA DEREITA. Regrese ao elemento principal do menú con ESC ou FRECHA ESQUERDA. Peche o menú contextual con ESC.' }, { name: 'Lista do editor', legend: 'Dentro dunha lista, móvase ao seguinte elemento da lista con TAB ou FRECHA ABAIXO. Móvase ao elemento anterior da lista con MAIÚS+TAB ou FRECHA ARRIBA. Prema ESPAZO ou INTRO para escoller a opción da lista. Prema ESC para pechar a lista.' }, { name: 'Barra da ruta ao elemento no editor', legend: 'Prema ${elementsPathFocus} para navegar ata os elementos da barra de ruta. Móvase ao seguinte elemento botón con TAB ou FRECHA DEREITA. Móvase ao botón anterior con MAIÚS+TAB ou FRECHA ESQUERDA. Prema ESPAZO ou INTRO para seleccionar o elemento no editor.' } ] }, { name: 'Ordes', items: [ { name: 'Orde «desfacer»', legend: 'Prema ${undo}' }, { name: 'Orde «refacer»', legend: 'Prema ${redo}' }, { name: 'Orde «negra»', legend: 'Prema ${bold}' }, { name: 'Orde «cursiva»', legend: 'Prema ${italic}' }, { name: 'Orde «subliñar»', legend: 'Prema ${underline}' }, { name: 'Orde «ligazón»', legend: 'Prema ${link}' }, { name: 'Orde «contraer a barra de ferramentas»', legend: 'Prema ${toolbarCollapse}' }, { name: 'Orde «acceder ao anterior espazo en foco»', legend: 'Prema ${accessPreviousSpace} para acceder ao espazo máis próximo de foco inalcanzábel anterior ao cursor, por exemplo: dous elementos HR adxacentes. Repita a combinación de teclas para chegar a espazos de foco distantes.' }, { name: 'Orde «acceder ao seguinte espazo en foco»', legend: 'Prema ${accessNextSpace} para acceder ao espazo máis próximo de foco inalcanzábel posterior ao cursor, por exemplo: dous elementos HR adxacentes. Repita a combinación de teclas para chegar a espazos de foco distantes.' }, { name: 'Axuda da accesibilidade', legend: 'Prema ${a11yHelp}' } ] } ], backspace: 'Ir atrás', tab: 'Tabulador', enter: 'Intro', shift: 'Maiús', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pausa', capslock: 'Bloq. Maiús', escape: 'Escape', pageUp: 'Páxina arriba', pageDown: 'Páxina abaixo', end: 'Fin', home: 'Inicio', leftArrow: 'Frecha esquerda', upArrow: 'Frecha arriba', rightArrow: 'Frecha dereita', downArrow: 'Frecha abaixo', insert: 'Inserir', 'delete': 'Supr', leftWindowKey: 'Tecla Windows esquerda', rightWindowKey: 'Tecla Windows dereita', selectKey: 'Escolla a tecla', numpad0: 'Tec. numérico 0', numpad1: 'Tec. numérico 1', numpad2: 'Tec. numérico 2', numpad3: 'Tec. numérico 3', numpad4: 'Tec. numérico 4', numpad5: 'Tec. numérico 5', numpad6: 'Tec. numérico 6', numpad7: 'Tec. numérico 7', numpad8: 'Tec. numérico 8', numpad9: 'Tec. numérico 9', multiply: 'Multiplicar', add: 'Sumar', subtract: 'Restar', decimalPoint: 'Punto decimal', divide: 'Dividir', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Bloq. num.', scrollLock: 'Bloq. despraz.', semiColon: 'Punto e coma', equalSign: 'Signo igual', comma: 'Coma', dash: 'Guión', period: 'Punto', forwardSlash: 'Barra inclinada', graveAccent: 'Acento grave', openBracket: 'Abrir corchete', backSlash: 'Barra invertida', closeBracket: 'Pechar corchete', singleQuote: 'Comiña simple' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/sr-latn.js0000644000201500020150000001263114517055557026175 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'sr-latn', { title: 'Accessibility Instructions', // MISSING contents: 'Help Contents. To close this dialog press ESC.', // MISSING legend: [ { name: 'Opšte', items: [ { name: 'Editor Toolbar', // MISSING legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING }, { name: 'Editor Dialog', // MISSING legend: 'Inside 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.' // MISSING }, { name: 'Editor Context Menu', // MISSING 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.' // MISSING }, { name: 'Editor List Box', // MISSING 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.' // MISSING }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'Commands', // MISSING items: [ { name: ' Undo command', // MISSING legend: 'Press ${undo}' // MISSING }, { name: ' Redo command', // MISSING legend: 'Press ${redo}' // MISSING }, { name: ' Bold command', // MISSING legend: 'Press ${bold}' // MISSING }, { name: ' Italic command', // MISSING legend: 'Press ${italic}' // MISSING }, { name: ' Underline command', // MISSING legend: 'Press ${underline}' // MISSING }, { name: ' Link command', // MISSING legend: 'Press ${link}' // MISSING }, { name: ' Toolbar Collapse command', // MISSING legend: 'Press ${toolbarCollapse}' // MISSING }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: ' Accessibility Help', // MISSING legend: 'Press ${a11yHelp}' // MISSING } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/sq.js0000644000201500020150000001151314517055557025236 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'sq', { title: 'Udhëzimet e Qasjes', contents: 'Përmbajtja ndihmëse. Për ta mbyllur dialogun shtyp ESC.', legend: [ { name: 'Të përgjithshme', items: [ { name: 'Shiriti i Redaktuesit', legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING }, { name: 'Dialogu i Redaktuesit', legend: 'Inside 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.' // MISSING }, { name: 'Editor Context Menu', // MISSING 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.' // MISSING }, { name: 'Editor List Box', // MISSING 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.' // MISSING }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'Komandat', items: [ { name: 'Rikthe komandën', legend: 'Shtyp ${undo}' }, { name: 'Ribëj komandën', legend: 'Shtyp ${redo}' }, { name: 'Komanda e trashjes së tekstit', legend: 'Shtyp ${bold}' }, { name: 'Komanda kursive', legend: 'Shtyp ${italic}' }, { name: 'Komanda e nënvijëzimit', legend: 'Shtyp ${underline}' }, { name: 'Komanda e Nyjes', legend: 'Shtyp ${link}' }, { name: ' Toolbar Collapse command', // MISSING legend: 'Shtyp ${toolbarCollapse}' }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: 'Ndihmë Qasjeje', legend: 'Shtyp ${a11yHelp}' } ] } ], backspace: 'Prapa', tab: 'Fletë', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Caps Lock', escape: 'Escape', pageUp: 'Page Up', pageDown: 'Page Down', end: 'End', home: 'Home', leftArrow: 'Shenja majtas', upArrow: 'Shenja sipër', rightArrow: 'Shenja djathtas', downArrow: 'Shenja poshtë', insert: 'Shto', 'delete': 'Grise', leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Shto', subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Semicolon', equalSign: 'Equal Sign', // MISSING comma: 'Presje', dash: 'vizë', period: 'Pikë', forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Hape kllapën', backSlash: 'Backslash', // MISSING closeBracket: 'Mbylle kllapën', singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/pt-br.js0000644000201500020150000001206114517055557025636 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'pt-br', { title: 'Instruções de Acessibilidade', contents: 'Conteúdo da Ajuda. Para fechar este diálogo pressione ESC.', legend: [ { name: 'Geral', items: [ { name: 'Barra de Ferramentas do Editor', legend: 'Pressione ${toolbarFocus} para navegar para a barra de ferramentas. Mova para o anterior ou próximo grupo de ferramentas com TAB e SHIFT+TAB. Mova para o anterior ou próximo botão com SETA PARA DIREITA or SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para ativar o botão da barra de ferramentas.' }, { name: 'Diálogo do Editor', legend: 'Dentro de um diálogo, pressione TAB para navegar para o próximo elemento. Pressione SHIFT+TAB para mover para o elemento anterior. Pressione ENTER ara enviar o diálogo. pressione ESC para cancelar o diálogo. Quando um diálogo tem múltiplas abas, a lista de abas pode ser acessada com ALT+F10 ou TAB, como parte da ordem de tabulação do diálogo. Com a lista de abas em foco, mova para a próxima aba e para a aba anterior com a SETA DIREITA ou SETA ESQUERDA, respectivamente.' }, { name: 'Menu de Contexto do Editor', legend: 'Pressione ${contextMenu} ou TECLA DE MENU para abrir o menu de contexto, então mova para a próxima opção com TAB ou SETA PARA BAIXO. Mova para a anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu. Abra o submenu da opção atual com ESPAÇO ou ENTER ou SETA PARA DIREITA. Volte para o menu pai com ESC ou SETA PARA ESQUERDA. Feche o menu de contexto com ESC.' }, { name: 'Caixa de Lista do Editor', legend: 'Dentro de uma caixa de lista, mova para o próximo item com TAB ou SETA PARA BAIXO. Mova para o item anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar uma opção na lista. Pressione ESC para fechar a caixa de lista.' }, { name: 'Barra de Caminho do Elementos do Editor', legend: 'Pressione ${elementsPathFocus} para a barra de caminho dos elementos. Mova para o próximo botão de elemento com TAB ou SETA PARA DIREITA. Mova para o botão anterior com SHIFT+TAB ou SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar o elemento no editor.' } ] }, { name: 'Comandos', items: [ { name: ' Comando Desfazer', legend: 'Pressione ${undo}' }, { name: ' Comando Refazer', legend: 'Pressione ${redo}' }, { name: ' Comando Negrito', legend: 'Pressione ${bold}' }, { name: ' Comando Itálico', legend: 'Pressione ${italic}' }, { name: ' Comando Sublinhado', legend: 'Pressione ${underline}' }, { name: ' Comando Link', legend: 'Pressione ${link}' }, { name: ' Comando Fechar Barra de Ferramentas', legend: 'Pressione ${toolbarCollapse}' }, { name: 'Acessar o comando anterior de spaço de foco', legend: 'Pressione ${accessNextSpace} para acessar o espaço de foco não alcançável mais próximo antes do cursor, por exemplo: dois elementos HR adjacentes. Repita a combinação de teclas para alcançar espaços de foco distantes.' }, { name: 'Acessar próximo fomando de spaço de foco', legend: 'Pressione ${accessNextSpace} para acessar o espaço de foco não alcançável mais próximo após o cursor, por exemplo: dois elementos HR adjacentes. Repita a combinação de teclas para alcançar espaços de foco distantes.' }, { name: ' Ajuda de Acessibilidade', legend: 'Pressione ${a11yHelp}' } ] } ], backspace: 'Tecla Backspace', tab: 'Tecla Tab', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Caps Lock', escape: 'Escape', pageUp: 'Page Up', pageDown: 'Page Down', end: 'End', home: 'Home', leftArrow: 'Seta à Esquerda', upArrow: 'Seta à Cima', rightArrow: 'Seta à Direita', downArrow: 'Seta à Baixo', insert: 'Insert', 'delete': 'Delete', leftWindowKey: 'Tecla do Windows Esquerda', rightWindowKey: 'Tecla do Windows Direita', selectKey: 'Tecla Selecionar', numpad0: '0 do Teclado Numérico', numpad1: '1 do Teclado Numérico', numpad2: '2 do Teclado Numérico', numpad3: '3 do Teclado Numérico', numpad4: '4 do Teclado Numérico', numpad5: '5 do Teclado Numérico', numpad6: '6 do Teclado Numérico', numpad7: '7 do Teclado Numérico', numpad8: '8 do Teclado Numérico', numpad9: '9 do Teclado Numérico', multiply: 'Multiplicar', add: 'Mais', subtract: 'Subtrair', decimalPoint: 'Ponto', divide: 'Dividir', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Ponto-e-vírgula', equalSign: 'Igual', comma: 'Vírgula', dash: 'Hífen', period: 'Ponto', forwardSlash: 'Barra', graveAccent: 'Acento Grave', openBracket: 'Abrir Conchetes', backSlash: 'Contra-barra', closeBracket: 'Fechar Colchetes', singleQuote: 'Aspas Simples' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/fo.js0000644000201500020150000001213014517055557025213 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'fo', { title: 'Accessibility Instructions', // MISSING contents: 'Help Contents. To close this dialog press ESC.', // MISSING legend: [ { name: 'General', // MISSING items: [ { name: 'Editor Toolbar', // MISSING legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING }, { name: 'Editor Dialog', // MISSING legend: 'Inside 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.' // MISSING }, { name: 'Editor Context Menu', // MISSING 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.' // MISSING }, { name: 'Editor List Box', // MISSING 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.' // MISSING }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'Commands', // MISSING items: [ { name: ' Undo command', // MISSING legend: 'Press ${undo}' // MISSING }, { name: ' Redo command', // MISSING legend: 'Press ${redo}' // MISSING }, { name: ' Bold command', // MISSING legend: 'Press ${bold}' // MISSING }, { name: ' Italic command', // MISSING legend: 'Press ${italic}' // MISSING }, { name: ' Underline command', // MISSING legend: 'Press ${underline}' // MISSING }, { name: ' Link command', // MISSING legend: 'Press ${link}' // MISSING }, { name: ' Toolbar Collapse command', // MISSING legend: 'Press ${toolbarCollapse}' // MISSING }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: ' Accessibility Help', // MISSING legend: 'Press ${a11yHelp}' // MISSING } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', numpad1: 'Numpad 1', numpad2: 'Numpad 2', numpad3: 'Numpad 3', numpad4: 'Numpad 4', numpad5: 'Numpad 5', numpad6: 'Numpad 6', numpad7: 'Numpad 7', numpad8: 'Numpad 8', numpad9: 'Numpad 9', multiply: 'Falda', add: 'Pluss', subtract: 'Frádráttar', decimalPoint: 'Decimal Point', // MISSING divide: 'Býta', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semikolon', equalSign: 'Javnatekn', comma: 'Komma', dash: 'Dash', // MISSING period: 'Punktum', forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/af.js0000644000201500020150000001144414517055557025204 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'af', { title: 'Toeganglikheid instruksies', contents: 'Hulp inhoud. Druk ESC om toe te maak.', legend: [ { name: 'Algemeen', items: [ { name: 'Bewerker balk', legend: 'Druk ${toolbarFocus} om op die werkbalk te land. Beweeg na die volgende en voorige wekrbalkgroep met TAB and SHIFT+TAB. Beweeg na die volgende en voorige werkbalkknop met die regter of linker pyl. Druk SPASIE of ENTER om die knop te bevestig.' }, { name: 'Bewerker dialoog', legend: 'Inside 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.' // MISSING }, { name: 'Bewerkerinhoudmenu', 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.' // MISSING }, { name: 'Editor List Box', // MISSING 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.' // MISSING }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'Commands', // MISSING items: [ { name: ' Undo command', // MISSING legend: 'Press ${undo}' // MISSING }, { name: ' Redo command', // MISSING legend: 'Press ${redo}' // MISSING }, { name: ' Bold command', // MISSING legend: 'Press ${bold}' // MISSING }, { name: ' Italic command', // MISSING legend: 'Press ${italic}' // MISSING }, { name: ' Underline command', // MISSING legend: 'Press ${underline}' // MISSING }, { name: ' Link command', // MISSING legend: 'Press ${link}' // MISSING }, { name: ' Toolbar Collapse command', // MISSING legend: 'Press ${toolbarCollapse}' // MISSING }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: ' Accessibility Help', // MISSING legend: 'Press ${a11yHelp}' // MISSING } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', alt: 'Alt', pause: 'Pouse', capslock: 'Hoofletterslot', escape: 'Ontsnap', pageUp: 'Blaaiop', pageDown: 'Blaaiaf', end: 'Einde', home: 'Tuis', leftArrow: 'Linkspyl', upArrow: 'Oppyl', rightArrow: 'Regterpyl', downArrow: 'Afpyl', insert: 'Toevoeg', 'delete': 'Verwyder', leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Nommerblok 0', numpad1: 'Nommerblok 1', numpad2: 'Nommerblok 2', numpad3: 'Nommerblok 3', numpad4: 'Nommerblok 4', numpad5: 'Nommerblok 5', numpad6: 'Nommerblok 6', numpad7: 'Nommerblok 7', numpad8: 'Nommerblok 8', numpad9: 'Nommerblok 9', multiply: 'Maal', add: 'Plus', subtract: 'Minus', decimalPoint: 'Desimaalepunt', divide: 'Gedeeldeur', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Nommervergrendel', scrollLock: 'Rolvergrendel', semiColon: 'Kommapunt', equalSign: 'Isgelykaan', comma: 'Komma', dash: 'Koppelteken', period: 'Punt', forwardSlash: 'Skuinsstreep', graveAccent: 'Aksentteken', openBracket: 'Oopblokhakkie', backSlash: 'Trustreep', closeBracket: 'Toeblokhakkie', singleQuote: 'Enkelaanhaalingsteken' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/hi.js0000644000201500020150000001264314517055557025220 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'hi', { title: 'Accessibility Instructions', // MISSING contents: 'Help Contents. To close this dialog press ESC.', // MISSING legend: [ { name: 'सामान्य', items: [ { name: 'Editor Toolbar', // MISSING legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING }, { name: 'Editor Dialog', // MISSING legend: 'Inside 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.' // MISSING }, { name: 'Editor Context Menu', // MISSING 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.' // MISSING }, { name: 'Editor List Box', // MISSING 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.' // MISSING }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'Commands', // MISSING items: [ { name: ' Undo command', // MISSING legend: 'Press ${undo}' // MISSING }, { name: ' Redo command', // MISSING legend: 'Press ${redo}' // MISSING }, { name: ' Bold command', // MISSING legend: 'Press ${bold}' // MISSING }, { name: ' Italic command', // MISSING legend: 'Press ${italic}' // MISSING }, { name: ' Underline command', // MISSING legend: 'Press ${underline}' // MISSING }, { name: ' Link command', // MISSING legend: 'Press ${link}' // MISSING }, { name: ' Toolbar Collapse command', // MISSING legend: 'Press ${toolbarCollapse}' // MISSING }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: ' Accessibility Help', // MISSING legend: 'Press ${a11yHelp}' // MISSING } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/km.js0000644000201500020150000001327614517055557025232 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'km', { title: 'Accessibility Instructions', // MISSING contents: 'មាតិកា​ជំនួយ។ ដើម្បី​បិទ​ផ្ទាំង​នេះ សូម​ចុច ESC ។', legend: [ { name: 'ទូទៅ', items: [ { name: 'របារ​ឧបករណ៍​កម្មវិធី​និពន្ធ', legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING }, { name: 'ផ្ទាំង​កម្មវិធីនិពន្ធ', legend: 'Inside 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.' // MISSING }, { name: 'ម៉ីនុយបរិបទអ្នកកែសម្រួល', 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.' // MISSING }, { name: 'ប្រអប់បញ្ជីអ្នកកែសម្រួល', 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.' // MISSING }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'ពាក្យបញ្ជា', items: [ { name: 'ការ​បញ្ជា​មិនធ្វើវិញ', legend: 'ចុច ${undo}' }, { name: 'ការបញ្ជា​ធ្វើវិញ', legend: 'ចុច ${redo}' }, { name: 'ការបញ្ជា​អក្សរ​ដិត', legend: 'ចុច ${bold}' }, { name: 'ការបញ្ជា​អក្សរ​ទ្រេត', legend: 'ចុច ${italic}' }, { name: 'ពាក្យបញ្ជា​បន្ទាត់​ពីក្រោម', legend: 'ចុច ${underline}' }, { name: 'ពាក្យបញ្ជា​តំណ', legend: 'ចុច ${link}' }, { name: ' Toolbar Collapse command', // MISSING legend: 'Press ${toolbarCollapse}' // MISSING }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: 'ជំនួយ​ពី​ភាព​ងាយស្រួល', legend: 'ជួយ ${a11yHelp}' } ] } ], backspace: 'លុបថយក្រោយ', tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'ផ្អាក', capslock: 'Caps Lock', // MISSING escape: 'ចាកចេញ', pageUp: 'ទំព័រ​លើ', pageDown: 'ទំព័រ​ក្រោម', end: 'ចុង', home: 'ផ្ទះ', leftArrow: 'ព្រួញ​ឆ្វេង', upArrow: 'ព្រួញ​លើ', rightArrow: 'ព្រួញ​ស្ដាំ', downArrow: 'ព្រួញ​ក្រោម', insert: 'បញ្ចូល', 'delete': 'លុប', leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'ជ្រើស​គ្រាប់​ចុច', numpad0: 'Numpad 0', numpad1: 'Numpad 1', numpad2: 'Numpad 2', numpad3: 'Numpad 3', numpad4: 'Numpad 4', numpad5: 'Numpad 5', numpad6: 'Numpad 6', numpad7: 'Numpad 7', numpad8: 'Numpad 8', numpad9: 'Numpad 9', multiply: 'គុណ', add: 'បន្ថែម', subtract: 'ដក', decimalPoint: 'ចំណុចទសភាគ', divide: 'ចែក', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', // MISSING scrollLock: 'បិទ​រំកិល', semiColon: 'ចុច​ក្បៀស', equalSign: 'សញ្ញា​អឺរ៉ូ', comma: 'ក្បៀស', dash: 'Dash', // MISSING period: 'ចុច', forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'តង្កៀប​បើក', backSlash: 'Backslash', // MISSING closeBracket: 'តង្កៀប​បិទ', singleQuote: 'បន្តក់​មួយ' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/nl.js0000644000201500020150000001151514517055557025226 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'nl', { title: 'Toegankelijkheidsinstructies', contents: 'Help-inhoud. Druk op ESC om dit dialoog te sluiten.', legend: [ { name: 'Algemeen', items: [ { name: 'Werkbalk tekstverwerker', legend: 'Druk op ${toolbarFocus} om naar de werkbalk te navigeren. Om te schakelen naar de volgende en vorige werkbalkgroep, gebruik TAB en SHIFT+TAB. Om te schakelen naar de volgende en vorige werkbalkknop, gebruik de PIJL RECHTS en PIJL LINKS. Druk op SPATIE of ENTER om een werkbalkknop te activeren.' }, { name: 'Dialoog tekstverwerker', legend: 'Inside 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.' // MISSING }, { name: 'Contextmenu tekstverwerker', legend: 'Druk op ${contextMenu} of APPLICATION KEY om het contextmenu te openen. Schakel naar de volgende menuoptie met TAB of PIJL OMLAAG. Schakel naar de vorige menuoptie met SHIFT+TAB of PIJL OMHOOG. Druk op SPATIE of ENTER om een menuoptie te selecteren. Op een submenu van de huidige optie met SPATIE, ENTER of PIJL RECHTS. Ga terug naar de bovenliggende menuoptie met ESC of PIJL LINKS. Sluit het contextmenu met ESC.' }, { name: 'Keuzelijst tekstverwerker', legend: 'In een keuzelijst, schakel naar het volgende item met TAB of PIJL OMLAAG. Schakel naar het vorige item met SHIFT+TAB of PIJL OMHOOG. Druk op SPATIE of ENTER om het item te selecteren. Druk op ESC om de keuzelijst te sluiten.' }, { name: 'Elementenpad werkbalk tekstverwerker', legend: 'Druk op ${elementsPathFocus} om naar het elementenpad te navigeren. Om te schakelen naar het volgende element, gebruik TAB of PIJL RECHTS. Om te schakelen naar het vorige element, gebruik SHIFT+TAB or PIJL LINKS. Druk op SPATIE of ENTER om een element te selecteren in de tekstverwerker.' } ] }, { name: 'Opdrachten', items: [ { name: 'Ongedaan maken opdracht', legend: 'Druk op ${undo}' }, { name: 'Opnieuw uitvoeren opdracht', legend: 'Druk op ${redo}' }, { name: 'Vetgedrukt opdracht', legend: 'Druk op ${bold}' }, { name: 'Cursief opdracht', legend: 'Druk op ${italic}' }, { name: 'Onderstrepen opdracht', legend: 'Druk op ${underline}' }, { name: 'Link opdracht', legend: 'Druk op ${link}' }, { name: 'Werkbalk inklappen opdracht', legend: 'Druk op ${toolbarCollapse}' }, { name: 'Ga naar vorige focus spatie commando', legend: 'Druk ${accessPreviousSpace} om toegang te verkrijgen tot de dichtstbijzijnde onbereikbare focus spatie voor de caret, bijvoorbeeld: twee aangrenzende HR elementen. Herhaal de toetscombinatie om de verste focus spatie te bereiken.' }, { name: 'Ga naar volgende focus spatie commando', legend: 'Druk ${accessNextSpace} om toegang te verkrijgen tot de dichtstbijzijnde onbereikbare focus spatie na de caret, bijvoorbeeld: twee aangrenzende HR elementen. Herhaal de toetscombinatie om de verste focus spatie te bereiken.' }, { name: 'Toegankelijkheidshulp', legend: 'Druk op ${a11yHelp}' } ] } ], backspace: 'Backspace', tab: 'Tab', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Caps Lock', escape: 'Escape', pageUp: 'Page Up', pageDown: 'Page Down', end: 'End', home: 'Home', leftArrow: 'Pijl naar links', upArrow: 'Pijl omhoog', rightArrow: 'Pijl naar rechts', downArrow: 'Pijl naar beneden', insert: 'Invoegen', 'delete': 'Verwijderen', leftWindowKey: 'Linker Windows-toets', rightWindowKey: 'Rechter Windows-toets', selectKey: 'Selecteer toets', numpad0: 'Numpad 0', numpad1: 'Numpad 1', numpad2: 'Numpad 2', numpad3: 'Numpad 3', numpad4: 'Numpad 4', numpad5: 'Numpad 5', numpad6: 'Numpad 6', numpad7: 'Numpad 7', numpad8: 'Numpad 8', numpad9: 'Numpad 9', multiply: 'Vermenigvuldigen', add: 'Toevoegen', subtract: 'Aftrekken', decimalPoint: 'Decimaalteken', divide: 'Delen', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Puntkomma', equalSign: 'Is gelijk-teken', comma: 'Komma', dash: 'Koppelteken', period: 'Punt', forwardSlash: 'Slash', graveAccent: 'Accent grave', openBracket: 'Vierkant haakje openen', backSlash: 'Backslash', closeBracket: 'Vierkant haakje sluiten', singleQuote: 'Apostrof' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/mn.js0000644000201500020150000001263414517055557025232 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'mn', { title: 'Accessibility Instructions', // MISSING contents: 'Help Contents. To close this dialog press ESC.', // MISSING legend: [ { name: 'Ерөнхий', items: [ { name: 'Editor Toolbar', // MISSING legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING }, { name: 'Editor Dialog', // MISSING legend: 'Inside 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.' // MISSING }, { name: 'Editor Context Menu', // MISSING 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.' // MISSING }, { name: 'Editor List Box', // MISSING 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.' // MISSING }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'Commands', // MISSING items: [ { name: ' Undo command', // MISSING legend: 'Press ${undo}' // MISSING }, { name: ' Redo command', // MISSING legend: 'Press ${redo}' // MISSING }, { name: ' Bold command', // MISSING legend: 'Press ${bold}' // MISSING }, { name: ' Italic command', // MISSING legend: 'Press ${italic}' // MISSING }, { name: ' Underline command', // MISSING legend: 'Press ${underline}' // MISSING }, { name: ' Link command', // MISSING legend: 'Press ${link}' // MISSING }, { name: ' Toolbar Collapse command', // MISSING legend: 'Press ${toolbarCollapse}' // MISSING }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: ' Accessibility Help', // MISSING legend: 'Press ${a11yHelp}' // MISSING } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/da.js0000644000201500020150000001111214517055557025172 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'da', { title: 'Tilgængelighedsinstrukser', contents: 'Onlinehjælp. For at lukke dette vindue klik ESC', legend: [ { name: 'Generelt', items: [ { name: 'Editor værktøjslinje', legend: 'Tryk ${toolbarFocus} for at navigere til værktøjslinjen. Flyt til næste eller forrige værktøjsline gruppe ved hjælp af TAB eller SHIFT+TAB. Flyt til næste eller forrige værktøjslinje knap med venstre- eller højre piltast. Tryk på SPACE eller ENTER for at aktivere værktøjslinje knappen.' }, { name: 'Editor dialogboks', legend: 'Inde i en dialogboks kan du, trykke på TAB for at navigere til næste element, trykke på SHIFT+TAB for at navigere til forrige element, trykke på ENTER for at afsende eller trykke på ESC for at lukke dialogboksen.\r\nNår en dialogboks har flere faner, fanelisten kan tilgås med ALT+F10 eller med TAB. Hvis fanelisten er i fokus kan du skifte til næste eller forrige tab, med højre- og venstre piltast.' }, { name: 'Editor Context Menu', // MISSING 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.' // MISSING }, { name: 'Editor List Box', // MISSING 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.' // MISSING }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'Kommandoer', items: [ { name: 'Fortryd kommando', legend: 'Klik på ${undo}' }, { name: 'Gentag kommando', legend: 'Klik ${redo}' }, { name: 'Fed kommando', legend: 'Klik ${bold}' }, { name: 'Kursiv kommando', legend: 'Klik ${italic}' }, { name: 'Understregnings kommando', legend: 'Klik ${underline}' }, { name: 'Link kommando', legend: 'Klik ${link}' }, { name: ' Toolbar Collapse command', // MISSING legend: 'Klik ${toolbarCollapse}' }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: 'Tilgængelighedshjælp', legend: 'Kilk ${a11yHelp}' } ] } ], backspace: 'Backspace', tab: 'Tab', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Caps Lock', escape: 'Escape', pageUp: 'Page Up', pageDown: 'Page Down', end: 'End', home: 'Home', leftArrow: 'Venstre pil', upArrow: 'Pil op', rightArrow: 'Højre pil', downArrow: 'Pil ned', insert: 'Insert', 'delete': 'Delete', leftWindowKey: 'Venstre Windows tast', rightWindowKey: 'Højre Windows tast', selectKey: 'Select-knap', numpad0: 'Numpad 0', numpad1: 'Numpad 1', numpad2: 'Numpad 2', numpad3: 'Numpad 3', numpad4: 'Numpad 4', numpad5: 'Numpad 5', numpad6: 'Numpad 6', numpad7: 'Numpad 7', numpad8: 'Numpad 8', numpad9: 'Numpad 9', multiply: 'Gange', add: 'Plus', subtract: 'Minus', decimalPoint: 'Komma', divide: 'Divider', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Semikolon', equalSign: 'Lighedstegn', comma: 'Komma', dash: 'Bindestreg', period: 'Punktum', forwardSlash: 'Skråstreg', graveAccent: 'Accent grave', openBracket: 'Start klamme', backSlash: 'Omvendt skråstreg', closeBracket: 'Slut klamme', singleQuote: 'Enkelt citationstegn' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/he.js0000644000201500020150000001274714517055557025221 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'he', { title: 'הוראות נגישות', contents: 'הוראות נגישות. לסגירה לחץ אסקייפ (ESC).', legend: [ { name: 'כללי', items: [ { name: 'סרגל הכלים', legend: 'לחץ על ${toolbarFocus} כדי לנווט לסרגל הכלים. עבור לכפתור הבא עם מקש הטאב (TAB) או חץ שמאלי. עבור לכפתור הקודם עם מקש השיפט (SHIFT) + טאב (TAB) או חץ ימני. לחץ רווח או אנטר (ENTER) כדי להפעיל את הכפתור הנבחר.' }, { name: 'דיאלוגים (חלונות תשאול)', legend: 'Inside 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.' // MISSING }, { name: 'תפריט ההקשר (Context Menu)', legend: 'לחץ ${contextMenu} או APPLICATION KEYכדי לפתוח את תפריט ההקשר. עבור לאפשרות הבאה עם טאב (TAB) או חץ למטה. עבור לאפשרות הקודמת עם שיפט (SHIFT) + טאב (TAB) או חץ למעלה. לחץ רווח או אנטר (ENTER) כדי לבחור את האפשרות. פתח את תת התפריט (Sub-menu) של האפשרות הנוכחית עם רווח או אנטר (ENTER) או חץ שמאלי. חזור לתפריט האב עם אסקייפ (ESC) או חץ שמאלי. סגור את תפריט ההקשר עם אסקייפ (ESC).' }, { name: 'תפריטים צפים (List boxes)', 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.' // MISSING }, { name: 'עץ אלמנטים (Elements Path)', legend: 'לחץ ${elementsPathFocus} כדי לנווט לעץ האלמנטים. עבור לפריט הבא עם טאב (TAB) או חץ ימני. עבור לפריט הקודם עם שיפט (SHIFT) + טאב (TAB) או חץ שמאלי. לחץ רווח או אנטר (ENTER) כדי לבחור את האלמנט בעורך.' } ] }, { name: 'פקודות', items: [ { name: ' ביטול צעד אחרון', legend: 'לחץ ${undo}' }, { name: ' חזרה על צעד אחרון', legend: 'לחץ ${redo}' }, { name: ' הדגשה', legend: 'לחץ ${bold}' }, { name: ' הטייה', legend: 'לחץ ${italic}' }, { name: ' הוספת קו תחתון', legend: 'לחץ ${underline}' }, { name: ' הוספת לינק', legend: 'לחץ ${link}' }, { name: ' כיווץ סרגל הכלים', legend: 'לחץ ${toolbarCollapse}' }, { name: 'גישה למיקום המיקוד הקודם', legend: 'לחץ ${accessPreviousSpace} כדי לגשת למיקום המיקוד הלא-נגיש הקרוב לפני הסמן, למשל בין שני אלמנטים סמוכים מסוג HR. חזור על צירוף מקשים זה כדי להגיע למקומות מיקוד רחוקים יותר.' }, { name: 'גישה למיקום המיקוד הבא', legend: 'לחץ ${accessNextSpace} כדי לגשת למיקום המיקוד הלא-נגיש הקרוב אחרי הסמן, למשל בין שני אלמנטים סמוכים מסוג HR. חזור על צירוף מקשים זה כדי להגיע למקומות מיקוד רחוקים יותר.' }, { name: ' הוראות נגישות', legend: 'לחץ ${a11yHelp}' } ] } ], backspace: 'Backspace', tab: 'Tab', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Caps Lock', escape: 'Escape', pageUp: 'Page Up', pageDown: 'Page Down', end: 'End', home: 'Home', leftArrow: 'חץ שמאלה', upArrow: 'חץ למעלה', rightArrow: 'חץ ימינה', downArrow: 'חץ למטה', insert: 'הכנס', 'delete': 'מחק', leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'בחר מקש', numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'הוסף', subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'סלאש', graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'סלאש הפוך', closeBracket: 'Close Bracket', // MISSING singleQuote: 'ציטוט יחיד' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/ca.js0000644000201500020150000001177114517055557025204 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'ca', { title: 'Instruccions d\'Accessibilitat', contents: 'Continguts de l\'Ajuda. Per tancar aquest quadre de diàleg premi ESC.', legend: [ { name: 'General', items: [ { name: 'Editor de barra d\'eines', legend: 'Premi ${toolbarFocus} per desplaçar-se per la barra d\'eines. Vagi en el següent i anterior grup de barra d\'eines amb TAB i SHIFT+TAB. Vagi en el següent i anterior botó de la barra d\'eines amb RIGHT ARROW i LEFT ARROW. Premi SPACE o ENTER per activar el botó de la barra d\'eines.' }, { name: 'Editor de quadre de diàleg', legend: 'Inside 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.' // MISSING }, { name: 'Editor de menú contextual', legend: 'Premi ${contextMenu} o APPLICATION KEY per obrir el menú contextual. Després desplacis a la següent opció del menú amb TAB o DOWN ARROW. Desplacis a l\'anterior opció amb SHIFT+TAB o UP ARROW. Premi SPACE o ENTER per seleccionar l\'opció del menú. Obri el submenú de l\'actual opció utilitzant SPACE o ENTER o RIGHT ARROW. Pot tornar a l\'opció del menú pare amb ESC o LEFT ARROW. Tanqui el menú contextual amb ESC.' }, { name: 'Editor de caixa de llista', legend: 'Dins d\'un quadre de llista, desplacis al següent element de la llista amb TAB o DOWN ARROW. Desplacis a l\'anterior element de la llista amb SHIFT+TAB o UP ARROW. Premi SPACE o ENTER per seleccionar l\'opció de la llista. Premi ESC per tancar el quadre de llista.' }, { name: 'Editor de barra de ruta de l\'element', legend: 'Premi ${elementsPathFocus} per anar als elements de la barra de ruta. Desplacis al botó de l\'element següent amb TAB o RIGHT ARROW. Desplacis a l\'anterior botó amb SHIFT+TAB o LEFT ARROW. Premi SPACE o ENTER per seleccionar l\'element a l\'editor.' } ] }, { name: 'Ordres', items: [ { name: 'Desfer ordre', legend: 'Premi ${undo}' }, { name: 'Refer ordre', legend: 'Premi ${redo}' }, { name: 'Ordre negreta', legend: 'Premi ${bold}' }, { name: 'Ordre cursiva', legend: 'Premi ${italic}' }, { name: 'Ordre subratllat', legend: 'Premi ${underline}' }, { name: 'Ordre enllaç', legend: 'Premi ${link}' }, { name: 'Ordre amagar barra d\'eines', legend: 'Premi ${toolbarCollapse}' }, { name: 'Ordre per accedir a l\'anterior espai enfocat', legend: 'Premi ${accessPreviousSpace} per accedir a l\'enfocament d\'espai més proper inabastable abans del símbol d\'intercalació, per exemple: dos elements HR adjacents. Repetiu la combinació de tecles per arribar a enfocaments d\'espais distants.' }, { name: 'Ordre per accedir al següent espai enfocat', legend: 'Premi ${accessNextSpace} per accedir a l\'enfocament d\'espai més proper inabastable després del símbol d\'intercalació, per exemple: dos elements HR adjacents. Repetiu la combinació de tecles per arribar a enfocaments d\'espais distants.' }, { name: 'Ajuda d\'accessibilitat', legend: 'Premi ${a11yHelp}' } ] } ], backspace: 'Retrocés', tab: 'Tabulació', enter: 'Intro', shift: 'Majúscules', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pausa', capslock: 'Bloqueig de majúscules', escape: 'Escape', pageUp: 'Pàgina Amunt', pageDown: 'Pàgina Avall', end: 'Fi', home: 'Inici', leftArrow: 'Fletxa Esquerra', upArrow: 'Fletxa Amunt', rightArrow: 'Fletxa Dreta', downArrow: 'Fletxa Avall', insert: 'Inserir', 'delete': 'Eliminar', leftWindowKey: 'Tecla Windows Esquerra', rightWindowKey: 'Tecla Windows Dreta', selectKey: 'Tecla Seleccionar', numpad0: 'Teclat Numèric 0', numpad1: 'Teclat Numèric 1', numpad2: 'Teclat Numèric 2', numpad3: 'Teclat Numèric 3', numpad4: 'Teclat Numèric 4', numpad5: 'Teclat Numèric 5', numpad6: 'Teclat Numèric 6', numpad7: 'Teclat Numèric 7', numpad8: 'Teclat Numèric 8', numpad9: 'Teclat Numèric 9', multiply: 'Multiplicació', add: 'Suma', subtract: 'Resta', decimalPoint: 'Punt Decimal', divide: 'Divisió', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Bloqueig Teclat Numèric', scrollLock: 'Bloqueig de Desplaçament', semiColon: 'Punt i Coma', equalSign: 'Símbol Igual', comma: 'Coma', dash: 'Guió', period: 'Punt', forwardSlash: 'Barra Diagonal', graveAccent: 'Accent Obert', openBracket: 'Claudàtor Obert', backSlash: 'Barra Invertida', closeBracket: 'Claudàtor Tancat', singleQuote: 'Cometa Simple' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/gu.js0000644000201500020150000001275614517055557025240 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'gu', { title: 'એક્ક્ષેબિલિટી ની વિગતો', contents: 'હેલ્પ. આ બંધ કરવા ESC દબાવો.', legend: [ { name: 'જનરલ', items: [ { name: 'એડિટર ટૂલબાર', legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING }, { name: 'એડિટર ડાયલોગ', legend: 'Inside 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.' // MISSING }, { name: 'Editor Context Menu', // MISSING 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.' // MISSING }, { name: 'Editor List Box', // MISSING 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.' // MISSING }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'કમાંડસ', items: [ { name: 'અન્ડું કમાંડ', legend: '$ દબાવો {undo}' }, { name: 'ફરી કરો કમાંડ', legend: '$ દબાવો {redo}' }, { name: 'બોલ્દનો કમાંડ', legend: '$ દબાવો {bold}' }, { name: ' Italic command', // MISSING legend: 'Press ${italic}' // MISSING }, { name: ' Underline command', // MISSING legend: 'Press ${underline}' // MISSING }, { name: ' Link command', // MISSING legend: 'Press ${link}' // MISSING }, { name: ' Toolbar Collapse command', // MISSING legend: 'Press ${toolbarCollapse}' // MISSING }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: ' Accessibility Help', // MISSING legend: 'Press ${a11yHelp}' // MISSING } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/_translationstatus.txt0000644000201500020150000000151414517055557030757 0ustar puckpuckCopyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license cs.js Found: 30 Missing: 0 cy.js Found: 30 Missing: 0 da.js Found: 12 Missing: 18 de.js Found: 30 Missing: 0 el.js Found: 25 Missing: 5 eo.js Found: 30 Missing: 0 fa.js Found: 30 Missing: 0 fi.js Found: 30 Missing: 0 fr.js Found: 30 Missing: 0 gu.js Found: 12 Missing: 18 he.js Found: 30 Missing: 0 it.js Found: 30 Missing: 0 mk.js Found: 5 Missing: 25 nb.js Found: 30 Missing: 0 nl.js Found: 30 Missing: 0 no.js Found: 30 Missing: 0 pt-br.js Found: 30 Missing: 0 ro.js Found: 6 Missing: 24 tr.js Found: 30 Missing: 0 ug.js Found: 27 Missing: 3 vi.js Found: 6 Missing: 24 zh-cn.js Found: 30 Missing: 0 rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/th.js0000644000201500020150000001316514517055557025233 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'th', { title: 'Accessibility Instructions', // MISSING contents: 'Help Contents. To close this dialog press ESC.', // MISSING legend: [ { name: 'ทั่วไป', items: [ { name: 'แถบเครื่องมือสำหรับเครื่องมือช่วยพิมพ์', legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING }, { name: 'Editor Dialog', // MISSING legend: 'Inside 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.' // MISSING }, { name: 'Editor Context Menu', // MISSING 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.' // MISSING }, { name: 'Editor List Box', // MISSING 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.' // MISSING }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'คำสั่ง', items: [ { name: 'เลิกทำคำสั่ง', legend: 'วาง ${undo}' }, { name: 'คำสั่งสำหรับทำซ้ำ', legend: 'วาง ${redo}' }, { name: 'คำสั่งสำหรับตัวหนา', legend: 'วาง ${bold}' }, { name: 'คำสั่งสำหรับตัวเอียง', legend: 'วาง ${italic}' }, { name: 'คำสั่งสำหรับขีดเส้นใต้', legend: 'วาง ${underline}' }, { name: 'คำสั่งสำหรับลิงก์', legend: 'วาง ${link}' }, { name: ' Toolbar Collapse command', // MISSING legend: 'Press ${toolbarCollapse}' // MISSING }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: ' Accessibility Help', // MISSING legend: 'Press ${a11yHelp}' // MISSING } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/de.js0000644000201500020150000001173614517055557025212 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'de', { title: 'Barrierefreiheitinformationen', contents: 'Hilfeinhalt. Um den Dialog zu schliessen die Taste ESC drücken.', legend: [ { name: 'Allgemein', items: [ { name: 'Editorwerkzeugleiste', legend: 'Drücken Sie ${toolbarFocus} auf der Symbolleiste. Gehen Sie zur nächsten oder vorherigen Symbolleistengruppe mit TAB und SHIFT+TAB. Gehen Sie zur nächsten oder vorherigen Symbolleiste auf die Schaltfläche mit dem RECHTS- oder LINKS-Pfeil. Drücken Sie die Leertaste oder Eingabetaste, um die Schaltfläche in der Symbolleiste aktivieren.' }, { name: 'Editordialog', legend: 'Inside 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.' // MISSING }, { name: 'Editor-Kontextmenü', legend: 'Dürcken Sie ${contextMenu} oder die Anwendungstaste um das Kontextmenü zu öffnen. Man kann die Pfeiltasten zum Wechsel benutzen. Mit der Leertaste oder der Enter-Taste kann man den Menüpunkt aufrufen. Schliessen Sie das Kontextmenü mit der ESC-Taste.' }, { name: 'Editor-Listenbox', legend: 'Innerhalb einer Listenbox kann man mit der TAB-Taste oder den Pfeilrunter-Taste den nächsten Menüeintrag wählen. Mit der SHIFT+TAB Tastenkombination oder der Pfeilhoch-Taste gelangt man zum vorherigen Menüpunkt. Mit der Leertaste oder Enter kann man den Menüpunkt auswählen. Drücken Sie ESC zum Verlassen des Menüs.' }, { name: 'Editor-Elementpfadleiste', legend: 'Drücken Sie ${elementsPathFocus} um sich durch die Pfadleiste zu bewegen. Um zum nächsten Element zu gelangen drücken Sie TAB oder die Pfeilrechts-Taste. Zum vorherigen Element gelangen Sie mit der SHIFT+TAB oder der Pfeillinks-Taste. Drücken Sie die Leertaste oder Enter um das Element auszuwählen.' } ] }, { name: 'Befehle', items: [ { name: 'Rückgängig-Befehl', legend: 'Drücken Sie ${undo}' }, { name: 'Wiederherstellen-Befehl', legend: 'Drücken Sie ${redo}' }, { name: 'Fettschrift-Befehl', legend: 'Drücken Sie ${bold}' }, { name: 'Kursiv-Befehl', legend: 'Drücken Sie ${italic}' }, { name: 'Unterstreichen-Befehl', legend: 'Drücken Sie ${underline}' }, { name: 'Link-Befehl', legend: 'Drücken Sie ${link}' }, { name: 'Werkzeugleiste einklappen-Befehl', legend: 'Drücken Sie ${toolbarCollapse}' }, { name: 'Zugang bisheriger Fokussierung Raumbefehl ', legend: 'Drücken Sie ${accessPreviousSpace} auf den am nächsten nicht erreichbar Fokus-Abstand vor die Einfügemarke zugreifen: zwei benachbarte HR-Elemente. Wiederholen Sie die Tastenkombination um entfernte Fokusräume zu erreichen. ' }, { name: 'Zugang nächster Schwerpunkt Raumbefehl ', legend: 'Drücken Sie $ { accessNextSpace }, um den nächsten unerreichbar Fokus Leerzeichen nach dem Cursor zum Beispiel auf: zwei benachbarten HR Elemente. Wiederholen Sie die Tastenkombination zum fernen Fokus Bereiche zu erreichen. ' }, { name: 'Eingabehilfen', legend: 'Drücken Sie ${a11yHelp}' } ] } ], backspace: 'Rücktaste', tab: 'Tab', enter: 'Eingabe', shift: 'Umschalt', ctrl: 'Strg', alt: 'Alt', pause: 'Pause', capslock: 'Feststell', escape: 'Escape', pageUp: 'Bild auf', pageDown: 'Bild ab', end: 'Ende', home: 'Pos1', leftArrow: 'Linke Pfeiltaste', upArrow: 'Obere Pfeiltaste', rightArrow: 'Rechte Pfeiltaste', downArrow: 'Untere Pfeiltaste', insert: 'Einfügen', 'delete': 'Entfernen', leftWindowKey: 'Linke Windowstaste', rightWindowKey: 'Rechte Windowstaste', selectKey: 'Taste auswählen', numpad0: 'Ziffernblock 0', numpad1: 'Ziffernblock 1', numpad2: 'Ziffernblock 2', numpad3: 'Ziffernblock 3', numpad4: 'Ziffernblock 4', numpad5: 'Ziffernblock 5', numpad6: 'Ziffernblock 6', numpad7: 'Ziffernblock 7', numpad8: 'Ziffernblock 8', numpad9: 'Ziffernblock 9', multiply: 'Multiplizieren', add: 'Addieren', subtract: 'Subtrahieren', decimalPoint: 'Punkt', divide: 'Dividieren', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Ziffernblock feststellen', scrollLock: 'Rollen', semiColon: 'Semikolon', equalSign: 'Gleichheitszeichen', comma: 'Komma', dash: 'Bindestrich', period: 'Punkt', forwardSlash: 'Schrägstrich', graveAccent: 'Gravis', openBracket: 'Öffnende eckige Klammer', backSlash: 'Rückwärtsgewandter Schrägstrich', closeBracket: 'Schließende eckige Klammer', singleQuote: 'Einfaches Anführungszeichen' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/tt.js0000644000201500020150000001161714517055557025247 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'tt', { title: 'Accessibility Instructions', // MISSING contents: 'Help Contents. To close this dialog press ESC.', // MISSING legend: [ { name: 'Гомуми', items: [ { name: 'Editor Toolbar', // MISSING legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING }, { name: 'Editor Dialog', // MISSING legend: 'Inside 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.' // MISSING }, { name: 'Editor Context Menu', // MISSING 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.' // MISSING }, { name: 'Editor List Box', // MISSING 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.' // MISSING }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'Командалар', items: [ { name: 'Кайтару', legend: '${undo} басыгыз' }, { name: 'Кабатлау', legend: '${redo} басыгыз' }, { name: 'Калын', legend: '${bold} басыгыз' }, { name: 'Курсив', legend: '${italic} басыгыз' }, { name: 'Астына сызылган', legend: '${underline} басыгыз' }, { name: 'Сылталама', legend: '${link} басыгыз' }, { name: ' Toolbar Collapse command', // MISSING legend: '${toolbarCollapse} басыгыз' }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: ' Accessibility Help', // MISSING legend: '${a11yHelp} басыгыз' } ] } ], backspace: 'Кайтару', tab: 'Tab', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Тыныш', capslock: 'Caps Lock', escape: 'Escape', pageUp: 'Page Up', pageDown: 'Page Down', end: 'End', home: 'Home', leftArrow: 'Сул якка ук', upArrow: 'Өскә таба ук', rightArrow: 'Уң якка ук', downArrow: 'Аска таба ук', insert: 'Өстәү', 'delete': 'Бетерү', leftWindowKey: 'Сул Windows төймəсе', rightWindowKey: 'Уң Windows төймəсе', selectKey: 'Select төймəсе', numpad0: 'Numpad 0', numpad1: 'Numpad 1', numpad2: 'Numpad 2', numpad3: 'Numpad 3', numpad4: 'Numpad 4', numpad5: 'Numpad 5', numpad6: 'Numpad 6', numpad7: 'Numpad 7', numpad8: 'Numpad 8', numpad9: 'Numpad 9', multiply: 'Тапкырлау', add: 'Кушу', subtract: 'Алу', decimalPoint: 'Унарлы нокта', divide: 'Бүлү', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Нокталы өтер', equalSign: 'Тигезлек билгесе', comma: 'Өтер', dash: 'Сызык', period: 'Дәрәҗә', forwardSlash: 'Кыек сызык', graveAccent: 'Гравис', openBracket: 'Җәя ачу', backSlash: 'Кире кыек сызык', closeBracket: 'Җәя ябу', singleQuote: 'Бер иңле куштырнаклар' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/vi.js0000644000201500020150000001326714517055557025241 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'vi', { title: 'Hướng dẫn trợ năng', contents: 'Nội dung Hỗ trợ. Nhấn ESC để đóng hộp thoại.', legend: [ { name: 'Chung', items: [ { name: 'Thanh công cụ soạn thảo', legend: 'Nhấn ${toolbarFocus} để điều hướng đến thanh công cụ. Nhấn TAB và SHIFT+TAB để chuyển đến nhóm thanh công cụ khác. Nhấn MŨI TÊN PHẢI hoặc MŨI TÊN TRÁI để chuyển sang nút khác trên thanh công cụ. Nhấn PHÍM CÁCH hoặc ENTER để kích hoạt nút trên thanh công cụ.' }, { name: 'Hộp thoại Biên t', legend: 'Inside 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.' // MISSING }, { name: 'Trình đơn Ngữ cảnh cBộ soạn thảo', legend: 'Nhấn ${contextMenu} hoặc PHÍM ỨNG DỤNG để mở thực đơn ngữ cảnh. Sau đó nhấn TAB hoặc MŨI TÊN XUỐNG để di chuyển đến tuỳ chọn tiếp theo của thực đơn. Nhấn SHIFT+TAB hoặc MŨI TÊN LÊN để quay lại tuỳ chọn trước. Nhấn DẤU CÁCH hoặc ENTER để chọn tuỳ chọn của thực đơn. Nhấn DẤU CÁCH hoặc ENTER hoặc MŨI TÊN SANG PHẢI để mở thực đơn con của tuỳ chọn hiện tại. Nhấn ESC hoặc MŨI TÊN SANG TRÁI để quay trở lại thực đơn gốc. Nhấn ESC để đóng thực đơn ngữ cảnh.' }, { name: 'Hộp danh sách trình biên tập', legend: 'Trong một danh sách chọn, di chuyển đối tượng tiếp theo với phím TAB hoặc phím mũi tên hướng xuống. Di chuyển đến đối tượng trước đó bằng cách nhấn tổ hợp phím SHIFT+TAB hoặc mũi tên hướng lên. Phím khoảng cách hoặc phím ENTER để chọn các tùy chọn trong danh sách. Nhấn phím ESC để đóng lại danh sách chọn.' }, { name: 'Thanh đường dẫn các đối tượng', legend: 'Nhấn ${elementsPathFocus} để điều hướng các đối tượng trong thanh đường dẫn. Di chuyển đến đối tượng tiếp theo bằng phím TAB hoặc phím mũi tên bên phải. Di chuyển đến đối tượng trước đó bằng tổ hợp phím SHIFT+TAB hoặc phím mũi tên bên trái. Nhấn phím khoảng cách hoặc ENTER để chọn đối tượng trong trình soạn thảo.' } ] }, { name: 'Lệnh', items: [ { name: 'Làm lại lện', legend: 'Ấn ${undo}' }, { name: 'Làm lại lệnh', legend: 'Ấn ${redo}' }, { name: 'Lệnh in đậm', legend: 'Ấn ${bold}' }, { name: 'Lệnh in nghiêng', legend: 'Ấn ${italic}' }, { name: 'Lệnh gạch dưới', legend: 'Ấn ${underline}' }, { name: 'Lệnh liên kết', legend: 'Nhấn ${link}' }, { name: 'Lệnh hiển thị thanh công cụ', legend: 'Nhấn${toolbarCollapse}' }, { name: 'Truy cập đến lệnh tập trung vào khoảng cách trước đó', legend: 'Ấn ${accessPreviousSpace} để truy cập đến phần tập trung khoảng cách sau phần còn sót lại của khoảng cách gần nhất vốn không tác động đến được , thí dụ: hai yếu tố điều chỉnh HR. Lặp lại các phím kết họep này để vươn đến phần khoảng cách.' }, { name: 'Truy cập phần đối tượng lệnh khoảng trống', legend: 'Ấn ${accessNextSpace} để truy cập đến phần tập trung khoảng cách sau phần còn sót lại của khoảng cách gần nhất vốn không tác động đến được , thí dụ: hai yếu tố điều chỉnh HR. Lặp lại các phím kết họep này để vươn đến phần khoảng cách.' }, { name: 'Trợ giúp liên quan', legend: 'Nhấn ${a11yHelp}' } ] } ], backspace: 'Phím Backspace', tab: 'Phím Tab', enter: 'Phím Tab', shift: 'Phím Shift', ctrl: 'Phím Ctrl', alt: 'Phím Alt', pause: 'Phím Pause', capslock: 'Phím Caps Lock', escape: 'Phím Escape', pageUp: 'Phím Page Up', pageDown: 'Phím Page Down', end: 'Phím End', home: 'Phím Home', leftArrow: 'Phím Left Arrow', upArrow: 'Phím Up Arrow', rightArrow: 'Phím Right Arrow', downArrow: 'Phím Down Arrow', insert: 'Chèn', 'delete': 'Xóa', leftWindowKey: 'Phím Left Windows', rightWindowKey: 'Phím Right Windows ', selectKey: 'Chọn phím', numpad0: 'Phím 0', numpad1: 'Phím 1', numpad2: 'Phím 2', numpad3: 'Phím 3', numpad4: 'Phím 4', numpad5: 'Phím 5', numpad6: 'Phím 6', numpad7: 'Phím 7', numpad8: 'Phím 8', numpad9: 'Phím 9', multiply: 'Nhân', add: 'Thêm', subtract: 'Trừ', decimalPoint: 'Điểm số thập phân', divide: 'Chia', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Dấu chấm phẩy', equalSign: 'Đăng nhập bằng', comma: 'Dấu phẩy', dash: 'Dấu gạch ngang', period: 'Phím .', forwardSlash: 'Phím /', graveAccent: 'Phím `', openBracket: 'Open Bracket', backSlash: 'Dấu gạch chéo ngược', closeBracket: 'Gần giá đỡ', singleQuote: 'Trích dẫn' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/cs.js0000644000201500020150000001233114517055557025217 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'cs', { title: 'Instrukce pro přístupnost', contents: 'Obsah nápovědy. Pro uzavření tohoto dialogu stiskněte klávesu ESC.', legend: [ { name: 'Obecné', items: [ { name: 'Panel nástrojů editoru', legend: 'Stiskněte${toolbarFocus} k procházení panelu nástrojů. Přejděte na další a předchozí skupiny pomocí TAB a SHIFT+TAB. Přechod na další a předchozí tlačítko panelu nástrojů je pomocí ŠIPKA VPRAVO nebo ŠIPKA VLEVO. Stisknutím mezerníku nebo klávesy ENTER tlačítko aktivujete.' }, { name: 'Dialogové okno editoru', legend: 'Uvnitř dialogového okna stiskněte TAB pro přesunutí na další prvek okna, stiskněte SHIFT+TAB pro přesun na předchozí prvek okna, stiskněte ENTER pro odeslání dialogu, stiskněte ESC pro jeho zrušení. Pro dialogová okna, která mají mnoho karet stiskněte ALT+F10 pro zaměření seznamu karet, nebo TAB, pro posun podle pořadí karet.Při zaměření seznamu karet se můžete jimi posouvat pomocí ŠIPKY VPRAVO a VLEVO.' }, { name: 'Kontextové menu editoru', legend: 'Stiskněte ${contextMenu} nebo klávesu APPLICATION k otevření kontextového menu. Pak se přesuňte na další možnost menu pomocí TAB nebo ŠIPKY DOLŮ. Přesuňte se na předchozí možnost pomocí SHIFT+TAB nebo ŠIPKY NAHORU. Stiskněte MEZERNÍK nebo ENTER pro zvolení možnosti menu. Podmenu současné možnosti otevřete pomocí MEZERNÍKU nebo ENTER či ŠIPKY DOLEVA. Kontextové menu uzavřete stiskem ESC.' }, { name: 'Rámeček seznamu editoru', legend: 'Uvnitř rámečku seznamu se přesunete na další položku menu pomocí TAB nebo ŠIPKA DOLŮ. Na předchozí položku se přesunete SHIFT+TAB nebo ŠIPKA NAHORU. Stiskněte MEZERNÍK nebo ENTER pro zvolení možnosti seznamu. Stiskněte ESC pro uzavření seznamu.' }, { name: 'Lišta cesty prvku v editoru', legend: 'Stiskněte ${elementsPathFocus} pro procházení lišty cesty prvku. Na další tlačítko prvku se přesunete pomocí TAB nebo ŠIPKA VPRAVO. Na předchozí tlačítko se přesunete pomocí SHIFT+TAB nebo ŠIPKA VLEVO. Stiskněte MEZERNÍK nebo ENTER pro vybrání prvku v editoru.' } ] }, { name: 'Příkazy', items: [ { name: ' Příkaz Zpět', legend: 'Stiskněte ${undo}' }, { name: ' Příkaz Znovu', legend: 'Stiskněte ${redo}' }, { name: ' Příkaz Tučné', legend: 'Stiskněte ${bold}' }, { name: ' Příkaz Kurzíva', legend: 'Stiskněte ${italic}' }, { name: ' Příkaz Podtržení', legend: 'Stiskněte ${underline}' }, { name: ' Příkaz Odkaz', legend: 'Stiskněte ${link}' }, { name: ' Příkaz Skrýt panel nástrojů', legend: 'Stiskněte ${toolbarCollapse}' }, { name: 'Příkaz pro přístup k předchozímu prostoru zaměření', legend: 'Stiskněte ${accessPreviousSpace} pro přístup k nejbližšímu nedosažitelnému prostoru zaměření před stříškou, například: dva přilehlé prvky HR. Pro dosažení vzdálených prostorů zaměření tuto kombinaci kláves opakujte.' }, { name: 'Příkaz pro přístup k dalšímu prostoru zaměření', legend: 'Stiskněte ${accessNextSpace} pro přístup k nejbližšímu nedosažitelnému prostoru zaměření po stříšce, například: dva přilehlé prvky HR. Pro dosažení vzdálených prostorů zaměření tuto kombinaci kláves opakujte.' }, { name: ' Nápověda přístupnosti', legend: 'Stiskněte ${a11yHelp}' } ] } ], backspace: 'Backspace', tab: 'Tabulátor', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pauza', capslock: 'Caps lock', escape: 'Escape', pageUp: 'Stránka nahoru', pageDown: 'Stránka dolů', end: 'Konec', home: 'Domů', leftArrow: 'Šipka vlevo', upArrow: 'Šipka nahoru', rightArrow: 'Šipka vpravo', downArrow: 'Šipka dolů', insert: 'Vložit', 'delete': 'Smazat', leftWindowKey: 'Levá klávesa Windows', rightWindowKey: 'Pravá klávesa Windows', selectKey: 'Vyberte klávesu', numpad0: 'Numerická klávesa 0', numpad1: 'Numerická klávesa 1', numpad2: 'Numerická klávesa 2', numpad3: 'Numerická klávesa 3', numpad4: 'Numerická klávesa 4', numpad5: 'Numerická klávesa 5', numpad6: 'Numerická klávesa 6', numpad7: 'Numerická klávesa 7', numpad8: 'Numerická klávesa 8', numpad9: 'Numerická klávesa 9', multiply: 'Numerická klávesa násobení', add: 'Přidat', subtract: 'Numerická klávesa odečítání', decimalPoint: 'Desetinná tečka', divide: 'Numerická klávesa dělení', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num lock', scrollLock: 'Scroll lock', semiColon: 'Středník', equalSign: 'Rovnítko', comma: 'Čárka', dash: 'Pomlčka', period: 'Tečka', forwardSlash: 'Lomítko', graveAccent: 'Přízvuk', openBracket: 'Otevřená hranatá závorka', backSlash: 'Obrácené lomítko', closeBracket: 'Uzavřená hranatá závorka', singleQuote: 'Jednoduchá uvozovka' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/tr.js0000644000201500020150000001177114517055557025246 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'tr', { title: 'Erişilebilirlik Talimatları', contents: 'Yardım içeriği. Bu pencereyi kapatmak için ESC tuşuna basın.', legend: [ { name: 'Genel', items: [ { name: 'Düzenleyici Araç Çubuğu', legend: 'Araç çubuğunda gezinmek için ${toolbarFocus} basın. TAB ve SHIFT+TAB ile önceki ve sonraki araç çubuğu grubuna taşıyın. SAĞ OK veya SOL OK ile önceki ve sonraki bir araç çubuğu düğmesini hareket ettirin. SPACE tuşuna basın veya araç çubuğu düğmesini etkinleştirmek için ENTER tuşna basın.' }, { name: 'Diyalog Düzenleyici', legend: 'Dialog penceresi içinde, sonraki iletişim alanına gitmek için SEKME tuşuna basın, önceki alana geçmek için SHIFT + TAB tuşuna basın, pencereyi göndermek için ENTER tuşuna basın, dialog penceresini iptal etmek için ESC tuşuna basın. Birden çok sekme sayfaları olan diyalogların, sekme listesine gitmek için ALT + F10 tuşlarına basın. Sonra TAB veya SAĞ OK sonraki sekmeye taşıyın. SHIFT + TAB veya SOL OK ile önceki sekmeye geçin. Sekme sayfayı seçmek için SPACE veya ENTER tuşuna basın.' }, { name: 'İçerik Menü Editörü', legend: 'İçerik menüsünü açmak için ${contextMenu} veya UYGULAMA TUŞU\'na basın. Daha sonra SEKME veya AŞAĞI OK ile bir sonraki menü seçeneği taşıyın. SHIFT + TAB veya YUKARI OK ile önceki seçeneğe gider. Menü seçeneğini seçmek için SPACE veya ENTER tuşuna basın. Seçili seçeneğin alt menüsünü SPACE ya da ENTER veya SAĞ OK açın. Üst menü öğesini geçmek için ESC veya SOL OK ile geri dönün. ESC ile bağlam menüsünü kapatın.' }, { name: 'Liste Kutusu Editörü', legend: 'Liste kutusu içinde, bir sonraki liste öğesine SEKME VEYA AŞAĞI OK ile taşıyın. SHIFT+TAB veya YUKARI önceki liste öğesi taşıyın. Liste seçeneği seçmek için SPACE veya ENTER tuşuna basın. Liste kutusunu kapatmak için ESC tuşuna basın.' }, { name: 'Element Yol Çubuğu Editörü', legend: 'Elementlerin yol çubuğunda gezinmek için ${ElementsPathFocus} basın. SEKME veya SAĞ OK ile sonraki element düğmesine taşıyın. SHIFT+TAB veya SOL OK önceki düğmeye hareket ettirin. Editör içindeki elementi seçmek için ENTER veya SPACE tuşuna basın.' } ] }, { name: 'Komutlar', items: [ { name: 'Komutu geri al', legend: '$(undo)\'ya basın' }, { name: 'Komutu geri al', legend: '${redo} basın' }, { name: ' Kalın komut', legend: '${bold} basın' }, { name: ' İtalik komutu', legend: '${italic} basın' }, { name: ' Alttan çizgi komutu', legend: '${underline} basın' }, { name: ' Bağlantı komutu', legend: '${link} basın' }, { name: ' Araç çubuğu Toplama komutu', legend: '${toolbarCollapse} basın' }, { name: 'Önceki komut alanına odaklan', legend: 'Düzeltme imleçinden önce, en yakın uzaktaki alana erişmek için ${accessPreviousSpace} basın, örneğin: iki birleşik HR elementleri. Aynı tuş kombinasyonu tekrarıyla diğer alanlarada ulaşın.' }, { name: 'Sonraki komut alanına odaklan', legend: 'Düzeltme imleçinden sonra, en yakın uzaktaki alana erişmek için ${accessNextSpace} basın, örneğin: iki birleşik HR elementleri. Aynı tuş kombinasyonu tekrarıyla diğer alanlarada ulaşın.' }, { name: 'Erişilebilirlik Yardımı', legend: '${a11yHelp}\'e basın' } ] } ], backspace: 'Silme', tab: 'Sekme tuşu', enter: 'Gir tuşu', shift: '"Shift" Kaydırma tuşu', ctrl: '"Ctrl" Kontrol tuşu', alt: '"Alt" Anahtar tuşu', pause: 'Durdurma tuşu', capslock: 'Büyük harf tuşu', escape: 'Vazgeç tuşu', pageUp: 'Sayfa Yukarı', pageDown: 'Sayfa Aşağı', end: 'Sona', home: 'En başa', leftArrow: 'Sol ok', upArrow: 'Yukarı ok', rightArrow: 'Sağ ok', downArrow: 'Aşağı ok', insert: 'Araya gir', 'delete': 'Silme', leftWindowKey: 'Sol windows tuşu', rightWindowKey: 'Sağ windows tuşu', selectKey: 'Seçme tuşu', numpad0: 'Nümerik 0', numpad1: 'Nümerik 1', numpad2: 'Nümerik 2', numpad3: 'Nümerik 3', numpad4: 'Nümerik 4', numpad5: 'Nümerik 5', numpad6: 'Nümerik 6', numpad7: 'Nümerik 7', numpad8: 'Nümerik 8', numpad9: 'Nümerik 9', multiply: 'Çarpma', add: 'Toplama', subtract: 'Çıkarma', decimalPoint: 'Ondalık işareti', divide: 'Bölme', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lk', scrollLock: 'Scr Lk', semiColon: 'Noktalı virgül', equalSign: 'Eşittir', comma: 'Virgül', dash: 'Eksi', period: 'Nokta', forwardSlash: 'İleri eğik çizgi', graveAccent: 'Üst tırnak', openBracket: 'Parantez aç', backSlash: 'Ters eğik çizgi', closeBracket: 'Parantez kapa', singleQuote: 'Tek tırnak' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/ja.js0000644000201500020150000001272414517055557025212 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'ja', { title: 'ユーザー補助の説明', contents: 'ヘルプ このダイアログを閉じるには ESCを押してください。', legend: [ { name: '全般', items: [ { name: 'エディターツールバー', legend: '${toolbarFocus} を押すとツールバーのオン/オフ操作ができます。カーソルをツールバーのグループで移動させるにはTabかSHIFT+Tabを押します。グループ内でカーソルを移動させるには、右カーソルか左カーソルを押します。スペースキーやエンターを押すとボタンを有効/無効にすることができます。' }, { name: '編集ダイアログ', legend: 'Inside 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.' // MISSING }, { name: 'エディターのメニュー', legend: '${contextMenu} キーかAPPLICATION KEYを押すとコンテキストメニューが開きます。Tabか下カーソルでメニューのオプション選択が下に移動します。戻るには、SHIFT+Tabか上カーソルです。スペースもしくはENTERキーでメニューオプションを決定できます。現在選んでいるオプションのサブメニューを開くには、スペース、もしくは右カーソルを押します。サブメニューから親メニューに戻るには、ESCか左カーソルを押してください。ESCでコンテキストメニュー自体をキャンセルできます。' }, { name: 'エディターリストボックス', legend: 'リストボックス内で移動するには、Tabか下カーソルで次のアイテムへ移動します。SHIFT+Tabで前のアイテムに戻ります。リストのオプションを選択するには、スペースもしくは、ENTERを押してください。リストボックスを閉じるには、ESCを押してください。' }, { name: 'エディター要素パスバー', legend: '${elementsPathFocus} を押すとエレメントパスバーを操作出来ます。Tabか右カーソルで次のエレメントを選択できます。前のエレメントを選択するには、SHIFT+Tabか左カーソルです。スペースもしくは、ENTERでエディタ内の対象エレメントを選択出来ます。' } ] }, { name: 'コマンド', items: [ { name: '元に戻す', legend: '${undo} をクリック' }, { name: 'やり直し', legend: '${redo} をクリック' }, { name: '太字', legend: '${bold} をクリック' }, { name: '斜体 ', legend: '${italic} をクリック' }, { name: '下線', legend: '${underline} をクリック' }, { name: 'リンク', legend: '${link} をクリック' }, { name: 'ツールバーを縮める', legend: '${toolbarCollapse} をクリック' }, { name: '前のカーソル移動のできないポイントへ', legend: '${accessPreviousSpace} を押すとカーソルより前にあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。' }, { name: '次のカーソル移動のできないポイントへ', legend: '${accessNextSpace} を押すとカーソルより後ろにあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。' }, { name: 'ユーザー補助ヘルプ', legend: '${a11yHelp} をクリック' } ] } ], backspace: 'Backspace', tab: 'Tab', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Caps Lock', escape: 'Escape', pageUp: 'Page Up', pageDown: 'Page Down', end: 'End', home: 'Home', leftArrow: '左矢印', upArrow: '上矢印', rightArrow: '右矢印', downArrow: '下矢印', insert: 'Insert', 'delete': 'Delete', leftWindowKey: '左Windowキー', rightWindowKey: '右のWindowキー', selectKey: 'Select', numpad0: 'Num 0', numpad1: 'Num 1', numpad2: 'Num 2', numpad3: 'Num 3', numpad4: 'Num 4', numpad5: 'Num 5', numpad6: 'Num 6', numpad7: 'Num 7', numpad8: 'Num 8', numpad9: 'Num 9', multiply: '掛ける', add: '足す', subtract: '引く', decimalPoint: '小数点', divide: '割る', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'セミコロン', equalSign: 'イコール記号', comma: 'カンマ', dash: 'ダッシュ', period: 'ピリオド', forwardSlash: 'フォワードスラッシュ', graveAccent: 'グレイヴアクセント', openBracket: '開きカッコ', backSlash: 'バックスラッシュ', closeBracket: '閉じカッコ', singleQuote: 'シングルクォート' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/sl.js0000644000201500020150000001146714517055557025241 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'sl', { title: 'Navodila Dostopnosti', contents: 'Vsebina Pomoči. Če želite zapreti to pogovorno okno pritisnite ESC.', legend: [ { name: 'Splošno', items: [ { name: 'Urejevalna Orodna Vrstica', legend: 'Pritisnite ${toolbarFocus} za pomik v orodno vrstico. Z TAB in SHIFT+TAB se pomikate na naslednjo in prejšnjo skupino orodne vrstice. Z DESNO PUŠČICO ali LEVO PUŠČICO se pomikate na naslednji in prejšnji gumb orodne vrstice. Pritisnite SPACE ali ENTER, da aktivirate gumb orodne vrstice.' }, { name: 'Urejevalno Pogovorno Okno', legend: 'Inside 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.' // MISSING }, { name: 'Urejevalni Kontekstni Meni', legend: 'Pritisnite ${contextMenu} ali APPLICATION KEY, da odprete kontekstni meni. Nato se premaknite na naslednjo možnost menija s tipko TAB ali PUŠČICA DOL. Premakniti se na prejšnjo možnost z SHIFT + TAB ali PUŠČICA GOR. Pritisnite SPACE ali ENTER za izbiro možnosti menija. Odprite podmeni trenutne možnosti menija s tipko SPACE ali ENTER ali DESNA PUŠČICA. Vrnite se na matični element menija s tipko ESC ali LEVA PUŠČICA. Zaprite kontekstni meni z ESC.' }, { name: 'Urejevalno Seznamsko Polje', legend: 'Znotraj seznama, se premaknete na naslednji element seznama s tipko TAB ali PUŠČICO DOL. Z SHIFT+TAB ali PUŠČICO GOR se premaknete na prejšnji element seznama. Pritisnite tipko SPACE ali ENTER za izbiro elementa. Pritisnite tipko ESC, da zaprete seznam.' }, { name: 'Urejevalna vrstica poti elementa', legend: 'Pritisnite ${elementsPathFocus} za pomikanje po vrstici elementnih poti. S TAB ali DESNA PUŠČICA se premaknete na naslednji gumb elementa. Z SHIFT+TAB ali LEVO PUŠČICO se premaknete na prejšnji gumb elementa. Pritisnite SPACE ali ENTER za izbiro elementa v urejevalniku.' } ] }, { name: 'Ukazi', items: [ { name: 'Razveljavi ukaz', legend: 'Pritisnite ${undo}' }, { name: 'Ponovi ukaz', legend: 'Pritisnite ${redo}' }, { name: 'Krepki ukaz', legend: 'Pritisnite ${bold}' }, { name: 'Ležeči ukaz', legend: 'Pritisnite ${italic}' }, { name: 'Poudarni ukaz', legend: 'Pritisnite ${underline}' }, { name: 'Ukaz povezave', legend: 'Pritisnite ${link}' }, { name: 'Skrči Orodno Vrstico Ukaz', legend: 'Pritisnite ${toolbarCollapse}' }, { name: 'Dostop do prejšnjega ukaza ostrenja', legend: 'Pritisnite ${accessPreviousSpace} za dostop do najbližjega nedosegljivega osredotočenega prostora pred strešico, npr.: dva sosednja HR elementa. Ponovite kombinacijo tipk, da dosežete oddaljene osredotočene prostore.' }, { name: 'Dostop do naslednjega ukaza ostrenja', legend: 'Pritisnite ${accessNextSpace} za dostop do najbližjega nedosegljivega osredotočenega prostora po strešici, npr.: dva sosednja HR elementa. Ponovite kombinacijo tipk, da dosežete oddaljene osredotočene prostore.' }, { name: 'Pomoč Dostopnosti', legend: 'Pritisnite ${a11yHelp}' } ] } ], backspace: 'Backspace', tab: 'Tab', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Caps Lock', escape: 'Escape', pageUp: 'Page Up', pageDown: 'Page Down', end: 'End', home: 'Home', leftArrow: 'Levo puščica', upArrow: 'Gor puščica', rightArrow: 'Desno puščica', downArrow: 'Dol puščica', insert: 'Insert', 'delete': 'Delete', leftWindowKey: 'Leva Windows tipka', rightWindowKey: 'Desna Windows tipka', selectKey: 'Select tipka', numpad0: 'Numpad 0', numpad1: 'Numpad 1', numpad2: 'Numpad 2', numpad3: 'Numpad 3', numpad4: 'Numpad 4', numpad5: 'Numpad 5', numpad6: 'Numpad 6', numpad7: 'Numpad 7', numpad8: 'Numpad 8', numpad9: 'Numpad 9', multiply: 'Zmnoži', add: 'Dodaj', subtract: 'Odštej', decimalPoint: 'Decimalna vejica', divide: 'Deli', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Podpičje', equalSign: 'enačaj', comma: 'Vejica', dash: 'Vezaj', period: 'Pika', forwardSlash: 'Desna poševnica', graveAccent: 'Krativec', openBracket: 'Oklepaj', backSlash: 'Leva poševnica', closeBracket: 'Oklepaj', singleQuote: 'Opuščaj' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/lv.js0000644000201500020150000001340614517055557025237 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'lv', { title: 'Pieejamības instrukcija', contents: 'Palīdzības saturs. Lai aizvērtu ciet šo dialogu nospiediet ESC.', legend: [ { name: 'Galvenais', items: [ { name: 'Redaktora rīkjosla', legend: 'Nospiediet ${toolbarFocus} lai pārvietotos uz rīkjoslu. Lai pārvietotos uz nākošo vai iepriekšējo rīkjoslas grupu izmantojiet pogu TAB un SHIFT+TAB. Lai pārvietotos uz nākošo vai iepriekšējo rīkjoslas pogu izmantojiet Kreiso vai Labo bultiņu. Nospiediet Atstarpi vai ENTER lai aktivizētu rīkjosla pogu.' }, { name: 'Redaktora dialoga logs', legend: 'Inside 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.' // MISSING }, { name: 'Redaktora satura izvēle', legend: 'Nospiediet ${contextMenu} vai APPLICATION KEY lai atvērtu satura izvēlni. Lai pārvietotos uz nākošo izvēlnes opciju izmantojiet pogu TAB vai pogu Bultiņu uz leju. Lai pārvietotos uz iepriekšējo opciju izmantojiet SHIFT+TAB vai pogu Bultiņa uz augšu. Nospiediet SPACE vai ENTER lai izvelētos izvēlnes opciju. Atveriet tekošajā opcija apakšizvēlni ar SAPCE vai ENTER ka ari to var izdarīt ar Labo bultiņu. Lai atgrieztos atpakaļ uz sakuma izvēlni nospiediet ESC vai Kreiso bultiņu. Lai aizvērtu ciet izvēlnes saturu nospiediet ESC.' }, { name: 'Redaktora saraksta lauks', legend: 'Saraksta laukā, lai pārvietotos uz nākošo saraksta elementu nospiediet TAB vai pogu Bultiņa uz leju. Lai pārvietotos uz iepriekšējo saraksta elementu nospiediet SHIFT+TAB vai pogu Bultiņa uz augšu. Nospiediet SPACE vai ENTER lai izvēlētos saraksta opcijas. Nospiediet ESC lai aizvērtu saraksta lauku.' }, { name: 'Redaktora elementa ceļa josla', legend: 'Nospiediet ${elementsPathFocus} lai pārvietotos uz elementa ceļa joslu. Lai pārvietotos uz nākošo elementa pogu izmantojiet TAB vai Labo bultiņu. Lai pārvietotos uz iepriekšējo elementa pogu izmantojiet SHIFT+TAB vai Kreiso bultiņu. Nospiediet SPACE vai ENTER lai izvēlētos elementu redaktorā.' } ] }, { name: 'Komandas', items: [ { name: 'Komanda atcelt darbību', legend: 'Nospiediet ${undo}' }, { name: 'Komanda atkārtot darbību', legend: 'Nospiediet ${redo}' }, { name: 'Treknraksta komanda', legend: 'Nospiediet ${bold}' }, { name: 'Kursīva komanda', legend: 'Nospiediet ${italic}' }, { name: 'Apakšsvītras komanda ', legend: 'Nospiediet ${underline}' }, { name: 'Hipersaites komanda', legend: 'Nospiediet ${link}' }, { name: 'Rīkjoslas aizvēršanas komanda', legend: 'Nospiediet ${toolbarCollapse}' }, { name: 'Piekļūt iepriekšējai fokusa vietas komandai', legend: 'Nospiediet ${accessPreviousSpace} lai piekļūtu tuvākajai nepieejamajai fokusa vietai pirms kursora. Piemēram: diviem blakus esošiem līnijas HR elementiem. Atkārtojiet taustiņu kombināciju lai piekļūtu pie tālākām vietām.' }, { name: 'Piekļūt nākošā fokusa apgabala komandai', legend: 'Nospiediet ${accessNextSpace} lai piekļūtu tuvākajai nepieejamajai fokusa vietai pēc kursora. Piemēram: diviem blakus esošiem līnijas HR elementiem. Atkārtojiet taustiņu kombināciju lai piekļūtu pie tālākām vietām.' }, { name: 'Pieejamības palīdzība', legend: 'Nospiediet ${a11yHelp}' } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/en.js0000644000201500020150000001105214517055557025213 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'en', { title: 'Accessibility Instructions', contents: 'Help Contents. To close this dialog press ESC.', legend: [ { name: 'General', items: [ { name: 'Editor Toolbar', legend: 'Press ${toolbarFocus} to navigate to the toolbar. ' + 'Move to the next and previous toolbar group with TAB and SHIFT+TAB. ' + 'Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. ' + 'Press SPACE or ENTER to activate the toolbar button.' }, { name: 'Editor Dialog', legend: 'Inside 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.' }, { name: 'Editor Context Menu', 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.' }, { name: 'Editor List Box', 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.' }, { name: 'Editor Element Path Bar', 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.' } ] }, { name: 'Commands', items: [ { name: ' Undo command', legend: 'Press ${undo}' }, { name: ' Redo command', legend: 'Press ${redo}' }, { name: ' Bold command', legend: 'Press ${bold}' }, { name: ' Italic command', legend: 'Press ${italic}' }, { name: ' Underline command', legend: 'Press ${underline}' }, { name: ' Link command', legend: 'Press ${link}' }, { name: ' Toolbar Collapse command', legend: 'Press ${toolbarCollapse}' }, { name: ' Access previous focus space command', 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.' }, { name: ' Access next focus space command', legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, ' + 'for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' }, { name: ' Accessibility Help', legend: 'Press ${a11yHelp}' } ] } ], backspace: 'Backspace', tab: 'Tab', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Caps Lock', escape: 'Escape', pageUp: 'Page Up', pageDown: 'Page Down', end: 'End', home: 'Home', leftArrow: 'Left Arrow', upArrow: 'Up Arrow', rightArrow: 'Right Arrow', downArrow: 'Down Arrow', insert: 'Insert', 'delete': 'Delete', leftWindowKey: 'Left Windows key', rightWindowKey: 'Right Windows key', selectKey: 'Select key', numpad0: 'Numpad 0', numpad1: 'Numpad 1', numpad2: 'Numpad 2', numpad3: 'Numpad 3', numpad4: 'Numpad 4', numpad5: 'Numpad 5', numpad6: 'Numpad 6', numpad7: 'Numpad 7', numpad8: 'Numpad 8', numpad9: 'Numpad 9', multiply: 'Multiply', add: 'Add', subtract: 'Subtract', decimalPoint: 'Decimal Point', divide: 'Divide', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Semicolon', equalSign: 'Equal Sign', comma: 'Comma', dash: 'Dash', period: 'Period', forwardSlash: 'Forward Slash', graveAccent: 'Grave Accent', openBracket: 'Open Bracket', backSlash: 'Backslash', closeBracket: 'Close Bracket', singleQuote: 'Single Quote' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/no.js0000644000201500020150000001255314517055557025234 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'no', { title: 'Instruksjoner for tilgjengelighet', contents: 'Innhold for hjelp. Trykk ESC for å lukke denne dialogen.', legend: [ { name: 'Generelt', items: [ { name: 'Verktøylinje for editor', legend: 'Trykk ${toolbarFocus} for å navigere til verktøylinjen. Flytt til neste og forrige verktøylinjegruppe med TAB og SHIFT+TAB. Flytt til neste og forrige verktøylinjeknapp med HØYRE PILTAST og VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å aktivere verktøylinjeknappen.' }, { name: 'Dialog for editor', legend: 'Inside 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.' // MISSING }, { name: 'Kontekstmeny for editor', legend: 'Trykk ${contextMenu} eller MENYKNAPP for å åpne kontekstmeny. Gå til neste alternativ i menyen med TAB eller PILTAST NED. Gå til forrige alternativ med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge menyalternativet. Åpne undermenyen på valgt alternativ med MELLOMROM eller ENTER eller HØYRE PILTAST. Gå tilbake til overordnet menyelement med ESC eller VENSTRE PILTAST. Lukk kontekstmenyen med ESC.' }, { name: 'Listeboks for editor', legend: 'I en listeboks, gå til neste alternativ i listen med TAB eller PILTAST NED. Gå til forrige alternativ i listen med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge alternativet i listen. Trykk ESC for å lukke listeboksen.' }, { name: 'Verktøylinje for elementsti', legend: 'Trykk ${elementsPathFocus} for å navigere til verktøylinjen som viser elementsti. Gå til neste elementknapp med TAB eller HØYRE PILTAST. Gå til forrige elementknapp med SHIFT+TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge elementet i editoren.' } ] }, { name: 'Kommandoer', items: [ { name: 'Angre', legend: 'Trykk ${undo}' }, { name: 'Gjør om', legend: 'Trykk ${redo}' }, { name: 'Fet tekst', legend: 'Trykk ${bold}' }, { name: 'Kursiv tekst', legend: 'Trykk ${italic}' }, { name: 'Understreking', legend: 'Trykk ${underline}' }, { name: 'Link', legend: 'Trykk ${link}' }, { name: 'Skjul verktøylinje', legend: 'Trykk ${toolbarCollapse}' }, { name: 'Gå til forrige fokusområde', legend: 'Trykk ${accessPreviousSpace} for å komme til nærmeste fokusområde før skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet.' }, { name: 'Gå til neste fokusområde', legend: 'Trykk ${accessNextSpace} for å komme til nærmeste fokusområde etter skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet.' }, { name: 'Hjelp for tilgjengelighet', legend: 'Trykk ${a11yHelp}' } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/fr.js0000644000201500020150000001323214517055557025222 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'fr', { title: 'Instructions d\'accessibilité', contents: 'Contenu de l\'aide. Pour fermer ce dialogue, appuyez sur la touche ÉCHAP (Echappement).', legend: [ { name: 'Général', items: [ { name: 'Barre d\'outils de l\'éditeur', legend: 'Appuyer sur ${toolbarFocus} pour accéder à la barre d\'outils. Se déplacer vers les groupes suivant ou précédent de la barre d\'outil avec les touches MAJ et MAJ+TAB. Se déplacer vers les boutons suivant ou précédent de la barre d\'outils avec les touches FLÈCHE DROITE et FLÈCHE GAUCHE. Appuyer sur la barre d\'espace ou la touche ENTRÉE pour activer le bouton de barre d\'outils.' }, { name: 'Dialogue de l\'éditeur', legend: 'Inside 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.' // MISSING }, { name: 'Menu contextuel de l\'éditeur', legend: 'Appuyer sur ${contextMenu} ou entrer le RACCOURCI CLAVIER pour ouvrir le menu contextuel. Puis se déplacer vers l\'option suivante du menu avec les touches TAB ou FLÈCHE BAS. Se déplacer vers l\'option précédente avec les touches MAJ+TAB ou FLÈCHE HAUT. appuyer sur la BARRE D\'ESPACE ou la touche ENTRÉE pour sélectionner l\'option du menu. Oovrir le sous-menu de l\'option courante avec la BARRE D\'ESPACE ou les touches ENTRÉE ou FLÈCHE DROITE. Revenir à l\'élément de menu parent avec les touches ÉCHAP ou FLÈCHE GAUCHE. Fermer le menu contextuel avec ÉCHAP.' }, { name: 'Zone de liste de l\'éditeur', legend: 'Dans la liste en menu déroulant, se déplacer vers l\'élément suivant de la liste avec les touches TAB ou FLÈCHE BAS. Se déplacer vers l\'élément précédent de la liste avec les touches MAJ+TAB ou FLÈCHE HAUT. Appuyer sur la BARRE D\'ESPACE ou sur ENTRÉE pour sélectionner l\'option dans la liste. Appuyer sur ÉCHAP pour fermer le menu déroulant.' }, { name: 'Barre d\'emplacement des éléments de l\'éditeur', legend: 'Appuyer sur ${elementsPathFocus} pour naviguer vers la barre d\'emplacement des éléments de l\'éditeur. Se déplacer vers le bouton d\'élément suivant avec les touches TAB ou FLÈCHE DROITE. Se déplacer vers le bouton d\'élément précédent avec les touches MAJ+TAB ou FLÈCHE GAUCHE. Appuyer sur la BARRE D\'ESPACE ou sur ENTRÉE pour sélectionner l\'élément dans l\'éditeur.' } ] }, { name: 'Commandes', items: [ { name: ' Annuler la commande', legend: 'Appuyer sur ${undo}' }, { name: 'Refaire la commande', legend: 'Appuyer sur ${redo}' }, { name: ' Commande gras', legend: 'Appuyer sur ${bold}' }, { name: ' Commande italique', legend: 'Appuyer sur ${italic}' }, { name: ' Commande souligné', legend: 'Appuyer sur ${underline}' }, { name: ' Commande lien', legend: 'Appuyer sur ${link}' }, { name: ' Commande enrouler la barre d\'outils', legend: 'Appuyer sur ${toolbarCollapse}' }, { name: 'Accéder à la précédente commande d\'espace de mise au point', legend: 'Appuyez sur ${accessPreviousSpace} pour accéder à l\'espace hors d\'atteinte le plus proche avant le caret, par exemple: deux éléments HR adjacents. Répétez la combinaison de touches pour atteindre les espaces de mise au point distants.' }, { name: 'Accès à la prochaine commande de l\'espace de mise au point', legend: 'Appuyez sur ${accessNextSpace} pour accéder au plus proche espace de mise au point hors d\'atteinte après le caret, par exemple: deux éléments HR adjacents. répétez la combinaison de touches pour atteindre les espace de mise au point distants.' }, { name: ' Aide Accessibilité', legend: 'Appuyer sur ${a11yHelp}' } ] } ], backspace: 'Retour arrière', tab: 'Tabulation', enter: 'Entrée', shift: 'Majuscule', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Verr. Maj.', escape: 'Échap', pageUp: 'Page supérieure', pageDown: 'Page inférieure', end: 'Fin', home: 'Retour', leftArrow: 'Flèche gauche', upArrow: 'Flèche haute', rightArrow: 'Flèche droite', downArrow: 'Flèche basse', insert: 'Insertion', 'delete': 'Supprimer', leftWindowKey: 'Touche Windows gauche', rightWindowKey: 'Touche Windows droite', selectKey: 'Touche menu', numpad0: 'Pavé numérique 0', numpad1: 'Pavé numérique 1', numpad2: 'Pavé numérique 2', numpad3: 'Pavé numérique 3', numpad4: 'Pavé numérique 4', numpad5: 'Pavé numérique 5', numpad6: 'Pavé numérique 6', numpad7: 'Pavé numérique 7', numpad8: 'Pavé numérique 8', numpad9: 'Pavé numérique 9', multiply: 'Multiplier', add: 'Addition', subtract: 'Soustraire', decimalPoint: 'Point décimal', divide: 'Diviser', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Verrouillage numérique', scrollLock: 'Arrêt défilement', semiColon: 'Point virgule', equalSign: 'Signe égal', comma: 'Virgule', dash: 'Tiret', period: 'Point', forwardSlash: 'Barre oblique', graveAccent: 'Accent grave', openBracket: 'Parenthèse ouvrante', backSlash: 'Barre oblique inverse', closeBracket: 'Parenthèse fermante', singleQuote: 'Apostrophe' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/id.js0000644000201500020150000001260514517055557025212 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'id', { title: 'Accessibility Instructions', // MISSING contents: 'Bantuan. Tekan ESC untuk menutup dialog ini.', legend: [ { name: 'Umum', items: [ { name: 'Editor Toolbar', // MISSING legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING }, { name: 'Editor Dialog', // MISSING legend: 'Inside 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.' // MISSING }, { name: 'Editor Context Menu', // MISSING 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.' // MISSING }, { name: 'Editor List Box', // MISSING 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.' // MISSING }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'Commands', // MISSING items: [ { name: ' Undo command', // MISSING legend: 'Press ${undo}' // MISSING }, { name: ' Redo command', // MISSING legend: 'Press ${redo}' // MISSING }, { name: ' Bold command', // MISSING legend: 'Press ${bold}' // MISSING }, { name: ' Italic command', // MISSING legend: 'Press ${italic}' // MISSING }, { name: ' Underline command', // MISSING legend: 'Press ${underline}' // MISSING }, { name: ' Link command', // MISSING legend: 'Press ${link}' // MISSING }, { name: ' Toolbar Collapse command', // MISSING legend: 'Press ${toolbarCollapse}' // MISSING }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: ' Accessibility Help', // MISSING legend: 'Press ${a11yHelp}' // MISSING } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/ug.js0000644000201500020150000001607114517055557025232 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'ug', { title: 'قوشۇمچە چۈشەندۈرۈش', contents: 'ياردەم مەزمۇنى. بۇ سۆزلەشكۈنى ياپماقچى بولسىڭىز ESC نى بېسىڭ.', legend: [ { name: 'ئادەتتىكى', items: [ { name: 'قورال بالداق تەھرىر', legend: '${toolbarFocus} بېسىلسا قورال بالداققا يېتەكلەيدۇ، TAB ياكى SHIFT+TAB ئارقىلىق قورال بالداق گۇرۇپپىسى تاللىنىدۇ، ئوڭ سول يا ئوقتا توپچا تاللىنىدۇ، بوشلۇق ياكى Enter كۇنۇپكىسىدا تاللانغان توپچىنى قوللىنىدۇ.' }, { name: 'تەھرىرلىگۈچ سۆزلەشكۈسى', legend: 'Inside 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.' // MISSING }, { name: 'تەھرىرلىگۈچ تىل مۇھىت تىزىملىكى', legend: '${contextMenu} ياكى ئەپ كۇنۇپكىسىدا تىل مۇھىت تىزىملىكىنى ئاچىدۇ. ئاندىن TAB ياكى ئاستى يا ئوق كۇنۇپكىسىدا كېيىنكى تىزىملىك تۈرىگە يۆتكەيدۇ؛ SHIFT+TAB ياكى ئۈستى يا ئوق كۇنۇپكىسىدا ئالدىنقى تىزىملىك تۈرىگە يۆتكەيدۇ. بوشلۇق ياكى ENTER كۇنۇپكىسىدا تىزىملىك تۈرىنى تاللايدۇ. بوشلۇق، ENTER ياكى ئوڭ يا ئوق كۇنۇپكىسىدا تارماق تىزىملىكنى ئاچىدۇ. قايتىش تىزىملىكىگە ESC ياكى سول يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. ESC كۇنۇپكىسىدا تىل مۇھىت تىزىملىكى تاقىلىدۇ.' }, { name: 'تەھرىرلىگۈچ تىزىمى', legend: 'تىزىم قۇتىسىدا، كېيىنكى تىزىم تۈرىگە يۆتكەشتە TAB ياكى ئاستى يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. ئالدىنقى تىزىم تۈرىگە يۆتكەشتە SHIFT+TAB ياكى ئۈستى يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. بوشلۇق ياكى ENTER كۇنۇپكىسىدا تىزىم تۈرىنى تاللايدۇ.ESC كۇنۇپكىسىدا تىزىم قۇتىسىنى يىغىدۇ.' }, { name: 'تەھرىرلىگۈچ ئېلېمېنت يول بالداق', legend: '${elementsPathFocus} بېسىلسا ئېلېمېنت يول بالداققا يېتەكلەيدۇ، TAB ياكى ئوڭ يا ئوقتا كېيىنكى ئېلېمېنت تاللىنىدۇ، SHIFT+TAB ياكى سول يا ئوقتا ئالدىنقى ئېلېمېنت تاللىنىدۇ، بوشلۇق ياكى Enter كۇنۇپكىسىدا تەھرىرلىگۈچتىكى ئېلېمېنت تاللىنىدۇ.' } ] }, { name: 'بۇيرۇق', items: [ { name: 'بۇيرۇقتىن يېنىۋال', legend: '${undo} نى بېسىڭ' }, { name: 'قايتىلاش بۇيرۇقى', legend: '${redo} نى بېسىڭ' }, { name: 'توملىتىش بۇيرۇقى', legend: '${bold} نى بېسىڭ' }, { name: 'يانتۇ بۇيرۇقى', legend: '${italic} نى بېسىڭ' }, { name: 'ئاستى سىزىق بۇيرۇقى', legend: '${underline} نى بېسىڭ' }, { name: 'ئۇلانما بۇيرۇقى', legend: '${link} نى بېسىڭ' }, { name: 'قورال بالداق قاتلاش بۇيرۇقى', legend: '${toolbarCollapse} نى بېسىڭ' }, { name: 'ئالدىنقى فوكۇس نۇقتىسىنى زىيارەت قىلىدىغان بۇيرۇق', legend: '${accessPreviousSpace} بېسىپ ^ بەلگىسىگە ئەڭ يېقىن زىيارەت قىلغىلى بولمايدىغان فوكۇس نۇقتا رايونىنىڭ ئالدىنى زىيارەت قىلىدۇ، مەسىلەن: ئۆز ئارا قوشنا ئىككى HR ئېلېمېنت. بۇ بىرىكمە كۇنۇپكا تەكرارلانسا يىراقتىكى فوكۇس نۇقتا رايونىغا يەتكىلى بولىدۇ.' }, { name: 'كېيىنكى فوكۇس نۇقتىسىنى زىيارەت قىلىدىغان بۇيرۇق', legend: '${accessNextSpace} بېسىپ ^ بەلگىسىگە ئەڭ يېقىن زىيارەت قىلغىلى بولمايدىغان فوكۇس نۇقتا رايونىنىڭ كەينىنى زىيارەت قىلىدۇ، مەسىلەن: ئۆز ئارا قوشنا ئىككى HR ئېلېمېنت. بۇ بىرىكمە كۇنۇپكا تەكرارلانسا يىراقتىكى فوكۇس نۇقتا رايونىغا يەتكىلى بولىدۇ.' }, { name: 'توسالغۇسىز لايىھە چۈشەندۈرۈشى', legend: '${a11yHelp} نى بېسىڭ' } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/ar.js0000644000201500020150000001257214517055557025223 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'ar', { title: 'Accessibility Instructions', // MISSING contents: 'Help Contents. To close this dialog press ESC.', // MISSING legend: [ { name: 'عام', items: [ { name: 'Editor Toolbar', // MISSING legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING }, { name: 'Editor Dialog', // MISSING legend: 'Inside 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.' // MISSING }, { name: 'Editor Context Menu', // MISSING 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.' // MISSING }, { name: 'Editor List Box', // MISSING 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.' // MISSING }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'Commands', // MISSING items: [ { name: ' Undo command', // MISSING legend: 'Press ${undo}' // MISSING }, { name: ' Redo command', // MISSING legend: 'Press ${redo}' // MISSING }, { name: ' Bold command', // MISSING legend: 'Press ${bold}' // MISSING }, { name: ' Italic command', // MISSING legend: 'Press ${italic}' // MISSING }, { name: ' Underline command', // MISSING legend: 'Press ${underline}' // MISSING }, { name: ' Link command', // MISSING legend: 'Press ${link}' // MISSING }, { name: ' Toolbar Collapse command', // MISSING legend: 'Press ${toolbarCollapse}' // MISSING }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: ' Accessibility Help', // MISSING legend: 'Press ${a11yHelp}' // MISSING } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'إضافة', subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'تقسيم', f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'فاصلة', dash: 'Dash', // MISSING period: 'نقطة', forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/sr.js0000644000201500020150000001263014517055557025240 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'sr', { title: 'Accessibility Instructions', // MISSING contents: 'Help Contents. To close this dialog press ESC.', // MISSING legend: [ { name: 'Опште', items: [ { name: 'Editor Toolbar', // MISSING legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING }, { name: 'Editor Dialog', // MISSING legend: 'Inside 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.' // MISSING }, { name: 'Editor Context Menu', // MISSING 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.' // MISSING }, { name: 'Editor List Box', // MISSING 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.' // MISSING }, { name: 'Editor Element Path Bar', // MISSING 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.' // MISSING } ] }, { name: 'Commands', // MISSING items: [ { name: ' Undo command', // MISSING legend: 'Press ${undo}' // MISSING }, { name: ' Redo command', // MISSING legend: 'Press ${redo}' // MISSING }, { name: ' Bold command', // MISSING legend: 'Press ${bold}' // MISSING }, { name: ' Italic command', // MISSING legend: 'Press ${italic}' // MISSING }, { name: ' Underline command', // MISSING legend: 'Press ${underline}' // MISSING }, { name: ' Link command', // MISSING legend: 'Press ${link}' // MISSING }, { name: ' Toolbar Collapse command', // MISSING legend: 'Press ${toolbarCollapse}' // MISSING }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: ' Accessibility Help', // MISSING legend: 'Press ${a11yHelp}' // MISSING } ] } ], backspace: 'Backspace', // MISSING tab: 'Tab', // MISSING enter: 'Enter', // MISSING shift: 'Shift', // MISSING ctrl: 'Ctrl', // MISSING alt: 'Alt', // MISSING pause: 'Pause', // MISSING capslock: 'Caps Lock', // MISSING escape: 'Escape', // MISSING pageUp: 'Page Up', // MISSING pageDown: 'Page Down', // MISSING end: 'End', // MISSING home: 'Home', // MISSING leftArrow: 'Left Arrow', // MISSING upArrow: 'Up Arrow', // MISSING rightArrow: 'Right Arrow', // MISSING downArrow: 'Down Arrow', // MISSING insert: 'Insert', // MISSING 'delete': 'Delete', // MISSING leftWindowKey: 'Left Windows key', // MISSING rightWindowKey: 'Right Windows key', // MISSING selectKey: 'Select key', // MISSING numpad0: 'Numpad 0', // MISSING numpad1: 'Numpad 1', // MISSING numpad2: 'Numpad 2', // MISSING numpad3: 'Numpad 3', // MISSING numpad4: 'Numpad 4', // MISSING numpad5: 'Numpad 5', // MISSING numpad6: 'Numpad 6', // MISSING numpad7: 'Numpad 7', // MISSING numpad8: 'Numpad 8', // MISSING numpad9: 'Numpad 9', // MISSING multiply: 'Multiply', // MISSING add: 'Add', // MISSING subtract: 'Subtract', // MISSING decimalPoint: 'Decimal Point', // MISSING divide: 'Divide', // MISSING f1: 'F1', // MISSING f2: 'F2', // MISSING f3: 'F3', // MISSING f4: 'F4', // MISSING f5: 'F5', // MISSING f6: 'F6', // MISSING f7: 'F7', // MISSING f8: 'F8', // MISSING f9: 'F9', // MISSING f10: 'F10', // MISSING f11: 'F11', // MISSING f12: 'F12', // MISSING numLock: 'Num Lock', // MISSING scrollLock: 'Scroll Lock', // MISSING semiColon: 'Semicolon', // MISSING equalSign: 'Equal Sign', // MISSING comma: 'Comma', // MISSING dash: 'Dash', // MISSING period: 'Period', // MISSING forwardSlash: 'Forward Slash', // MISSING graveAccent: 'Grave Accent', // MISSING openBracket: 'Open Bracket', // MISSING backSlash: 'Backslash', // MISSING closeBracket: 'Close Bracket', // MISSING singleQuote: 'Single Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/en-gb.js0000644000201500020150000001076114517055557025607 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'en-gb', { title: 'Accessibility Instructions', contents: 'Help Contents. To close this dialog press ESC.', // MISSING legend: [ { name: 'General', items: [ { name: 'Editor Toolbar', legend: 'Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.' // MISSING }, { name: 'Editor Dialog', legend: 'Inside 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.' // MISSING }, { name: 'Editor Context Menu', 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.' // MISSING }, { name: 'Editor List Box', 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.' // MISSING }, { name: 'Editor Element Path Bar', 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.' // MISSING } ] }, { name: 'Commands', items: [ { name: ' Undo command', legend: 'Press ${undo}' }, { name: ' Redo command', legend: 'Press ${redo}' }, { name: ' Bold command', legend: 'Press ${bold}' }, { name: ' Italic command', legend: 'Press ${italic}' }, { name: ' Underline command', legend: 'Press ${underline}' }, { name: ' Link command', legend: 'Press ${link}' }, { name: ' Toolbar Collapse command', legend: 'Press ${toolbarCollapse}' }, { name: ' Access previous focus space command', // MISSING 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 }, { name: ' Access next focus space command', // MISSING legend: 'Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.' // MISSING }, { name: ' Accessibility Help', legend: 'Press ${a11yHelp}' } ] } ], backspace: 'Backspace', tab: 'Tab', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Caps Lock', escape: 'Escape', pageUp: 'Page Up', pageDown: 'Page Down', end: 'End', home: 'Home', leftArrow: 'Left Arrow', upArrow: 'Up Arrow', rightArrow: 'Right Arrow', downArrow: 'Down Arrow', insert: 'Insert', 'delete': 'Delete', leftWindowKey: 'Left Windows key', rightWindowKey: 'Right Windows key', selectKey: 'Select key', numpad0: 'Numpad 0', numpad1: 'Numpad 1', numpad2: 'Numpad 2', numpad3: 'Numpad 3', numpad4: 'Numpad 4', numpad5: 'Numpad 5', numpad6: 'Numpad 6', numpad7: 'Numpad 7', numpad8: 'Numpad 8', numpad9: 'Numpad 9', multiply: 'Multiply', add: 'Add', subtract: 'Subtract', decimalPoint: 'Decimal Point', divide: 'Divide', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Semicolon', equalSign: 'Equal Sign', comma: 'Comma', dash: 'Dash', period: 'Period', forwardSlash: 'Forward Slash', graveAccent: 'Grave Accent', openBracket: 'Open Bracket', backSlash: 'Backslash', closeBracket: 'Close Bracket', singleQuote: 'Single Quote' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/a11yhelp/dialogs/lang/hu.js0000644000201500020150000001216414517055557025232 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'a11yhelp', 'hu', { title: 'Kisegítő utasítások', contents: 'Súgó tartalmak. A párbeszédablak bezárásához nyomjon ESC-et.', legend: [ { name: 'Általános', items: [ { name: 'Szerkesztő Eszköztár', legend: 'Nyomjon ${toolbarFocus} hogy kijelölje az eszköztárat. A következő és előző eszköztár csoporthoz a TAB és SHIFT+TAB-al juthat el. A következő és előző eszköztár gombhoz a BAL NYÍL vagy JOBB NYÍL gombbal juthat el. Nyomjon SPACE-t vagy ENTER-t hogy aktiválja az eszköztár gombot.' }, { name: 'Szerkesző párbeszéd ablak', legend: 'Inside 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.' // MISSING }, { name: 'Szerkesztő helyi menü', legend: 'Nyomjon ${contextMenu}-t vagy ALKALMAZÁS BILLENTYŰT a helyi menü megnyitásához. Ezután a következő menüpontra léphet a TAB vagy LEFELÉ NYÍLLAL. Az előző opciót a SHIFT+TAB vagy FELFELÉ NYÍLLAL érheti el. Nyomjon SPACE-t vagy ENTER-t a menüpont kiválasztásához. A jelenlegi menüpont almenüjének megnyitásához nyomjon SPACE-t vagy ENTER-t, vagy JOBB NYILAT. A főmenühöz való visszatéréshez nyomjon ESC-et vagy BAL NYILAT. A helyi menü bezárása az ESC billentyűvel lehetséges.' }, { name: 'Szerkesztő lista', legend: 'A listán belül a következő elemre a TAB vagy LEFELÉ NYÍLLAL mozoghat. Az előző elem kiválasztásához nyomjon SHIFT+TAB-ot vagy FELFELÉ NYILAT. Nyomjon SPACE-t vagy ENTER-t az elem kiválasztásához. Az ESC billentyű megnyomásával bezárhatja a listát.' }, { name: 'Szerkesztő elem utak sáv', legend: 'Nyomj ${elementsPathFocus} hogy kijelöld a elemek út sávját. A következő elem gombhoz a TAB-al vagy a JOBB NYÍLLAL juthatsz el. Az előző gombhoz a SHIFT+TAB vagy BAL NYÍLLAL mehetsz. A SPACE vagy ENTER billentyűvel kiválaszthatod az elemet a szerkesztőben.' } ] }, { name: 'Parancsok', items: [ { name: 'Parancs visszavonása', legend: 'Nyomj ${undo}' }, { name: 'Parancs megismétlése', legend: 'Nyomjon ${redo}' }, { name: 'Félkövér parancs', legend: 'Nyomjon ${bold}' }, { name: 'Dőlt parancs', legend: 'Nyomjon ${italic}' }, { name: 'Aláhúzott parancs', legend: 'Nyomjon ${underline}' }, { name: 'Link parancs', legend: 'Nyomjon ${link}' }, { name: 'Szerkesztősáv összecsukása parancs', legend: 'Nyomjon ${toolbarCollapse}' }, { name: 'Hozzáférés az előző fókusz helyhez parancs', legend: 'Nyomj ${accessNextSpace} hogy hozzáférj a legközelebbi elérhetetlen fókusz helyhez a hiányjel előtt, például: két szomszédos HR elemhez. Ismételd meg a billentyűkombinációt hogy megtaláld a távolabbi fókusz helyeket.' }, { name: 'Hozzáférés a következő fókusz helyhez parancs', legend: 'Nyomj ${accessNextSpace} hogy hozzáférj a legközelebbi elérhetetlen fókusz helyhez a hiányjel után, például: két szomszédos HR elemhez. Ismételd meg a billentyűkombinációt hogy megtaláld a távolabbi fókusz helyeket.' }, { name: 'Kisegítő súgó', legend: 'Nyomjon ${a11yHelp}' } ] } ], backspace: 'Backspace', tab: 'Tab', enter: 'Enter', shift: 'Shift', ctrl: 'Ctrl', alt: 'Alt', pause: 'Pause', capslock: 'Caps Lock', escape: 'Escape', pageUp: 'Page Up', pageDown: 'Page Down', end: 'End', home: 'Home', leftArrow: 'balra nyíl', upArrow: 'felfelé nyíl', rightArrow: 'jobbra nyíl', downArrow: 'lefelé nyíl', insert: 'Insert', 'delete': 'Delete', leftWindowKey: 'bal Windows-billentyű', rightWindowKey: 'jobb Windows-billentyű', selectKey: 'Billentyű választása', numpad0: 'Számbillentyűk 0', numpad1: 'Számbillentyűk 1', numpad2: 'Számbillentyűk 2', numpad3: 'Számbillentyűk 3', numpad4: 'Számbillentyűk 4', numpad5: 'Számbillentyűk 5', numpad6: 'Számbillentyűk 6', numpad7: 'Számbillentyűk 7', numpad8: 'Számbillentyűk 8', numpad9: 'Számbillentyűk 9', multiply: 'Szorzás', add: 'Hozzáadás', subtract: 'Kivonás', decimalPoint: 'Tizedespont', divide: 'Osztás', f1: 'F1', f2: 'F2', f3: 'F3', f4: 'F4', f5: 'F5', f6: 'F6', f7: 'F7', f8: 'F8', f9: 'F9', f10: 'F10', f11: 'F11', f12: 'F12', numLock: 'Num Lock', scrollLock: 'Scroll Lock', semiColon: 'Pontosvessző', equalSign: 'Egyenlőségjel', comma: 'Vessző', dash: 'Kötőjel', period: 'Pont', forwardSlash: 'Perjel', graveAccent: 'Visszafelé dőlő ékezet', openBracket: 'Nyitó szögletes zárójel', backSlash: 'fordított perjel', closeBracket: 'Záró szögletes zárójel', singleQuote: 'szimpla idézőjel' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/0000755000201500020150000000000014517055557022435 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/plugin.js0000755000201500020150000002037214517055557024300 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ ( function() { function noBlockLeft( bqBlock ) { for ( var i = 0, length = bqBlock.getChildCount(), child; i < length && ( child = bqBlock.getChild( i ) ); i++ ) { if ( child.type == CKEDITOR.NODE_ELEMENT && child.isBlockBoundary() ) return false; } return true; } var commandObject = { exec: function( editor ) { var state = editor.getCommand( 'blockquote' ).state, selection = editor.getSelection(), range = selection && selection.getRanges()[ 0 ]; if ( !range ) return; var bookmarks = selection.createBookmarks(); // Kludge for #1592: if the bookmark nodes are in the beginning of // blockquote, then move them to the nearest block element in the // blockquote. if ( CKEDITOR.env.ie ) { var bookmarkStart = bookmarks[ 0 ].startNode, bookmarkEnd = bookmarks[ 0 ].endNode, cursor; if ( bookmarkStart && bookmarkStart.getParent().getName() == 'blockquote' ) { cursor = bookmarkStart; while ( ( cursor = cursor.getNext() ) ) { if ( cursor.type == CKEDITOR.NODE_ELEMENT && cursor.isBlockBoundary() ) { bookmarkStart.move( cursor, true ); break; } } } if ( bookmarkEnd && bookmarkEnd.getParent().getName() == 'blockquote' ) { cursor = bookmarkEnd; while ( ( cursor = cursor.getPrevious() ) ) { if ( cursor.type == CKEDITOR.NODE_ELEMENT && cursor.isBlockBoundary() ) { bookmarkEnd.move( cursor ); break; } } } } var iterator = range.createIterator(), block; iterator.enlargeBr = editor.config.enterMode != CKEDITOR.ENTER_BR; if ( state == CKEDITOR.TRISTATE_OFF ) { var paragraphs = []; while ( ( block = iterator.getNextParagraph() ) ) paragraphs.push( block ); // If no paragraphs, create one from the current selection position. if ( paragraphs.length < 1 ) { var para = editor.document.createElement( editor.config.enterMode == CKEDITOR.ENTER_P ? 'p' : 'div' ), firstBookmark = bookmarks.shift(); range.insertNode( para ); para.append( new CKEDITOR.dom.text( '\ufeff', editor.document ) ); range.moveToBookmark( firstBookmark ); range.selectNodeContents( para ); range.collapse( true ); firstBookmark = range.createBookmark(); paragraphs.push( para ); bookmarks.unshift( firstBookmark ); } // Make sure all paragraphs have the same parent. var commonParent = paragraphs[ 0 ].getParent(), tmp = []; for ( var i = 0; i < paragraphs.length; i++ ) { block = paragraphs[ i ]; commonParent = commonParent.getCommonAncestor( block.getParent() ); } // The common parent must not be the following tags: table, tbody, tr, ol, ul. var denyTags = { table: 1, tbody: 1, tr: 1, ol: 1, ul: 1 }; while ( denyTags[ commonParent.getName() ] ) commonParent = commonParent.getParent(); // Reconstruct the block list to be processed such that all resulting blocks // satisfy parentNode.equals( commonParent ). var lastBlock = null; while ( paragraphs.length > 0 ) { block = paragraphs.shift(); while ( !block.getParent().equals( commonParent ) ) block = block.getParent(); if ( !block.equals( lastBlock ) ) tmp.push( block ); lastBlock = block; } // If any of the selected blocks is a blockquote, remove it to prevent // nested blockquotes. while ( tmp.length > 0 ) { block = tmp.shift(); if ( block.getName() == 'blockquote' ) { var docFrag = new CKEDITOR.dom.documentFragment( editor.document ); while ( block.getFirst() ) { docFrag.append( block.getFirst().remove() ); paragraphs.push( docFrag.getLast() ); } docFrag.replace( block ); } else { paragraphs.push( block ); } } // Now we have all the blocks to be included in a new blockquote node. var bqBlock = editor.document.createElement( 'blockquote' ); bqBlock.insertBefore( paragraphs[ 0 ] ); while ( paragraphs.length > 0 ) { block = paragraphs.shift(); bqBlock.append( block ); } } else if ( state == CKEDITOR.TRISTATE_ON ) { var moveOutNodes = [], database = {}; while ( ( block = iterator.getNextParagraph() ) ) { var bqParent = null, bqChild = null; while ( block.getParent() ) { if ( block.getParent().getName() == 'blockquote' ) { bqParent = block.getParent(); bqChild = block; break; } block = block.getParent(); } // Remember the blocks that were recorded down in the moveOutNodes array // to prevent duplicates. if ( bqParent && bqChild && !bqChild.getCustomData( 'blockquote_moveout' ) ) { moveOutNodes.push( bqChild ); CKEDITOR.dom.element.setMarker( database, bqChild, 'blockquote_moveout', true ); } } CKEDITOR.dom.element.clearAllMarkers( database ); var movedNodes = [], processedBlockquoteBlocks = []; database = {}; while ( moveOutNodes.length > 0 ) { var node = moveOutNodes.shift(); bqBlock = node.getParent(); // If the node is located at the beginning or the end, just take it out // without splitting. Otherwise, split the blockquote node and move the // paragraph in between the two blockquote nodes. if ( !node.getPrevious() ) node.remove().insertBefore( bqBlock ); else if ( !node.getNext() ) node.remove().insertAfter( bqBlock ); else { node.breakParent( node.getParent() ); processedBlockquoteBlocks.push( node.getNext() ); } // Remember the blockquote node so we can clear it later (if it becomes empty). if ( !bqBlock.getCustomData( 'blockquote_processed' ) ) { processedBlockquoteBlocks.push( bqBlock ); CKEDITOR.dom.element.setMarker( database, bqBlock, 'blockquote_processed', true ); } movedNodes.push( node ); } CKEDITOR.dom.element.clearAllMarkers( database ); // Clear blockquote nodes that have become empty. for ( i = processedBlockquoteBlocks.length - 1; i >= 0; i-- ) { bqBlock = processedBlockquoteBlocks[ i ]; if ( noBlockLeft( bqBlock ) ) bqBlock.remove(); } if ( editor.config.enterMode == CKEDITOR.ENTER_BR ) { var firstTime = true; while ( movedNodes.length ) { node = movedNodes.shift(); if ( node.getName() == 'div' ) { docFrag = new CKEDITOR.dom.documentFragment( editor.document ); var needBeginBr = firstTime && node.getPrevious() && !( node.getPrevious().type == CKEDITOR.NODE_ELEMENT && node.getPrevious().isBlockBoundary() ); if ( needBeginBr ) docFrag.append( editor.document.createElement( 'br' ) ); var needEndBr = node.getNext() && !( node.getNext().type == CKEDITOR.NODE_ELEMENT && node.getNext().isBlockBoundary() ); while ( node.getFirst() ) node.getFirst().remove().appendTo( docFrag ); if ( needEndBr ) docFrag.append( editor.document.createElement( 'br' ) ); docFrag.replace( node ); firstTime = false; } } } } selection.selectBookmarks( bookmarks ); editor.focus(); }, refresh: function( editor, path ) { // Check if inside of blockquote. var firstBlock = path.block || path.blockLimit; this.setState( editor.elementPath( firstBlock ).contains( 'blockquote', 1 ) ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF ); }, context: 'blockquote', allowedContent: 'blockquote', requiredContent: 'blockquote' }; CKEDITOR.plugins.add( 'blockquote', { // jscs:disable maximumLineLength lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en,en-au,en-ca,en-gb,eo,es,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% // jscs:enable maximumLineLength icons: 'blockquote', // %REMOVE_LINE_CORE% hidpi: true, // %REMOVE_LINE_CORE% init: function( editor ) { if ( editor.blockless ) return; editor.addCommand( 'blockquote', commandObject ); editor.ui.addButton && editor.ui.addButton( 'Blockquote', { label: editor.lang.blockquote.toolbar, command: 'blockquote', toolbar: 'blocks,10' } ); } } ); } )(); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/0000755000201500020150000000000014517055557023356 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/zh.js0000644000201500020150000000034014517055557024332 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'zh', { toolbar: '引用段落' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/nb.js0000644000201500020150000000033614517055557024315 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'nb', { toolbar: 'Blokksitat' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/eo.js0000644000201500020150000000033314517055557024316 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'eo', { toolbar: 'Citaĵo' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/es.js0000644000201500020150000000033014517055557024317 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'es', { toolbar: 'Cita' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/ro.js0000644000201500020150000000033114517055557024331 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'ro', { toolbar: 'Citat' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/hr.js0000644000201500020150000000033614517055557024327 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'hr', { toolbar: 'Blockquote' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/it.js0000644000201500020150000000033514517055557024331 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'it', { toolbar: 'Citazione' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/sk.js0000644000201500020150000000033414517055557024331 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'sk', { toolbar: 'Citácia' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/pt.js0000644000201500020150000000034614517055557024342 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'pt', { toolbar: 'Bloco de citação' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/si.js0000644000201500020150000000036314517055557024331 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'si', { toolbar: 'උද්ධෘත කොටස' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/ko.js0000644000201500020150000000034114517055557024323 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'ko', { toolbar: '인용 단락' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/mk.js0000644000201500020150000000035214517055557024323 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'mk', { toolbar: 'Block Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/cy.js0000644000201500020150000000034114517055557024325 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'cy', { toolbar: 'Dyfyniad bloc' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/uk.js0000644000201500020150000000034014517055557024330 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'uk', { toolbar: 'Цитата' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/zh-cn.js0000644000201500020150000000034014517055557024730 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'zh-cn', { toolbar: '块引用' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/sv.js0000644000201500020150000000033614517055557024346 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'sv', { toolbar: 'Blockcitat' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/lt.js0000644000201500020150000000033214517055557024331 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'lt', { toolbar: 'Citata' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/is.js0000644000201500020150000000033714517055557024332 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'is', { toolbar: 'Inndráttur' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/fr-ca.js0000644000201500020150000000033714517055557024707 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'fr-ca', { toolbar: 'Citation' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/et.js0000644000201500020150000000034014517055557024321 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'et', { toolbar: 'Blokktsitaat' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/bs.js0000644000201500020150000000035214517055557024320 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'bs', { toolbar: 'Block Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/pl.js0000644000201500020150000000033114517055557024324 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'pl', { toolbar: 'Cytat' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/bg.js0000644000201500020150000000035414517055557024306 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'bg', { toolbar: 'Блок за цитат' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/fa.js0000644000201500020150000000035214517055557024302 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'fa', { toolbar: 'بلوک نقل قول' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/ku.js0000644000201500020150000000041014517055557024326 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'ku', { toolbar: 'بەربەستکردنی ووتەی وەرگیراو' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/bn.js0000644000201500020150000000035214517055557024313 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'bn', { toolbar: 'Block Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/el.js0000644000201500020150000000036514517055557024320 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'el', { toolbar: 'Περιοχή Παράθεσης' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/fi.js0000644000201500020150000000033314517055557024311 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'fi', { toolbar: 'Lainaus' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/ru.js0000644000201500020150000000034014517055557024337 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'ru', { toolbar: 'Цитата' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/gl.js0000644000201500020150000000033014517055557024312 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'gl', { toolbar: 'Cita' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/sr-latn.js0000644000201500020150000000035714517055557025301 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'sr-latn', { toolbar: 'Block Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/sq.js0000644000201500020150000000033314517055557024336 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'sq', { toolbar: 'Citatet' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/pt-br.js0000644000201500020150000000034014517055557024735 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'pt-br', { toolbar: 'Citação' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/fo.js0000644000201500020150000000033614517055557024322 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'fo', { toolbar: 'Blockquote' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/af.js0000644000201500020150000000033614517055557024304 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'af', { toolbar: 'Sitaatblok' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/hi.js0000644000201500020150000000035514517055557024317 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'hi', { toolbar: 'ब्लॉक-कोट' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/km.js0000644000201500020150000000041214517055557024320 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'km', { toolbar: 'ប្លក់​ពាក្យ​សម្រង់' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/nl.js0000644000201500020150000000033614517055557024327 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'nl', { toolbar: 'Citaatblok' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/ka.js0000644000201500020150000000034614517055557024312 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'ka', { toolbar: 'ციტატა' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/mn.js0000644000201500020150000000035114517055557024325 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'mn', { toolbar: 'Ишлэл хэсэг' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/da.js0000644000201500020150000000033514517055557024301 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'da', { toolbar: 'Blokcitat' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/he.js0000644000201500020150000000034714517055557024314 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'he', { toolbar: 'בלוק ציטוט' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/ca.js0000644000201500020150000000034014517055557024274 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'ca', { toolbar: 'Bloc de cita' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/gu.js0000644000201500020150000000042014517055557024323 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'gu', { toolbar: 'બ્લૉક-કોટ, અવતરણચિહ્નો' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/ms.js0000644000201500020150000000035214517055557024333 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'ms', { toolbar: 'Block Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/th.js0000644000201500020150000000033714517055557024332 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'th', { toolbar: 'Block Quote' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/de.js0000644000201500020150000000033614517055557024306 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'de', { toolbar: 'Zitatblock' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/en-ca.js0000644000201500020150000000034214517055557024676 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'en-ca', { toolbar: 'Block Quote' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/tt.js0000644000201500020150000000035314517055557024344 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'tt', { toolbar: 'Өземтә блогы' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/vi.js0000644000201500020150000000034714517055557024336 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'vi', { toolbar: 'Khối trích dẫn' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/cs.js0000644000201500020150000000033214517055557024317 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'cs', { toolbar: 'Citace' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/tr.js0000644000201500020150000000034114517055557024337 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'tr', { toolbar: 'Blok Oluştur' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/ja.js0000644000201500020150000000035114517055557024305 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'ja', { toolbar: 'ブロック引用文' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/sl.js0000644000201500020150000000033114517055557024327 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'sl', { toolbar: 'Citat' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/lv.js0000644000201500020150000000034114517055557024333 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'lv', { toolbar: 'Bloka citāts' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/en-au.js0000644000201500020150000000034214517055557024720 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'en-au', { toolbar: 'Block Quote' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/en.js0000644000201500020150000000033714517055557024321 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'en', { toolbar: 'Block Quote' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/no.js0000644000201500020150000000033614517055557024332 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'no', { toolbar: 'Blokksitat' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/fr.js0000644000201500020150000000033414517055557024323 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'fr', { toolbar: 'Citation' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/id.js0000644000201500020150000000034014517055557024305 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'id', { toolbar: 'Kutipan Blok' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/ug.js0000644000201500020150000000035114517055557024326 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'ug', { toolbar: 'بۆلەك نەقىل' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/ar.js0000644000201500020150000000034014517055557024313 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'ar', { toolbar: 'اقتباس' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/sr.js0000644000201500020150000000035214517055557024340 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'sr', { toolbar: 'Block Quote' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/eu.js0000644000201500020150000000034214517055557024324 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'eu', { toolbar: 'Aipamen blokea' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/en-gb.js0000644000201500020150000000034214517055557024703 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'en-gb', { toolbar: 'Block Quote' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/lang/hu.js0000644000201500020150000000034114517055557024326 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'blockquote', 'hu', { toolbar: 'Idézet blokk' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/icons/0000755000201500020150000000000014517055557023550 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/icons/hidpi/0000755000201500020150000000000014517055557024645 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/icons/hidpi/blockquote.png0000644000201500020150000000427114517055557027527 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(xIDATX}lU?^sf4FQ8g2_Md&l.K-$BhL4eÉ }oC9K!s5& %#0 S*x7'CkMn饣cc((0]]~KRIRIAk}NI<ϣo$ɯ C G_xȈdY*J@AfxddETh y>;z'ׯ.W,`&٬hF0'\ '{{d{~y24Yԅmsdǎ?+-;."S f2_s啣G~ړH@%~`,t8[m ӳ}EOK4ex(FӌqH箻^D˚1L6z_f7R˩S1%ʶAYw,buWM yp YDeQLkjЮ(Co}Ƙǀ:nN&O޶]~<` ,P{I+gls?޽mc7m#O=e,X kڵ  < =U BʟaWP(DeUL뗯f3dWVg^c'%tEXtdate:create2013-06-20T11:07:04+02:00I%tEXtdate:modify2013-06-20T11:07:04+02:00tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/blockquote/icons/blockquote.png0000644000201500020150000000163514517055557026433 0ustar puckpuckPNG  IHDRabKGD pHYs B(xIDAT8m?H$w?NVnՀF0bHh(QB)ڤMa#b.6!VI&I;+"ͱ;3,qk)J `@oxL&Iz=4 q0Ɛ)~4MqattB0!QvD&!S(}'"h6Hu]Hh6T* Lx# |T4>>.7J 4?ft~~^@(JH2%=`ueeZ0䕤g^V 5qggg}k-ZVWW?5ƌ$Ih4V*&Qn8fwwZaߒh47֖׵z0 덍677533Sp{{;WkkkeR\.SVI...֖ncP>o4k-|l61CIu:?(or]RґyxG_sss%}_ո^ptt_$ -X,H:T*Q*p>$Ii/4}${bz\\8 ÐnFxr$0isc Indent DEV sample

Indent DEV sample

List & Block

  • 
    		

Indent classes

  • 
    		

List only

  • 
    		

Block only

  • 
    		

CKEDITOR.ENTER_BR

  • 
    		
rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/0000755000201500020150000000000014517055560022461 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/zh.js0000644000201500020150000000036514517055560023444 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'zh', { indent: '增加縮排', outdent: '減少縮排' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/nb.js0000644000201500020150000000036714517055560023424 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'nb', { indent: 'Øk innrykk', outdent: 'Reduser innrykk' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/eo.js0000644000201500020150000000042214517055560023420 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'eo', { indent: 'Pligrandigi Krommarĝenon', outdent: 'Malpligrandigi Krommarĝenon' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/es.js0000644000201500020150000000040014517055560023420 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'es', { indent: 'Aumentar Sangría', outdent: 'Disminuir Sangría' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/ro.js0000644000201500020150000000037714517055560023446 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'ro', { indent: 'Creşte indentarea', outdent: 'Scade indentarea' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/hr.js0000644000201500020150000000037214517055560023432 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'hr', { indent: 'Pomakni udesno', outdent: 'Pomakni ulijevo' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/it.js0000644000201500020150000000037214517055560023435 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'it', { indent: 'Aumenta rientro', outdent: 'Riduci rientro' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/sk.js0000644000201500020150000000040514517055560023433 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'sk', { indent: 'Zväčšiť odsadenie', outdent: 'Zmenšiť odsadenie' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/pt.js0000644000201500020150000000037514517055560023447 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'pt', { indent: 'Aumentar Avanço', outdent: 'Diminuir Avanço' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/si.js0000644000201500020150000000050414517055560023431 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'si', { indent: 'අතර පරතරය වැඩිකරන්න', outdent: 'අතර පරතරය අඩුකරන්න' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/ko.js0000644000201500020150000000036514517055560023434 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'ko', { indent: '들여쓰기', outdent: '내어쓰기' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/mk.js0000644000201500020150000000042114517055560023423 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'mk', { indent: 'Increase Indent', // MISSING outdent: 'Decrease Indent' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/cy.js0000644000201500020150000000040514517055560023431 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'cy', { indent: 'Cynyddu\'r Mewnoliad', outdent: 'Lleihau\'r Mewnoliad' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/uk.js0000644000201500020150000000043514517055560023440 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'uk', { indent: 'Збільшити відступ', outdent: 'Зменшити відступ' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/zh-cn.js0000644000201500020150000000037614517055560024044 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'zh-cn', { indent: '增加缩进量', outdent: '减少缩进量' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/sv.js0000644000201500020150000000036514517055560023453 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'sv', { indent: 'Öka indrag', outdent: 'Minska indrag' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/lt.js0000644000201500020150000000040414517055560023434 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'lt', { indent: 'Padidinti įtrauką', outdent: 'Sumažinti įtrauką' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/is.js0000644000201500020150000000037314517055560023435 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'is', { indent: 'Minnka inndrátt', outdent: 'Auka inndrátt' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/fr-ca.js0000644000201500020150000000040714517055560024010 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'fr-ca', { indent: 'Augmenter le retrait', outdent: 'Diminuer le retrait' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/et.js0000644000201500020150000000040314517055560023424 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'et', { indent: 'Taande suurendamine', outdent: 'Taande vähendamine' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/bs.js0000644000201500020150000000036514517055560023427 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'bs', { indent: 'Poveæaj uvod', outdent: 'Smanji uvod' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/pl.js0000644000201500020150000000037714517055560023441 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'pl', { indent: 'Zwiększ wcięcie', outdent: 'Zmniejsz wcięcie' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/bg.js0000644000201500020150000000045714517055560023415 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'bg', { indent: 'Увеличаване на отстъпа', outdent: 'Намаляване на отстъпа' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/fa.js0000644000201500020150000000041714517055560023407 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'fa', { indent: 'افزایش تورفتگی', outdent: 'کاهش تورفتگی' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/ku.js0000644000201500020150000000043714517055560023442 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'ku', { indent: 'زیادکردنی بۆشایی', outdent: 'کەمکردنەوەی بۆشایی' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/bn.js0000644000201500020150000000044414517055560023420 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'bn', { indent: 'ইনডেন্ট বাড়াও', outdent: 'ইনডেন্ট কমাও' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/el.js0000644000201500020150000000041714517055560023421 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'el', { indent: 'Αύξηση Εσοχής', outdent: 'Μείωση Εσοχής' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/fi.js0000644000201500020150000000040614517055560023415 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'fi', { indent: 'Suurenna sisennystä', outdent: 'Pienennä sisennystä' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/ru.js0000644000201500020150000000043314517055560023445 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'ru', { indent: 'Увеличить отступ', outdent: 'Уменьшить отступ' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/gl.js0000644000201500020150000000040214517055560023415 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'gl', { indent: 'Aumentar a sangría', outdent: 'Reducir a sangría' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/sr-latn.js0000644000201500020150000000041114517055560024373 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'sr-latn', { indent: 'Uvećaj levu marginu', outdent: 'Smanji levu marginu' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/sq.js0000644000201500020150000000037214517055560023444 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'sq', { indent: 'Rrite Identin', outdent: 'Zvogëlo Identin' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/pt-br.js0000644000201500020150000000037414517055560024047 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'pt-br', { indent: 'Aumentar Recuo', outdent: 'Diminuir Recuo' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/fo.js0000644000201500020150000000041514517055560023423 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'fo', { indent: 'Økja reglubrotarinntriv', outdent: 'Minka reglubrotarinntriv' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/af.js0000644000201500020150000000037714517055560023414 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'af', { indent: 'Vergroot inspring', outdent: 'Verklein inspring' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/hi.js0000644000201500020150000000046414517055560023423 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'hi', { indent: 'इन्डॅन्ट बढ़ायें', outdent: 'इन्डॅन्ट कम करें' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/km.js0000644000201500020150000000051414517055560023426 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'km', { indent: 'បន្ថែមការចូលបន្ទាត់', outdent: 'បន្ថយការចូលបន្ទាត់' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/nl.js0000644000201500020150000000041014517055560023423 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'nl', { indent: 'Inspringing vergroten', outdent: 'Inspringing verkleinen' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/ka.js0000644000201500020150000000045214517055560023413 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'ka', { indent: 'მეტად შეწევა', outdent: 'ნაკლებად შეწევა' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/mn.js0000644000201500020150000000042514517055560023432 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'mn', { indent: 'Догол мөр хасах', outdent: 'Догол мөр нэмэх' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/da.js0000644000201500020150000000040214517055560023377 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'da', { indent: 'Forøg indrykning', outdent: 'Formindsk indrykning' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/he.js0000644000201500020150000000040314517055560023410 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'he', { indent: 'הגדלת הזחה', outdent: 'הקטנת הזחה' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/ca.js0000644000201500020150000000040014517055560023374 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'ca', { indent: 'Augmenta el sagnat', outdent: 'Redueix el sagnat' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/gu.js0000644000201500020150000000064614517055560023440 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'gu', { indent: 'ઇન્ડેન્ટ, લીટીના આરંભમાં જગ્યા વધારવી', outdent: 'ઇન્ડેન્ટ લીટીના આરંભમાં જગ્યા ઘટાડવી' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/ms.js0000644000201500020150000000037314517055560023441 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'ms', { indent: 'Tambahkan Inden', outdent: 'Kurangkan Inden' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/th.js0000644000201500020150000000046414517055560023436 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'th', { indent: 'เพิ่มระยะย่อหน้า', outdent: 'ลดระยะย่อหน้า' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/de.js0000644000201500020150000000037514517055560023414 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'de', { indent: 'Einzug erhöhen', outdent: 'Einzug verringern' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/en-ca.js0000644000201500020150000000037614517055560024010 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'en-ca', { indent: 'Increase Indent', outdent: 'Decrease Indent' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/tt.js0000644000201500020150000000043714517055560023452 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'tt', { indent: 'Отступны арттыру', outdent: 'Отступны кечерәйтү' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/vi.js0000644000201500020150000000037614517055560023443 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'vi', { indent: 'Dịch vào trong', outdent: 'Dịch ra ngoài' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/cs.js0000644000201500020150000000040214517055560023420 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'cs', { indent: 'Zvětšit odsazení', outdent: 'Zmenšit odsazení' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/tr.js0000644000201500020150000000036514517055560023450 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'tr', { indent: 'Sekme Arttır', outdent: 'Sekme Azalt' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/ja.js0000644000201500020150000000040114517055560023404 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'ja', { indent: 'インデント', outdent: 'インデント解除' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/sl.js0000644000201500020150000000037214517055560023437 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'sl', { indent: 'Povečaj zamik', outdent: 'Zmanjšaj zamik' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/lv.js0000644000201500020150000000040214517055560023434 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'lv', { indent: 'Palielināt atkāpi', outdent: 'Samazināt atkāpi' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/en-au.js0000644000201500020150000000037614517055560024032 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'en-au', { indent: 'Increase Indent', outdent: 'Decrease Indent' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/en.js0000644000201500020150000000037314517055560023424 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'en', { indent: 'Increase Indent', outdent: 'Decrease Indent' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/no.js0000644000201500020150000000036714517055560023441 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'no', { indent: 'Øk innrykk', outdent: 'Reduser innrykk' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/fr.js0000644000201500020150000000043614517055560023431 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'fr', { indent: 'Augmenter le retrait (tabulation)', outdent: 'Diminuer le retrait (tabulation)' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/id.js0000644000201500020150000000037214517055560023415 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'id', { indent: 'Tingkatkan Lekuk', outdent: 'Kurangi Lekuk' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/ug.js0000644000201500020150000000036514517055560023436 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'ug', { indent: 'تارايت', outdent: 'كەڭەيت' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/ar.js0000644000201500020150000000045514517055560023425 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'ar', { indent: 'زيادة المسافة البادئة', outdent: 'إنقاص المسافة البادئة' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/sr.js0000644000201500020150000000044314517055560023444 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'sr', { indent: 'Увећај леву маргину', outdent: 'Смањи леву маргину' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/eu.js0000644000201500020150000000036714517055560023436 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'eu', { indent: 'Handitu Koska', outdent: 'Txikitu Koska' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/en-gb.js0000644000201500020150000000037614517055560024015 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'en-gb', { indent: 'Increase Indent', outdent: 'Decrease Indent' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/lang/hu.js0000644000201500020150000000041014517055560023426 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'indent', 'hu', { indent: 'Behúzás növelése', outdent: 'Behúzás csökkentése' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/icons/0000755000201500020150000000000014517055560022653 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/icons/hidpi/0000755000201500020150000000000014517055560023750 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/icons/hidpi/indent.png0000644000201500020150000000304514517055560025741 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(x>IDATXŗKU{oUktƀFh"Ν+ CbZbpƥWLHHJ! L3LWMuO^UaNR9uO?=%OL;H̦RJRH!!Zkt2`6Kq5x2ZP?%%cc?ךMX:u)%IǁlvI b=譱1m 2v, %yrl,~0[ pu5nfǶI6Fkd"1f% |xRr4ٱρ/FG;7}%%Et{t Zepr[1ύp{zuavzLD0 ՃB3<׮1b15wsw |e1<1}p׷̻.%͢Tl\{2ꓱH#RJT ӧhcH `u["{'&KKB`R^Z.lqH'YU:JJDmKTs-H eR˱m'bc󵙙14()7āL2@:FZJQ[R)ccovûvqmr33={>4I6^N\,&X{qdIG34s oq"/_@H%JQ,O1XAF/L&Сώ/\trҥ2:#aXl@W ~bh(~]gRp~qL&ҁM-+u N6 Cݾm[{<ۖ@8۲67ZTrr"C:NTO0gQ] uTERJ`~ZklߎHpv X\Upzy74 ' QHV@cy`ju+:|[:k{2yy 58ȊF>$yb,!LEPKR,GG@YΝzErP<t9+Vå5<ຘAО .ZujG3&Z)Ʋ9sj8 r@\ mՖ1ێ6SRÇ 3 JI>kzC.t[]Οxjo}\&m8BkJpxvna'hҸR%tEXtdate:create2013-06-20T11:07:04+02:00I%tEXtdate:modify2013-06-20T11:07:04+02:00tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/icons/hidpi/indent-rtl.png0000644000201500020150000000311214517055560026533 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(xcIDATXŗKQU]v,"Kh`"xaA |$Cd)h, F"/`DL$1"Ğ3]]U]U]<{ϖ.Nwa*@kxZkV 5f# Gpժ8 @}-TJOϜyzuuu%4J)D[R;!"V ǏkA^9bDZ^M@ae$ b4BF8 tM`Zk☩s疁Gɕ+MTvZgϾ\,@ܹ/_~6 glIZxڵk<DŽ!sE1M(",C&TuαFWZHQ(/zLj~E\l/'}[O(ʄ276,@ktr7~G#txr|=9R0gRD67.\x{i4`'R h["jM=ĶxZЊc^,Ë*e6hQ"iK9\Q`VY|}/FΕWrāNVD(mh@dZ)qihSss?fg_AC~r?I&=;);,Jĺv_:ߝ_XFuꔛia_c5;uU\V=(Y2yia =7?f.ϱŸ~w%ْΑt{.޽{񹹙(NI6,.^ZM 5/7G7~ ^KU90r|k(]'+꯮r3h4v@uɉXukLv:Z^/ xfD= 8E{rw% A@MX\|R;LD65Ь8Uq`|hi1q""le[-Pj~s@>cL՚n?T\ZUp~\uګx^ 8WQ]Pe<[kkkQ\/ 꾢?/^,_6qA. $j7b}>)tG(Kc8⋮$+;w$ 0m4A;n$k +PƐ$ߦ!^JcMsmdl c+xM\Ρ߆{IpW'`v-p/s,9JSI(P@19 H ZqLE2EHc |8r`W==5^So-/ d嗋< O,F=s.Z92W9?/^2d9s~:}ܤ(~ ^2c=d2yӸ0E9_]Q#"ӷWz29jkcIw'OG7\:q HZ-*ynRPṜ<{v& Fh]PJaE=[[YA% @iR JT5^}FrAI5E4f;&ERf/`ܴ~E]պ+ccsy8w0 {?!V+E+|0Z\q /Be G#t/25b6In5(B--}=;Y^E<. eEu;i`ؾ_^"BQC(QÌF{~z"Ε{ZxWw7oEQo?W8_6o݋hq޳f4ә3A" G#oy?ׯ}ă.ͲvmQWE)}7>`UD^|rܷQ0aH݆JSY[g.=u0$hױcKGDŽIiK?P4|_~՚m4P{pF6& QTH-'<f(nR J}Ўcp]T> _XT>f[[R k-V[oM?@; zvcn4hYZ*@E#A0@msތ+#vsVy,(y@23gj7Ν#_r40`y 2|dWH#4,ZzPD E„ayX=Zط=ロ5)sm[[Ӵ>6Q7)A@X̀m7pxm:4c[vJJG2.9WN/h ]S|: _ )?~¨%tEXtdate:create2013-06-20T11:07:04+02:00I%tEXtdate:modify2013-06-20T11:07:04+02:00tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/icons/hidpi/outdent-rtl.png0000644000201500020150000000306014517055560026736 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(xIIDATXŗMU{o}tuOO*`ƅ!1$ILda0 {D[ +:\9&0A4M2NWuWW׽EU=0_ SyR?.>v{]u_%^j4;I)ֹmFkZ:ON>DQUcPJmF12NA ^tm8xf?x9(Aŋg0.^<&Ѿ+ZSJaHƏ";'yF@+5 TjÐf5n8M 툔0hQ"il ue>ZlyZ ;1Aow[;fFDKoRN(4FQC@c^g+rmYMt٫WVSSo^n\_#EE ntJZ0U GQ_c8z3ȲBп|~|`߾J#qLNN`p[:Z׏?&7ωRkk(4qq:v(ppIi4(;ʁ}@gvRQ,[>" ]ro['.5P]xƺy@',#OGi&N/~Smqf膲^p=R e q'x` ~4,b_40p'k8fL?>6 wg߆9zq 0KN? ձm%tEXtdate:create2013-06-20T11:07:04+02:00I%tEXtdate:modify2013-06-20T11:07:04+02:00tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/icons/indent.png0000644000201500020150000000130714517055560024643 0ustar puckpuckPNG  IHDRabKGD pHYs B(xIDAT8˅@Y7c9O6=@s@ Ч zZ{wHAPq-lj6pw4蛟'777`!ڶp8ڇ4%sDzMYmc Z18{vc9c,#"Dd:n>9$cL8دAD$HhuY&IbA=v9MemFo"! C!i~x|>ozt[۶,Km(bfiv[=y7e%tEXtdate:create2013-07-04T17:03:03+02:00Mx%tEXtdate:modify2013-07-04T17:03:03+02:00<tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/indent/icons/indent-rtl.png0000644000201500020150000000132614517055560025443 0ustar puckpuckPNG  IHDRabKGD pHYs B(xIDAT8˅SnA} H\r-?%Br Y S>;JKuRuMsU"{ j.l>hc DgA ZyZ,K1ysL"8'IX6vmwa8nueɅūCb!~>SEUu]ik-I;PVU%mcZd11Y n,K_Byq{0qI᳤m=ȲfQ{$ahwƘb|rsnJ̒9`\__sqqkW16M뺷]cb>g*2Eq_<߬Ԍ%tEXtdate:create2013-07-04T17:03:03+02:00Mx%tEXtdate:modify2013-07-04T17:03:03+02:00<tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/0000755000201500020150000000000014517055557021233 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/font/plugin.js0000644000201500020150000002476714517055557023107 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ ( function() { function addCombo( editor, comboName, styleType, lang, entries, defaultLabel, styleDefinition, order ) { var config = editor.config, style = new CKEDITOR.style( styleDefinition ); // Gets the list of fonts from the settings. var names = entries.split( ';' ), values = []; // Create style objects for all fonts. var styles = {}; for ( var i = 0; i < names.length; i++ ) { var parts = names[ i ]; if ( parts ) { parts = parts.split( '/' ); var vars = {}, name = names[ i ] = parts[ 0 ]; vars[ styleType ] = values[ i ] = parts[ 1 ] || name; styles[ name ] = new CKEDITOR.style( styleDefinition, vars ); styles[ name ]._.definition.name = name; } else { names.splice( i--, 1 ); } } editor.ui.addRichCombo( comboName, { label: lang.label, title: lang.panelTitle, toolbar: 'styles,' + order, allowedContent: style, requiredContent: style, panel: { css: [ CKEDITOR.skin.getPath( 'editor' ) ].concat( config.contentsCss ), multiSelect: false, attributes: { 'aria-label': lang.panelTitle } }, init: function() { this.startGroup( lang.panelTitle ); for ( var i = 0; i < names.length; i++ ) { var name = names[ i ]; // Add the tag entry to the panel list. this.add( name, styles[ name ].buildPreview(), name ); } }, onClick: function( value ) { editor.focus(); editor.fire( 'saveSnapshot' ); var previousValue = this.getValue(), style = styles[ value ]; // When applying one style over another, first remove the previous one (#12403). // NOTE: This is only a temporary fix. It will be moved to the styles system (#12687). if ( previousValue && value != previousValue ) { var previousStyle = styles[ previousValue ], range = editor.getSelection().getRanges()[ 0 ]; // If the range is collapsed we can't simply use the editor.removeStyle method // because it will remove the entire element and we want to split it instead. if ( range.collapsed ) { var path = editor.elementPath(), // Find the style element. matching = path.contains( function( el ) { return previousStyle.checkElementRemovable( el ); } ); if ( matching ) { var startBoundary = range.checkBoundaryOfElement( matching, CKEDITOR.START ), endBoundary = range.checkBoundaryOfElement( matching, CKEDITOR.END ), node, bm; // If we are at both boundaries it means that the element is empty. // Remove it but in a way that we won't lose other empty inline elements inside it. // Example:

x[]x

// Result:

x[]x

if ( startBoundary && endBoundary ) { bm = range.createBookmark(); // Replace the element with its children (TODO element.replaceWithChildren). while ( ( node = matching.getFirst() ) ) { node.insertBefore( matching ); } matching.remove(); range.moveToBookmark( bm ); // If we are at the boundary of the style element, just move out. } else if ( startBoundary ) { range.moveToPosition( matching, CKEDITOR.POSITION_BEFORE_START ); } else if ( endBoundary ) { range.moveToPosition( matching, CKEDITOR.POSITION_AFTER_END ); } else { // Split the element and clone the elements that were in the path // (between the startContainer and the matching element) // into the new place. range.splitElement( matching ); range.moveToPosition( matching, CKEDITOR.POSITION_AFTER_END ); cloneSubtreeIntoRange( range, path.elements.slice(), matching ); } editor.getSelection().selectRanges( [ range ] ); } } else { editor.removeStyle( previousStyle ); } } editor[ previousValue == value ? 'removeStyle' : 'applyStyle' ]( style ); editor.fire( 'saveSnapshot' ); }, onRender: function() { editor.on( 'selectionChange', function( ev ) { var currentValue = this.getValue(); var elementPath = ev.data.path, elements = elementPath.elements; // For each element into the elements path. for ( var i = 0, element; i < elements.length; i++ ) { element = elements[ i ]; // Check if the element is removable by any of // the styles. for ( var value in styles ) { if ( styles[ value ].checkElementMatch( element, true, editor ) ) { if ( value != currentValue ) this.setValue( value ); return; } } } // If no styles match, just empty it. this.setValue( '', defaultLabel ); }, this ); }, refresh: function() { if ( !editor.activeFilter.check( style ) ) this.setState( CKEDITOR.TRISTATE_DISABLED ); } } ); } // Clones the subtree between subtreeStart (exclusive) and the // leaf (inclusive) and inserts it into the range. // // @param range // @param {CKEDITOR.dom.element[]} elements Elements path in the standard order: leaf -> root. // @param {CKEDITOR.dom.element/null} substreeStart The start of the subtree. // If null, then the leaf belongs to the subtree. function cloneSubtreeIntoRange( range, elements, subtreeStart ) { var current = elements.pop(); if ( !current ) { return; } // Rewind the elements array up to the subtreeStart and then start the real cloning. if ( subtreeStart ) { return cloneSubtreeIntoRange( range, elements, current.equals( subtreeStart ) ? null : subtreeStart ); } var clone = current.clone(); range.insertNode( clone ); range.moveToPosition( clone, CKEDITOR.POSITION_AFTER_START ); cloneSubtreeIntoRange( range, elements ); } CKEDITOR.plugins.add( 'font', { requires: 'richcombo', // jscs:disable maximumLineLength lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en,en-au,en-ca,en-gb,eo,es,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% // jscs:enable maximumLineLength init: function( editor ) { var config = editor.config; addCombo( editor, 'Font', 'family', editor.lang.font, config.font_names, config.font_defaultLabel, config.font_style, 30 ); addCombo( editor, 'FontSize', 'size', editor.lang.font.fontSize, config.fontSize_sizes, config.fontSize_defaultLabel, config.fontSize_style, 40 ); } } ); } )(); /** * The list of fonts names to be displayed in the Font combo in the toolbar. * Entries are separated by semi-colons (`';'`), while it's possible to have more * than one font for each entry, in the HTML way (separated by comma). * * A display name may be optionally defined by prefixing the entries with the * name and the slash character. For example, `'Arial/Arial, Helvetica, sans-serif'` * will be displayed as `'Arial'` in the list, but will be outputted as * `'Arial, Helvetica, sans-serif'`. * * config.font_names = * 'Arial/Arial, Helvetica, sans-serif;' + * 'Times New Roman/Times New Roman, Times, serif;' + * 'Verdana'; * * config.font_names = 'Arial;Times New Roman;Verdana'; * * @cfg {String} [font_names=see source] * @member CKEDITOR.config */ CKEDITOR.config.font_names = 'Arial/Arial, Helvetica, sans-serif;' + 'Comic Sans MS/Comic Sans MS, cursive;' + 'Courier New/Courier New, Courier, monospace;' + 'Georgia/Georgia, serif;' + 'Lucida Sans Unicode/Lucida Sans Unicode, Lucida Grande, sans-serif;' + 'Tahoma/Tahoma, Geneva, sans-serif;' + 'Times New Roman/Times New Roman, Times, serif;' + 'Trebuchet MS/Trebuchet MS, Helvetica, sans-serif;' + 'Verdana/Verdana, Geneva, sans-serif'; /** * The text to be displayed in the Font combo is none of the available values * matches the current cursor position or text selection. * * // If the default site font is Arial, we may making it more explicit to the end user. * config.font_defaultLabel = 'Arial'; * * @cfg {String} [font_defaultLabel=''] * @member CKEDITOR.config */ CKEDITOR.config.font_defaultLabel = ''; /** * The style definition to be used to apply the font in the text. * * // This is actually the default value for it. * config.font_style = { * element: 'span', * styles: { 'font-family': '#(family)' }, * overrides: [ { element: 'font', attributes: { 'face': null } } ] * }; * * @cfg {Object} [font_style=see example] * @member CKEDITOR.config */ CKEDITOR.config.font_style = { element: 'span', styles: { 'font-family': '#(family)' }, overrides: [ { element: 'font', attributes: { 'face': null } } ] }; /** * The list of fonts size to be displayed in the Font Size combo in the * toolbar. Entries are separated by semi-colons (`';'`). * * Any kind of "CSS like" size can be used, like `'12px'`, `'2.3em'`, `'130%'`, * `'larger'` or `'x-small'`. * * A display name may be optionally defined by prefixing the entries with the * name and the slash character. For example, `'Bigger Font/14px'` will be * displayed as `'Bigger Font'` in the list, but will be outputted as `'14px'`. * * config.fontSize_sizes = '16/16px;24/24px;48/48px;'; * * config.fontSize_sizes = '12px;2.3em;130%;larger;x-small'; * * config.fontSize_sizes = '12 Pixels/12px;Big/2.3em;30 Percent More/130%;Bigger/larger;Very Small/x-small'; * * @cfg {String} [fontSize_sizes=see source] * @member CKEDITOR.config */ CKEDITOR.config.fontSize_sizes = '8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px'; /** * The text to be displayed in the Font Size combo is none of the available * values matches the current cursor position or text selection. * * // If the default site font size is 12px, we may making it more explicit to the end user. * config.fontSize_defaultLabel = '12px'; * * @cfg {String} [fontSize_defaultLabel=''] * @member CKEDITOR.config */ CKEDITOR.config.fontSize_defaultLabel = ''; /** * The style definition to be used to apply the font size in the text. * * // This is actually the default value for it. * config.fontSize_style = { * element: 'span', * styles: { 'font-size': '#(size)' }, * overrides: [ { element :'font', attributes: { 'size': null } } ] * }; * * @cfg {Object} [fontSize_style=see example] * @member CKEDITOR.config */ CKEDITOR.config.fontSize_style = { element: 'span', styles: { 'font-size': '#(size)' }, overrides: [ { element: 'font', attributes: { 'size': null } } ] }; rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/0000755000201500020150000000000014517055557022154 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/zh.js0000644000201500020150000000054514517055557023137 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'zh', { fontSize: { label: '大小', voiceLabel: '字型大小', panelTitle: '字型大小' }, label: '字型', panelTitle: '字型名稱', voiceLabel: '字型' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/nb.js0000644000201500020150000000055114517055557023112 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'nb', { fontSize: { label: 'Størrelse', voiceLabel: 'Skriftstørrelse', panelTitle: 'Skriftstørrelse' }, label: 'Skrift', panelTitle: 'Skrift', voiceLabel: 'Font' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/eo.js0000644000201500020150000000054314517055557023117 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'eo', { fontSize: { label: 'Grado', voiceLabel: 'Tipara grado', panelTitle: 'Tipara grado' }, label: 'Tiparo', panelTitle: 'Tipara nomo', voiceLabel: 'Tiparo' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/es.js0000644000201500020150000000054014517055557023120 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'es', { fontSize: { label: 'Tamaño', voiceLabel: 'Tamaño de fuente', panelTitle: 'Tamaño' }, label: 'Fuente', panelTitle: 'Fuente', voiceLabel: 'Fuente' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/ro.js0000644000201500020150000000052214517055557023131 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'ro', { fontSize: { label: 'Mărime', voiceLabel: 'Font Size', panelTitle: 'Mărime' }, label: 'Font', panelTitle: 'Font', voiceLabel: 'Font' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/hr.js0000644000201500020150000000053414517055557023125 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'hr', { fontSize: { label: 'Veličina', voiceLabel: 'Veličina slova', panelTitle: 'Veličina' }, label: 'Font', panelTitle: 'Font', voiceLabel: 'Font' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/it.js0000644000201500020150000000056214517055557023131 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'it', { fontSize: { label: 'Dimensione', voiceLabel: 'Dimensione Carattere', panelTitle: 'Dimensione' }, label: 'Carattere', panelTitle: 'Carattere', voiceLabel: 'Carattere' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/sk.js0000644000201500020150000000055414517055557023133 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'sk', { fontSize: { label: 'Veľkosť', voiceLabel: 'Veľkosť písma', panelTitle: 'Veľkosť písma' }, label: 'Font', panelTitle: 'Názov fontu', voiceLabel: 'Font' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/pt.js0000644000201500020150000000057514517055557023144 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'pt', { fontSize: { label: 'Tamanho', voiceLabel: 'Tamanho da letra', panelTitle: 'Tamanho da letra' }, label: 'Fonte', panelTitle: 'Nome do Tipo de Letra', voiceLabel: 'Tipo de Letra' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/si.js0000644000201500020150000000073514517055557023132 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'si', { fontSize: { label: 'විශාලත්වය', voiceLabel: 'අක්ෂර විශාලත්වය', panelTitle: 'අක්ෂර විශාලත්වය' }, label: 'අක්ෂරය', panelTitle: 'අක්ෂර නාමය', voiceLabel: 'අක්ෂර' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/ko.js0000644000201500020150000000054114517055557023123 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'ko', { fontSize: { label: '크기', voiceLabel: '글자 크기', panelTitle: '글자 크기' }, label: '글꼴', panelTitle: '글꼴', voiceLabel: '글꼴' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/mk.js0000644000201500020150000000056714517055557023131 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'mk', { fontSize: { label: 'Size', voiceLabel: 'Font Size', panelTitle: 'Font Size' }, label: 'Font', // MISSING panelTitle: 'Font Name', // MISSING voiceLabel: 'Font' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/cy.js0000644000201500020150000000054414517055557023130 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'cy', { fontSize: { label: 'Maint', voiceLabel: 'Maint y Ffont', panelTitle: 'Maint y Ffont' }, label: 'Ffont', panelTitle: 'Enw\'r Ffont', voiceLabel: 'Ffont' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/uk.js0000644000201500020150000000057614517055557023141 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'uk', { fontSize: { label: 'Розмір', voiceLabel: 'Розмір шрифту', panelTitle: 'Розмір' }, label: 'Шрифт', panelTitle: 'Шрифт', voiceLabel: 'Шрифт' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/zh-cn.js0000644000201500020150000000053414517055557023533 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'zh-cn', { fontSize: { label: '大小', voiceLabel: '文字大小', panelTitle: '大小' }, label: '字体', panelTitle: '字体', voiceLabel: '字体' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/sv.js0000644000201500020150000000055014517055557023142 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'sv', { fontSize: { label: 'Storlek', voiceLabel: 'Teckenstorlek', panelTitle: 'Teckenstorlek' }, label: 'Typsnitt', panelTitle: 'Typsnitt', voiceLabel: 'Typsnitt' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/lt.js0000644000201500020150000000055614517055557023137 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'lt', { fontSize: { label: 'Šrifto dydis', voiceLabel: 'Šrifto dydis', panelTitle: 'Šrifto dydis' }, label: 'Šriftas', panelTitle: 'Šriftas', voiceLabel: 'Šriftas' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/is.js0000644000201500020150000000056314517055557023131 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'is', { fontSize: { label: 'Leturstærð ', voiceLabel: 'Font Size', panelTitle: 'Leturstærð ' }, label: 'Leturgerð ', panelTitle: 'Leturgerð ', voiceLabel: 'Leturgerð ' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/fr-ca.js0000644000201500020150000000052614517055557023505 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'fr-ca', { fontSize: { label: 'Taille', voiceLabel: 'Taille', panelTitle: 'Taille' }, label: 'Police', panelTitle: 'Police', voiceLabel: 'Police' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/et.js0000644000201500020150000000052314517055557023122 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'et', { fontSize: { label: 'Suurus', voiceLabel: 'Kirja suurus', panelTitle: 'Suurus' }, label: 'Kiri', panelTitle: 'Kiri', voiceLabel: 'Kiri' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/bs.js0000644000201500020150000000052614517055557023121 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'bs', { fontSize: { label: 'Velièina', voiceLabel: 'Font Size', panelTitle: 'Velièina' }, label: 'Font', panelTitle: 'Font', voiceLabel: 'Font' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/pl.js0000644000201500020150000000054514517055557023131 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'pl', { fontSize: { label: 'Rozmiar', voiceLabel: 'Rozmiar czcionki', panelTitle: 'Rozmiar' }, label: 'Czcionka', panelTitle: 'Czcionka', voiceLabel: 'Czcionka' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/bg.js0000644000201500020150000000063514517055557023106 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'bg', { fontSize: { label: 'Размер', voiceLabel: 'Размер на шрифт', panelTitle: 'Размер на шрифт' }, label: 'Шрифт', panelTitle: 'Име на шрифт', voiceLabel: 'Шрифт' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/fa.js0000644000201500020150000000057214517055557023104 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'fa', { fontSize: { label: 'اندازه', voiceLabel: 'اندازه قلم', panelTitle: 'اندازه قلم' }, label: 'قلم', panelTitle: 'نام قلم', voiceLabel: 'قلم' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/ku.js0000644000201500020150000000061414517055557023132 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'ku', { fontSize: { label: 'گەورەیی', voiceLabel: 'گەورەیی فۆنت', panelTitle: 'گەورەیی فۆنت' }, label: 'فۆنت', panelTitle: 'ناوی فۆنت', voiceLabel: 'فۆنت' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/bn.js0000644000201500020150000000056414517055557023116 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'bn', { fontSize: { label: 'সাইজ', voiceLabel: 'Font Size', panelTitle: 'সাইজ' }, label: 'ফন্ট', panelTitle: 'ফন্ট', voiceLabel: 'ফন্ট' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/el.js0000644000201500020150000000075614517055557023122 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'el', { fontSize: { label: 'Μέγεθος', voiceLabel: 'Μέγεθος Γραμματοσειράς', panelTitle: 'Μέγεθος Γραμματοσειράς' }, label: 'Γραμματοσειρά', panelTitle: 'Όνομα Γραμματοσειράς', voiceLabel: 'Γραμματοσειρά' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/fi.js0000644000201500020150000000055614517055557023116 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'fi', { fontSize: { label: 'Koko', voiceLabel: 'Kirjaisimen koko', panelTitle: 'Koko' }, label: 'Kirjaisinlaji', panelTitle: 'Kirjaisinlaji', voiceLabel: 'Kirjaisinlaji' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/ru.js0000644000201500020150000000061314517055557023140 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'ru', { fontSize: { label: 'Размер', voiceLabel: 'Размер шрифта', panelTitle: 'Размер шрифта' }, label: 'Шрифт', panelTitle: 'Шрифт', voiceLabel: 'Шрифт' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/gl.js0000644000201500020150000000060514517055557023115 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'gl', { fontSize: { label: 'Tamaño', voiceLabel: 'Tamaño da letra', panelTitle: 'Tamaño da letra' }, label: 'Tipo de letra', panelTitle: 'Nome do tipo de letra', voiceLabel: 'Tipo de letra' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/sr-latn.js0000644000201500020150000000054714517055557024100 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'sr-latn', { fontSize: { label: 'Veličina fonta', voiceLabel: 'Font Size', panelTitle: 'Veličina fonta' }, label: 'Font', panelTitle: 'Font', voiceLabel: 'Font' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/sq.js0000644000201500020150000000060514517055557023136 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'sq', { fontSize: { label: 'Madhësia', voiceLabel: 'Madhësia e Shkronjës', panelTitle: 'Madhësia e Shkronjës' }, label: 'Shkronja', panelTitle: 'Emri i Shkronjës', voiceLabel: 'Shkronja' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/pt-br.js0000644000201500020150000000053714517055557023543 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'pt-br', { fontSize: { label: 'Tamanho', voiceLabel: 'Tamanho da fonte', panelTitle: 'Tamanho' }, label: 'Fonte', panelTitle: 'Fonte', voiceLabel: 'Fonte' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/fo.js0000644000201500020150000000054514517055557023122 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'fo', { fontSize: { label: 'Skriftstødd', voiceLabel: 'Skriftstødd', panelTitle: 'Skriftstødd' }, label: 'Skrift', panelTitle: 'Skrift', voiceLabel: 'Skrift' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/af.js0000644000201500020150000000053414517055557023102 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'af', { fontSize: { label: 'Grootte', voiceLabel: 'Fontgrootte', panelTitle: 'Fontgrootte' }, label: 'Font', panelTitle: 'Fontnaam', voiceLabel: 'Font' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/hi.js0000644000201500020150000000057514517055557023121 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'hi', { fontSize: { label: 'साइज़', voiceLabel: 'Font Size', panelTitle: 'साइज़' }, label: 'फ़ॉन्ट', panelTitle: 'फ़ॉन्ट', voiceLabel: 'फ़ॉन्ट' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/km.js0000644000201500020150000000075414517055557023127 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'km', { fontSize: { label: 'ទំហំ', voiceLabel: 'ទំហំ​អក្សរ', panelTitle: 'ទំហំ​អក្សរ' }, label: 'ពុម្ព​អក្សរ', panelTitle: 'ឈ្មោះ​ពុម្ព​អក្សរ', voiceLabel: 'ពុម្ព​អក្សរ' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/nl.js0000644000201500020150000000056414517055557023130 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'nl', { fontSize: { label: 'Lettergrootte', voiceLabel: 'Lettergrootte', panelTitle: 'Lettergrootte' }, label: 'Lettertype', panelTitle: 'Lettertype', voiceLabel: 'Lettertype' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/ka.js0000644000201500020150000000070214517055557023104 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'ka', { fontSize: { label: 'ზომა', voiceLabel: 'ტექსტის ზომა', panelTitle: 'ტექსტის ზომა' }, label: 'ფონტი', panelTitle: 'ფონტის სახელი', voiceLabel: 'ფონტი' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/mn.js0000644000201500020150000000070514517055557023126 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'mn', { fontSize: { label: 'Хэмжээ', voiceLabel: 'Үсгийн хэмжээ', panelTitle: 'Үсгийн хэмжээ' }, label: 'Үсгийн хэлбэр', panelTitle: 'Үгсийн хэлбэрийн нэр', voiceLabel: 'Үгсийн хэлбэр' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/da.js0000644000201500020150000000057514517055557023105 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'da', { fontSize: { label: 'Skriftstørrelse', voiceLabel: 'Skriftstørrelse', panelTitle: 'Skriftstørrelse' }, label: 'Skrifttype', panelTitle: 'Skrifttype', voiceLabel: 'Skrifttype' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/he.js0000644000201500020150000000053714517055557023113 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'he', { fontSize: { label: 'גודל', voiceLabel: 'גודל', panelTitle: 'גודל' }, label: 'גופן', panelTitle: 'גופן', voiceLabel: 'גופן' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/ca.js0000644000201500020150000000060214517055557023073 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'ca', { fontSize: { label: 'Mida', voiceLabel: 'Mida de la lletra', panelTitle: 'Mida de la lletra' }, label: 'Tipus de lletra', panelTitle: 'Tipus de lletra', voiceLabel: 'Tipus de lletra' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/gu.js0000644000201500020150000000067614517055557023136 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'gu', { fontSize: { label: 'ફૉન્ટ સાઇઝ/કદ', voiceLabel: 'ફોન્ટ સાઈઝ', panelTitle: 'ફૉન્ટ સાઇઝ/કદ' }, label: 'ફૉન્ટ', panelTitle: 'ફૉન્ટ', voiceLabel: 'ફોન્ટ' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/ms.js0000644000201500020150000000051414517055557023131 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'ms', { fontSize: { label: 'Saiz', voiceLabel: 'Font Size', panelTitle: 'Saiz' }, label: 'Font', panelTitle: 'Font', voiceLabel: 'Font' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/th.js0000644000201500020150000000063014517055557023124 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'th', { fontSize: { label: 'ขนาด', voiceLabel: 'Font Size', panelTitle: 'ขนาด' }, label: 'แบบอักษร', panelTitle: 'แบบอักษร', voiceLabel: 'แบบอักษร' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/de.js0000644000201500020150000000056314517055557023106 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'de', { fontSize: { label: 'Größe', voiceLabel: 'Schrifgröße', panelTitle: 'Schriftgröße' }, label: 'Schriftart', panelTitle: 'Schriftartname', voiceLabel: 'Schriftart' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/en-ca.js0000644000201500020150000000053114517055557023474 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'en-ca', { fontSize: { label: 'Size', voiceLabel: 'Font Size', panelTitle: 'Font Size' }, label: 'Font', panelTitle: 'Font Name', voiceLabel: 'Font' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/tt.js0000644000201500020150000000064214517055557023143 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'tt', { fontSize: { label: 'Зурлык', voiceLabel: 'Шрифт зурлыклары', panelTitle: 'Шрифт зурлыклары' }, label: 'Шрифт', panelTitle: 'Шрифт исеме', voiceLabel: 'Шрифт' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/vi.js0000644000201500020150000000054614517055557023135 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'vi', { fontSize: { label: 'Cỡ chữ', voiceLabel: 'Kích cỡ phông', panelTitle: 'Cỡ chữ' }, label: 'Phông', panelTitle: 'Phông', voiceLabel: 'Phông' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/cs.js0000644000201500020150000000054014517055557023116 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'cs', { fontSize: { label: 'Velikost', voiceLabel: 'Velikost písma', panelTitle: 'Velikost' }, label: 'Písmo', panelTitle: 'Písmo', voiceLabel: 'Písmo' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/tr.js0000644000201500020150000000053614517055557023143 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'tr', { fontSize: { label: 'Boyut', voiceLabel: 'Font Size', panelTitle: 'Boyut' }, label: 'Yazı Türü', panelTitle: 'Yazı Türü', voiceLabel: 'Font' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/ja.js0000644000201500020150000000060614517055557023106 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'ja', { fontSize: { label: 'サイズ', voiceLabel: 'フォントサイズ', panelTitle: 'フォントサイズ' }, label: 'フォント', panelTitle: 'フォント', voiceLabel: 'フォント' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/sl.js0000644000201500020150000000053114517055557023127 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'sl', { fontSize: { label: 'Velikost', voiceLabel: 'Velikost', panelTitle: 'Velikost' }, label: 'Pisava', panelTitle: 'Pisava', voiceLabel: 'Pisava' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/lv.js0000644000201500020150000000053514517055557023136 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'lv', { fontSize: { label: 'Izmērs', voiceLabel: 'Fonta izmeŗs', panelTitle: 'Izmērs' }, label: 'Šrifts', panelTitle: 'Šrifts', voiceLabel: 'Fonts' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/en-au.js0000644000201500020150000000053114517055557023516 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'en-au', { fontSize: { label: 'Size', voiceLabel: 'Font Size', panelTitle: 'Font Size' }, label: 'Font', panelTitle: 'Font Name', voiceLabel: 'Font' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/en.js0000644000201500020150000000052614517055557023117 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'en', { fontSize: { label: 'Size', voiceLabel: 'Font Size', panelTitle: 'Font Size' }, label: 'Font', panelTitle: 'Font Name', voiceLabel: 'Font' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/no.js0000644000201500020150000000054214517055557023127 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'no', { fontSize: { label: 'Størrelse', voiceLabel: 'Font Størrelse', panelTitle: 'Størrelse' }, label: 'Skrift', panelTitle: 'Skrift', voiceLabel: 'Font' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/fr.js0000644000201500020150000000056014517055557023122 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'fr', { fontSize: { label: 'Taille', voiceLabel: 'Taille de police', panelTitle: 'Taille de police' }, label: 'Police', panelTitle: 'Style de police', voiceLabel: 'Police' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/id.js0000644000201500020150000000061714517055557023112 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'id', { fontSize: { label: 'Ukuran', voiceLabel: 'Font Size', // MISSING panelTitle: 'Font Size' // MISSING }, label: 'Font', // MISSING panelTitle: 'Font Name', // MISSING voiceLabel: 'Font' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/ug.js0000644000201500020150000000062314517055557023126 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'ug', { fontSize: { label: 'چوڭلۇقى', voiceLabel: 'خەت چوڭلۇقى', panelTitle: 'چوڭلۇقى' }, label: 'خەت نۇسخا', panelTitle: 'خەت نۇسخا', voiceLabel: 'خەت نۇسخا' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/ar.js0000644000201500020150000000057614517055557023124 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'ar', { fontSize: { label: 'حجم الخط', voiceLabel: 'حجم الخط', panelTitle: 'حجم الخط' }, label: 'خط', panelTitle: 'حجم الخط', voiceLabel: 'حجم الخط' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/sr.js0000644000201500020150000000060614517055557023140 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'sr', { fontSize: { label: 'Величина фонта', voiceLabel: 'Font Size', panelTitle: 'Величина фонта' }, label: 'Фонт', panelTitle: 'Фонт', voiceLabel: 'Фонт' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/eu.js0000644000201500020150000000054514517055557023127 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'eu', { fontSize: { label: 'Tamaina', voiceLabel: 'Tamaina', panelTitle: 'Tamaina' }, label: 'Letra-tipoa', panelTitle: 'Letra-tipoa', voiceLabel: 'Letra-tipoa' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/en-gb.js0000644000201500020150000000053114517055557023501 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'en-gb', { fontSize: { label: 'Size', voiceLabel: 'Font Size', panelTitle: 'Font Size' }, label: 'Font', panelTitle: 'Font Name', voiceLabel: 'Font' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/font/lang/hu.js0000644000201500020150000000054714517055557023134 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'font', 'hu', { fontSize: { label: 'Méret', voiceLabel: 'Betűméret', panelTitle: 'Méret' }, label: 'Betűtípus', panelTitle: 'Betűtípus', voiceLabel: 'Betűtípus' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/0000755000201500020150000000000014517055560021224 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/plugin.js0000644000201500020150000011717614517055560023075 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ /** * @fileOverview Undo/Redo system for saving a shapshot for document modification * and other recordable changes. */ 'use strict'; ( function() { var keystrokes = [ CKEDITOR.CTRL + 90 /*Z*/, CKEDITOR.CTRL + 89 /*Y*/, CKEDITOR.CTRL + CKEDITOR.SHIFT + 90 /*Z*/ ], backspaceOrDelete = { 8: 1, 46: 1 }; CKEDITOR.plugins.add( 'undo', { // jscs:disable maximumLineLength lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en,en-au,en-ca,en-gb,eo,es,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% // jscs:enable maximumLineLength icons: 'redo,redo-rtl,undo,undo-rtl', // %REMOVE_LINE_CORE% hidpi: true, // %REMOVE_LINE_CORE% init: function( editor ) { var undoManager = editor.undoManager = new UndoManager( editor ), editingHandler = undoManager.editingHandler = new NativeEditingHandler( undoManager ); var undoCommand = editor.addCommand( 'undo', { exec: function() { if ( undoManager.undo() ) { editor.selectionChange(); this.fire( 'afterUndo' ); } }, startDisabled: true, canUndo: false } ); var redoCommand = editor.addCommand( 'redo', { exec: function() { if ( undoManager.redo() ) { editor.selectionChange(); this.fire( 'afterRedo' ); } }, startDisabled: true, canUndo: false } ); editor.setKeystroke( [ [ keystrokes[ 0 ], 'undo' ], [ keystrokes[ 1 ], 'redo' ], [ keystrokes[ 2 ], 'redo' ] ] ); undoManager.onChange = function() { undoCommand.setState( undoManager.undoable() ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED ); redoCommand.setState( undoManager.redoable() ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED ); }; function recordCommand( event ) { // If the command hasn't been marked to not support undo. if ( undoManager.enabled && event.data.command.canUndo !== false ) undoManager.save(); } // We'll save snapshots before and after executing a command. editor.on( 'beforeCommandExec', recordCommand ); editor.on( 'afterCommandExec', recordCommand ); // Save snapshots before doing custom changes. editor.on( 'saveSnapshot', function( evt ) { undoManager.save( evt.data && evt.data.contentOnly ); } ); // Event manager listeners should be attached on contentDom. editor.on( 'contentDom', editingHandler.attachListeners, editingHandler ); editor.on( 'instanceReady', function() { // Saves initial snapshot. editor.fire( 'saveSnapshot' ); } ); // Always save an undo snapshot - the previous mode might have // changed editor contents. editor.on( 'beforeModeUnload', function() { editor.mode == 'wysiwyg' && undoManager.save( true ); } ); function toggleUndoManager() { undoManager.enabled = editor.readOnly ? false : editor.mode == 'wysiwyg'; undoManager.onChange(); } // Make the undo manager available only in wysiwyg mode. editor.on( 'mode', toggleUndoManager ); // Disable undo manager when in read-only mode. editor.on( 'readOnly', toggleUndoManager ); if ( editor.ui.addButton ) { editor.ui.addButton( 'Undo', { label: editor.lang.undo.undo, command: 'undo', toolbar: 'undo,10' } ); editor.ui.addButton( 'Redo', { label: editor.lang.undo.redo, command: 'redo', toolbar: 'undo,20' } ); } /** * Resets the undo stack. * * @member CKEDITOR.editor */ editor.resetUndo = function() { // Reset the undo stack. undoManager.reset(); // Create the first image. editor.fire( 'saveSnapshot' ); }; /** * Amends the top of the undo stack (last undo image) with the current DOM changes. * * function() { * editor.fire( 'saveSnapshot' ); * editor.document.body.append(...); * // Makes new changes following the last undo snapshot a part of it. * editor.fire( 'updateSnapshot' ); * .. * } * * @event updateSnapshot * @member CKEDITOR.editor * @param {CKEDITOR.editor} editor This editor instance. */ editor.on( 'updateSnapshot', function() { if ( undoManager.currentImage ) undoManager.update(); } ); /** * Locks the undo manager to prevent any save/update operations. * * It is convenient to lock the undo manager before performing DOM operations * that should not be recored (e.g. auto paragraphing). * * See {@link CKEDITOR.plugins.undo.UndoManager#lock} for more details. * * **Note:** In order to unlock the undo manager, {@link #unlockSnapshot} has to be fired * the same number of times that `lockSnapshot` has been fired. * * @since 4.0 * @event lockSnapshot * @member CKEDITOR.editor * @param {CKEDITOR.editor} editor This editor instance. * @param data * @param {Boolean} [data.dontUpdate] When set to `true`, the last snapshot will not be updated * with the current content and selection. Read more in the {@link CKEDITOR.plugins.undo.UndoManager#lock} method. * @param {Boolean} [data.forceUpdate] When set to `true`, the last snapshot will always be updated * with the current content and selection. Read more in the {@link CKEDITOR.plugins.undo.UndoManager#lock} method. */ editor.on( 'lockSnapshot', function( evt ) { var data = evt.data; undoManager.lock( data && data.dontUpdate, data && data.forceUpdate ); } ); /** * Unlocks the undo manager and updates the latest snapshot. * * @since 4.0 * @event unlockSnapshot * @member CKEDITOR.editor * @param {CKEDITOR.editor} editor This editor instance. */ editor.on( 'unlockSnapshot', undoManager.unlock, undoManager ); } } ); CKEDITOR.plugins.undo = {}; /** * Main logic for the Redo/Undo feature. * * @private * @class CKEDITOR.plugins.undo.UndoManager * @constructor Creates an UndoManager class instance. * @param {CKEDITOR.editor} editor */ var UndoManager = CKEDITOR.plugins.undo.UndoManager = function( editor ) { /** * An array storing the number of key presses, count in a row. Use {@link #keyGroups} members as index. * * **Note:** The keystroke count will be reset after reaching the limit of characters per snapshot. * * @since 4.4.4 */ this.strokesRecorded = [ 0, 0 ]; /** * When the `locked` property is not `null`, the undo manager is locked, so * operations like `save` or `update` are forbidden. * * The manager can be locked and unlocked by the {@link #lock} and {@link #unlock} * methods, respectively. * * @readonly * @property {Object} [locked=null] */ this.locked = null; /** * Contains the previously processed key group, based on {@link #keyGroups}. * `-1` means an unknown group. * * @since 4.4.4 * @readonly * @property {Number} [previousKeyGroup=-1] */ this.previousKeyGroup = -1; /** * The maximum number of snapshots in the stack. Configurable via {@link CKEDITOR.config#undoStackSize}. * * @readonly * @property {Number} [limit] */ this.limit = editor.config.undoStackSize || 20; /** * The maximum number of characters typed/deleted in one undo step. * * @since 4.4.5 * @readonly */ this.strokesLimit = 25; this.editor = editor; // Reset the undo stack. this.reset(); }; UndoManager.prototype = { /** * Handles keystroke support for the undo manager. It is called on `keyup` event for * keystrokes that can change the editor content. * * @param {Number} keyCode The key code. * @param {Boolean} [strokesPerSnapshotExceeded] When set to `true`, the method will * behave as if the strokes limit was exceeded regardless of the {@link #strokesRecorded} value. */ type: function( keyCode, strokesPerSnapshotExceeded ) { var keyGroup = UndoManager.getKeyGroup( keyCode ), // Count of keystrokes in current a row. // Note if strokesPerSnapshotExceeded will be exceeded, it'll be restarted. strokesRecorded = this.strokesRecorded[ keyGroup ] + 1; strokesPerSnapshotExceeded = ( strokesPerSnapshotExceeded || strokesRecorded >= this.strokesLimit ); if ( !this.typing ) onTypingStart( this ); if ( strokesPerSnapshotExceeded ) { // Reset the count of strokes, so it'll be later assigned to this.strokesRecorded. strokesRecorded = 0; this.editor.fire( 'saveSnapshot' ); } else { // Fire change event. this.editor.fire( 'change' ); } // Store recorded strokes count. this.strokesRecorded[ keyGroup ] = strokesRecorded; // This prop will tell in next itaration what kind of group was processed previously. this.previousKeyGroup = keyGroup; }, /** * Whether the new `keyCode` belongs to a different group than the previous one ({@link #previousKeyGroup}). * * @since 4.4.5 * @param {Number} keyCode * @returns {Boolean} */ keyGroupChanged: function( keyCode ) { return UndoManager.getKeyGroup( keyCode ) != this.previousKeyGroup; }, /** * Resets the undo stack. */ reset: function() { // Stack for all the undo and redo snapshots, they're always created/removed // in consistency. this.snapshots = []; // Current snapshot history index. this.index = -1; this.currentImage = null; this.hasUndo = false; this.hasRedo = false; this.locked = null; this.resetType(); }, /** * Resets all typing variables. * * @see #type */ resetType: function() { this.strokesRecorded = [ 0, 0 ]; this.typing = false; this.previousKeyGroup = -1; }, /** * Refreshes the state of the {@link CKEDITOR.plugins.undo.UndoManager undo manager} * as well as the state of the `undo` and `redo` commands. */ refreshState: function() { // These lines can be handled within onChange() too. this.hasUndo = !!this.getNextImage( true ); this.hasRedo = !!this.getNextImage( false ); // Reset typing this.resetType(); this.onChange(); }, /** * Saves a snapshot of the document image for later retrieval. * * @param {Boolean} onContentOnly If set to `true`, the snapshot will be saved only if the content has changed. * @param {CKEDITOR.plugins.undo.Image} image An optional image to save. If skipped, current editor will be used. * @param {Boolean} [autoFireChange=true] If set to `false`, will not trigger the {@link CKEDITOR.editor#change} event to editor. */ save: function( onContentOnly, image, autoFireChange ) { var editor = this.editor; // Do not change snapshots stack when locked, editor is not ready, // editable is not ready or when editor is in mode difference than 'wysiwyg'. if ( this.locked || editor.status != 'ready' || editor.mode != 'wysiwyg' ) return false; var editable = editor.editable(); if ( !editable || editable.status != 'ready' ) return false; var snapshots = this.snapshots; // Get a content image. if ( !image ) image = new Image( editor ); // Do nothing if it was not possible to retrieve an image. if ( image.contents === false ) return false; // Check if this is a duplicate. In such case, do nothing. if ( this.currentImage ) { if ( image.equalsContent( this.currentImage ) ) { if ( onContentOnly ) return false; if ( image.equalsSelection( this.currentImage ) ) return false; } else if ( autoFireChange !== false ) { editor.fire( 'change' ); } } // Drop future snapshots. snapshots.splice( this.index + 1, snapshots.length - this.index - 1 ); // If we have reached the limit, remove the oldest one. if ( snapshots.length == this.limit ) snapshots.shift(); // Add the new image, updating the current index. this.index = snapshots.push( image ) - 1; this.currentImage = image; if ( autoFireChange !== false ) this.refreshState(); return true; }, /** * Sets editor content/selection to the one stored in `image`. * * @param {CKEDITOR.plugins.undo.Image} image */ restoreImage: function( image ) { // Bring editor focused to restore selection. var editor = this.editor, sel; if ( image.bookmarks ) { editor.focus(); // Retrieve the selection beforehand. (#8324) sel = editor.getSelection(); } // Start transaction - do not allow any mutations to the // snapshots stack done when selecting bookmarks (much probably // by selectionChange listener). this.locked = { level: 999 }; this.editor.loadSnapshot( image.contents ); if ( image.bookmarks ) sel.selectBookmarks( image.bookmarks ); else if ( CKEDITOR.env.ie ) { // IE BUG: If I don't set the selection to *somewhere* after setting // document contents, then IE would create an empty paragraph at the bottom // the next time the document is modified. var $range = this.editor.document.getBody().$.createTextRange(); $range.collapse( true ); $range.select(); } this.locked = null; this.index = image.index; this.currentImage = this.snapshots[ this.index ]; // Update current image with the actual editor // content, since actualy content may differ from // the original snapshot due to dom change. (#4622) this.update(); this.refreshState(); editor.fire( 'change' ); }, /** * Gets the closest available image. * * @param {Boolean} isUndo If `true`, it will return the previous image. * @returns {CKEDITOR.plugins.undo.Image} Next image or `null`. */ getNextImage: function( isUndo ) { var snapshots = this.snapshots, currentImage = this.currentImage, image, i; if ( currentImage ) { if ( isUndo ) { for ( i = this.index - 1; i >= 0; i-- ) { image = snapshots[ i ]; if ( !currentImage.equalsContent( image ) ) { image.index = i; return image; } } } else { for ( i = this.index + 1; i < snapshots.length; i++ ) { image = snapshots[ i ]; if ( !currentImage.equalsContent( image ) ) { image.index = i; return image; } } } } return null; }, /** * Checks the current redo state. * * @returns {Boolean} Whether the document has a previous state to retrieve. */ redoable: function() { return this.enabled && this.hasRedo; }, /** * Checks the current undo state. * * @returns {Boolean} Whether the document has a future state to restore. */ undoable: function() { return this.enabled && this.hasUndo; }, /** * Performs an undo operation on current index. */ undo: function() { if ( this.undoable() ) { this.save( true ); var image = this.getNextImage( true ); if ( image ) return this.restoreImage( image ), true; } return false; }, /** * Performs a redo operation on current index. */ redo: function() { if ( this.redoable() ) { // Try to save. If no changes have been made, the redo stack // will not change, so it will still be redoable. this.save( true ); // If instead we had changes, we can't redo anymore. if ( this.redoable() ) { var image = this.getNextImage( false ); if ( image ) return this.restoreImage( image ), true; } } return false; }, /** * Updates the last snapshot of the undo stack with the current editor content. * * @param {CKEDITOR.plugins.undo.Image} [newImage] The image which will replace the current one. * If it is not set, it defaults to the image taken from the editor. */ update: function( newImage ) { // Do not change snapshots stack is locked. if ( this.locked ) return; if ( !newImage ) newImage = new Image( this.editor ); var i = this.index, snapshots = this.snapshots; // Find all previous snapshots made for the same content (which differ // only by selection) and replace all of them with the current image. while ( i > 0 && this.currentImage.equalsContent( snapshots[ i - 1 ] ) ) i -= 1; snapshots.splice( i, this.index - i + 1, newImage ); this.index = i; this.currentImage = newImage; }, /** * Amends the last snapshot and changes its selection (only in case when content * is equal between these two). * * @since 4.4.4 * @param {CKEDITOR.plugins.undo.Image} newSnapshot New snapshot with new selection. * @returns {Boolean} Returns `true` if selection was amended. */ updateSelection: function( newSnapshot ) { if ( !this.snapshots.length ) return false; var snapshots = this.snapshots, lastImage = snapshots[ snapshots.length - 1 ]; if ( lastImage.equalsContent( newSnapshot ) ) { if ( !lastImage.equalsSelection( newSnapshot ) ) { snapshots[ snapshots.length - 1 ] = newSnapshot; this.currentImage = newSnapshot; return true; } } return false; }, /** * Locks the snapshot stack to prevent any save/update operations and when necessary, * updates the tip of the snapshot stack with the DOM changes introduced during the * locked period, after the {@link #unlock} method is called. * * It is mainly used to ensure any DOM operations that should not be recorded * (e.g. auto paragraphing) are not added to the stack. * * **Note:** For every `lock` call you must call {@link #unlock} once to unlock the undo manager. * * @since 4.0 * @param {Boolean} [dontUpdate] When set to `true`, the last snapshot will not be updated * with current content and selection. By default, if undo manager was up to date when the lock started, * the last snapshot will be updated to the current state when unlocking. This means that all changes * done during the lock will be merged into the previous snapshot or the next one. Use this option to gain * more control over this behavior. For example, it is possible to group changes done during the lock into * a separate snapshot. * @param {Boolean} [forceUpdate] When set to `true`, the last snapshot will always be updated with the * current content and selection regardless of the current state of the undo manager. * When not set, the last snapshot will be updated only if the undo manager was up to date when locking. * Additionally, this option makes it possible to lock the snapshot when the editor is not in the `wysiwyg` mode, * because when it is passed, the snapshots will not need to be compared. */ lock: function( dontUpdate, forceUpdate ) { if ( !this.locked ) { if ( dontUpdate ) this.locked = { level: 1 }; else { var update = null; if ( forceUpdate ) update = true; else { // Make a contents image. Don't include bookmarks, because: // * we don't compare them, // * there's a chance that DOM has been changed since // locked (e.g. fake) selection was made, so createBookmark2 could fail. // http://dev.ckeditor.com/ticket/11027#comment:3 var imageBefore = new Image( this.editor, true ); // If current editor content matches the tip of snapshot stack, // the stack tip must be updated by unlock, to include any changes made // during this period. if ( this.currentImage && this.currentImage.equalsContent( imageBefore ) ) update = imageBefore; } this.locked = { update: update, level: 1 }; } // Increase the level of lock. } else { this.locked.level++; } }, /** * Unlocks the snapshot stack and checks to amend the last snapshot. * * See {@link #lock} for more details. * * @since 4.0 */ unlock: function() { if ( this.locked ) { // Decrease level of lock and check if equals 0, what means that undoM is completely unlocked. if ( !--this.locked.level ) { var update = this.locked.update; this.locked = null; // forceUpdate was passed to lock(). if ( update === true ) this.update(); // update is instance of Image. else if ( update ) { var newImage = new Image( this.editor, true ); if ( !update.equalsContent( newImage ) ) this.update(); } } } } }; /** * Codes for navigation keys like *Arrows*, *Page Up/Down*, etc. * Used by the {@link #isNavigationKey} method. * * @since 4.4.5 * @readonly * @static */ UndoManager.navigationKeyCodes = { 37: 1, 38: 1, 39: 1, 40: 1, // Arrows. 36: 1, 35: 1, // Home, End. 33: 1, 34: 1 // PgUp, PgDn. }; /** * Key groups identifier mapping. Used for accessing members in * {@link #strokesRecorded}. * * * `FUNCTIONAL` – identifier for the *Backspace* / *Delete* key. * * `PRINTABLE` – identifier for printable keys. * * Example usage: * * undoManager.strokesRecorded[ undoManager.keyGroups.FUNCTIONAL ]; * * @since 4.4.5 * @readonly * @static */ UndoManager.keyGroups = { PRINTABLE: 0, FUNCTIONAL: 1 }; /** * Checks whether a key is one of navigation keys (*Arrows*, *Page Up/Down*, etc.). * See also the {@link #navigationKeyCodes} property. * * @since 4.4.5 * @static * @param {Number} keyCode * @returns {Boolean} */ UndoManager.isNavigationKey = function( keyCode ) { return !!UndoManager.navigationKeyCodes[ keyCode ]; }; /** * Returns the group to which the passed `keyCode` belongs. * * @since 4.4.5 * @static * @param {Number} keyCode * @returns {Number} */ UndoManager.getKeyGroup = function( keyCode ) { var keyGroups = UndoManager.keyGroups; return backspaceOrDelete[ keyCode ] ? keyGroups.FUNCTIONAL : keyGroups.PRINTABLE; }; /** * @since 4.4.5 * @static * @param {Number} keyGroup * @returns {Number} */ UndoManager.getOppositeKeyGroup = function( keyGroup ) { var keyGroups = UndoManager.keyGroups; return ( keyGroup == keyGroups.FUNCTIONAL ? keyGroups.PRINTABLE : keyGroups.FUNCTIONAL ); }; /** * Whether we need to use a workaround for functional (*Backspace*, *Delete*) keys not firing * the `keypress` event in Internet Explorer in this environment and for the specified `keyCode`. * * @since 4.4.5 * @static * @param {Number} keyCode * @returns {Boolean} */ UndoManager.ieFunctionalKeysBug = function( keyCode ) { return CKEDITOR.env.ie && UndoManager.getKeyGroup( keyCode ) == UndoManager.keyGroups.FUNCTIONAL; }; // Helper method called when undoManager.typing val was changed to true. function onTypingStart( undoManager ) { // It's safe to now indicate typing state. undoManager.typing = true; // Manually mark snapshot as available. undoManager.hasUndo = true; undoManager.hasRedo = false; undoManager.onChange(); } /** * Contains a snapshot of the editor content and selection at a given point in time. * * @private * @class CKEDITOR.plugins.undo.Image * @constructor Creates an Image class instance. * @param {CKEDITOR.editor} editor The editor instance on which the image is created. * @param {Boolean} [contentsOnly] If set to `true`, the image will only contain content without the selection. */ var Image = CKEDITOR.plugins.undo.Image = function( editor, contentsOnly ) { this.editor = editor; editor.fire( 'beforeUndoImage' ); var contents = editor.getSnapshot(); // In IE, we need to remove the expando attributes. if ( CKEDITOR.env.ie && contents ) contents = contents.replace( /\s+data-cke-expando=".*?"/g, '' ); this.contents = contents; if ( !contentsOnly ) { var selection = contents && editor.getSelection(); this.bookmarks = selection && selection.createBookmarks2( true ); } editor.fire( 'afterUndoImage' ); }; // Attributes that browser may changing them when setting via innerHTML. var protectedAttrs = /\b(?:href|src|name)="[^"]*?"/gi; Image.prototype = { /** * @param {CKEDITOR.plugins.undo.Image} otherImage Image to compare to. * @returns {Boolean} Returns `true` if content in `otherImage` is the same. */ equalsContent: function( otherImage ) { var thisContents = this.contents, otherContents = otherImage.contents; // For IE7 and IE QM: Comparing only the protected attribute values but not the original ones.(#4522) if ( CKEDITOR.env.ie && ( CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks ) ) { thisContents = thisContents.replace( protectedAttrs, '' ); otherContents = otherContents.replace( protectedAttrs, '' ); } if ( thisContents != otherContents ) return false; return true; }, /** * @param {CKEDITOR.plugins.undo.Image} otherImage Image to compare to. * @returns {Boolean} Returns `true` if selection in `otherImage` is the same. */ equalsSelection: function( otherImage ) { var bookmarksA = this.bookmarks, bookmarksB = otherImage.bookmarks; if ( bookmarksA || bookmarksB ) { if ( !bookmarksA || !bookmarksB || bookmarksA.length != bookmarksB.length ) return false; for ( var i = 0; i < bookmarksA.length; i++ ) { var bookmarkA = bookmarksA[ i ], bookmarkB = bookmarksB[ i ]; if ( bookmarkA.startOffset != bookmarkB.startOffset || bookmarkA.endOffset != bookmarkB.endOffset || !CKEDITOR.tools.arrayCompare( bookmarkA.start, bookmarkB.start ) || !CKEDITOR.tools.arrayCompare( bookmarkA.end, bookmarkB.end ) ) { return false; } } } return true; } /** * Editor content. * * @readonly * @property {String} contents */ /** * Bookmarks representing the selection in an image. * * @readonly * @property {Object[]} bookmarks Array of bookmark2 objects, see {@link CKEDITOR.dom.range#createBookmark2} for definition. */ }; /** * A class encapsulating all native event listeners which have to be used in * order to handle undo manager integration for native editing actions (excluding drag and drop and paste support * handled by the Clipboard plugin). * * @since 4.4.4 * @private * @class CKEDITOR.plugins.undo.NativeEditingHandler * @member CKEDITOR.plugins.undo Undo manager owning the handler. * @constructor * @param {CKEDITOR.plugins.undo.UndoManager} undoManager */ var NativeEditingHandler = CKEDITOR.plugins.undo.NativeEditingHandler = function( undoManager ) { // We'll use keyboard + input events to determine if snapshot should be created. // Since `input` event is fired before `keyup`. We can tell in `keyup` event if input occured. // That will tell us if any printable data was inserted. // On `input` event we'll increase input fired counter for proper key code. // Eventually it might be canceled by paste/drop using `ignoreInputEvent` flag. // Order of events can be found in http://www.w3.org/TR/DOM-Level-3-Events/ /** * An undo manager instance owning the editing handler. * * @property {CKEDITOR.plugins.undo.UndoManager} undoManager */ this.undoManager = undoManager; /** * See {@link #ignoreInputEventListener}. * * @since 4.4.5 * @private */ this.ignoreInputEvent = false; /** * A stack of pressed keys. * * @since 4.4.5 * @property {CKEDITOR.plugins.undo.KeyEventsStack} keyEventsStack */ this.keyEventsStack = new KeyEventsStack(); /** * An image of the editor during the `keydown` event (therefore without DOM modification). * * @property {CKEDITOR.plugins.undo.Image} lastKeydownImage */ this.lastKeydownImage = null; }; NativeEditingHandler.prototype = { /** * The `keydown` event listener. * * @param {CKEDITOR.dom.event} evt */ onKeydown: function( evt ) { var keyCode = evt.data.getKey(); // The composition is in progress - ignore the key. (#12597) if ( keyCode === 229 ) { return; } // Block undo/redo keystrokes when at the bottom/top of the undo stack (#11126 and #11677). if ( CKEDITOR.tools.indexOf( keystrokes, evt.data.getKeystroke() ) > -1 ) { evt.data.preventDefault(); return; } // Cleaning tab functional keys. this.keyEventsStack.cleanUp( evt ); var undoManager = this.undoManager; // Gets last record for provided keyCode. If not found will create one. var last = this.keyEventsStack.getLast( keyCode ); if ( !last ) { this.keyEventsStack.push( keyCode ); } // We need to store an image which will be used in case of key group // change. this.lastKeydownImage = new Image( undoManager.editor ); if ( UndoManager.isNavigationKey( keyCode ) || this.undoManager.keyGroupChanged( keyCode ) ) { if ( undoManager.strokesRecorded[ 0 ] || undoManager.strokesRecorded[ 1 ] ) { // We already have image, so we'd like to reuse it. // #12300 undoManager.save( false, this.lastKeydownImage, false ); undoManager.resetType(); } } }, /** * The `input` event listener. */ onInput: function() { // Input event is ignored if paste/drop event were fired before. if ( this.ignoreInputEvent ) { // Reset flag - ignore only once. this.ignoreInputEvent = false; return; } var lastInput = this.keyEventsStack.getLast(); // Nothing in key events stack, but input event called. Interesting... // That's because on Android order of events is buggy and also keyCode is set to 0. if ( !lastInput ) { lastInput = this.keyEventsStack.push( 0 ); } // Increment inputs counter for provided key code. this.keyEventsStack.increment( lastInput.keyCode ); // Exceeded limit. if ( this.keyEventsStack.getTotalInputs() >= this.undoManager.strokesLimit ) { this.undoManager.type( lastInput.keyCode, true ); this.keyEventsStack.resetInputs(); } }, /** * The `keyup` event listener. * * @param {CKEDITOR.dom.event} evt */ onKeyup: function( evt ) { var undoManager = this.undoManager, keyCode = evt.data.getKey(), totalInputs = this.keyEventsStack.getTotalInputs(); // Remove record from stack for provided key code. this.keyEventsStack.remove( keyCode ); // Second part of the workaround for IEs functional keys bug. We need to check whether something has really // changed because we blindly mocked the keypress event. // Also we need to be aware that lastKeydownImage might not be available (#12327). if ( UndoManager.ieFunctionalKeysBug( keyCode ) && this.lastKeydownImage && this.lastKeydownImage.equalsContent( new Image( undoManager.editor, true ) ) ) { return; } if ( totalInputs > 0 ) { undoManager.type( keyCode ); } else if ( UndoManager.isNavigationKey( keyCode ) ) { // Note content snapshot has been checked in keydown. this.onNavigationKey( true ); } }, /** * Method called for navigation change. At first it will check if current content does not differ * from the last saved snapshot. * * * If the content is different, the method creates a standard, extra snapshot. * * If the content is not different, the method will compare the selection, and will * amend the last snapshot selection if it changed. * * @param {Boolean} skipContentCompare If set to `true`, it will not compare content, and only do a selection check. */ onNavigationKey: function( skipContentCompare ) { var undoManager = this.undoManager; // We attempt to save content snapshot, if content didn't change, we'll // only amend selection. if ( skipContentCompare || !undoManager.save( true, null, false ) ) undoManager.updateSelection( new Image( undoManager.editor ) ); undoManager.resetType(); }, /** * Makes the next `input` event to be ignored. */ ignoreInputEventListener: function() { this.ignoreInputEvent = true; }, /** * Attaches editable listeners required to provide the undo functionality. */ attachListeners: function() { var editor = this.undoManager.editor, editable = editor.editable(), that = this; // We'll create a snapshot here (before DOM modification), because we'll // need unmodified content when we got keygroup toggled in keyup. editable.attachListener( editable, 'keydown', function( evt ) { that.onKeydown( evt ); // On IE keypress isn't fired for functional (backspace/delete) keys. // Let's pretend that something's changed. if ( UndoManager.ieFunctionalKeysBug( evt.data.getKey() ) ) { that.onInput(); } }, null, null, 999 ); // Only IE can't use input event, because it's not fired in contenteditable. editable.attachListener( editable, ( CKEDITOR.env.ie ? 'keypress' : 'input' ), that.onInput, that, null, 999 ); // Keyup executes main snapshot logic. editable.attachListener( editable, 'keyup', that.onKeyup, that, null, 999 ); // On paste and drop we need to ignore input event. // It would result with calling undoManager.type() on any following key. editable.attachListener( editable, 'paste', that.ignoreInputEventListener, that, null, 999 ); editable.attachListener( editable, 'drop', that.ignoreInputEventListener, that, null, 999 ); // Click should create a snapshot if needed, but shouldn't cause change event. // Don't pass onNavigationKey directly as a listener because it accepts one argument which // will conflict with evt passed to listener. // #12324 comment:4 editable.attachListener( editable.isInline() ? editable : editor.document.getDocumentElement(), 'click', function() { that.onNavigationKey(); }, null, null, 999 ); // When pressing `Tab` key while editable is focused, `keyup` event is not fired. // Which means that record for `tab` key stays in key events stack. // We assume that when editor is blurred `tab` key is already up. editable.attachListener( this.undoManager.editor, 'blur', function() { that.keyEventsStack.remove( 9 /*Tab*/ ); }, null, null, 999 ); } }; /** * This class represents a stack of pressed keys and stores information * about how many `input` events each key press has caused. * * @since 4.4.5 * @private * @class CKEDITOR.plugins.undo.KeyEventsStack * @constructor */ var KeyEventsStack = CKEDITOR.plugins.undo.KeyEventsStack = function() { /** * @readonly */ this.stack = []; }; KeyEventsStack.prototype = { /** * Pushes a literal object with two keys: `keyCode` and `inputs` (whose initial value is set to `0`) to stack. * It is intended to be called on the `keydown` event. * * @param {Number} keyCode */ push: function( keyCode ) { var length = this.stack.push( { keyCode: keyCode, inputs: 0 } ); return this.stack[ length - 1 ]; }, /** * Returns the index of the last registered `keyCode` in the stack. * If no `keyCode` is provided, then the function will return the index of the last item. * If an item is not found, it will return `-1`. * * @param {Number} [keyCode] * @returns {Number} */ getLastIndex: function( keyCode ) { if ( typeof keyCode != 'number' ) { return this.stack.length - 1; // Last index or -1. } else { var i = this.stack.length; while ( i-- ) { if ( this.stack[ i ].keyCode == keyCode ) { return i; } } return -1; } }, /** * Returns the last key recorded in the stack. If `keyCode` is provided, then it will return * the last record for this `keyCode`. * * @param {Number} [keyCode] * @returns {Object} Last matching record or `null`. */ getLast: function( keyCode ) { var index = this.getLastIndex( keyCode ); if ( index != -1 ) { return this.stack[ index ]; } else { return null; } }, /** * Increments registered input events for stack record for a given `keyCode`. * * @param {Number} keyCode */ increment: function( keyCode ) { var found = this.getLast( keyCode ); if ( !found ) { // %REMOVE_LINE% throw new Error( 'Trying to increment, but could not found by keyCode: ' + keyCode + '.' ); // %REMOVE_LINE% } // %REMOVE_LINE% found.inputs++; }, /** * Removes the last record from the stack for the provided `keyCode`. * * @param {Number} keyCode */ remove: function( keyCode ) { var index = this.getLastIndex( keyCode ); if ( index != -1 ) { this.stack.splice( index, 1 ); } }, /** * Resets the `inputs` value to `0` for a given `keyCode` or in entire stack if a * `keyCode` is not specified. * * @param {Number} [keyCode] */ resetInputs: function( keyCode ) { if ( typeof keyCode == 'number' ) { var last = this.getLast( keyCode ); if ( !last ) { // %REMOVE_LINE% throw new Error( 'Trying to reset inputs count, but could not found by keyCode: ' + keyCode + '.' ); // %REMOVE_LINE% } // %REMOVE_LINE% last.inputs = 0; } else { var i = this.stack.length; while ( i-- ) { this.stack[ i ].inputs = 0; } } }, /** * Sums up inputs number for each key code and returns it. * * @returns {Number} */ getTotalInputs: function() { var i = this.stack.length, total = 0; while ( i-- ) { total += this.stack[ i ].inputs; } return total; }, /** * Cleans the stack based on a provided `keydown` event object. The rationale behind this method * is that some keystrokes cause the `keydown` event to be fired in the editor, but not the `keyup` event. * For instance, *Alt+Tab* will fire `keydown`, but since the editor is blurred by it, then there is * no `keyup`, so the keystroke is not removed from the stack. * * @param {CKEDITOR.dom.event} event */ cleanUp: function( event ) { var nativeEvent = event.data.$; if ( !( nativeEvent.ctrlKey || nativeEvent.metaKey ) ) { this.remove( 17 ); } if ( !nativeEvent.shiftKey ) { this.remove( 16 ); } if ( !nativeEvent.altKey ) { this.remove( 18 ); } } }; } )(); /** * The number of undo steps to be saved. The higher value is set, the more * memory is used for it. * * config.undoStackSize = 50; * * @cfg {Number} [undoStackSize=20] * @member CKEDITOR.config */ /** * Fired when the editor is about to save an undo snapshot. This event can be * fired by plugins and customizations to make the editor save undo snapshots. * * @event saveSnapshot * @member CKEDITOR.editor * @param {CKEDITOR.editor} editor This editor instance. */ /** * Fired before an undo image is to be created. An *undo image* represents the * editor state at some point. It is saved into the undo store, so the editor is * able to recover the editor state on undo and redo operations. * * @since 3.5.3 * @event beforeUndoImage * @member CKEDITOR.editor * @param {CKEDITOR.editor} editor This editor instance. * @see CKEDITOR.editor#afterUndoImage */ /** * Fired after an undo image is created. An *undo image* represents the * editor state at some point. It is saved into the undo store, so the editor is * able to recover the editor state on undo and redo operations. * * @since 3.5.3 * @event afterUndoImage * @member CKEDITOR.editor * @param {CKEDITOR.editor} editor This editor instance. * @see CKEDITOR.editor#beforeUndoImage */ /** * Fired when the content of the editor is changed. * * Due to performance reasons, it is not verified if the content really changed. * The editor instead watches several editing actions that usually result in * changes. This event may thus in some cases be fired when no changes happen * or may even get fired twice. * * If it is important not to get the `change` event fired too often, you should compare the * previous and the current editor content inside the event listener. It is * not recommended to do that on every `change` event. * * Please note that the `change` event is only fired in the {@link #property-mode wysiwyg mode}. * In order to implement similar functionality in the source mode, you can listen for example to the {@link #key} * event or the native [`input`](https://developer.mozilla.org/en-US/docs/Web/Reference/Events/input) * event (not supported by Internet Explorer 8). * * editor.on( 'mode', function() { * if ( this.mode == 'source' ) { * var editable = editor.editable(); * editable.attachListener( editable, 'input', function() { * // Handle changes made in the source mode. * } ); * } * } ); * * @since 4.2 * @event change * @member CKEDITOR.editor * @param {CKEDITOR.editor} editor This editor instance. */ rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/dev/0000755000201500020150000000000014517055560022002 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/dev/snapshot.html0000644000201500020150000000547214517055560024537 0ustar puckpuck Replace Textarea by Code — CKEditor Sample

CKEditor Samples » Replace Textarea Elements Using JavaScript Code

This editor is using an <iframe> element-based editing area, provided by the Wysiwygarea plugin.

CKEDITOR.replace( 'textarea_id' )

Snapshots: 0
Typing: false
rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/0000755000201500020150000000000014517055560022145 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/zh.js0000644000201500020150000000035014517055560023122 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'zh', { redo: '取消復原', undo: '復原' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/nb.js0000644000201500020150000000034314517055560023102 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'nb', { redo: 'Gjør om', undo: 'Angre' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/eo.js0000644000201500020150000000034314517055560023106 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'eo', { redo: 'Refari', undo: 'Malfari' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/es.js0000644000201500020150000000034514517055560023114 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'es', { redo: 'Rehacer', undo: 'Deshacer' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/ro.js0000644000201500020150000000041014517055560023116 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'ro', { redo: 'Starea ulterioară (redo)', undo: 'Starea anterioară (undo)' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/hr.js0000644000201500020150000000034414517055560023115 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'hr', { redo: 'Ponovi', undo: 'Poništi' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/it.js0000644000201500020150000000034714517055560023123 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'it', { redo: 'Ripristina', undo: 'Annulla' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/sk.js0000644000201500020150000000034114517055560023116 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'sk', { redo: 'Znovu', undo: 'Späť' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/pt.js0000644000201500020150000000034314517055560023126 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'pt', { redo: 'Refazer', undo: 'Anular' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/si.js0000644000201500020150000000042114517055560023113 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'si', { redo: 'නැවත කිරීම', undo: 'වෙනස් කිරීම' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/ko.js0000644000201500020150000000036014517055560023113 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'ko', { redo: '다시 실행', undo: '실행 취소' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/mk.js0000644000201500020150000000035114517055560023111 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'mk', { redo: 'Redo', // MISSING undo: 'Undo' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/cy.js0000644000201500020150000000034614517055560023121 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'cy', { redo: 'Ailwneud', undo: 'Dadwneud' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/uk.js0000644000201500020150000000037214517055560023124 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'uk', { redo: 'Повторити', undo: 'Повернути' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/zh-cn.js0000644000201500020150000000034514517055560023524 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'zh-cn', { redo: '重做', undo: '撤消' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/sv.js0000644000201500020150000000034314517055560023133 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'sv', { redo: 'Gör om', undo: 'Ångra' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/lt.js0000644000201500020150000000035014517055560023120 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'lt', { redo: 'Atstatyti', undo: 'Atšaukti' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/is.js0000644000201500020150000000037014517055560023116 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'is', { redo: 'Hætta við afturköllun', undo: 'Afturkalla' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/fr-ca.js0000644000201500020150000000034714517055560023477 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'fr-ca', { redo: 'Refaire', undo: 'Annuler' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/et.js0000644000201500020150000000036614517055560023120 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'et', { redo: 'Toimingu kordamine', undo: 'Tagasivõtmine' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/bs.js0000644000201500020150000000034114517055560023105 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'bs', { redo: 'Ponovi', undo: 'Vrati' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/pl.js0000644000201500020150000000034214517055560023115 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'pl', { redo: 'Ponów', undo: 'Cofnij' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/bg.js0000644000201500020150000000043114517055560023071 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'bg', { redo: 'Връщане на предишен статус', undo: 'Възтанови' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/fa.js0000644000201500020150000000036014517055560023070 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'fa', { redo: 'بازچیدن', undo: 'واچیدن' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/ku.js0000644000201500020150000000040614517055560023122 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'ku', { redo: 'هەڵگەڕاندنەوە', undo: 'پووچکردنەوە' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/bn.js0000644000201500020150000000035714517055560023107 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'bn', { redo: 'রি-ডু', undo: 'আনডু' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/el.js0000644000201500020150000000037014517055560023103 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'el', { redo: 'Επανάληψη', undo: 'Αναίρεση' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/fi.js0000644000201500020150000000034114517055560023077 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'fi', { redo: 'Toista', undo: 'Kumoa' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/ru.js0000644000201500020150000000037014517055560023131 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'ru', { redo: 'Повторить', undo: 'Отменить' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/gl.js0000644000201500020150000000034514517055560023107 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'gl', { redo: 'Refacer', undo: 'Desfacer' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/sr-latn.js0000644000201500020150000000037014517055560024063 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'sr-latn', { redo: 'Ponovi akciju', undo: 'Poni�ti akciju' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/sq.js0000644000201500020150000000034614517055560023131 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'sq', { redo: 'Ribëje', undo: 'Rizhbëje' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/pt-br.js0000644000201500020150000000035014517055560023525 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'pt-br', { redo: 'Refazer', undo: 'Desfazer' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/fo.js0000644000201500020150000000034514517055560023111 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'fo', { redo: 'Vend aftur', undo: 'Angra' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/af.js0000644000201500020150000000034414517055560023072 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'af', { redo: 'Oordoen', undo: 'Ontdoen' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/hi.js0000644000201500020150000000036114517055560023103 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'hi', { redo: 'रीडू', undo: 'अन्डू' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/km.js0000644000201500020150000000043614517055560023115 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'km', { redo: 'ធ្វើ​ឡើង​វិញ', undo: 'មិន​ធ្វើ​វិញ' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/nl.js0000644000201500020150000000036514517055560023120 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'nl', { redo: 'Opnieuw uitvoeren', undo: 'Ongedaan maken' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/ka.js0000644000201500020150000000041114517055560023072 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'ka', { redo: 'გამეორება', undo: 'გაუქმება' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/mn.js0000644000201500020150000000043314517055560023115 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'mn', { redo: 'Өмнөх үйлдлээ сэргээх', undo: 'Хүчингүй болгох' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/da.js0000644000201500020150000000035614517055560023073 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'da', { redo: 'Annullér fortryd', undo: 'Fortryd' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/he.js0000644000201500020150000000042114517055560023074 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'he', { redo: 'חזרה על צעד אחרון', undo: 'ביטול צעד אחרון' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/ca.js0000644000201500020150000000034314517055560023066 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'ca', { redo: 'Refés', undo: 'Desfés' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/gu.js0000644000201500020150000000063714517055560023124 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'gu', { redo: 'રિડૂ; પછી હતી એવી સ્થિતિ પાછી લાવવી', undo: 'રદ કરવું; પહેલાં હતી એવી સ્થિતિ પાછી લાવવી' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/ms.js0000644000201500020150000000034614517055560023125 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'ms', { redo: 'Ulangkan', undo: 'Batalkan' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/th.js0000644000201500020150000000043314517055560023116 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'th', { redo: 'ทำซ้ำคำสั่ง', undo: 'ยกเลิกคำสั่ง' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/de.js0000644000201500020150000000036214517055560023074 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'de', { redo: 'Wiederherstellen', undo: 'Rückgängig' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/en-ca.js0000644000201500020150000000034114517055560023464 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'en-ca', { redo: 'Redo', undo: 'Undo' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/tt.js0000644000201500020150000000036414517055560023135 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'tt', { redo: 'Кабатлау', undo: 'Кайтару' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/vi.js0000644000201500020150000000040014517055560023113 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'vi', { redo: 'Làm lại thao tác', undo: 'Khôi phục thao tác' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/cs.js0000644000201500020150000000034014517055560023105 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'cs', { redo: 'Znovu', undo: 'Zpět' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/tr.js0000644000201500020150000000034514517055560023132 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'tr', { redo: 'Tekrarla', undo: 'Geri Al' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/ja.js0000644000201500020150000000035614517055560023101 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'ja', { redo: 'やり直す', undo: '元に戻す' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/sl.js0000644000201500020150000000034614517055560023124 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'sl', { redo: 'Ponovi', undo: 'Razveljavi' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/lv.js0000644000201500020150000000034514517055560023126 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'lv', { redo: 'Atkārtot', undo: 'Atcelt' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/en-au.js0000644000201500020150000000034114517055560023506 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'en-au', { redo: 'Redo', undo: 'Undo' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/en.js0000644000201500020150000000033614517055560023107 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'en', { redo: 'Redo', undo: 'Undo' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/no.js0000644000201500020150000000034314517055560023117 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'no', { redo: 'Gjør om', undo: 'Angre' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/fr.js0000644000201500020150000000034614517055560023115 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'fr', { redo: 'Rétablir', undo: 'Annuler' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/id.js0000644000201500020150000000036714517055560023105 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'id', { redo: 'Kembali lakukan', undo: 'Batalkan perlakuan' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/ug.js0000644000201500020150000000036314517055560023120 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'ug', { redo: 'قايتىلا ', undo: 'يېنىۋال' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/ar.js0000644000201500020150000000035214517055560023105 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'ar', { redo: 'إعادة', undo: 'تراجع' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/sr.js0000644000201500020150000000041214517055560023124 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'sr', { redo: 'Понови акцију', undo: 'Поништи акцију' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/eu.js0000644000201500020150000000034514517055560023116 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'eu', { redo: 'Berregin', undo: 'Desegin' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/en-gb.js0000644000201500020150000000034114517055560023471 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'en-gb', { redo: 'Redo', undo: 'Undo' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/lang/hu.js0000644000201500020150000000035414517055560023121 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'undo', 'hu', { redo: 'Ismétlés', undo: 'Visszavonás' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/icons/0000755000201500020150000000000014517055560022337 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/icons/undo.png0000644000201500020150000000152214517055560024012 0ustar puckpuckPNG  IHDRabKGD pHYs B(xkIDAT8˥=hiĞVU1?REM6*iL;R $tq/m~H)F \y5(6ƅa¶v+fw`^#z@D0y9iX"nmZy D.j둦)2 \[[6 4%s1ryyI$DQ Pշq:99,zcT)1XkY\\l:2|zzvXk ˲ɉ t:I$wT5$"(BUUu{}}C.--nꮪmoow?Z-~QU888 CP1UuKRZT9GEUUnmnn~9c yayfyo0V*>%Is0 "T*~HA1<`~~qtt(˲Qܓn\g@w=_X>/9:;R%tEXtdate:create2013-07-04T17:03:03+02:00Mx%tEXtdate:modify2013-07-04T17:03:03+02:00<tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/icons/redo-rtl.png0000644000201500020150000000152114517055560024574 0ustar puckpuckPNG  IHDRabKGD pHYs B(xjIDAT8˥?Hy?7?]vY-4"DX!^ҥP*i$@JۃK Օ:iswHMrt",;."~DQψ1xs"O+++z}vIU_4W˷"]`KUC!MS3<<xVm4iJc8<<$Ihx1ﳺprr"Yt0 "*cccc2;;WY!LLLlLNNA ,k V$IrKUC(""TuZU׷fsss[gۭ Ru`鵶ab1dX,Μ=+ QJI_ -uL_Q*rd2,|۶) YQ..eeҥZ[%/oIZW>88,+li/]:ʪU񶶶eTd2:cp1#˅G"=c&aRs&;9Qq\[Jgv^N PY8 3888Q]6 ID"Mo]s\۷\rHyr{{kh۷?߱sh4븮!\2m` O?}+$F0ȧGn\y.XqpyVnjlsssG,Mcxt;wʫ7onuyX om|՜J'OO|yd5iE*Ko޼y'N'rPb_}\vE8xKT{۶~`mΝu{e֭nDB D- 3``C@8x??/\>>BJ4]G:iمؽ:D<޶s RDM`,=W/-\^.e~bn'u41qקN`uJ6J0E=Lp/ݲe=}i y)VP2='k%9T*3iX~O6I* &4@jC?>~yhf0! -ihRU_B<˨!@1N~oi%p#Q%tEXtdate:create2013-06-20T11:07:04+02:00I%tEXtdate:modify2013-06-20T11:07:04+02:00tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/icons/hidpi/redo-rtl.png0000644000201500020150000000351514517055560025676 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(xfIDATX_l;wfwֻ;?xN 6[ EPpP hRP*ڗJH 5ĭ"H* (MJ( cѐPB 6x]{vwfwa׋t_F:|9^#Ru`鵶ab1dX,Μ=+ QJI_ -uL_Q*rd2,|۶) YQ..eeҥZ[%/oIZW>88,+li/]:ʪU񶶶eTd2:cp1#˅G"=c&aRs&;9Qq\[Jgv^N PY8 3888Q]6 ID"Mo]s\۷\rHyr{{kh۷?߱sh4븮!\2m` O?}+$F0ȧGn\y.XqpyVnjlsssG,Mcxt;wʫ7onuyX om|՜J'OO|yd5iE*Ko޼y'N'rPb_}\vE8xKT{۶~`mΝu{e֭nDB D- 3``C@8x??/\>>BJ4]G:iمؽ:D<޶s RDM`,=W/-\^.e~bn'u41qקN`uJ6J0E=Lp/ݲe=}i y)VP2='k%9T*3iX~O6I* &4@jC?>~yhf0! -ihRU_B<˨!@1N~oi%p#Q%tEXtdate:create2013-06-20T11:07:04+02:00I%tEXtdate:modify2013-06-20T11:07:04+02:00tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/icons/hidpi/redo.png0000644000201500020150000000336714517055560025104 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(xIDATX[lT9gf8F\",3v4VjxHACDU4RD"yQ @4[_UBuPDF" u㢵%mslʞ >:nOx]PIX+aK$ Woֿk?EܑTJRX~````2/&ggIe2xq] RHxں XkkjTuӃW,3m uꔞ;|`Ο7n0Nk}/@%yuiXPU/Z|Rlh D]!%Zk|Ck`U԰,|su>16F*pOFD{ol>z )6_Ÿ5gfTϿtɄ *ooCMv= ( ?Lj'e __(`)H!Dhhh@ttzv&hϣxn̋͸1 ( q֭ W\݉Ja !-X ӍM}mm*K^F)E$q|'rM @2bI!paD3y"y|L&C:1LCCS?AMEbH*bdddӧg6mܸ##DJW\Sdus94ywof;[yA,C)u[\.418>>9|Xqm' 8/nltS)9wڵz YU>'Ǵs¯Fhp"rR@y~>J116w>)7C)8) 9뚚yZe2211qq||<t'ߝ9|8EB)dQ6 R6\ҥњn$go QCY.d(^077Ԕ9}ر ˃OX{j)>Z1dY|ѥg2ۇ+!Ji&GGG/??qÆ9th$\SZ3;7}@[KzQ Hc)54,4Z"UN%֚T6˟ȑl:~і C*yGab"7P}cB\c#}R%-1X/T(T_iH*kH)},q', Peyx aef%tEXtdate:create2013-06-20T11:07:04+02:00I%tEXtdate:modify2013-06-20T11:07:04+02:00tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/icons/hidpi/undo-rtl.png0000644000201500020150000000336714517055560025717 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(xIDATX[lT9gf8F\",3v4VjxHACDU4RD"yQ @4[_UBuPDF" u㢵%mslʞ >:nOx]PIX+aK$ Woֿk?EܑTJRX~````2/&ggIe2xq] RHxں XkkjTuӃW,3m uꔞ;|`Ο7n0Nk}/@%yuiXPU/Z|Rlh D]!%Zk|Ck`U԰,|su>16F*pOFD{ol>z )6_Ÿ5gfTϿtɄ *ooCMv= ( ?Lj'e __(`)H!Dhhh@ttzv&hϣxn̋͸1 ( q֭ W\݉Ja !-X ӍM}mm*K^F)E$q|'rM @2bI!paD3y"y|L&C:1LCCS?AMEbH*bdddӧg6mܸ##DJW\Sdus94ywof;[yA,C)u[\.418>>9|Xqm' 8/nltS)9wڵz YU>'Ǵs¯Fhp"rR@y~>J116w>)7C)8) 9뚚yZe2211qq||<t'ߝ9|8EB)dQ6 R6\ҥњn$go QCY.d(^077Ԕ9}ر ˃OX{j)>Z1dY|ѥg2ۇ+!Ji&GGG/??qÆ9th$\SZ3;7}@[KzQ Hc)54,4Z"UN%֚T6˟ȑl:~і C*yGab"7P}cB\c#}R%-1X/T(T_iH*kH)},q', Peyx aef%tEXtdate:create2013-06-20T11:07:04+02:00I%tEXtdate:modify2013-06-20T11:07:04+02:00tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/icons/redo.png0000644000201500020150000000151214517055560023775 0ustar puckpuckPNG  IHDRabKGD pHYs B(xcIDAT8˥Ki?ϻ,83X"ACG*!E HgAH\uW\a%\ mwǪgܰ"̓Œ!o>>o}n#5Dc R ,U>c q1^ WL̷&Z8ZFQbEDP\u]\ץT*1==GDn{GR!"ǹ` q0$ +?jU777?3๪f$pEa\莈<rqX^^.-..>"R}NC{ө[A044$ycq.;Ac~~IӔ<9;;CDPUNOOIӔZ&ccc76"Dd:7t]F[T?Kz=>}xxxj5888 @ Ilaaz?ooo7/^U7UȲ N٬ Uu[[[Z-l$f+++u:~UqI~?>;KV~)|>  TD뾽z7{ p>0$!%tEXtdate:create2013-07-04T17:03:03+02:00Mx%tEXtdate:modify2013-07-04T17:03:03+02:00<tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/undo/icons/undo-rtl.png0000644000201500020150000000151214517055560024610 0ustar puckpuckPNG  IHDRabKGD pHYs B(xcIDAT8˥Ki?ϻ,83X"ACG*!E HgAH\uW\a%\ mwǪgܰ"̓Œ!o>>o}n#5Dc R ,U>c q1^ WL̷&Z8ZFQbEDP\u]\ץT*1==GDn{GR!"ǹ` q0$ +?jU777?3๪f$pEa\莈<rqX^^.-..>"R}NC{ө[A044$ycq.;Ac~~IӔ<9;;CDPUNOOIӔZ&ccc76"Dd:7t]F[T?Kz=>}xxxj5888 @ Ilaaz?ooo7/^U7UȲ N٬ Uu[[[Z-l$f+++u:~UqI~?>;KV~)|>  TD뾽z7{ p>0$!%tEXtdate:create2013-07-04T17:03:03+02:00Mx%tEXtdate:modify2013-07-04T17:03:03+02:00<tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/autolink/0000755000201500020150000000000014517055557022113 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/autolink/plugin.js0000644000201500020150000000225414517055557023752 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ ( function() { 'use strict'; // Regex by Imme Emosol. var validUrlRegex = /^(https?|ftp):\/\/(-\.)?([^\s\/?\.#-]+\.?)+(\/[^\s]*)?[^\s\.,]$/ig, doubleQuoteRegex = /"/g; CKEDITOR.plugins.add( 'autolink', { requires: 'clipboard', init: function( editor ) { editor.on( 'paste', function( evt ) { var data = evt.data.dataValue; if ( evt.data.dataTransfer.getTransferType( editor ) == CKEDITOR.DATA_TRANSFER_INTERNAL ) { return; } // If we found "<" it means that most likely there's some tag and we don't want to touch it. if ( data.indexOf( '<' ) > -1 ) { return; } // #13419 data = data.replace( validUrlRegex , '$&' ); // If link was discovered, change the type to 'html'. This is important e.g. when pasting plain text in Chrome // where real type is correctly recognized. if ( data != evt.data.dataValue ) { evt.data.type = 'html'; } evt.data.dataValue = data; } ); } } ); } )();rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/0000755000201500020150000000000014517055557022265 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/plugin.js0000644000201500020150000006054514517055557024133 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ 'use strict'; ( function() { CKEDITOR.plugins.add( 'filetools', { lang: 'cs,da,de,en,eo,fr,gl,it,ko,ku,nb,nl,pl,pt-br,ru,sv,tr,zh,zh-cn', // %REMOVE_LINE_CORE% beforeInit: function( editor ) { /** * An instance of the {@link CKEDITOR.fileTools.uploadRepository upload repository}. * It allows you to create and get {@link CKEDITOR.fileTools.fileLoader file loaders}. * * var loader = editor.uploadRepository.create( file ); * loader.loadAndUpload( 'http://foo/bar' ); * * @since 4.5 * @readonly * @property {CKEDITOR.fileTools.uploadRepository} uploadRepository * @member CKEDITOR.editor */ editor.uploadRepository = new UploadRepository( editor ); /** * Event fired when the {@link CKEDITOR.fileTools.fileLoader file loader} should send XHR. If the event is not * {@link CKEDITOR.eventInfo#stop stopped} or {@link CKEDITOR.eventInfo#cancel canceled}, the default request * will be sent. To learn more refer to the [Uploading Dropped or Pasted Files](#!/guide/dev_file_upload) article. * * @since 4.5 * @event fileUploadRequest * @member CKEDITOR.editor * @param data * @param {CKEDITOR.fileTools.fileLoader} data.fileLoader File loader instance. */ editor.on( 'fileUploadRequest', function( evt ) { var fileLoader = evt.data.fileLoader; fileLoader.xhr.open( 'POST', fileLoader.uploadUrl, true ); }, null, null, 5 ); editor.on( 'fileUploadRequest', function( evt ) { var fileLoader = evt.data.fileLoader, formData = new FormData(); formData.append( 'upload', fileLoader.file, fileLoader.fileName ); fileLoader.xhr.send( formData ); }, null, null, 999 ); /** * Event fired when the {CKEDITOR.fileTools.fileLoader file upload} response is received and needs to be parsed. * If the event is not {@link CKEDITOR.eventInfo#stop stopped} or {@link CKEDITOR.eventInfo#cancel canceled}, * the default response handler will be used. To learn more refer to the * [Uploading Dropped or Pasted Files](#!/guide/dev_file_upload) article. * * @since 4.5 * @event fileUploadResponse * @member CKEDITOR.editor * @param data * @param {CKEDITOR.fileTools.fileLoader} data.fileLoader A file loader instance. * @param {String} data.message The message from the server. Needs to be set in the listener — see the example above. * @param {String} data.fileName The file name on server. Needs to be set in the listener — see the example above. * @param {String} data.url The URL to the uploaded file. Needs to be set in the listener — see the example above. */ editor.on( 'fileUploadResponse', function( evt ) { var fileLoader = evt.data.fileLoader, xhr = fileLoader.xhr, data = evt.data; try { var response = JSON.parse( xhr.responseText ); // Error message does not need to mean that upload finished unsuccessfully. // It could mean that ex. file name was changes during upload due to naming collision. if ( response.error && response.error.message ) { data.message = response.error.message; } // But !uploaded means error. if ( !response.uploaded ) { evt.cancel(); } else { data.fileName = response.fileName; data.url = response.url; } } catch ( err ) { // Response parsing error. data.message = fileLoader.lang.filetools.responseError; window.console && window.console.log( xhr.responseText ); evt.cancel(); } }, null, null, 999 ); } } ); /** * File loader repository. It allows you to create and get {@link CKEDITOR.fileTools.fileLoader file loaders}. * * An instance of the repository is available as the {@link CKEDITOR.editor#uploadRepository}. * * var loader = editor.uploadRepository.create( file ); * loader.loadAndUpload( 'http://foo/bar' ); * * To find more information about handling files see the {@link CKEDITOR.fileTools.fileLoader} class. * * @since 4.5 * @class CKEDITOR.fileTools.uploadRepository * @mixins CKEDITOR.event * @constructor Creates an instance of the repository. * @param {CKEDITOR.editor} editor Editor instance. Used only to get the language data. */ function UploadRepository( editor ) { this.editor = editor; this.loaders = []; } UploadRepository.prototype = { /** * Creates a {@link CKEDITOR.fileTools.fileLoader file loader} instance with a unique ID. * The instance can be later retrieved from the repository using the {@link #loaders} array. * * Fires the {@link CKEDITOR.fileTools.uploadRepository#instanceCreated instanceCreated} event. * * @param {Blob/String} fileOrData See {@link CKEDITOR.fileTools.fileLoader}. * @param {String} fileName See {@link CKEDITOR.fileTools.fileLoader}. * @returns {CKEDITOR.fileTools.fileLoader} The created file loader instance. */ create: function( fileOrData, fileName ) { var id = this.loaders.length, loader = new FileLoader( this.editor, fileOrData, fileName ); loader.id = id; this.loaders[ id ] = loader; this.fire( 'instanceCreated', loader ); return loader; }, /** * Returns `true` if all loaders finished their jobs. * * @returns {Boolean} `true` if all loaders finished their job, `false` otherwise. */ isFinished: function() { for ( var id = 0; id < this.loaders.length; ++id ) { if ( !this.loaders[ id ].isFinished() ) { return false; } } return true; } /** * Array of loaders created by the {@link #create} method. Loaders' {@link CKEDITOR.fileTools.fileLoader#id IDs} * are indexes. * * @readonly * @property {CKEDITOR.fileTools.fileLoader[]} loaders */ /** * Event fired when the {@link CKEDITOR.fileTools.fileLoader file loader} is created. * * @event instanceCreated * @param {CKEDITOR.fileTools.fileLoader} data Created file loader. */ }; /** * The `FileLoader` class is a wrapper which handles two file operations: loading the content of the file stored on * the user's device into the memory and uploading the file to the server. * * There are two possible ways to crate a `FileLoader` instance: with a [Blob](https://developer.mozilla.org/en/docs/Web/API/Blob) * (e.g. acquired from the {@link CKEDITOR.plugins.clipboard.dataTransfer#getFile} method) or with data as a Base64 string. * Note that if the constructor gets the data as a Base64 string, there is no need to load the data, the data is already loaded. * * The `FileLoader` is created for a single load and upload process so if you abort the process, * you need to create a new `FileLoader`. * * All process parameters are stored in public properties. * * `FileLoader` implements events so you can listen to them to react to changes. There are two types of events: * events to notify the listeners about changes and an event that lets the listeners synchronize with current {@link #status}. * * The first group of events contains {@link #event-loading}, {@link #event-loaded}, {@link #event-uploading}, * {@link #event-uploaded}, {@link #event-error} and {@link #event-abort}. These events are called only once, * when the {@link #status} changes. * * The second type is the {@link #event-update} event. It is fired every time the {@link #status} changes, the progress changes * or the {@link #method-update} method is called. Is is created to synchronize the visual representation of the loader with * its status. For example if the dialog window shows the upload progress, it should be refreshed on * the {@link #event-update} listener. Then when the user closes and reopens this dialog, the {@link #method-update} method should * be called to refresh the progress. * * Default request and response formats will work with CKFinder 2.4.3 and above. If you need a custom request * or response handling you need to overwrite the default behavior using the {@link CKEDITOR.editor#fileUploadRequest} and * {@link CKEDITOR.editor#fileUploadResponse} events. For more information see their documentation. * * To create a `FileLoader` instance, use the {@link CKEDITOR.fileTools.uploadRepository} class. * * Here is a simple `FileLoader` usage example: * * editor.on( 'paste', function( evt ) { * for ( var i = 0; i < evt.data.dataTransfer.getFilesCount(); i++ ) { * var file = evt.data.dataTransfer.getFile( i ); * * if ( CKEDITOR.fileTools.isTypeSupported( file, /image\/png/ ) ) { * var loader = editor.uploadRepository.create( file ); * * loader.on( 'update', function() { * document.getElementById( 'uploadProgress' ).innerHTML = loader.status; * } ); * * loader.on( 'error', function() { * alert( 'Error!' ); * } ); * * loader.loadAndUpload( 'http://upload.url/' ); * * evt.data.dataValue += 'loading...' * } * } * } ); * * Note that `FileLoader` uses the native file API which is supported **since Internet Explorer 10**. * * @since 4.5 * @class CKEDITOR.fileTools.fileLoader * @mixins CKEDITOR.event * @constructor Creates an instance of the class and sets initial values for all properties. * @param {CKEDITOR.editor} editor The editor instance. Used only to get language data. * @param {Blob/String} fileOrData A [blob object](https://developer.mozilla.org/en/docs/Web/API/Blob) or a data * string encoded with Base64. * @param {String} [fileName] The file name. If not set and the second parameter is a file, then its name will be used. * If not set and the second parameter is a Base64 data string, then the file name will be created based on * the {@link CKEDITOR.config#fileTools_defaultFileName} option. */ function FileLoader( editor, fileOrData, fileName ) { var mimeParts, defaultFileName = editor.config.fileTools_defaultFileName; this.editor = editor; this.lang = editor.lang; if ( typeof fileOrData === 'string' ) { // Data are already loaded from disc. this.data = fileOrData; this.file = dataToFile( this.data ); this.total = this.file.size; this.loaded = this.total; } else { this.data = null; this.file = fileOrData; this.total = this.file.size; this.loaded = 0; } if ( fileName ) { this.fileName = fileName; } else if ( this.file.name ) { this.fileName = this.file.name; } else { mimeParts = this.file.type.split( '/' ); if ( defaultFileName ) { mimeParts[ 0 ] = defaultFileName; } this.fileName = mimeParts.join( '.' ); } this.uploaded = 0; this.status = 'created'; this.abort = function() { this.changeStatus( 'abort' ); }; } /** * The loader status. Possible values: * * * `created` – The loader was created, but neither load nor upload started. * * `loading` – The file is being loaded from the user's storage. * * `loaded` – The file was loaded, the process is finished. * * `uploading` – The file is being uploaded to the server. * * `uploaded` – The file was uploaded, the process is finished. * * `error` – The process stops because of an error, more details are available in the {@link #message} property. * * `abort` – The process was stopped by the user. * * @property {String} status */ /** * String data encoded with Base64. If the `FileLoader` is created with a Base64 string, the `data` is that string. * If a file was passed to the constructor, the data is `null` until loading is completed. * * @readonly * @property {String} data */ /** * File object which represents the handled file. This property is set for both constructor options (file or data). * * @readonly * @property {Blob} file */ /** * The name of the file. If there is no file name, it is created by using the * {@link CKEDITOR.config#fileTools_defaultFileName} option. * * @readonly * @property {String} fileName */ /** * The number of loaded bytes. If the `FileLoader` was created with a data string, * the loaded value equals the {@link #total} value. * * @readonly * @property {Number} loaded */ /** * The number of uploaded bytes. * * @readonly * @property {Number} uploaded */ /** * The total file size in bytes. * * @readonly * @property {Number} total */ /** * The error message or additional information received from the server. * * @readonly * @property {String} message */ /** * The URL to the file when it is uploaded or received from the server. * * @readonly * @property {String} url */ /** * The target of the upload. * * @readonly * @property {String} uploadUrl */ /** * * Native `FileReader` reference used to load the file. * * @readonly * @property {FileReader} reader */ /** * Native `XMLHttpRequest` reference used to upload the file. * * @readonly * @property {XMLHttpRequest} xhr */ /** * If `FileLoader` was created using {@link CKEDITOR.fileTools.uploadRepository}, * it gets an identifier which is stored in this property. * * @readonly * @property {Number} id */ /** * Aborts the process. * * This method has a different behavior depending on the current {@link #status}. * * * If the {@link #status} is `loading` or `uploading`, current operation will be aborted. * * If the {@link #status} is `created`, `loading` or `uploading`, the {@link #status} will be changed to `abort` * and the {@link #event-abort} event will be called. * * If the {@link #status} is `loaded`, `uploaded`, `error` or `abort`, this method will do nothing. * * @method abort */ FileLoader.prototype = { /** * Loads a file from the storage on the user's device to the `data` attribute and uploads it to the server. * * The order of {@link #status statuses} for a successful load and upload is: * * * `created`, * * `loading`, * * `uploading`, * * `uploaded`. * * @param {String} url The upload URL. */ loadAndUpload: function( url ) { var loader = this; this.once( 'loaded', function( evt ) { // Cancel both 'loaded' and 'update' events, // because 'loaded' is terminated state. evt.cancel(); loader.once( 'update', function( evt ) { evt.cancel(); }, null, null, 0 ); // Start uploading. loader.upload( url ); }, null, null, 0 ); this.load(); }, /** * Loads a file from the storage on the user's device to the `data` attribute. * * The order of the {@link #status statuses} for a successful load is: * * * `created`, * * `loading`, * * `loaded`. */ load: function() { var loader = this; this.reader = new FileReader(); var reader = this.reader; loader.changeStatus( 'loading' ); this.abort = function() { loader.reader.abort(); }; reader.onabort = function() { loader.changeStatus( 'abort' ); }; reader.onerror = function() { loader.message = loader.lang.filetools.loadError; loader.changeStatus( 'error' ); }; reader.onprogress = function( evt ) { loader.loaded = evt.loaded; loader.update(); }; reader.onload = function() { loader.loaded = loader.total; loader.data = reader.result; loader.changeStatus( 'loaded' ); }; reader.readAsDataURL( this.file ); }, /** * Uploads a file to the server. * * The order of the {@link #status statuses} for a successful upload is: * * * `created`, * * `uploading`, * * `uploaded`. * * @param {String} url The upload URL. */ upload: function( url ) { if ( !url ) { this.message = this.lang.filetools.noUrlError; this.changeStatus( 'error' ); } else { this.uploadUrl = url; this.xhr = new XMLHttpRequest(); this.attachRequestListeners(); if ( this.editor.fire( 'fileUploadRequest', { fileLoader: this } ) ) { this.changeStatus( 'uploading' ); } } }, /** * Attaches listeners to the XML HTTP request object. * * @private * @param {XMLHttpRequest} xhr XML HTTP request object. */ attachRequestListeners: function() { var loader = this, xhr = this.xhr; loader.abort = function() { xhr.abort(); }; xhr.onabort = function() { loader.changeStatus( 'abort' ); }; xhr.onerror = function() { loader.message = loader.lang.filetools.networkError; loader.changeStatus( 'error' ); }; xhr.onprogress = function( evt ) { loader.uploaded = evt.loaded; loader.update(); }; xhr.onload = function() { loader.uploaded = loader.total; if ( xhr.status < 200 || xhr.status > 299 ) { loader.message = loader.lang.filetools[ 'httpError' + xhr.status ]; if ( !loader.message ) { loader.message = loader.lang.filetools.httpError.replace( '%1', xhr.status ); } loader.changeStatus( 'error' ); } else { var data = { fileLoader: loader }, // Values to copy from event to FileLoader. valuesToCopy = [ 'message', 'fileName', 'url' ], success = loader.editor.fire( 'fileUploadResponse', data ); for ( var i = 0; i < valuesToCopy.length; i++ ) { var key = valuesToCopy[ i ]; if ( typeof data[ key ] === 'string' ) { loader[ key ] = data[ key ]; } } if ( success === false ) { loader.changeStatus( 'error' ); } else { loader.changeStatus( 'uploaded' ); } } }; }, /** * Changes {@link #status} to the new status, updates the {@link #method-abort} method if needed and fires two events: * new status and {@link #event-update}. * * @private * @param {String} newStatus New status to be set. */ changeStatus: function( newStatus ) { this.status = newStatus; if ( newStatus == 'error' || newStatus == 'abort' || newStatus == 'loaded' || newStatus == 'uploaded' ) { this.abort = function() {}; } this.fire( newStatus ); this.update(); }, /** * Updates the state of the `FileLoader` listeners. This method should be called if the state of the visual representation * of the upload process is out of synchronization and needs to be refreshed (e.g. because of an undo operation or * because the dialog window with the upload is closed and reopened). Fires the {@link #event-update} event. */ update: function() { this.fire( 'update' ); }, /** * Returns `true` if the loading and uploading finished (successfully or not), so the {@link #status} is * `loaded`, `uploaded`, `error` or `abort`. * * @returns {Boolean} `true` if the loading and uploading finished. */ isFinished: function() { return !!this.status.match( /^(?:loaded|uploaded|error|abort)$/ ); } /** * Event fired when the {@link #status} changes to `loading`. It will be fired once for the `FileLoader`. * * @event loading */ /** * Event fired when the {@link #status} changes to `loaded`. It will be fired once for the `FileLoader`. * * @event loaded */ /** * Event fired when the {@link #status} changes to `uploading`. It will be fired once for the `FileLoader`. * * @event uploading */ /** * Event fired when the {@link #status} changes to `uploaded`. It will be fired once for the `FileLoader`. * * @event uploaded */ /** * Event fired when the {@link #status} changes to `error`. It will be fired once for the `FileLoader`. * * @event error */ /** * Event fired when the {@link #status} changes to `abort`. It will be fired once for the `FileLoader`. * * @event abort */ /** * Event fired every time the `FileLoader` {@link #status} or progress changes or the {@link #method-update} method is called. * This event was designed to allow showing the visualization of the progress and refresh that visualization * every time the status changes. Note that multiple `update` events may be fired with the same status. * * @event update */ }; CKEDITOR.event.implementOn( UploadRepository.prototype ); CKEDITOR.event.implementOn( FileLoader.prototype ); var base64HeaderRegExp = /^data:(\S*?);base64,/; // Transforms Base64 string data into file and creates name for that file based on the mime type. // // @private // @param {String} data Base64 string data. // @returns {Blob} File. function dataToFile( data ) { var contentType = data.match( base64HeaderRegExp )[ 1 ], base64Data = data.replace( base64HeaderRegExp, '' ), byteCharacters = atob( base64Data ), byteArrays = [], sliceSize = 512, offset, slice, byteNumbers, i, byteArray; for ( offset = 0; offset < byteCharacters.length; offset += sliceSize ) { slice = byteCharacters.slice( offset, offset + sliceSize ); byteNumbers = new Array( slice.length ); for ( i = 0; i < slice.length; i++ ) { byteNumbers[ i ] = slice.charCodeAt( i ); } byteArray = new Uint8Array( byteNumbers ); byteArrays.push( byteArray ); } return new Blob( byteArrays, { type: contentType } ); } // // PUBLIC API ------------------------------------------------------------- // // Two plugins extend this object. if ( !CKEDITOR.fileTools ) { /** * Helpers to load and upload a file. * * @since 4.5 * @singleton * @class CKEDITOR.fileTools */ CKEDITOR.fileTools = {}; } CKEDITOR.tools.extend( CKEDITOR.fileTools, { uploadRepository: UploadRepository, fileLoader: FileLoader, /** * Gets the upload URL from the {@link CKEDITOR.config configuration}. Because of backward compatibility * the URL can be set using multiple configuration options. * * If the `type` is defined, then four configuration options will be checked in the following order * (examples for `type='image'`): * * * `[type]UploadUrl`, e.g. {@link CKEDITOR.config#imageUploadUrl}, * * {@link CKEDITOR.config#uploadUrl}, * * `filebrowser[uppercased type]uploadUrl`, e.g. {@link CKEDITOR.config#filebrowserImageUploadUrl}, * * {@link CKEDITOR.config#filebrowserUploadUrl}. * * If the `type` is not defined, two configuration options will be checked: * * * {@link CKEDITOR.config#uploadUrl}, * * {@link CKEDITOR.config#filebrowserUploadUrl}. * * `filebrowser[type]uploadUrl` and `filebrowserUploadUrl` are checked for backward compatibility with the * `filebrowser` plugin. * * For both `filebrowser[type]uploadUrl` and `filebrowserUploadUrl` `&responseType=json` is added to the end of the URL. * * @param {Object} config The configuration file. * @param {String} [type] Upload file type. * @returns {String/null} Upload URL or `null` if none of the configuration options were defined. */ getUploadUrl: function( config, type ) { var capitalize = CKEDITOR.tools.capitalize; if ( type && config[ type + 'UploadUrl' ] ) { return config[ type + 'UploadUrl' ]; } else if ( config.uploadUrl ) { return config.uploadUrl; } else if ( type && config[ 'filebrowser' + capitalize( type, 1 ) + 'UploadUrl' ] ) { return config[ 'filebrowser' + capitalize( type, 1 ) + 'UploadUrl' ] + '&responseType=json'; } else if ( config.filebrowserUploadUrl ) { return config.filebrowserUploadUrl + '&responseType=json'; } return null; }, /** * Checks if the MIME type of the given file is supported. * * CKEDITOR.fileTools.isTypeSupported( { type: 'image/png' }, /image\/(png|jpeg)/ ); // true * CKEDITOR.fileTools.isTypeSupported( { type: 'image/png' }, /image\/(gif|jpeg)/ ); // false * * @param {Blob} file The file to check. * @param {RegExp} supportedTypes A regular expression to check the MIME type of the file. * @returns {Boolean} `true` if the file type is supported. */ isTypeSupported: function( file, supportedTypes ) { return !!file.type.match( supportedTypes ); } } ); } )(); /** * The URL where files should be uploaded. * * An empty string means that the option is disabled. * * @since 4.5 * @cfg {String} [uploadUrl=''] * @member CKEDITOR.config */ /** * Default file name (without extension) that will be used for files created from a Base64 data string * (for example for files pasted into the editor). * This name will be combined with the MIME type to create the full file name with the extension. * * If `fileTools_defaultFileName` is set to `default-name` and data's MIME type is `image/png`, * the resulting file name will be `default-name.png`. * * If `fileTools_defaultFileName` is not set, the file name will be created using only its MIME type. * For example for `image/png` the file name will be `image.png`. * * @since 4.5.3 * @cfg {String} [fileTools_defaultFileName=''] * @member CKEDITOR.config */ rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/dev/0000755000201500020150000000000014517055557023043 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/dev/uploaddebugger.js0000644000201500020150000000237014517055557026374 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ 'use strict'; // Slow down the upload process. // This trick works only on Chrome. ( function() { XMLHttpRequest.prototype.baseSend = XMLHttpRequest.prototype.send; XMLHttpRequest.prototype.send = function( data ) { var baseOnProgress = this.onprogress, baseOnLoad = this.onload; this.onprogress = function() {}; this.onload = function( evt ) { // Total file size. var total = 1163, step = Math.round( total / 10 ), loaded = 0, xhr = this; function progress() { setTimeout( function() { if ( xhr.aborted ) { return; } loaded += step; if ( loaded > total ) { loaded = total; } if ( loaded > step * 4 && xhr.responseText.indexOf( 'incorrectFile' ) > 0 ) { xhr.aborted = true; xhr.onerror(); } else if ( loaded < total ) { evt.loaded = loaded; baseOnProgress( { loaded: loaded } ); progress(); } else { baseOnLoad( evt ); } }, 300 ); } progress(); }; this.abort = function() { this.aborted = true; this.onabort(); }; this.baseSend( data ); }; } )();rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/0000755000201500020150000000000014517055557023206 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/zh.js0000644000201500020150000000121514517055557024164 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'zh', { loadError: '在讀取檔案時發生錯誤。', networkError: '在上傳檔案時發生網路錯誤。', httpError404: '在上傳檔案時發生 HTTP 錯誤(404:檔案找不到)。', httpError403: '在上傳檔案時發生 HTTP 錯誤(403:禁止)。', httpError: '在上傳檔案時發生 HTTP 錯誤(錯誤狀態:%1)。', noUrlError: '上傳的 URL 未被定義。', responseError: '不正確的伺服器回應。' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/nb.js0000644000201500020150000000120214517055557024136 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'nb', { loadError: 'Feil oppsto under filinnlesing.', networkError: 'Nettverksfeil oppsto under filopplasting.', httpError404: 'HTTP-feil oppsto under filopplasting (404: Fant ikke filen).', httpError403: 'HTTP-feil oppsto under filopplasting (403: Ikke tillatt).', httpError: 'HTTP-feil oppsto under filopplasting (feilstatus: %1).', noUrlError: 'URL for opplasting er ikke oppgitt.', responseError: 'Ukorrekt svar fra serveren.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/eo.js0000644000201500020150000000122714517055557024151 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'eo', { loadError: 'Eraro okazis dum la dosiera legado.', networkError: 'Reta eraro okazis dum la dosiera alŝuto.', httpError404: 'HTTP eraro okazis dum la dosiera alŝuto (404: dosiero ne trovita).', httpError403: 'HTTP eraro okazis dum la dosiera alŝuto (403: malpermesita).', httpError: 'HTTP eraro okazis dum la dosiera alŝuto (erara stato: %1).', noUrlError: 'Alŝuta URL ne estas difinita.', responseError: 'Malĝusta respondo de la servilo.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/it.js0000644000201500020150000000145114517055557024161 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'it', { loadError: 'Si è verificato un errore durante la lettura del file.', networkError: 'Si è verificato un errore di rete durante il caricamento del file.', httpError404: 'Si è verificato un errore HTTP durante il caricamento del file (404: file non trovato).', httpError403: 'Si è verificato un errore HTTP durante il caricamento del file (403: accesso negato).', httpError: 'Si è verificato un errore HTTP durante il caricamento del file (stato dell\'errore: %1).', noUrlError: 'L\'URL per il caricamento non è stato definito.', responseError: 'La risposta del server non è corretta.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/ko.js0000644000201500020150000000137014517055557024156 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'ko', { loadError: '파일을 읽는 중 오류가 발생했습니다.', networkError: '파일 업로드 중 네트워크 오류가 발생했습니다.', httpError404: '파일 업로드중 HTTP 오류가 발생했습니다 (404: 파일 찾을수 없음).', httpError403: '파일 업로드중 HTTP 오류가 발생했습니다 (403: 권한 없음).', httpError: '파일 업로드중 HTTP 오류가 발생했습니다 (오류 코드 %1).', noUrlError: '업로드 주소가 정의되어 있지 않습니다.', responseError: '잘못된 서버 응답.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/zh-cn.js0000644000201500020150000000120714517055557024563 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'zh-cn', { loadError: '读取文件时发生错误。', networkError: '上传文件时发生网络错误。', httpError404: '上传文件时发生 HTTP 错误(404:无法找到文件)。', httpError403: '上传文件时发生 HTTP 错误(403:禁止访问)。', httpError: '上传文件时发生 HTTP 错误(错误代码:%1)。', noUrlError: '上传的 URL 未定义。', responseError: '不正确的服务器响应。' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/sv.js0000644000201500020150000000116514517055557024177 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'sv', { loadError: 'Fel uppstod vid filläsning', networkError: 'Nätverksfel uppstod vid filuppladdning.', httpError404: 'HTTP-fel uppstod vid filuppladdning (404: Fil hittades inte).', httpError403: 'HTTP-fel uppstod vid filuppladdning (403: Förbjuden).', httpError: 'HTTP-fel uppstod vid filuppladdning (felstatus: %1).', noUrlError: 'URL för uppladdning inte definierad.', responseError: 'Felaktigt serversvar.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/pl.js0000644000201500020150000000125714517055557024164 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'pl', { loadError: 'Błąd podczas odczytu pliku.', networkError: 'W trakcie wysyłania pliku pojawił się błąd sieciowy.', httpError404: 'Błąd HTTP w trakcie wysyłania pliku (404: Nie znaleziono pliku).', httpError403: 'Błąd HTTP w trakcie wysyłania pliku (403: Zabroniony).', httpError: 'Błąd HTTP w trakcie wysyłania pliku (status błędu: %1).', noUrlError: 'Nie zdefiniowano adresu URL do przesłania pliku.', responseError: 'Niepoprawna odpowiedź serwera.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/ku.js0000644000201500020150000000164714517055557024173 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'ku', { loadError: 'هەڵەیەک ڕوویدا لە ماوەی خوێندنەوەی پەڕگەکە.', networkError: 'هەڵەیەکی ڕایەڵە ڕوویدا لە ماوەی بارکردنی پەڕگەکە.', httpError404: 'هەڵەیەک ڕوویدا لە ماوەی بارکردنی پەڕگەکە (404: پەڕگەکە نەدۆزراوە).', httpError403: 'هەڵەیەک ڕوویدا لە ماوەی بارکردنی پەڕگەکە (403: قەدەغەکراو).', httpError: 'هەڵەیەک ڕوویدا لە ماوەی بارکردنی پەڕگەکە (دۆخی هەڵە: %1).', noUrlError: 'بەستەری پەڕگەکە پێناسە نەکراوە.', responseError: 'وەڵامێکی نادروستی سێرڤەر.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/ru.js0000644000201500020150000000141114517055557024167 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'ru', { loadError: 'Ошибка при чтении файла', networkError: 'Сетевая ошибка при загрузке файла', httpError404: 'HTTP ошибка при загрузке файла (404: Файл не найден)', httpError403: 'HTTP ошибка при загрузке файла (403: Запрещено)', httpError: 'HTTP ошибка при загрузке файла (%1)', noUrlError: 'Не определен URL для загрузки файлов', responseError: 'Некорректный ответ сервера' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/gl.js0000644000201500020150000000134614517055557024152 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'gl', { loadError: 'Produciuse un erro durante a lectura do ficheiro.', networkError: 'Produciuse un erro na rede durante o envío do ficheiro.', httpError404: 'Produciuse un erro HTTP durante o envío do ficheiro (404: Ficheiro non atopado).', httpError403: 'Produciuse un erro HTTP durante o envío do ficheiro (403: Acceso denegado).', httpError: 'Produciuse un erro HTTP durante o envío do ficheiro (erro de estado: %1).', noUrlError: 'Non foi definido o URL para o envío.', responseError: 'Resposta incorrecta do servidor.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/pt-br.js0000644000201500020150000000131214517055557024565 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'pt-br', { loadError: 'Um erro ocorreu durante a leitura do arquivo.', networkError: 'Um erro de rede ocorreu durante o envio do arquivo.', httpError404: 'Um erro HTTP ocorreu durante o envio do arquivo (404: Arquivo não encontrado).', httpError403: 'Um erro HTTP ocorreu durante o envio do arquivo (403: Proibido).', httpError: 'Um erro HTTP ocorreu durante o envio do arquivo (status do erro: %1)', noUrlError: 'A URL de upload não está definida.', responseError: 'Resposta incorreta do servidor.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/nl.js0000644000201500020150000000121214517055557024151 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'nl', { loadError: 'Fout tijdens lezen van bestand.', networkError: 'Netwerkfout tijdens uploaden van bestand.', httpError404: 'HTTP fout tijdens uploaden van bestand (404: Bestand niet gevonden).', httpError403: 'HTTP fout tijdens uploaden van bestand (403: Verboden).', httpError: 'HTTP fout tijdens uploaden van bestand (fout status: %1).', noUrlError: 'Upload URL is niet gedefinieerd.', responseError: 'Ongeldig antwoord van server.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/da.js0000644000201500020150000000122714517055557024132 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'da', { loadError: 'Der skete en fejl ved indlæsningen af filen.', networkError: 'Der skete en netværks fejl under uploadingen.', httpError404: 'Der skete en HTTP fejl under uploadingen (404: File not found).', httpError403: 'Der skete en HTTP fejl under uploadingen (403: Forbidden).', httpError: 'Der skete en HTTP fejl under uploadingen (error status: %1).', noUrlError: 'Upload URL er ikke defineret.', responseError: 'Ikke korrekt server svar.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/de.js0000644000201500020150000000141414517055557024134 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'de', { loadError: 'Während dem Lesen der Datei ist ein Fehler aufgetreten.', networkError: 'Während dem Hochladen der Datei ist ein Netzwerkfehler aufgetreten.', httpError404: 'Während dem Hochladen der Datei ist ein HTTP-Fehler aufgetreten (404: Datei nicht gefunden).', httpError403: 'Während dem Hochladen der Datei ist ein HTTP-Fehler aufgetreten (403: Verboten).', httpError: 'Während dem Hochladen der Datei ist ein HTTP-Fehler aufgetreten (Fehlerstatus: %1).', noUrlError: 'Hochlade-URL ist nicht definiert.', responseError: 'Falsche Antwort des Servers.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/cs.js0000644000201500020150000000126114517055557024151 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'cs', { loadError: 'Při čtení souboru došlo k chybě.', networkError: 'Při nahrávání souboru došlo k chybě v síti.', httpError404: 'Při nahrávání souboru došlo k chybě HTTP (404: Soubor nenalezen).', httpError403: 'Při nahrávání souboru došlo k chybě HTTP (403: Zakázáno).', httpError: 'Při nahrávání souboru došlo k chybě HTTP (chybový stav: %1).', noUrlError: 'URL pro nahrání není zadána.', responseError: 'Nesprávná odpověď serveru.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/tr.js0000644000201500020150000000120514517055557024167 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'tr', { loadError: 'Dosya okunurken hata oluştu.', networkError: 'Dosya gönderilirken ağ hatası oluştu.', httpError404: 'Dosya gönderilirken HTTP hatası oluştu (404: Dosya bulunamadı).', httpError403: 'Dosya gönderilirken HTTP hatası oluştu (403: Yasaklı).', httpError: 'Dosya gönderilirken HTTP hatası oluştu (hata durumu: %1).', noUrlError: 'Gönderilecek URL belirtilmedi.', responseError: 'Sunucu cevap veremedi.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/en.js0000644000201500020150000000117614517055557024153 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'en', { loadError: 'Error occurred during file read.', networkError: 'Network error occurred during file upload.', httpError404: 'HTTP error occurred during file upload (404: File not found).', httpError403: 'HTTP error occurred during file upload (403: Forbidden).', httpError: 'HTTP error occurred during file upload (error status: %1).', noUrlError: 'Upload URL is not defined.', responseError: 'Incorrect server response.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/filetools/lang/fr.js0000644000201500020150000000145414517055557024157 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'filetools', 'fr', { loadError: 'Une erreur est survenue lors de la lecture du fichier.', networkError: 'Une erreur réseau est survenue lors du téléversement du fichier.', httpError404: 'Une erreur HTTP est survenue durant le téléversement du fichier (404: Fichier non trouvé).', httpError403: 'Une erreur HTTP est survenue durant le téléversement du fichier (403: Accès refusé).', httpError: 'Une erreur HTTP est survenue durant le téléversement du fichier (statut de l\'erreur : %1).', noUrlError: 'L\'URL de téléversement n\'est pas spécifiée.', responseError: 'Réponse du serveur incorrecte.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadimage/0000755000201500020150000000000014517055560022546 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadimage/plugin.js0000644000201500020150000000707614517055560024414 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ 'use strict'; ( function() { CKEDITOR.plugins.add( 'uploadimage', { requires: 'uploadwidget', onLoad: function() { CKEDITOR.addCss( '.cke_upload_uploading img{' + 'opacity: 0.3' + '}' ); }, init: function( editor ) { // Do not execute this paste listener if it will not be possible to upload file. if ( !CKEDITOR.plugins.clipboard.isFileApiSupported ) { return; } var fileTools = CKEDITOR.fileTools, uploadUrl = fileTools.getUploadUrl( editor.config, 'image' ); if ( !uploadUrl ) { window.console && window.console.log( 'Error: Upload URL for the Upload Image feature was not defined. ' + 'For more information see: http://docs.ckeditor.com/#!/guide/dev_file_upload' ); return; } // Handle images which are available in the dataTransfer. fileTools.addUploadWidget( editor, 'uploadimage', { supportedTypes: /image\/(jpeg|png|gif|bmp)/, uploadUrl: uploadUrl, fileToElement: function() { var img = new CKEDITOR.dom.element( 'img' ); img.setAttribute( 'src', loadingImage ); return img; }, parts: { img: 'img' }, onUploading: function( upload ) { // Show the image during the upload. this.parts.img.setAttribute( 'src', upload.data ); }, onUploaded: function( upload ) { // Set width and height to prevent blinking. this.replaceWith( '' ); } } ); // Handle images which are not available in the dataTransfer. // This means that we need to read them from the elements. editor.on( 'paste', function( evt ) { // For performance reason do not parse data if it does not contain img tag and data attribute. if ( !evt.data.dataValue.match( / this fires another 'paste' event, so cancel it // * fire 'paste' on editor // * !canceled && fire 'afterPaste' on editor // // // PASTE EVENT - PREPROCESSING: // -- Possible dataValue types: auto, text, html. // -- Possible dataValue contents: // * text (possible \n\r) // * htmlified text (text + br,div,p - no presentional markup & attrs - depends on browser) // * html // -- Possible flags: // * htmlified - if true then content is a HTML even if no markup inside. This flag is set // for content from editable pastebins, because they 'htmlify' pasted content. // // -- Type: auto: // * content: htmlified text -> filter, unify text markup (brs, ps, divs), set type: text // * content: html -> filter, set type: html // -- Type: text: // * content: htmlified text -> filter, unify text markup // * content: html -> filter, strip presentional markup, unify text markup // -- Type: html: // * content: htmlified text -> filter, unify text markup // * content: html -> filter // // -- Phases: // * if dataValue is empty copy data from dataTransfer to dataValue (priority 1) // * filtering (priorities 3-5) - e.g. pastefromword filters // * content type sniffing (priority 6) // * markup transformations for text (priority 6) // // DRAG & DROP EXECUTION FLOWS: // -- Drag // * save to the global object: // * drag timestamp (with 'cke-' prefix), // * selected html, // * drag range, // * editor instance. // * put drag timestamp into event.dataTransfer.text // -- Drop // * if events text == saved timestamp && editor == saved editor // internal drag & drop occurred // * getRangeAtDropPosition // * create bookmarks for drag and drop ranges starting from the end of the document // * dragRange.deleteContents() // * fire 'paste' with saved html and drop range // * if events text == saved timestamp && editor != saved editor // cross editor drag & drop occurred // * getRangeAtDropPosition // * fire 'paste' with saved html // * dragRange.deleteContents() // * FF: refreshCursor on afterPaste // * if events text != saved timestamp // drop form external source occurred // * getRangeAtDropPosition // * if event contains html data then fire 'paste' with html // * else if event contains text data then fire 'paste' with encoded text // * FF: refreshCursor on afterPaste 'use strict'; ( function() { // Register the plugin. CKEDITOR.plugins.add( 'clipboard', { requires: 'dialog', // jscs:disable maximumLineLength lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en,en-au,en-ca,en-gb,eo,es,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% // jscs:enable maximumLineLength icons: 'copy,copy-rtl,cut,cut-rtl,paste,paste-rtl', // %REMOVE_LINE_CORE% hidpi: true, // %REMOVE_LINE_CORE% init: function( editor ) { var filterType, filtersFactory = filtersFactoryFactory(); if ( editor.config.forcePasteAsPlainText ) { filterType = 'plain-text'; } else if ( editor.config.pasteFilter ) { filterType = editor.config.pasteFilter; } // On Webkit the pasteFilter defaults 'semantic-content' because pasted data is so terrible // that it must be always filtered. else if ( CKEDITOR.env.webkit && !( 'pasteFilter' in editor.config ) ) { filterType = 'semantic-content'; } editor.pasteFilter = filtersFactory.get( filterType ); initPasteClipboard( editor ); initDragDrop( editor ); CKEDITOR.dialog.add( 'paste', CKEDITOR.getUrl( this.path + 'dialogs/paste.js' ) ); editor.on( 'paste', function( evt ) { // Init `dataTransfer` if `paste` event was fired without it, so it will be always available. if ( !evt.data.dataTransfer ) { evt.data.dataTransfer = new CKEDITOR.plugins.clipboard.dataTransfer(); } // If dataValue is already set (manually or by paste bin), so do not override it. if ( evt.data.dataValue ) { return; } var dataTransfer = evt.data.dataTransfer, // IE support only text data and throws exception if we try to get html data. // This html data object may also be empty if we drag content of the textarea. value = dataTransfer.getData( 'text/html' ); if ( value ) { evt.data.dataValue = value; evt.data.type = 'html'; } else { // Try to get text data otherwise. value = dataTransfer.getData( 'text/plain' ); if ( value ) { evt.data.dataValue = editor.editable().transformPlainTextToHtml( value ); evt.data.type = 'text'; } } }, null, null, 1 ); editor.on( 'paste', function( evt ) { var data = evt.data.dataValue, blockElements = CKEDITOR.dtd.$block; // Filter webkit garbage. if ( data.indexOf( 'Apple-' ) > -1 ) { // Replace special webkit's   with simple space, because webkit // produces them even for normal spaces. data = data.replace( / <\/span>/gi, ' ' ); // Strip around white-spaces when not in forced 'html' content type. // This spans are created only when pasting plain text into Webkit, // but for safety reasons remove them always. if ( evt.data.type != 'html' ) { data = data.replace( /]*>([^<]*)<\/span>/gi, function( all, spaces ) { // Replace tabs with 4 spaces like Fx does. return spaces.replace( /\t/g, '    ' ); } ); } // This br is produced only when copying & pasting HTML content. if ( data.indexOf( '
' ) > -1 ) { evt.data.startsWithEOL = 1; evt.data.preSniffing = 'html'; // Mark as not text. data = data.replace( /
/, '' ); } // Remove all other classes. data = data.replace( /(<[^>]+) class="Apple-[^"]*"/gi, '$1' ); } // Strip editable that was copied from inside. (#9534) if ( data.match( /^<[^<]+cke_(editable|contents)/i ) ) { var tmp, editable_wrapper, wrapper = new CKEDITOR.dom.element( 'div' ); wrapper.setHtml( data ); // Verify for sure and check for nested editor UI parts. (#9675) while ( wrapper.getChildCount() == 1 && ( tmp = wrapper.getFirst() ) && tmp.type == CKEDITOR.NODE_ELEMENT && // Make sure first-child is element. ( tmp.hasClass( 'cke_editable' ) || tmp.hasClass( 'cke_contents' ) ) ) { wrapper = editable_wrapper = tmp; } // If editable wrapper was found strip it and bogus
(added on FF). if ( editable_wrapper ) data = editable_wrapper.getHtml().replace( /
$/i, '' ); } if ( CKEDITOR.env.ie ) { //  

->

(br.cke-pasted-remove will be removed later) data = data.replace( /^ (?: |\r\n)?<(\w+)/g, function( match, elementName ) { if ( elementName.toLowerCase() in blockElements ) { evt.data.preSniffing = 'html'; // Mark as not a text. return '<' + elementName; } return match; } ); } else if ( CKEDITOR.env.webkit ) { //


->


// We don't mark br, because this situation can happen for htmlified text too. data = data.replace( /<\/(\w+)>

<\/div>$/, function( match, elementName ) { if ( elementName in blockElements ) { evt.data.endsWithEOL = 1; return ''; } return match; } ); } else if ( CKEDITOR.env.gecko ) { // Firefox adds bogus
when user pasted text followed by space(s). data = data.replace( /(\s)
$/, '$1' ); } evt.data.dataValue = data; }, null, null, 3 ); editor.on( 'paste', function( evt ) { var dataObj = evt.data, type = dataObj.type, data = dataObj.dataValue, trueType, // Default is 'html'. defaultType = editor.config.clipboard_defaultContentType || 'html', transferType = dataObj.dataTransfer.getTransferType( editor ); // If forced type is 'html' we don't need to know true data type. if ( type == 'html' || dataObj.preSniffing == 'html' ) { trueType = 'html'; } else { trueType = recogniseContentType( data ); } // Unify text markup. if ( trueType == 'htmlifiedtext' ) { data = htmlifiedTextHtmlification( editor.config, data ); } // Strip presentional markup & unify text markup. // Forced plain text (dialog or forcePAPT). // Note: we do not check dontFilter option in this case, because forcePAPT was implemented // before pasteFilter and pasteFilter is automatically used on Webkit&Blink since 4.5, so // forcePAPT should have priority as it had before 4.5. if ( type == 'text' && trueType == 'html' ) { data = filterContent( editor, data, filtersFactory.get( 'plain-text' ) ); } // External paste and pasteFilter exists and filtering isn't disabled. else if ( transferType == CKEDITOR.DATA_TRANSFER_EXTERNAL && editor.pasteFilter && !dataObj.dontFilter ) { data = filterContent( editor, data, editor.pasteFilter ); } if ( dataObj.startsWithEOL ) { data = '
' + data; } if ( dataObj.endsWithEOL ) { data += '
'; } if ( type == 'auto' ) { type = ( trueType == 'html' || defaultType == 'html' ) ? 'html' : 'text'; } dataObj.type = type; dataObj.dataValue = data; delete dataObj.preSniffing; delete dataObj.startsWithEOL; delete dataObj.endsWithEOL; }, null, null, 6 ); // Inserts processed data into the editor at the end of the // events chain. editor.on( 'paste', function( evt ) { var data = evt.data; if ( data.dataValue ) { editor.insertHtml( data.dataValue, data.type, data.range ); // Defer 'afterPaste' so all other listeners for 'paste' will be fired first. // Fire afterPaste only if paste inserted some HTML. setTimeout( function() { editor.fire( 'afterPaste' ); }, 0 ); } }, null, null, 1000 ); editor.on( 'pasteDialog', function( evt ) { // TODO it's possible that this setTimeout is not needed any more, // because of changes introduced in the same commit as this comment. // Editor.getClipboardData adds listener to the dialog's events which are // fired after a while (not like 'showDialog'). setTimeout( function() { // Open default paste dialog. editor.openDialog( 'paste', evt.data ); }, 0 ); } ); } } ); function firePasteEvents( editor, data, withBeforePaste ) { if ( !data.type ) { data.type = 'auto'; } if ( withBeforePaste ) { // Fire 'beforePaste' event so clipboard flavor get customized // by other plugins. if ( editor.fire( 'beforePaste', data ) === false ) return false; // Event canceled } // Do not fire paste if there is no data (dataValue and dataTranfser are empty). // This check should be done after firing 'beforePaste' because for native paste // 'beforePaste' is by default fired even for empty clipboard. if ( !data.dataValue && data.dataTransfer.isEmpty() ) { return false; } if ( !data.dataValue ) { data.dataValue = ''; } // Because of FF bug we need to use this hack, otherwise cursor is hidden // or it is not possible to move it (#12420). // Also, check that editor.toolbox exists, because the toolbar plugin might not be loaded (#13305). if ( CKEDITOR.env.gecko && data.method == 'drop' && editor.toolbox ) { editor.once( 'afterPaste', function() { editor.toolbox.focus(); } ); } return editor.fire( 'paste', data ); } function initPasteClipboard( editor ) { var clipboard = CKEDITOR.plugins.clipboard, preventBeforePasteEvent = 0, preventPasteEvent = 0, inReadOnly = 0; addListeners(); addButtonsCommands(); /** * Gets clipboard data by directly accessing the clipboard (IE only) or opening the paste dialog window. * * editor.getClipboardData( { title: 'Get my data' }, function( data ) { * if ( data ) * alert( data.type + ' ' + data.dataValue ); * } ); * * @member CKEDITOR.editor * @param {Object} options * @param {String} [options.title] The title of the paste dialog window. * @param {Function} callback A function that will be executed with `data.type` and `data.dataValue` * or `null` if none of the capturing methods succeeded. */ editor.getClipboardData = function( options, callback ) { var beforePasteNotCanceled = false, dataType = 'auto', dialogCommited = false; // Options are optional - args shift. if ( !callback ) { callback = options; options = null; } // Listen with maximum priority to handle content before everyone else. // This callback will handle paste event that will be fired if direct // access to the clipboard succeed in IE. editor.on( 'paste', onPaste, null, null, 0 ); // Listen at the end of listeners chain to see if event wasn't canceled // and to retrieve modified data.type. editor.on( 'beforePaste', onBeforePaste, null, null, 1000 ); // getClipboardDataDirectly() will fire 'beforePaste' synchronously, so we can // check if it was canceled and if any listener modified data.type. // If command didn't succeed (only IE allows to access clipboard and only if // user agrees) open and handle paste dialog. if ( getClipboardDataDirectly() === false ) { // Direct access to the clipboard wasn't successful so remove listener. editor.removeListener( 'paste', onPaste ); // If beforePaste was canceled do not open dialog. // Add listeners only if dialog really opened. 'pasteDialog' can be canceled. if ( beforePasteNotCanceled && editor.fire( 'pasteDialog', onDialogOpen ) ) { editor.on( 'pasteDialogCommit', onDialogCommit ); // 'dialogHide' will be fired after 'pasteDialogCommit'. editor.on( 'dialogHide', function( evt ) { evt.removeListener(); evt.data.removeListener( 'pasteDialogCommit', onDialogCommit ); // Because Opera has to wait a while in pasteDialog we have to wait here. setTimeout( function() { // Notify even if user canceled dialog (clicked 'cancel', ESC, etc). if ( !dialogCommited ) callback( null ); }, 10 ); } ); } else { callback( null ); } } function onPaste( evt ) { evt.removeListener(); evt.cancel(); callback( evt.data ); } function onBeforePaste( evt ) { evt.removeListener(); beforePasteNotCanceled = true; dataType = evt.data.type; } function onDialogCommit( evt ) { evt.removeListener(); // Cancel pasteDialogCommit so paste dialog won't automatically fire // 'paste' evt by itself. evt.cancel(); dialogCommited = true; callback( { type: dataType, dataValue: evt.data, method: 'paste' } ); } function onDialogOpen() { this.customTitle = ( options && options.title ); } }; function addButtonsCommands() { addButtonCommand( 'Cut', 'cut', createCutCopyCmd( 'cut' ), 10, 1 ); addButtonCommand( 'Copy', 'copy', createCutCopyCmd( 'copy' ), 20, 4 ); addButtonCommand( 'Paste', 'paste', createPasteCmd(), 30, 8 ); function addButtonCommand( buttonName, commandName, command, toolbarOrder, ctxMenuOrder ) { var lang = editor.lang.clipboard[ commandName ]; editor.addCommand( commandName, command ); editor.ui.addButton && editor.ui.addButton( buttonName, { label: lang, command: commandName, toolbar: 'clipboard,' + toolbarOrder } ); // If the "menu" plugin is loaded, register the menu item. if ( editor.addMenuItems ) { editor.addMenuItem( commandName, { label: lang, command: commandName, group: 'clipboard', order: ctxMenuOrder } ); } } } function addListeners() { editor.on( 'key', onKey ); editor.on( 'contentDom', addPasteListenersToEditable ); // For improved performance, we're checking the readOnly state on selectionChange instead of hooking a key event for that. editor.on( 'selectionChange', function( evt ) { inReadOnly = evt.data.selection.getRanges()[ 0 ].checkReadOnly(); setToolbarStates(); } ); // If the "contextmenu" plugin is loaded, register the listeners. if ( editor.contextMenu ) { editor.contextMenu.addListener( function( element, selection ) { inReadOnly = selection.getRanges()[ 0 ].checkReadOnly(); return { cut: stateFromNamedCommand( 'cut' ), copy: stateFromNamedCommand( 'copy' ), paste: stateFromNamedCommand( 'paste' ) }; } ); } } // Add events listeners to editable. function addPasteListenersToEditable() { var editable = editor.editable(); if ( CKEDITOR.plugins.clipboard.isCustomCopyCutSupported ) { var initOnCopyCut = function( evt ) { clipboard.initPasteDataTransfer( evt, editor ); evt.data.preventDefault(); }; editable.on( 'copy', initOnCopyCut ); editable.on( 'cut', initOnCopyCut ); // Delete content with the low priority so one can overwrite cut data. editable.on( 'cut', function() { editor.extractSelectedHtml(); }, null, null, 999 ); } // We'll be catching all pasted content in one line, regardless of whether // it's introduced by a document command execution (e.g. toolbar buttons) or // user paste behaviors (e.g. CTRL+V). editable.on( clipboard.mainPasteEvent, function( evt ) { if ( clipboard.mainPasteEvent == 'beforepaste' && preventBeforePasteEvent ) { return; } // If you've just asked yourself why preventPasteEventNow() is not here, but // in listener for CTRL+V and exec method of 'paste' command // you've asked the same question we did. // // THE ANSWER: // // First thing to notice - this answer makes sense only for IE, // because other browsers don't listen for 'paste' event. // // What would happen if we move preventPasteEventNow() here? // For: // * CTRL+V - IE fires 'beforepaste', so we prevent 'paste' and pasteDataFromClipboard(). OK. // * editor.execCommand( 'paste' ) - we fire 'beforepaste', so we prevent // 'paste' and pasteDataFromClipboard() and doc.execCommand( 'Paste' ). OK. // * native context menu - IE fires 'beforepaste', so we prevent 'paste', but unfortunately // on IE we fail with pasteDataFromClipboard() here, because of... we don't know why, but // we just fail, so... we paste nothing. FAIL. // * native menu bar - the same as for native context menu. // // But don't you know any way to distinguish first two cases from last two? // Only one - special flag set in CTRL+V handler and exec method of 'paste' // command. And that's what we did using preventPasteEventNow(). pasteDataFromClipboard( evt ); } ); // It's not possible to clearly handle all four paste methods (ctrl+v, native menu bar // native context menu, editor's command) in one 'paste/beforepaste' event in IE. // // For ctrl+v & editor's command it's easy to handle pasting in 'beforepaste' listener, // so we do this. For another two methods it's better to use 'paste' event. // // 'paste' is always being fired after 'beforepaste' (except of weird one on opening native // context menu), so for two methods handled in 'beforepaste' we're canceling 'paste' // using preventPasteEvent state. // // 'paste' event in IE is being fired before getClipboardDataByPastebin executes its callback. // // QUESTION: Why didn't you handle all 4 paste methods in handler for 'paste'? // Wouldn't this just be simpler? // ANSWER: Then we would have to evt.data.preventDefault() only for native // context menu and menu bar pastes. The same with execIECommand(). // That would force us to mark CTRL+V and editor's paste command with // special flag, other than preventPasteEvent. But we still would have to // have preventPasteEvent for the second event fired by execIECommand. // Code would be longer and not cleaner. if ( clipboard.mainPasteEvent == 'beforepaste' ) { editable.on( 'paste', function( evt ) { if ( preventPasteEvent ) { return; } // Cancel next 'paste' event fired by execIECommand( 'paste' ) // at the end of this callback. preventPasteEventNow(); // Prevent native paste. evt.data.preventDefault(); pasteDataFromClipboard( evt ); // Force IE to paste content into pastebin so pasteDataFromClipboard will work. if ( !execIECommand( 'paste' ) ) { editor.openDialog( 'paste' ); } } ); // If mainPasteEvent is 'beforePaste' (IE before Edge), // dismiss the (wrong) 'beforepaste' event fired on context/toolbar menu open. (#7953) editable.on( 'contextmenu', preventBeforePasteEventNow, null, null, 0 ); editable.on( 'beforepaste', function( evt ) { // Do not prevent event on CTRL+V and SHIFT+INS because it blocks paste (#11970). if ( evt.data && !evt.data.$.ctrlKey && !evt.data.$.shiftKey ) preventBeforePasteEventNow(); }, null, null, 0 ); } editable.on( 'beforecut', function() { !preventBeforePasteEvent && fixCut( editor ); } ); var mouseupTimeout; // Use editor.document instead of editable in non-IEs for observing mouseup // since editable won't fire the event if selection process started within // iframe and ended out of the editor (#9851). editable.attachListener( CKEDITOR.env.ie ? editable : editor.document.getDocumentElement(), 'mouseup', function() { mouseupTimeout = setTimeout( function() { setToolbarStates(); }, 0 ); } ); // Make sure that deferred mouseup callback isn't executed after editor instance // had been destroyed. This may happen when editor.destroy() is called in parallel // with mouseup event (i.e. a button with onclick callback) (#10219). editor.on( 'destroy', function() { clearTimeout( mouseupTimeout ); } ); editable.on( 'keyup', setToolbarStates ); } // Create object representing Cut or Copy commands. function createCutCopyCmd( type ) { return { type: type, canUndo: type == 'cut', // We can't undo copy to clipboard. startDisabled: true, exec: function() { // Attempts to execute the Cut and Copy operations. function tryToCutCopy( type ) { if ( CKEDITOR.env.ie ) return execIECommand( type ); // non-IEs part try { // Other browsers throw an error if the command is disabled. return editor.document.$.execCommand( type, false, null ); } catch ( e ) { return false; } } this.type == 'cut' && fixCut(); var success = tryToCutCopy( this.type ); if ( !success ) { // Show cutError or copyError. editor.showNotification( editor.lang.clipboard[ this.type + 'Error' ] ); // jshint ignore:line } return success; } }; } function createPasteCmd() { return { // Snapshots are done manually by editable.insertXXX methods. canUndo: false, async: true, exec: function( editor, data ) { var fire = function( data, withBeforePaste ) { data && firePasteEvents( editor, data, !!withBeforePaste ); editor.fire( 'afterCommandExec', { name: 'paste', command: cmd, returnValue: !!data } ); }, cmd = this; // Check data precisely - don't open dialog on empty string. if ( typeof data == 'string' ) fire( { dataValue: data, method: 'paste', dataTransfer: clipboard.initPasteDataTransfer() }, 1 ); else editor.getClipboardData( fire ); } }; } function preventPasteEventNow() { preventPasteEvent = 1; // For safety reason we should wait longer than 0/1ms. // We don't know how long execution of quite complex getClipboardData will take // and in for example 'paste' listner execCommand() (which fires 'paste') is called // after getClipboardData finishes. // Luckily, it's impossible to immediately fire another 'paste' event we want to handle, // because we only handle there native context menu and menu bar. setTimeout( function() { preventPasteEvent = 0; }, 100 ); } function preventBeforePasteEventNow() { preventBeforePasteEvent = 1; setTimeout( function() { preventBeforePasteEvent = 0; }, 10 ); } // Tries to execute any of the paste, cut or copy commands in IE. Returns a // boolean indicating that the operation succeeded. // @param {String} command *LOWER CASED* name of command ('paste', 'cut', 'copy'). function execIECommand( command ) { var doc = editor.document, body = doc.getBody(), enabled = false, onExec = function() { enabled = true; }; // The following seems to be the only reliable way to detect that // clipboard commands are enabled in IE. It will fire the // onpaste/oncut/oncopy events only if the security settings allowed // the command to execute. body.on( command, onExec ); // IE7: document.execCommand has problem to paste into positioned element. if ( CKEDITOR.env.version > 7 ) { doc.$.execCommand( command ); } else { doc.$.selection.createRange().execCommand( command ); } body.removeListener( command, onExec ); return enabled; } // Cutting off control type element in IE standards breaks the selection entirely. (#4881) function fixCut() { if ( !CKEDITOR.env.ie || CKEDITOR.env.quirks ) return; var sel = editor.getSelection(), control, range, dummy; if ( ( sel.getType() == CKEDITOR.SELECTION_ELEMENT ) && ( control = sel.getSelectedElement() ) ) { range = sel.getRanges()[ 0 ]; dummy = editor.document.createText( '' ); dummy.insertBefore( control ); range.setStartBefore( dummy ); range.setEndAfter( control ); sel.selectRanges( [ range ] ); // Clear up the fix if the paste wasn't succeeded. setTimeout( function() { // Element still online? if ( control.getParent() ) { dummy.remove(); sel.selectElement( control ); } }, 0 ); } } // Allow to peek clipboard content by redirecting the // pasting content into a temporary bin and grab the content of it. function getClipboardDataByPastebin( evt, callback ) { var doc = editor.document, editable = editor.editable(), cancel = function( evt ) { evt.cancel(); }, blurListener; // Avoid recursions on 'paste' event or consequent paste too fast. (#5730) if ( doc.getById( 'cke_pastebin' ) ) return; var sel = editor.getSelection(); var bms = sel.createBookmarks(); // #11384. On IE9+ we use native selectionchange (i.e. editor#selectionCheck) to cache the most // recent selection which we then lock on editable blur. See selection.js for more info. // selectionchange fired before getClipboardDataByPastebin() cached selection // before creating bookmark (cached selection will be invalid, because bookmarks modified the DOM), // so we need to fire selectionchange one more time, to store current seleciton. // Selection will be locked when we focus pastebin. if ( CKEDITOR.env.ie ) sel.root.fire( 'selectionchange' ); // Create container to paste into. // For rich content we prefer to use "body" since it holds // the least possibility to be splitted by pasted content, while this may // breaks the text selection on a frame-less editable, "div" would be // the best one in that case. // In another case on old IEs moving the selection into a "body" paste bin causes error panic. // Body can't be also used for Opera which fills it with
// what is indistinguishable from pasted
(copying
in Opera isn't possible, // but it can be copied from other browser). var pastebin = new CKEDITOR.dom.element( ( CKEDITOR.env.webkit || editable.is( 'body' ) ) && !CKEDITOR.env.ie ? 'body' : 'div', doc ); pastebin.setAttributes( { id: 'cke_pastebin', 'data-cke-temp': '1' } ); var containerOffset = 0, offsetParent, win = doc.getWindow(); if ( CKEDITOR.env.webkit ) { // It's better to paste close to the real paste destination, so inherited styles // (which Webkits will try to compensate by styling span) differs less from the destination's one. editable.append( pastebin ); // Style pastebin like .cke_editable, to minimize differences between origin and destination. (#9754) pastebin.addClass( 'cke_editable' ); // Compensate position of offsetParent. if ( !editable.is( 'body' ) ) { // We're not able to get offsetParent from pastebin (body element), so check whether // its parent (editable) is positioned. if ( editable.getComputedStyle( 'position' ) != 'static' ) offsetParent = editable; // And if not - safely get offsetParent from editable. else offsetParent = CKEDITOR.dom.element.get( editable.$.offsetParent ); containerOffset = offsetParent.getDocumentPosition().y; } } else { // Opera and IE doesn't allow to append to html element. editable.getAscendant( CKEDITOR.env.ie ? 'body' : 'html', 1 ).append( pastebin ); } pastebin.setStyles( { position: 'absolute', // Position the bin at the top (+10 for safety) of viewport to avoid any subsequent document scroll. top: ( win.getScrollPosition().y - containerOffset + 10 ) + 'px', width: '1px', // Caret has to fit in that height, otherwise browsers like Chrome & Opera will scroll window to show it. // Set height equal to viewport's height - 20px (safety gaps), minimum 1px. height: Math.max( 1, win.getViewPaneSize().height - 20 ) + 'px', overflow: 'hidden', // Reset styles that can mess up pastebin position. margin: 0, padding: 0 } ); // Paste fails in Safari when the body tag has 'user-select: none'. (#12506) if ( CKEDITOR.env.safari ) pastebin.setStyles( CKEDITOR.tools.cssVendorPrefix( 'user-select', 'text' ) ); // Check if the paste bin now establishes new editing host. var isEditingHost = pastebin.getParent().isReadOnly(); if ( isEditingHost ) { // Hide the paste bin. pastebin.setOpacity( 0 ); // And make it editable. pastebin.setAttribute( 'contenteditable', true ); } // Transparency is not enough since positioned non-editing host always shows // resize handler, pull it off the screen instead. else { pastebin.setStyle( editor.config.contentsLangDirection == 'ltr' ? 'left' : 'right', '-1000px' ); } editor.on( 'selectionChange', cancel, null, null, 0 ); // Webkit fill fire blur on editable when moving selection to // pastebin (if body is used). Cancel it because it causes incorrect // selection lock in case of inline editor (#10644). // The same seems to apply to Firefox (#10787). if ( CKEDITOR.env.webkit || CKEDITOR.env.gecko ) blurListener = editable.once( 'blur', cancel, null, null, -100 ); // Temporarily move selection to the pastebin. isEditingHost && pastebin.focus(); var range = new CKEDITOR.dom.range( pastebin ); range.selectNodeContents( pastebin ); var selPastebin = range.select(); // If non-native paste is executed, IE will open security alert and blur editable. // Editable will then lock selection inside itself and after accepting security alert // this selection will be restored. We overwrite stored selection, so it's restored // in pastebin. (#9552) if ( CKEDITOR.env.ie ) { blurListener = editable.once( 'blur', function() { editor.lockSelection( selPastebin ); } ); } var scrollTop = CKEDITOR.document.getWindow().getScrollPosition().y; // Wait a while and grab the pasted contents. setTimeout( function() { // Restore main window's scroll position which could have been changed // by browser in cases described in #9771. if ( CKEDITOR.env.webkit ) CKEDITOR.document.getBody().$.scrollTop = scrollTop; // Blur will be fired only on non-native paste. In other case manually remove listener. blurListener && blurListener.removeListener(); // Restore properly the document focus. (#8849) if ( CKEDITOR.env.ie ) editable.focus(); // IE7: selection must go before removing pastebin. (#8691) sel.selectBookmarks( bms ); pastebin.remove(); // Grab the HTML contents. // We need to look for a apple style wrapper on webkit it also adds // a div wrapper if you copy/paste the body of the editor. // Remove hidden div and restore selection. var bogusSpan; if ( CKEDITOR.env.webkit && ( bogusSpan = pastebin.getFirst() ) && ( bogusSpan.is && bogusSpan.hasClass( 'Apple-style-span' ) ) ) pastebin = bogusSpan; editor.removeListener( 'selectionChange', cancel ); callback( pastebin.getHtml() ); }, 0 ); } // Try to get content directly on IE from clipboard, without native event // being fired before. In other words - synthetically get clipboard data, if it's possible. // mainPasteEvent will be fired, so if forced native paste: // * worked, getClipboardDataByPastebin will grab it, // * didn't work, dataValue and dataTransfer will be empty and editor#paste won't be fired. // Clipboard data can be accessed directly only on IEs older than Edge. // On other browsers we should fire beforePaste event and return false. function getClipboardDataDirectly() { if ( clipboard.mainPasteEvent == 'paste' ) { // beforePaste should be fired when dialog open so it can be canceled. editor.fire( 'beforePaste', { type: 'auto', method: 'paste' } ); return false; } // Prevent IE from pasting at the begining of the document. editor.focus(); // Command will be handled by 'beforepaste', but as // execIECommand( 'paste' ) will fire also 'paste' event // we're canceling it. preventPasteEventNow(); // #9247: Lock focus to prevent IE from hiding toolbar for inline editor. var focusManager = editor.focusManager; focusManager.lock(); if ( editor.editable().fire( clipboard.mainPasteEvent ) && !execIECommand( 'paste' ) ) { focusManager.unlock(); return false; } focusManager.unlock(); return true; } // Listens for some clipboard related keystrokes, so they get customized. // Needs to be bind to keydown event. function onKey( event ) { if ( editor.mode != 'wysiwyg' ) return; switch ( event.data.keyCode ) { // Paste case CKEDITOR.CTRL + 86: // CTRL+V case CKEDITOR.SHIFT + 45: // SHIFT+INS var editable = editor.editable(); // Cancel 'paste' event because ctrl+v is for IE handled // by 'beforepaste'. preventPasteEventNow(); // Simulate 'beforepaste' event for all browsers using 'paste' as main event. if ( clipboard.mainPasteEvent == 'paste' ) { editable.fire( 'beforepaste' ); } return; // Cut case CKEDITOR.CTRL + 88: // CTRL+X case CKEDITOR.SHIFT + 46: // SHIFT+DEL // Save Undo snapshot. editor.fire( 'saveSnapshot' ); // Save before cut setTimeout( function() { editor.fire( 'saveSnapshot' ); // Save after cut }, 50 ); // OSX is slow (#11416). } } function pasteDataFromClipboard( evt ) { // Default type is 'auto', but can be changed by beforePaste listeners. var eventData = { type: 'auto', method: 'paste', dataTransfer: clipboard.initPasteDataTransfer( evt ) }; eventData.dataTransfer.cacheData(); // Fire 'beforePaste' event so clipboard flavor get customized by other plugins. // If 'beforePaste' is canceled continue executing getClipboardDataByPastebin and then do nothing // (do not fire 'paste', 'afterPaste' events). This way we can grab all - synthetically // and natively pasted content and prevent its insertion into editor // after canceling 'beforePaste' event. var beforePasteNotCanceled = editor.fire( 'beforePaste', eventData ) !== false; // Do not use paste bin if the browser let us get HTML or files from dataTranfer. if ( beforePasteNotCanceled && clipboard.canClipboardApiBeTrusted( eventData.dataTransfer, editor ) ) { evt.data.preventDefault(); setTimeout( function() { firePasteEvents( editor, eventData ); }, 0 ); } else { getClipboardDataByPastebin( evt, function( data ) { // Clean up. eventData.dataValue = data.replace( /]+data-cke-bookmark[^<]*?<\/span>/ig, '' ); // Fire remaining events (without beforePaste) beforePasteNotCanceled && firePasteEvents( editor, eventData ); } ); } } function setToolbarStates() { if ( editor.mode != 'wysiwyg' ) return; var pasteState = stateFromNamedCommand( 'paste' ); editor.getCommand( 'cut' ).setState( stateFromNamedCommand( 'cut' ) ); editor.getCommand( 'copy' ).setState( stateFromNamedCommand( 'copy' ) ); editor.getCommand( 'paste' ).setState( pasteState ); editor.fire( 'pasteState', pasteState ); } function stateFromNamedCommand( command ) { if ( inReadOnly && command in { paste: 1, cut: 1 } ) return CKEDITOR.TRISTATE_DISABLED; if ( command == 'paste' ) return CKEDITOR.TRISTATE_OFF; // Cut, copy - check if the selection is not empty. var sel = editor.getSelection(), ranges = sel.getRanges(), selectionIsEmpty = sel.getType() == CKEDITOR.SELECTION_NONE || ( ranges.length == 1 && ranges[ 0 ].collapsed ); return selectionIsEmpty ? CKEDITOR.TRISTATE_DISABLED : CKEDITOR.TRISTATE_OFF; } } // Returns: // * 'htmlifiedtext' if content looks like transformed by browser from plain text. // See clipboard/paste.html TCs for more info. // * 'html' if it is not 'htmlifiedtext'. function recogniseContentType( data ) { if ( CKEDITOR.env.webkit ) { // Plain text or (

and text inside
). if ( !data.match( /^[^<]*$/g ) && !data.match( /^(
<\/div>|
[^<]*<\/div>)*$/gi ) ) return 'html'; } else if ( CKEDITOR.env.ie ) { // Text and
or ( text and
in

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

([^<]|)*<\/p>|(\r\n))*$/gi ) ) return 'html'; } else if ( CKEDITOR.env.gecko ) { // Text or
. if ( !data.match( /^([^<]|)*$/gi ) ) return 'html'; } else { return 'html'; } return 'htmlifiedtext'; } // This function transforms what browsers produce when // pasting plain text into editable element (see clipboard/paste.html TCs // for more info) into correct HTML (similar to that produced by text2Html). function htmlifiedTextHtmlification( config, data ) { function repeatParagraphs( repeats ) { // Repeat blocks floor((n+1)/2) times. // Even number of repeats - add
at the beginning of last

. return CKEDITOR.tools.repeat( '

', ~~( repeats / 2 ) ) + ( repeats % 2 == 1 ? '
' : '' ); } // Replace adjacent white-spaces (EOLs too - Fx sometimes keeps them) with one space. data = data.replace( /\s+/g, ' ' ) // Remove spaces from between tags. .replace( /> +<' ) // Normalize XHTML syntax and upper cased
tags. .replace( /
/gi, '
' ); // IE - lower cased tags. data = data.replace( /<\/?[A-Z]+>/g, function( match ) { return match.toLowerCase(); } ); // Don't touch single lines (no ) - nothing to do here. if ( data.match( /^[^<]$/ ) ) return data; // Webkit. if ( CKEDITOR.env.webkit && data.indexOf( '

' ) > -1 ) { // One line break at the beginning - insert
data = data.replace( /^(
(
|)<\/div>)(?!$|(
(
|)<\/div>))/g, '
' ) // Two or more - reduce number of new lines by one. .replace( /^(
(
|)<\/div>){2}(?!$)/g, '
' ); // Two line breaks create one paragraph in Webkit. if ( data.match( /
(
|)<\/div>/ ) ) { data = '

' + data.replace( /(

(
|)<\/div>)+/g, function( match ) { return repeatParagraphs( match.split( '
' ).length + 1 ); } ) + '

'; } // One line break create br. data = data.replace( /<\/div>
/g, '
' ); // Remove remaining divs. data = data.replace( /<\/?div>/g, '' ); } // Opera and Firefox and enterMode != BR. if ( CKEDITOR.env.gecko && config.enterMode != CKEDITOR.ENTER_BR ) { // Remove bogus
- Fx generates two for one line break. // For two line breaks it still produces two , but it's better to ignore this case than the first one. if ( CKEDITOR.env.gecko ) data = data.replace( /^

$/, '
' ); // This line satisfy edge case when for Opera we have two line breaks //data = data.replace( /) if ( data.indexOf( '

' ) > -1 ) { // Two line breaks create one paragraph, three - 2, four - 3, etc. data = '

' + data.replace( /(
){2,}/g, function( match ) { return repeatParagraphs( match.length / 4 ); } ) + '

'; } } return switchEnterMode( config, data ); } function filtersFactoryFactory() { var filters = {}; function setUpTags() { var tags = {}; for ( var tag in CKEDITOR.dtd ) { if ( tag.charAt( 0 ) != '$' && tag != 'div' && tag != 'span' ) { tags[ tag ] = 1; } } return tags; } function createSemanticContentFilter() { var filter = new CKEDITOR.filter(); filter.allow( { $1: { elements: setUpTags(), attributes: true, styles: false, classes: false } } ); return filter; } return { get: function( type ) { if ( type == 'plain-text' ) { // Does this look confusing to you? Did we forget about enter mode? // It is a trick that let's us creating one filter for edidtor, regardless of its // activeEnterMode (which as the name indicates can change during runtime). // // How does it work? // The active enter mode is passed to the filter.applyTo method. // The filter first marks all elements except
as disallowed and then tries to remove // them. However, it cannot remove e.g. a

element completely, because it's a basic structural element, // so it tries to replace it with an element created based on the active enter mode, eventually doing nothing. // // Now you can sleep well. return filters.plainText || ( filters.plainText = new CKEDITOR.filter( 'br' ) ); } else if ( type == 'semantic-content' ) { return filters.semanticContent || ( filters.semanticContent = createSemanticContentFilter() ); } else if ( type ) { // Create filter based on rules (string or object). return new CKEDITOR.filter( type ); } return null; } }; } function filterContent( editor, data, filter ) { var fragment = CKEDITOR.htmlParser.fragment.fromHtml( data ), writer = new CKEDITOR.htmlParser.basicWriter(); filter.applyTo( fragment, true, false, editor.activeEnterMode ); fragment.writeHtml( writer ); return writer.getHtml(); } function switchEnterMode( config, data ) { if ( config.enterMode == CKEDITOR.ENTER_BR ) { data = data.replace( /(<\/p>

)+/g, function( match ) { return CKEDITOR.tools.repeat( '
', match.length / 7 * 2 ); } ).replace( /<\/?p>/g, '' ); } else if ( config.enterMode == CKEDITOR.ENTER_DIV ) { data = data.replace( /<(\/)?p>/g, '<$1div>' ); } return data; } function preventDefaultSetDropEffectToNone( evt ) { evt.data.preventDefault(); evt.data.$.dataTransfer.dropEffect = 'none'; } function initDragDrop( editor ) { var clipboard = CKEDITOR.plugins.clipboard; editor.on( 'contentDom', function() { var editable = editor.editable(), dropTarget = CKEDITOR.plugins.clipboard.getDropTarget( editor ), top = editor.ui.space( 'top' ), bottom = editor.ui.space( 'bottom' ); // -------------- DRAGOVER TOP & BOTTOM -------------- // Not allowing dragging on toolbar and bottom (#12613). clipboard.preventDefaultDropOnElement( top ); clipboard.preventDefaultDropOnElement( bottom ); // -------------- DRAGSTART -------------- // Listed on dragstart to mark internal and cross-editor drag & drop // and save range and selected HTML. editable.attachListener( dropTarget, 'dragstart', fireDragEvent ); // Make sure to reset data transfer (in case dragend was not called or was canceled). editable.attachListener( editor, 'dragstart', clipboard.resetDragDataTransfer, clipboard, null, 1 ); // Create a dataTransfer object and save it globally. editable.attachListener( editor, 'dragstart', function( evt ) { clipboard.initDragDataTransfer( evt, editor ); // Save drag range globally for cross editor D&D. var dragRange = clipboard.dragRange = editor.getSelection().getRanges()[ 0 ]; // Store number of children, so we can later tell if any text node was split on drop. (#13011, #13447) if ( CKEDITOR.env.ie && CKEDITOR.env.version < 10 ) { clipboard.dragStartContainerChildCount = dragRange ? getContainerChildCount( dragRange.startContainer ) : null; clipboard.dragEndContainerChildCount = dragRange ? getContainerChildCount( dragRange.endContainer ) : null; } }, null, null, 2 ); // -------------- DRAGEND -------------- // Clean up on dragend. editable.attachListener( dropTarget, 'dragend', fireDragEvent ); // Init data transfer if someone wants to use it in dragend. editable.attachListener( editor, 'dragend', clipboard.initDragDataTransfer, clipboard, null, 1 ); // When drag & drop is done we need to reset dataTransfer so the future // external drop will be not recognize as internal. editable.attachListener( editor, 'dragend', clipboard.resetDragDataTransfer, clipboard, null, 100 ); // -------------- DRAGOVER -------------- // We need to call preventDefault on dragover because otherwise if // we drop image it will overwrite document. editable.attachListener( dropTarget, 'dragover', function( evt ) { var target = evt.data.getTarget(); // Prevent reloading page when dragging image on empty document (#12619). if ( target && target.is && target.is( 'html' ) ) { evt.data.preventDefault(); return; } // If we do not prevent default dragover on IE the file path // will be loaded and we will lose content. On the other hand // if we prevent it the cursor will not we shown, so we prevent // dragover only on IE, on versions which support file API and only // if the event contains files. if ( CKEDITOR.env.ie && CKEDITOR.plugins.clipboard.isFileApiSupported && evt.data.$.dataTransfer.types.contains( 'Files' ) ) { evt.data.preventDefault(); } } ); // -------------- DROP -------------- editable.attachListener( dropTarget, 'drop', function( evt ) { // Cancel native drop. evt.data.preventDefault(); var target = evt.data.getTarget(), readOnly = target.isReadOnly(); // Do nothing if drop on non editable element (#13015). // The tag isn't editable (body is), but we want to allow drop on it // (so it is possible to drop below editor contents). if ( readOnly && !( target.type == CKEDITOR.NODE_ELEMENT && target.is( 'html' ) ) ) { return; } // Getting drop position is one of the most complex parts. var dropRange = clipboard.getRangeAtDropPosition( evt, editor ), dragRange = clipboard.dragRange; // Do nothing if it was not possible to get drop range. if ( !dropRange ) { return; } // Fire drop. fireDragEvent( evt, dragRange, dropRange ); } ); // Create dataTransfer or get it, if it was created before. editable.attachListener( editor, 'drop', clipboard.initDragDataTransfer, clipboard, null, 1 ); // Execute drop action, fire paste. editable.attachListener( editor, 'drop', function( evt ) { var data = evt.data; if ( !data ) { return; } // Let user modify drag and drop range. var dropRange = data.dropRange, dragRange = data.dragRange, dataTransfer = data.dataTransfer; if ( dataTransfer.getTransferType( editor ) == CKEDITOR.DATA_TRANSFER_INTERNAL ) { // Execute drop with a timeout because otherwise selection, after drop, // on IE is in the drag position, instead of drop position. setTimeout( function() { clipboard.internalDrop( dragRange, dropRange, dataTransfer, editor ); }, 0 ); } else if ( dataTransfer.getTransferType( editor ) == CKEDITOR.DATA_TRANSFER_CROSS_EDITORS ) { crossEditorDrop( dragRange, dropRange, dataTransfer ); } else { externalDrop( dropRange, dataTransfer ); } }, null, null, 9999 ); // Cross editor drag and drop (drag in one Editor and drop in the other). function crossEditorDrop( dragRange, dropRange, dataTransfer ) { // Paste event should be fired before delete contents because otherwise // Chrome have a problem with drop range (Chrome split the drop // range container so the offset is bigger then container length). dropRange.select(); firePasteEvents( editor, { dataTransfer: dataTransfer, method: 'drop' }, 1 ); // Remove dragged content and make a snapshot. dataTransfer.sourceEditor.fire( 'saveSnapshot' ); dataTransfer.sourceEditor.editable().extractHtmlFromRange( dragRange ); // Make some selection before saving snapshot, otherwise error will be thrown, because // there will be no valid selection after content is removed. dataTransfer.sourceEditor.getSelection().selectRanges( [ dragRange ] ); dataTransfer.sourceEditor.fire( 'saveSnapshot' ); } // Drop from external source. function externalDrop( dropRange, dataTransfer ) { // Paste content into the drop position. dropRange.select(); firePasteEvents( editor, { dataTransfer: dataTransfer, method: 'drop' }, 1 ); // Usually we reset DataTranfer on dragend, // but dragend is called on the same element as dragstart // so it will not be called on on external drop. clipboard.resetDragDataTransfer(); } // Fire drag/drop events (dragstart, dragend, drop). function fireDragEvent( evt, dragRange, dropRange ) { var eventData = { $: evt.data.$, target: evt.data.getTarget() }; if ( dragRange ) { eventData.dragRange = dragRange; } if ( dropRange ) { eventData.dropRange = dropRange; } if ( editor.fire( evt.name, eventData ) === false ) { evt.data.preventDefault(); } } function getContainerChildCount( container ) { if ( container.type != CKEDITOR.NODE_ELEMENT ) { container = container.getParent(); } return container.getChildCount(); } } ); } /** * @singleton * @class CKEDITOR.plugins.clipboard */ CKEDITOR.plugins.clipboard = { /** * True if the environment allows to set data on copy or cut manually. This value is false in IE, because this browser * shows the security dialog window when the script tries to set clipboard data and on iOS, because custom data is * not saved to clipboard there. * * @since 4.5 * @readonly * @property {Boolean} */ isCustomCopyCutSupported: !CKEDITOR.env.ie && !CKEDITOR.env.iOS, /** * True if the environment supports MIME types and custom data types in dataTransfer/cliboardData getData/setData methods. * * @since 4.5 * @readonly * @property {Boolean} */ isCustomDataTypesSupported: !CKEDITOR.env.ie, /** * True if the environment supports File API. * * @since 4.5 * @readonly * @property {Boolean} */ isFileApiSupported: !CKEDITOR.env.ie || CKEDITOR.env.version > 9, /** * Main native paste event editable should listen to. * * **Note:** Safari does not like the {@link CKEDITOR.editor#beforePaste} event — it sometimes does not * handle Ctrl+C properly. This is probably caused by some race condition between events. * Chrome, Firefox and Edge work well with both events, so it is better to use {@link CKEDITOR.editor#paste} * which will handle pasting from e.g. browsers' menu bars. * IE7/8 does not like the {@link CKEDITOR.editor#paste} event for which it is throwing random errors. * * @since 4.5 * @readonly * @property {String} */ mainPasteEvent: ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) ? 'beforepaste' : 'paste', /** * Returns `true` if it is expected that a browser provides HTML data through the Clipboard API. * If not, this method returns `false` and as a result CKEditor will use the paste bin. Read more in * the [Clipboard Integration](http://docs.ckeditor.com/#!/guide/dev_clipboard-section-clipboard-api) guide. * * @since 4.5.2 * @returns {Boolean} */ canClipboardApiBeTrusted: function( dataTransfer, editor ) { // If it's an internal or cross-editor data transfer, then it means that custom cut/copy/paste support works // and that the data were put manually on the data transfer so we can be sure that it's available. if ( dataTransfer.getTransferType( editor ) != CKEDITOR.DATA_TRANSFER_EXTERNAL ) { return true; } // In Chrome we can trust Clipboard API, with the exception of Chrome on Android (in both - mobile and desktop modes), where // clipboard API is not available so we need to check it (#13187). if ( CKEDITOR.env.chrome && !dataTransfer.isEmpty() ) { return true; } // Because of a Firefox bug HTML data are not available in some cases (e.g. paste from Word), in such cases we // need to use the pastebin (#13528, https://bugzilla.mozilla.org/show_bug.cgi?id=1183686). if ( CKEDITOR.env.gecko && ( dataTransfer.getData( 'text/html' ) || dataTransfer.getFilesCount() ) ) { return true; } // In Safari and IE HTML data is not available though the Clipboard API. // In Edge things are a bit messy at the moment - // https://connect.microsoft.com/IE/feedback/details/1572456/edge-clipboard-api-text-html-content-messed-up-in-event-clipboarddata // It is safer to use the paste bin in unknown cases. return false; }, /** * Returns the element that should be used as the target for the drop event. * * @since 4.5 * @param {CKEDITOR.editor} editor The editor instance. * @returns {CKEDITOR.dom.domObject} the element that should be used as the target for the drop event. */ getDropTarget: function( editor ) { var editable = editor.editable(); // #11123 Firefox needs to listen on document, because otherwise event won't be fired. // #11086 IE8 cannot listen on document. if ( ( CKEDITOR.env.ie && CKEDITOR.env.version < 9 ) || editable.isInline() ) { return editable; } else { return editor.document; } }, /** * IE 8 & 9 split text node on drop so the first node contains the * text before the drop position and the second contains the rest. If you * drag the content from the same node you will be not be able to get * it (the range becomes invalid), so you need to join them back. * * Note that the first node in IE 8 & 9 is the original node object * but with shortened content. * * Before: * --- Text Node A ---------------------------------- * /\ * Drag position * * After (IE 8 & 9): * --- Text Node A ----- --- Text Node B ----------- * /\ /\ * Drop position Drag position * (invalid) * * After (other browsers): * --- Text Node A ---------------------------------- * /\ /\ * Drop position Drag position * * **Note:** This function is in the public scope for tests usage only. * * @since 4.5 * @private * @param {CKEDITOR.dom.range} dragRange The drag range. * @param {CKEDITOR.dom.range} dropRange The drop range. * @param {Number} preDragStartContainerChildCount The number of children of the drag range start container before the drop. * @param {Number} preDragEndContainerChildCount The number of children of the drag range end container before the drop. */ fixSplitNodesAfterDrop: function( dragRange, dropRange, preDragStartContainerChildCount, preDragEndContainerChildCount ) { var dropContainer = dropRange.startContainer; if ( typeof preDragEndContainerChildCount != 'number' || typeof preDragStartContainerChildCount != 'number' ) { return; } // We are only concerned about ranges anchored in elements. if ( dropContainer.type != CKEDITOR.NODE_ELEMENT ) { return; } if ( handleContainer( dragRange.startContainer, dropContainer, preDragStartContainerChildCount ) ) { return; } if ( handleContainer( dragRange.endContainer, dropContainer, preDragEndContainerChildCount ) ) { return; } function handleContainer( dragContainer, dropContainer, preChildCount ) { var dragElement = dragContainer; if ( dragElement.type == CKEDITOR.NODE_TEXT ) { dragElement = dragContainer.getParent(); } if ( dragElement.equals( dropContainer ) && preChildCount != dropContainer.getChildCount() ) { applyFix( dropRange ); return true; } } function applyFix( dropRange ) { var nodeBefore = dropRange.startContainer.getChild( dropRange.startOffset - 1 ), nodeAfter = dropRange.startContainer.getChild( dropRange.startOffset ); if ( nodeBefore && nodeBefore.type == CKEDITOR.NODE_TEXT && nodeAfter && nodeAfter.type == CKEDITOR.NODE_TEXT ) { var offset = nodeBefore.getLength(); nodeBefore.setText( nodeBefore.getText() + nodeAfter.getText() ); nodeAfter.remove(); dropRange.setStart( nodeBefore, offset ); dropRange.collapse( true ); } } }, /** * Checks whether turning the drag range into bookmarks will invalidate the drop range. * This usually happens when the drop range shares the container with the drag range and is * located after the drag range, but there are countless edge cases. * * This function is stricly related to {@link #internalDrop} which toggles * order in which it creates bookmarks for both ranges based on a value returned * by this method. In some cases this method returns a value which is not necessarily * true in terms of what it was meant to check, but it is convenient, because * we know how it is interpreted in {@link #internalDrop}, so the correct * behavior of the entire algorithm is assured. * * **Note:** This function is in the public scope for tests usage only. * * @since 4.5 * @private * @param {CKEDITOR.dom.range} dragRange The first range to compare. * @param {CKEDITOR.dom.range} dropRange The second range to compare. * @returns {Boolean} `true` if the first range is before the second range. */ isDropRangeAffectedByDragRange: function( dragRange, dropRange ) { var dropContainer = dropRange.startContainer, dropOffset = dropRange.endOffset; // Both containers are the same and drop offset is at the same position or later. // " A L] A " " M A " // ^ ^ if ( dragRange.endContainer.equals( dropContainer ) && dragRange.endOffset <= dropOffset ) { return true; } // Bookmark for drag start container will mess up with offsets. // " O [L A " " M A " // ^ ^ if ( dragRange.startContainer.getParent().equals( dropContainer ) && dragRange.startContainer.getIndex() < dropOffset ) { return true; } // Bookmark for drag end container will mess up with offsets. // " O] L A " " M A " // ^ ^ if ( dragRange.endContainer.getParent().equals( dropContainer ) && dragRange.endContainer.getIndex() < dropOffset ) { return true; } return false; }, /** * Internal drag and drop (drag and drop in the same editor instance). * * **Note:** This function is in the public scope for tests usage only. * * @since 4.5 * @private * @param {CKEDITOR.dom.range} dragRange The first range to compare. * @param {CKEDITOR.dom.range} dropRange The second range to compare. * @param {CKEDITOR.plugins.clipboard.dataTransfer} dataTransfer * @param {CKEDITOR.editor} editor */ internalDrop: function( dragRange, dropRange, dataTransfer, editor ) { var clipboard = CKEDITOR.plugins.clipboard, editable = editor.editable(), dragBookmark, dropBookmark, isDropRangeAffected; // Save and lock snapshot so there will be only // one snapshot for both remove and insert content. editor.fire( 'saveSnapshot' ); editor.fire( 'lockSnapshot', { dontUpdate: 1 } ); if ( CKEDITOR.env.ie && CKEDITOR.env.version < 10 ) { this.fixSplitNodesAfterDrop( dragRange, dropRange, clipboard.dragStartContainerChildCount, clipboard.dragEndContainerChildCount ); } // Because we manipulate multiple ranges we need to do it carefully, // changing one range (event creating a bookmark) may make other invalid. // We need to change ranges into bookmarks so we can manipulate them easily in the future. // We can change the range which is later in the text before we change the preceding range. // We call isDropRangeAffectedByDragRange to test the order of ranges. isDropRangeAffected = this.isDropRangeAffectedByDragRange( dragRange, dropRange ); if ( !isDropRangeAffected ) { dragBookmark = dragRange.createBookmark( false ); } dropBookmark = dropRange.clone().createBookmark( false ); if ( isDropRangeAffected ) { dragBookmark = dragRange.createBookmark( false ); } // Check if drop range is inside range. // This is an edge case when we drop something on editable's margin/padding. // That space is not treated as a part of the range we drag, so it is possible to drop there. // When we drop, browser tries to find closest drop position and it finds it inside drag range. (#13453) var startNode = dragBookmark.startNode, endNode = dragBookmark.endNode, dropNode = dropBookmark.startNode, dropInsideDragRange = // Must check endNode because dragRange could be collapsed in some edge cases (simulated DnD). endNode && startNode.getPosition( dropNode ) == CKEDITOR.POSITION_PRECEDING && endNode.getPosition( dropNode ) == CKEDITOR.POSITION_FOLLOWING; if ( dropInsideDragRange ) { // When we normally drag and drop, the selection is changed to dropRange, // so here we simulate the same behavior. editor.getSelection().selectRanges( [ dropRange ] ); // Remove bookmark spans. startNode.remove(); endNode.remove(); dropNode.remove(); } else { // Drop range is outside drag range. // No we can safely delete content for the drag range... dragRange = editor.createRange(); dragRange.moveToBookmark( dragBookmark ); editable.extractHtmlFromRange( dragRange, 1 ); // ...and paste content into the drop position. dropRange = editor.createRange(); dropRange.moveToBookmark( dropBookmark ); // We do not select drop range, because of may be in the place we can not set the selection // (e.g. between blocks, in case of block widget D&D). We put range to the paste event instead. firePasteEvents( editor, { dataTransfer: dataTransfer, method: 'drop', range: dropRange }, 1 ); } editor.fire( 'unlockSnapshot' ); }, /** * Gets the range from the `drop` event. * * @since 4.5 * @param {Object} domEvent A native DOM drop event object. * @param {CKEDITOR.editor} editor The source editor instance. * @returns {CKEDITOR.dom.range} range at drop position. */ getRangeAtDropPosition: function( dropEvt, editor ) { var $evt = dropEvt.data.$, x = $evt.clientX, y = $evt.clientY, $range, defaultRange = editor.getSelection( true ).getRanges()[ 0 ], range = editor.createRange(); // Make testing possible. if ( dropEvt.data.testRange ) return dropEvt.data.testRange; // Webkits. if ( document.caretRangeFromPoint ) { $range = editor.document.$.caretRangeFromPoint( x, y ); range.setStart( CKEDITOR.dom.node( $range.startContainer ), $range.startOffset ); range.collapse( true ); } // FF. else if ( $evt.rangeParent ) { range.setStart( CKEDITOR.dom.node( $evt.rangeParent ), $evt.rangeOffset ); range.collapse( true ); } // IEs 9+. // We check if editable is focused to make sure that it's an internal DnD. External DnD must use the second // mechanism because of http://dev.ckeditor.com/ticket/13472#comment:6. else if ( CKEDITOR.env.ie && CKEDITOR.env.version > 8 && defaultRange && editor.editable().hasFocus ) { // On IE 9+ range by default is where we expected it. // defaultRange may be undefined if dragover was canceled (file drop). return defaultRange; } // IE 8 and all IEs if !defaultRange or external DnD. else if ( document.body.createTextRange ) { // To use this method we need a focus (which may be somewhere else in case of external drop). editor.focus(); $range = editor.document.getBody().$.createTextRange(); try { var sucess = false; // If user drop between text line IEs moveToPoint throws exception: // // Lorem ipsum pulvinar purus et euismod // // dolor sit amet,| consectetur adipiscing // * // vestibulum tincidunt augue eget tempus. // // * - drop position // | - expected cursor position // // So we try to call moveToPoint with +-1px up to +-20px above or // below original drop position to find nearest good drop position. for ( var i = 0; i < 20 && !sucess; i++ ) { if ( !sucess ) { try { $range.moveToPoint( x, y - i ); sucess = true; } catch ( err ) { } } if ( !sucess ) { try { $range.moveToPoint( x, y + i ); sucess = true; } catch ( err ) { } } } if ( sucess ) { var id = 'cke-temp-' + ( new Date() ).getTime(); $range.pasteHTML( '\u200b' ); var span = editor.document.getById( id ); range.moveToPosition( span, CKEDITOR.POSITION_BEFORE_START ); span.remove(); } else { // If the fist method does not succeed we might be next to // the short element (like header): // // Lorem ipsum pulvinar purus et euismod. // // // SOME HEADER| * // // // vestibulum tincidunt augue eget tempus. // // * - drop position // | - expected cursor position // // In such situation elementFromPoint returns proper element. Using getClientRect // it is possible to check if the cursor should be at the beginning or at the end // of paragraph. var $element = editor.document.$.elementFromPoint( x, y ), element = new CKEDITOR.dom.element( $element ), rect; if ( !element.equals( editor.editable() ) && element.getName() != 'html' ) { rect = element.getClientRect(); if ( x < rect.left ) { range.setStartAt( element, CKEDITOR.POSITION_AFTER_START ); range.collapse( true ); } else { range.setStartAt( element, CKEDITOR.POSITION_BEFORE_END ); range.collapse( true ); } } // If drop happens on no element elementFromPoint returns html or body. // // * |Lorem ipsum pulvinar purus et euismod. // // vestibulum tincidunt augue eget tempus. // // * - drop position // | - expected cursor position // // In such case we can try to use default selection. If startContainer is not // 'editable' element it is probably proper selection. else if ( defaultRange && defaultRange.startContainer && !defaultRange.startContainer.equals( editor.editable() ) ) { return defaultRange; // Otherwise we can not find any drop position and we have to return null // and cancel drop event. } else { return null; } } } catch ( err ) { return null; } } else { return null; } return range; }, /** * This function tries to link the `evt.data.dataTransfer` property of the {@link CKEDITOR.editor#dragstart}, * {@link CKEDITOR.editor#dragend} and {@link CKEDITOR.editor#drop} events to a single * {@link CKEDITOR.plugins.clipboard.dataTransfer} object. * * This method is automatically used by the core of the drag and drop functionality and * usually does not have to be called manually when using the drag and drop events. * * This method behaves differently depending on whether the drag and drop events were fired * artificially (to represent a non-native drag and drop) or whether they were caused by the native drag and drop. * * If the native event is not available, then it will create a new {@link CKEDITOR.plugins.clipboard.dataTransfer} * instance (if it does not exist already) and will link it to this and all following event objects until * the {@link #resetDragDataTransfer} method is called. It means that all three drag and drop events must be fired * in order to ensure that the data transfer is bound correctly. * * If the native event is available, then the {@link CKEDITOR.plugins.clipboard.dataTransfer} is identified * by its ID and a new instance is assigned to the `evt.data.dataTransfer` only if the ID changed or * the {@link #resetDragDataTransfer} method was called. * * @since 4.5 * @param {CKEDITOR.dom.event} [evt] A drop event object. * @param {CKEDITOR.editor} [sourceEditor] The source editor instance. */ initDragDataTransfer: function( evt, sourceEditor ) { // Create a new dataTransfer object based on the drop event. // If this event was used on dragstart to create dataTransfer // both dataTransfer objects will have the same id. var nativeDataTransfer = evt.data.$ ? evt.data.$.dataTransfer : null, dataTransfer = new this.dataTransfer( nativeDataTransfer, sourceEditor ); if ( !nativeDataTransfer ) { // No native event. if ( this.dragData ) { dataTransfer = this.dragData; } else { this.dragData = dataTransfer; } } else { // Native event. If there is the same id we will replace dataTransfer with the one // created on drag, because it contains drag editor, drag content and so on. // Otherwise (in case of drag from external source) we save new object to // the global clipboard.dragData. if ( this.dragData && dataTransfer.id == this.dragData.id ) { dataTransfer = this.dragData; } else { this.dragData = dataTransfer; } } evt.data.dataTransfer = dataTransfer; }, /** * Removes the global {@link #dragData} so the next call to {@link #initDragDataTransfer} * always creates a new instance of {@link CKEDITOR.plugins.clipboard.dataTransfer}. * * @since 4.5 */ resetDragDataTransfer: function() { this.dragData = null; }, /** * Global object storing the data transfer of the current drag and drop operation. * Do not use it directly, use {@link #initDragDataTransfer} and {@link #resetDragDataTransfer}. * * Note: This object is global (meaning that it is not related to a single editor instance) * in order to handle drag and drop from one editor into another. * * @since 4.5 * @private * @property {CKEDITOR.plugins.clipboard.dataTransfer} dragData */ /** * Range object to save the drag range and remove its content after the drop. * * @since 4.5 * @private * @property {CKEDITOR.dom.range} dragRange */ /** * Initializes and links data transfer objects based on the paste event. If the data * transfer object was already initialized on this event, the function will * return that object. In IE it is not possible to link copy/cut and paste events * so the method always returns a new object. The same happens if there is no paste event * passed to the method. * * @since 4.5 * @param {CKEDITOR.dom.event} [evt] A paste event object. * @param {CKEDITOR.editor} [sourceEditor] The source editor instance. * @returns {CKEDITOR.plugins.clipboard.dataTransfer} The data transfer object. */ initPasteDataTransfer: function( evt, sourceEditor ) { if ( !this.isCustomCopyCutSupported ) { return new this.dataTransfer( null, sourceEditor ); } else if ( evt && evt.data && evt.data.$ ) { var dataTransfer = new this.dataTransfer( evt.data.$.clipboardData, sourceEditor ); if ( this.copyCutData && dataTransfer.id == this.copyCutData.id ) { dataTransfer = this.copyCutData; dataTransfer.$ = evt.data.$.clipboardData; } else { this.copyCutData = dataTransfer; } return dataTransfer; } else { return new this.dataTransfer( null, sourceEditor ); } }, /** * Prevents dropping on the specified element. * * @since 4.5 * @param {CKEDITOR.dom.element} element The element on which dropping should be disabled. */ preventDefaultDropOnElement: function( element ) { element && element.on( 'dragover', preventDefaultSetDropEffectToNone ); } }; // Data type used to link drag and drop events. // // In IE URL data type is buggie and there is no way to mark drag & drop without // modifying text data (which would be displayed if user drop content to the textarea) // so we just read dragged text. // // In Chrome and Firefox we can use custom data types. var clipboardIdDataType = CKEDITOR.plugins.clipboard.isCustomDataTypesSupported ? 'cke/id' : 'Text'; /** * Facade for the native `dataTransfer`/`clipboadData` object to hide all differences * between browsers. * * @since 4.5 * @class CKEDITOR.plugins.clipboard.dataTransfer * @constructor Creates a class instance. * @param {Object} [nativeDataTransfer] A native data transfer object. * @param {CKEDITOR.editor} [editor] The source editor instance. If the editor is defined, dataValue will * be created based on the editor content and the type will be 'html'. */ CKEDITOR.plugins.clipboard.dataTransfer = function( nativeDataTransfer, editor ) { if ( nativeDataTransfer ) { this.$ = nativeDataTransfer; } this._ = { metaRegExp: /^/, bodyRegExp: /([\s\S]*)<\/body>/, fragmentRegExp: //g, data: {}, files: [], normalizeType: function( type ) { type = type.toLowerCase(); if ( type == 'text' || type == 'text/plain' ) { return 'Text'; // IE support only Text and URL; } else if ( type == 'url' ) { return 'URL'; // IE support only Text and URL; } else { return type; } } }; // Check if ID is already created. this.id = this.getData( clipboardIdDataType ); // If there is no ID we need to create it. Different browsers needs different ID. if ( !this.id ) { if ( clipboardIdDataType == 'Text' ) { // For IE10+ only Text data type is supported and we have to compare dragged // and dropped text. If the ID is not set it means that empty string was dragged // (ex. image with no alt). We change null to empty string. this.id = ''; } else { // String for custom data type. this.id = 'cke-' + CKEDITOR.tools.getUniqueId(); } } // In IE10+ we can not use any data type besides text, so we do not call setData. if ( clipboardIdDataType != 'Text' ) { // Try to set ID so it will be passed from the drag to the drop event. // On some browsers with some event it is not possible to setData so we // need to catch exceptions. try { this.$.setData( clipboardIdDataType, this.id ); } catch ( err ) {} } if ( editor ) { this.sourceEditor = editor; this.setData( 'text/html', editor.getSelectedHtml( 1 ) ); // Without setData( 'text', ... ) on dragstart there is no drop event in Safari. // Also 'text' data is empty as drop to the textarea does not work if we do not put there text. if ( clipboardIdDataType != 'Text' && !this.getData( 'text/plain' ) ) { this.setData( 'text/plain', editor.getSelection().getSelectedText() ); } } /** * Data transfer ID used to bind all dataTransfer * objects based on the same event (e.g. in drag and drop events). * * @readonly * @property {String} id */ /** * A native DOM event object. * * @readonly * @property {Object} $ */ /** * Source editor — the editor where the drag starts. * Might be undefined if the drag starts outside the editor (e.g. when dropping files to the editor). * * @readonly * @property {CKEDITOR.editor} sourceEditor */ /** * Private properties and methods. * * @private * @property {Object} _ */ }; /** * Data transfer operation (drag and drop or copy and paste) started and ended in the same * editor instance. * * @since 4.5 * @readonly * @property {Number} [=1] * @member CKEDITOR */ CKEDITOR.DATA_TRANSFER_INTERNAL = 1; /** * Data transfer operation (drag and drop or copy and paste) started in one editor * instance and ended in another. * * @since 4.5 * @readonly * @property {Number} [=2] * @member CKEDITOR */ CKEDITOR.DATA_TRANSFER_CROSS_EDITORS = 2; /** * Data transfer operation (drag and drop or copy and paste) started outside of the editor. * The source of the data may be a textarea, HTML, another application, etc. * * @since 4.5 * @readonly * @property {Number} [=3] * @member CKEDITOR */ CKEDITOR.DATA_TRANSFER_EXTERNAL = 3; CKEDITOR.plugins.clipboard.dataTransfer.prototype = { /** * Facade for the native `getData` method. * * @param {String} type The type of data to retrieve. * @returns {String} type Stored data for the given type or an empty string if the data for that type does not exist. */ getData: function( type ) { function isEmpty( data ) { return data === undefined || data === null || data === ''; } type = this._.normalizeType( type ); var data = this._.data[ type ], result; if ( isEmpty( data ) ) { try { data = this.$.getData( type ); } catch ( e ) {} } if ( isEmpty( data ) ) { data = ''; } // Some browsers add at the begging of the HTML data // or surround it with ...(some content) and (some content) // This code removes meta tags and returns only the contents of the element if found. Note that // some significant content may be placed outside Start/EndFragment comments so it's kept. // // See #13583 for more details. if ( type == 'text/html' ) { data = data.replace( this._.metaRegExp, '' ); // Keep only contents of the element result = this._.bodyRegExp.exec( data ); if ( result && result.length ) { data = result[ 1 ]; // Remove also comments. data = data.replace( this._.fragmentRegExp, '' ); } } // Firefox on Linux put files paths as a text/plain data if there are files // in the dataTransfer object. We need to hide it, because files should be // handled on paste only if dataValue is empty. else if ( type == 'Text' && CKEDITOR.env.gecko && this.getFilesCount() && data.substring( 0, 7 ) == 'file://' ) { data = ''; } return data; }, /** * Facade for the native `setData` method. * * @param {String} type The type of data to retrieve. * @param {String} value The data to add. */ setData: function( type, value ) { type = this._.normalizeType( type ); this._.data[ type ] = value; // There is "Unexpected call to method or property access." error if you try // to set data of unsupported type on IE. if ( !CKEDITOR.plugins.clipboard.isCustomDataTypesSupported && type != 'URL' && type != 'Text' ) { return; } // If we use the text type to bind the ID, then if someone tries to set the text, we must also // update ID accordingly. #13468. if ( clipboardIdDataType == 'Text' && type == 'Text' ) { this.id = value; } try { this.$.setData( type, value ); } catch ( e ) {} }, /** * Gets the data transfer type. * * @param {CKEDITOR.editor} targetEditor The drop/paste target editor instance. * @returns {Number} Possible values: {@link CKEDITOR#DATA_TRANSFER_INTERNAL}, * {@link CKEDITOR#DATA_TRANSFER_CROSS_EDITORS}, {@link CKEDITOR#DATA_TRANSFER_EXTERNAL}. */ getTransferType: function( targetEditor ) { if ( !this.sourceEditor ) { return CKEDITOR.DATA_TRANSFER_EXTERNAL; } else if ( this.sourceEditor == targetEditor ) { return CKEDITOR.DATA_TRANSFER_INTERNAL; } else { return CKEDITOR.DATA_TRANSFER_CROSS_EDITORS; } }, /** * Copies the data from the native data transfer to a private cache. * This function is needed because the data from the native data transfer * is available only synchronously to the event listener. It is not possible * to get the data asynchronously, after a timeout, and the {@link CKEDITOR.editor#paste} * event is fired asynchronously — hence the need for caching the data. */ cacheData: function() { if ( !this.$ ) { return; } var that = this, i, file; function getAndSetData( type ) { type = that._.normalizeType( type ); var data = that.getData( type ); if ( data ) { that._.data[ type ] = data; } } // Copy data. if ( CKEDITOR.plugins.clipboard.isCustomDataTypesSupported ) { if ( this.$.types ) { for ( i = 0; i < this.$.types.length; i++ ) { getAndSetData( this.$.types[ i ] ); } } } else { getAndSetData( 'Text' ); getAndSetData( 'URL' ); } // Copy files references. file = this._getImageFromClipboard(); if ( ( this.$ && this.$.files ) || file ) { this._.files = []; for ( i = 0; i < this.$.files.length; i++ ) { this._.files.push( this.$.files[ i ] ); } // Don't include $.items if both $.files and $.items contains files, because, // according to spec and browsers behavior, they contain the same files. if ( this._.files.length === 0 && file ) { this._.files.push( file ); } } }, /** * Gets the number of files in the dataTransfer object. * * @returns {Number} The number of files. */ getFilesCount: function() { if ( this._.files.length ) { return this._.files.length; } if ( this.$ && this.$.files && this.$.files.length ) { return this.$.files.length; } return this._getImageFromClipboard() ? 1 : 0; }, /** * Gets the file at the index given. * * @param {Number} i Index. * @returns {File} File instance. */ getFile: function( i ) { if ( this._.files.length ) { return this._.files[ i ]; } if ( this.$ && this.$.files && this.$.files.length ) { return this.$.files[ i ]; } // File or null if the file was not found. return i === 0 ? this._getImageFromClipboard() : undefined; }, /** * Checks if the data transfer contains any data. * * @returns {Boolean} `true` if the object contains no data. */ isEmpty: function() { var typesToCheck = {}, type; // If dataTransfer contains files it is not empty. if ( this.getFilesCount() ) { return false; } // Add custom types. for ( type in this._.data ) { typesToCheck[ type ] = 1; } // Add native types. if ( this.$ ) { if ( CKEDITOR.plugins.clipboard.isCustomDataTypesSupported ) { if ( this.$.types ) { for ( var i = 0; i < this.$.types.length; i++ ) { typesToCheck[ this.$.types[ i ] ] = 1; } } } else { typesToCheck.Text = 1; typesToCheck.URL = 1; } } // Remove ID. if ( clipboardIdDataType != 'Text' ) { typesToCheck[ clipboardIdDataType ] = 0; } for ( type in typesToCheck ) { if ( typesToCheck[ type ] && this.getData( type ) !== '' ) { return false; } } return true; }, /** * When the content of the clipboard is pasted in Chrome, the clipboard data object has an empty `files` property, * but it is possible to get the file as `items[0].getAsFile();` (#12961). * * @private * @returns {File} File instance or `null` if not found. */ _getImageFromClipboard: function() { var file; if ( this.$ && this.$.items && this.$.items[ 0 ] ) { try { file = this.$.items[ 0 ].getAsFile(); // Duck typing if ( file && file.type ) { return file; } } catch ( err ) { // noop } } return undefined; } }; } )(); /** * The default content type that is used when pasted data cannot be clearly recognized as HTML or text. * * For example: `'foo'` may come from a plain text editor or a website. It is not possible to recognize the content * type in this case, so the default type will be used. At the same time it is clear that `'example text'` is * HTML and its origin is a web page, email or another rich text editor. * * **Note:** If content type is text, then styles of the paste context are preserved. * * CKEDITOR.config.clipboard_defaultContentType = 'text'; * * See also the {@link CKEDITOR.editor#paste} event and read more about the integration with clipboard * in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard). * * @since 4.0 * @cfg {'html'/'text'} [clipboard_defaultContentType='html'] * @member CKEDITOR.config */ /** * Fired after the user initiated a paste action, but before the data is inserted into the editor. * The listeners to this event are able to process the content before its insertion into the document. * * Read more about the integration with clipboard in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard). * * See also: * * * the {@link CKEDITOR.config#pasteFilter} option, * * the {@link CKEDITOR.editor#drop} event, * * the {@link CKEDITOR.plugins.clipboard.dataTransfer} class. * * @since 3.1 * @event paste * @member CKEDITOR.editor * @param {CKEDITOR.editor} editor This editor instance. * @param data * @param {String} data.type The type of data in `data.dataValue`. Usually `'html'` or `'text'`, but for listeners * with a priority smaller than `6` it may also be `'auto'` which means that the content type has not been recognised yet * (this will be done by the content type sniffer that listens with priority `6`). * @param {String} data.dataValue HTML to be pasted. * @param {String} data.method Indicates the data transfer method. It could be drag and drop or copy and paste. * Possible values: `'drop'`, `'paste'`. Introduced in CKEditor 4.5. * @param {CKEDITOR.plugins.clipboard.dataTransfer} data.dataTransfer Facade for the native dataTransfer object * which provides access to various data types and files, and passes some data between linked events * (like drag and drop). Introduced in CKEditor 4.5. * @param {Boolean} [data.dontFilter=false] Whether the {@link CKEDITOR.editor#pasteFilter paste filter} should not * be applied to data. This option has no effect when `data.type` equals `'text'` which means that for instance * {@link CKEDITOR.config#forcePasteAsPlainText} has a higher priority. Introduced in CKEditor 4.5. */ /** * Fired before the {@link #paste} event. Allows to preset data type. * * **Note:** This event is deprecated. Add a `0` priority listener for the * {@link #paste} event instead. * * @deprecated * @event beforePaste * @member CKEDITOR.editor */ /** * Fired after the {@link #paste} event if content was modified. Note that if the paste * event does not insert any data, the `afterPaste` event will not be fired. * * @event afterPaste * @member CKEDITOR.editor */ /** * Internal event to open the Paste dialog window. * * @private * @event pasteDialog * @member CKEDITOR.editor * @param {CKEDITOR.editor} editor This editor instance. * @param {Function} [data] Callback that will be passed to {@link CKEDITOR.editor#openDialog}. */ /** * Facade for the native `drop` event. Fired when the native `drop` event occurs. * * **Note:** To manipulate dropped data, use the {@link CKEDITOR.editor#paste} event. * Use the `drop` event only to control drag and drop operations (e.g. to prevent the ability to drop some content). * * Read more about integration with drag and drop in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard). * * See also: * * * The {@link CKEDITOR.editor#paste} event, * * The {@link CKEDITOR.editor#dragstart} and {@link CKEDITOR.editor#dragend} events, * * The {@link CKEDITOR.plugins.clipboard.dataTransfer} class. * * @since 4.5 * @event drop * @member CKEDITOR.editor * @param {CKEDITOR.editor} editor This editor instance. * @param data * @param {Object} data.$ Native drop event. * @param {CKEDITOR.dom.node} data.target Drop target. * @param {CKEDITOR.plugins.clipboard.dataTransfer} data.dataTransfer DataTransfer facade. * @param {CKEDITOR.dom.range} data.dragRange Drag range, lets you manipulate the drag range. * Note that dragged HTML is saved as `text/html` data on `dragstart` so if you change the drag range * on drop, dropped HTML will not change. You need to change it manually using * {@link CKEDITOR.plugins.clipboard.dataTransfer#setData dataTransfer.setData}. * @param {CKEDITOR.dom.range} data.dropRange Drop range, lets you manipulate the drop range. */ /** * Facade for the native `dragstart` event. Fired when the native `dragstart` event occurs. * * This event can be canceled in order to block the drag start operation. It can also be fired to mimic the start of the drag and drop * operation. For instance, the `widget` plugin uses this option to integrate its custom block widget drag and drop with * the entire system. * * Read more about integration with drag and drop in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard). * * See also: * * * The {@link CKEDITOR.editor#paste} event, * * The {@link CKEDITOR.editor#drop} and {@link CKEDITOR.editor#dragend} events, * * The {@link CKEDITOR.plugins.clipboard.dataTransfer} class. * * @since 4.5 * @event dragstart * @member CKEDITOR.editor * @param {CKEDITOR.editor} editor This editor instance. * @param data * @param {Object} data.$ Native dragstart event. * @param {CKEDITOR.dom.node} data.target Drag target. * @param {CKEDITOR.plugins.clipboard.dataTransfer} data.dataTransfer DataTransfer facade. */ /** * Facade for the native `dragend` event. Fired when the native `dragend` event occurs. * * Read more about integration with drag and drop in the [Clipboard Deep Dive guide](#!/guide/dev_clipboard). * * See also: * * * The {@link CKEDITOR.editor#paste} event, * * The {@link CKEDITOR.editor#drop} and {@link CKEDITOR.editor#dragend} events, * * The {@link CKEDITOR.plugins.clipboard.dataTransfer} class. * * @since 4.5 * @event dragend * @member CKEDITOR.editor * @param {CKEDITOR.editor} editor This editor instance. * @param data * @param {Object} data.$ Native dragend event. * @param {CKEDITOR.dom.node} data.target Drag target. * @param {CKEDITOR.plugins.clipboard.dataTransfer} data.dataTransfer DataTransfer facade. */ /** * Defines a filter which is applied to external data pasted or dropped into the editor. Possible values are: * * * `'plain-text'` – Content will be pasted as a plain text. * * `'semantic-content'` – Known tags (except `div`, `span`) with all attributes (except * `style` and `class`) will be kept. * * `'h1 h2 p div'` – Custom rules compatible with {@link CKEDITOR.filter}. * * `null` – Content will not be filtered by the paste filter (but it still may be filtered * by [Advanvced Content Filter](#!/guide/dev_advanced_content_filter)). This value can be used to * disable the paste filter in Chrome and Safari, where this option defaults to `'semantic-content'`. * * Example: * * config.pasteFilter = 'plain-text'; * * Custom setting: * * config.pasteFilter = 'h1 h2 p ul ol li; img[!src, alt]; a[!href]'; * * Based on this configuration option, a proper {@link CKEDITOR.filter} instance will be defined and assigned to the editor * as a {@link CKEDITOR.editor#pasteFilter}. You can tweak the paste filter settings on the fly on this object * as well as delete or replace it. * * var editor = CKEDITOR.replace( 'editor', { * pasteFilter: 'semantic-content' * } ); * * editor.on( 'instanceReady', function() { * // The result of this will be that all semantic content will be preserved * // except tables. * editor.pasteFilter.disallow( 'table' ); * } ); * * Note that the paste filter is applied only to **external** data. There are three data sources: * * * copied and pasted in the same editor (internal), * * copied from one editor and pasted into another (cross-editor), * * coming from all other sources like websites, MS Word, etc. (external). * * If {@link CKEDITOR.config#allowedContent Advanced Content Filter} is not disabled, then * it will also be applied to pasted and dropped data. The paste filter job is to "normalize" * external data which often needs to be handled differently than content produced by the editor. * * This setting defaults to `'semantic-content'` in Chrome, Opera and Safari (all Blink and Webkit based browsers) * due to messy HTML which these browsers keep in the clipboard. In other browsers it defaults to `null`. * * @since 4.5 * @cfg {String} [pasteFilter='semantic-content' in Chrome and Safari and `null` in other browsers] * @member CKEDITOR.config */ /** * {@link CKEDITOR.filter Content filter} which is used when external data is pasted or dropped into the editor * or a forced paste as plain text occurs. * * This object might be used on the fly to define rules for pasted external content. * This object is available and used if the {@link CKEDITOR.plugins.clipboard clipboard} plugin is enabled and * {@link CKEDITOR.config#pasteFilter} or {@link CKEDITOR.config#forcePasteAsPlainText} was defined. * * To enable the filter: * * var editor = CKEDITOR.replace( 'editor', { * pasteFilter: 'plain-text' * } ); * * You can also modify the filter on the fly later on: * * editor.pasteFilter = new CKEDITOR.filter( 'p h1 h2; a[!href]' ); * * Note that the paste filter is only applied to **external** data. There are three data sources: * * * copied and pasted in the same editor (internal), * * copied from one editor and pasted into another (cross-editor), * * coming from all other sources like websites, MS Word, etc. (external). * * If {@link CKEDITOR.config#allowedContent Advanced Content Filter} is not disabled, then * it will also be applied to pasted and dropped data. The paste filter job is to "normalize" * external data which often needs to be handled differently than content produced by the editor. * * @since 4.5 * @readonly * @property {CKEDITOR.filter} [pasteFilter] * @member CKEDITOR.editor */ rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/dev/0000755000201500020150000000000014517055557023002 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/dev/console.js0000644000201500020150000000206514517055557025005 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ /* global CKCONSOLE */ 'use strict'; ( function() { var pasteType, pasteValue; CKCONSOLE.add( 'paste', { panels: [ { type: 'box', content: '

    ' + '
  • type:
  • ' + '
  • value:
  • ' + '
', refresh: function() { return { header: 'Paste', type: pasteType, value: pasteValue }; }, refreshOn: function( editor, refresh ) { editor.on( 'paste', function( evt ) { pasteType = evt.data.type; pasteValue = CKEDITOR.tools.htmlEncode( evt.data.dataValue ); refresh(); } ); } }, { type: 'log', on: function( editor, log, logFn ) { editor.on( 'paste', function( evt ) { logFn( 'paste; type:' + evt.data.type )(); } ); } } ] } ); } )(); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/dev/dnd.html0000644000201500020150000003342614517055557024445 0ustar puckpuck Manual test for #11460

Manual test for #11460

Description (hide/show)

Test internal D&D in the editor, dropping content from an external source (helpers, MS Word) and D&D between editors. Keep in mind that internal D&D is the most complex operation because editor have to handle two ranges at the same time.

Expected behavior:

  • proper drop position,
  • in the internal and cross editor D&D: dragged content should be removed,
  • dropped content should be (more less) the same as dragged content,
  • paste event should be fired,
  • undo should work properly (one undo operation for one D&D),
  • no crashes, nor errors,

Drag scenarios:

  • drag simple text,
  • drag table cell/cells,
  • drag link,
  • drag helpers textarea content,
  • drag helpers html content,
  • drag content from MS Word.

Drop scenarios:

  • drop in the different paragraph (before and after),
  • drop in the same paragraph (before and after),
  • drop in the same text node (before and after),
  • drop between text lines,
  • drop on the whitespace next to the header,
  • drop on the whitespace on the left side from the quote,
  • drop into a cell.

Known issues (not part of this ticket):

  • because of #11636 dragged content is not correct in some cases (e.g. when you drag part of the link),
  • drag position needs clean up after D&D (e.g. remove empty paragraphs, fix table),
  • drop position needs clean up after D&D (e.g. add spaces before/after dropped content, apply parents styles, break paragraph when one paragraph is dropped at the end to the other paragraph),
  • in the external D&D: Chrome add plenty of addition tags.

Helpers (hide/show)

Lorem ipsum dolor sit amet, consectetur adipiscing elit. In commodo vulputate tempor. Sed <b>at elit</b> vel ligula mollis aliquet a ac odio.
Aenean cursus egestas ipsum.
				

Classic editor (hide/show)

Inline editor (hide/show)

Saturn V carrying Apollo 11 Apollo 11

Apollo 11 was the spaceflight that landed the first humans, Americans Neil Armstrong and Buzz Aldrin, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.

Armstrong spent about three and a half two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5 kg) of lunar material for return to Earth. A third member of the mission, Michael Collins, piloted the command spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.

Broadcasting and quotes

Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:

One small step for [a] man, one giant leap for mankind.

Apollo 11 effectively ended the Space Race and fulfilled a national goal proposed in 1961 by the late U.S. President John F. Kennedy in a speech before the United States Congress:

[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.

Technical details

Mission crew
Position Astronaut
Commander Neil A. Armstrong
Command Module Pilot Michael Collins
Lunar Module Pilot Edwin "Buzz" E. Aldrin, Jr.

Launched by a Saturn V rocket from Kennedy Space Center in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of NASA's Apollo program. The Apollo spacecraft had three parts:

  1. Command Module with a cabin for the three astronauts which was the only part which landed back on Earth
  2. Service Module which supported the Command Module with propulsion, electrical power, oxygen and water
  3. Lunar Module for landing on the Moon.

After being sent to the Moon by the Saturn V's upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the Sea of Tranquility. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the Pacific Ocean on July 24.


Source: Wikipedia.org

rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/dev/clipboard.html0000644000201500020150000001271514517055557025635 0ustar puckpuck Clipboard playground – CKEditor Sample

CKEditor Sample — clipboard plugin playground

Editor 6

Content content content.

Styled by .someClass.

rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/0000755000201500020150000000000014517055557023145 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/zh.js0000644000201500020150000000147414517055557024132 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'zh', { copy: '複製', copyError: '瀏覽器的安全性設定不允許編輯器自動執行複製動作。請使用鍵盤快捷鍵 (Ctrl/Cmd+C) 複製。', cut: '剪下', cutError: '瀏覽器的安全性設定不允許編輯器自動執行剪下動作。請使用鏐盤快捷鍵 (Ctrl/Cmd+X) 剪下。', paste: '貼上', pasteArea: '貼上區', pasteMsg: '請使用鍵盤快捷鍵 (Ctrl/Cmd+V) 貼到下方區域中並按下「確定」。', securityMsg: '因為瀏覽器的安全性設定,本編輯器無法直接存取您的剪貼簿資料,請您自行在本視窗進行貼上動作。', title: '貼上' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/nb.js0000644000201500020150000000157414517055557024111 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'nb', { copy: 'Kopier', copyError: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk tastatursnarveien (Ctrl/Cmd+C).', cut: 'Klipp ut', cutError: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk tastatursnarveien (Ctrl/Cmd+X).', paste: 'Lim inn', pasteArea: 'Innlimingsområde', pasteMsg: 'Vennligst lim inn i følgende boks med tastaturet (Ctrl/Cmd+V) og trykk OK.', securityMsg: 'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må derfor lime det inn på nytt i dette vinduet.', title: 'Lim inn' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/eo.js0000644000201500020150000000160714517055557024112 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'eo', { copy: 'Kopii', copyError: 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras kopiajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-C).', cut: 'Eltondi', cutError: 'La sekurecagordo de via TTT-legilo ne permesas, ke la redaktilo faras eltondajn operaciojn. Bonvolu uzi la klavaron por tio (Ctrl/Cmd-X).', paste: 'Interglui', pasteArea: 'Intergluoareo', pasteMsg: 'Bonvolu glui la tekston en la jenan areon per uzado de la klavaro (Ctrl/Cmd+V) kaj premu OK', securityMsg: 'Pro la sekurecagordo de via TTT-legilo, la redaktilo ne povas rekte atingi viajn datenojn en la poŝo. Bonvolu denove interglui la datenojn en tiun fenestron.', title: 'Interglui' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/es.js0000644000201500020150000000166614517055557024123 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'es', { copy: 'Copiar', 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).', cut: 'Cortar', cutError: 'La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de cortado.\r\nPor favor use el teclado (Ctrl/Cmd+X).', paste: 'Pegar', pasteArea: 'Zona de pegado', pasteMsg: 'Por favor pegue dentro del cuadro utilizando el teclado (Ctrl/Cmd+V);\r\nluego presione Aceptar.', securityMsg: 'Debido a la configuración de seguridad de su navegador, el editor no tiene acceso al portapapeles.\r\nEs necesario que lo pegue de nuevo en esta ventana.', title: 'Pegar' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/ro.js0000644000201500020150000000205114517055557024121 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'ro', { copy: 'Copiază', copyError: 'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de copiere. Vă rugăm folosiţi tastatura (Ctrl/Cmd+C).', cut: 'Taie', cutError: 'Setările de securitate ale navigatorului (browser) pe care îl folosiţi nu permit editorului să execute automat operaţiunea de tăiere. Vă rugăm folosiţi tastatura (Ctrl/Cmd+X).', paste: 'Adaugă', pasteArea: 'Suprafața de adăugare', pasteMsg: 'Vă rugăm adăugaţi în căsuţa următoare folosind tastatura (Ctrl/Cmd+V) şi apăsaţi OK', securityMsg: 'Din cauza setărilor de securitate ale programului dvs. cu care navigaţi pe internet (browser), editorul nu poate accesa direct datele din clipboard. Va trebui să adăugaţi din nou datele în această fereastră.', title: 'Adaugă' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/hr.js0000644000201500020150000000165014517055557024116 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'hr', { copy: 'Kopiraj', copyError: 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+C).', cut: 'Izreži', cutError: 'Sigurnosne postavke Vašeg pretraživača ne dozvoljavaju operacije automatskog izrezivanja. Molimo koristite kraticu na tipkovnici (Ctrl/Cmd+X).', paste: 'Zalijepi', pasteArea: 'Prostor za ljepljenje', pasteMsg: 'Molimo zaljepite unutar doljnjeg okvira koristeći tipkovnicu (Ctrl/Cmd+V) i kliknite OK.', securityMsg: 'Zbog sigurnosnih postavki Vašeg pretraživača, editor nema direktan pristup Vašem međuspremniku. Potrebno je ponovno zalijepiti tekst u ovaj prozor.', title: 'Zalijepi' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/it.js0000644000201500020150000000163414517055557024123 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'it', { copy: 'Copia', copyError: 'Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+C).', cut: 'Taglia', cutError: 'Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+X).', paste: 'Incolla', pasteArea: 'Incolla', pasteMsg: 'Incolla il testo all\'interno dell\'area sottostante usando la scorciatoia di tastiere (Ctrl/Cmd+V) e premi OK.', securityMsg: 'A causa delle impostazioni di sicurezza del browser,l\'editor non è in grado di accedere direttamente agli appunti. E\' pertanto necessario incollarli di nuovo in questa finestra.', title: 'Incolla' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/sk.js0000644000201500020150000000171714517055557024126 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'sk', { copy: 'Kopírovať', copyError: 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru automaticky spustiť operáciu kopírovania. Prosím, použite na to klávesnicu (Ctrl/Cmd+C).', cut: 'Vystrihnúť', cutError: 'Bezpečnostné nastavenia Vášho prehliadača nedovoľujú editoru automaticky spustiť operáciu vystrihnutia. Prosím, použite na to klávesnicu (Ctrl/Cmd+X).', paste: 'Vložiť', pasteArea: 'Miesto pre vloženie', pasteMsg: 'Prosím, vložte nasledovný rámček použitím klávesnice (Ctrl/Cmd+V) a stlačte OK.', securityMsg: 'Kvôli vašim bezpečnostným nastaveniam prehliadača editor nie je schopný pristupovať k vašej schránke na kopírovanie priamo. Vložte to preto do tohto okna.', title: 'Vložiť' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/pt.js0000644000201500020150000000164314517055557024132 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'pt', { copy: 'Copiar', 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).', cut: 'Cortar', cutError: 'A configuração de segurança do navegador não permite a execução automática de operações de cortar. Por favor use o teclado (Ctrl/Cmd+X).', paste: 'Colar', pasteArea: 'Colar área', pasteMsg: 'Por favor, cole dentro da seguinte caixa usando o teclado (Ctrl/Cmd+V) e prima OK.', securityMsg: 'Devido ás definições de segurança do teu browser, o editor não pode aceder ao clipboard diretamente. É necessário que voltes a colar as informações nesta janela.', title: 'Colar' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/si.js0000644000201500020150000000201614517055557024115 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'si', { copy: 'පිටපත් කරන්න', copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', // MISSING cut: 'කපාගන්න', cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', // MISSING paste: 'අලවන්න', pasteArea: 'අලවන ප්‍රදේශ', pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING title: 'අලවන්න' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/ko.js0000644000201500020150000000162614517055557024121 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'ko', { copy: '복사', copyError: '브라우저의 보안설정 때문에 복사할 수 없습니다. 키보드(Ctrl/Cmd+C)를 이용해서 복사하십시오.', cut: '잘라내기', cutError: '브라우저의 보안설정 때문에 잘라내기 기능을 실행할 수 없습니다. 키보드(Ctrl/Cmd+X)를 이용해서 잘라내기 하십시오', paste: '붙여넣기', pasteArea: '붙여넣기 범위', pasteMsg: '키보드(Ctrl/Cmd+V)를 이용해서 상자안에 붙여넣고 확인 를 누르세요.', securityMsg: '브라우저 보안 설정으로 인해, 클립보드에 직접 접근할 수 없습니다. 이 창에 다시 붙여넣기 하십시오.', title: '붙여넣기' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/mk.js0000644000201500020150000000174314517055557024117 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'mk', { copy: 'Copy', // MISSING copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', // MISSING cut: 'Cut', // MISSING cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', // MISSING paste: 'Paste', // MISSING pasteArea: 'Paste Area', // MISSING pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING title: 'Paste' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/cy.js0000644000201500020150000000170014517055557024114 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'cy', { copy: 'Copïo', copyError: '\'Dyw gosodiadau diogelwch eich porwr ddim yn caniatàu\'r golygydd i gynnal \'gweithredoedd copïo\' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+C).', cut: 'Torri', cutError: 'Nid yw gosodiadau diogelwch eich porwr yn caniatàu\'r golygydd i gynnal \'gweithredoedd torri\' yn awtomatig. Defnyddiwch y bysellfwrdd (Ctrl/Cmd+X).', paste: 'Gludo', pasteArea: 'Ardal Gludo', pasteMsg: 'Gludwch i mewn i\'r blwch canlynol gan ddefnyddio\'r bysellfwrdd (Ctrl/Cmd+V) a phwyso Iawn.', securityMsg: 'Oherwydd gosodiadau diogelwch eich porwr, \'dyw\'r porwr ddim yn gallu ennill mynediad i\'r data ar y clipfwrdd yn uniongyrchol. Mae angen i chi ei ludo eto i\'r ffenestr hon.', title: 'Gludo' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/uk.js0000644000201500020150000000277314517055557024133 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'uk', { copy: 'Копіювати', copyError: 'Налаштування безпеки Вашого браузера не дозволяють редактору автоматично виконувати операції копіювання. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+C).', cut: 'Вирізати', cutError: 'Налаштування безпеки Вашого браузера не дозволяють редактору автоматично виконувати операції вирізування. Будь ласка, використовуйте клавіатуру для цього (Ctrl/Cmd+X)', paste: 'Вставити', pasteArea: 'Область вставки', pasteMsg: 'Будь ласка, вставте інформацію з буфера обміну в цю область, користуючись комбінацією клавіш (Ctrl/Cmd+V), та натисніть OK.', securityMsg: 'Редактор не може отримати прямий доступ до буферу обміну у зв\'язку з налаштуваннями Вашого браузера. Вам потрібно вставити інформацію в це вікно.', title: 'Вставити' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/zh-cn.js0000644000201500020150000000154014517055557024522 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'zh-cn', { copy: '复制', copyError: '您的浏览器安全设置不允许编辑器自动执行复制操作,请使用键盘快捷键(Ctrl/Cmd+C)来完成。', cut: '剪切', cutError: '您的浏览器安全设置不允许编辑器自动执行剪切操作,请使用键盘快捷键(Ctrl/Cmd+X)来完成。', paste: '粘贴', pasteArea: '粘贴区域', pasteMsg: '请使用键盘快捷键(Ctrl/Cmd+V)把内容粘贴到下面的方框里,再按 确定', securityMsg: '因为您的浏览器的安全设置原因,本编辑器不能直接访问您的剪贴板内容,你需要在本窗口重新粘贴一次。', title: '粘贴' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/sv.js0000644000201500020150000000152014517055557024131 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'sv', { copy: 'Kopiera', copyError: 'Säkerhetsinställningar i Er webbläsare tillåter inte åtgärden kopiera. Använd (Ctrl/Cmd+C) istället.', cut: 'Klipp ut', cutError: 'Säkerhetsinställningar i Er webbläsare tillåter inte åtgärden klipp ut. Använd (Ctrl/Cmd+X) istället.', paste: 'Klistra in', pasteArea: 'Paste Area', pasteMsg: 'Var god och klistra in Er text i rutan nedan genom att använda (Ctrl/Cmd+V) klicka sen på OK.', securityMsg: 'På grund av din webbläsares säkerhetsinställningar kan verktyget inte få åtkomst till urklippsdatan. Var god och använd detta fönster istället.', title: 'Klistra in' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/lt.js0000644000201500020150000000172714517055557024131 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'lt', { copy: 'Kopijuoti', 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).', cut: 'Iškirpti', cutError: 'Jūsų naršyklės saugumo nustatymai neleidžia redaktoriui automatiškai įvykdyti iškirpimo operacijų. Tam prašome naudoti klaviatūrą (Ctrl/Cmd+X).', paste: 'Įdėti', pasteArea: 'Įkelti dalį', pasteMsg: 'Žemiau esančiame įvedimo lauke įdėkite tekstą, naudodami klaviatūrą (Ctrl/Cmd+V) ir paspauskite mygtuką OK.', securityMsg: 'Dėl jūsų naršyklės saugumo nustatymų, redaktorius negali tiesiogiai pasiekti laikinosios atminties. Jums reikia nukopijuoti dar kartą į šį langą.', title: 'Įdėti' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/is.js0000644000201500020150000000156214517055557024122 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'is', { copy: 'Afrita', copyError: 'Öryggisstillingar vafrans þíns leyfa ekki afritun texta með músaraðgerð. Notaðu lyklaborðið í afrita (Ctrl/Cmd+C).', cut: 'Klippa', cutError: 'Öryggisstillingar vafrans þíns leyfa ekki klippingu texta með músaraðgerð. Notaðu lyklaborðið í klippa (Ctrl/Cmd+X).', paste: 'Líma', pasteArea: 'Paste Area', // MISSING pasteMsg: 'Límdu í svæðið hér að neðan og (Ctrl/Cmd+V) og smelltu á OK.', securityMsg: 'Vegna öryggisstillinga í vafranum þínum fær ritillinn ekki beinan aðgang að klippuborðinu. Þú verður að líma innihaldið aftur inn í þennan glugga.', title: 'Líma' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/fr-ca.js0000644000201500020150000000176214517055557024501 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'fr-ca', { copy: 'Copier', 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).', cut: 'Couper', cutError: 'Les paramètres de sécurité de votre navigateur empêchent l\'éditeur de couper automatiquement vos données. Veuillez utiliser les équivalents claviers (Ctrl/Cmd+X).', paste: 'Coller', pasteArea: 'Coller la zone', pasteMsg: 'Veuillez coller dans la zone ci-dessous en utilisant le clavier (Ctrl/Cmd+V) et appuyer sur OK.', securityMsg: 'A cause des paramètres de sécurité de votre navigateur, l\'éditeur ne peut accéder au presse-papier directement. Vous devez coller à nouveau le contenu dans cette fenêtre.', title: 'Coller' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/et.js0000644000201500020150000000164314517055557024117 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'et', { copy: 'Kopeeri', copyError: 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt kopeerida. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+C).', cut: 'Lõika', cutError: 'Sinu veebisirvija turvaseaded ei luba redaktoril automaatselt lõigata. Palun kasutage selleks klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+X).', paste: 'Aseta', pasteArea: 'Asetamise ala', pasteMsg: 'Palun aseta tekst järgnevasse kasti kasutades klaviatuuri klahvikombinatsiooni (Ctrl/Cmd+V) ja vajuta seejärel OK.', securityMsg: 'Sinu veebisirvija turvaseadete tõttu ei oma redaktor otsest ligipääsu lõikelaua andmetele. Sa pead asetama need uuesti siia aknasse.', title: 'Asetamine' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/bs.js0000644000201500020150000000164214517055557024112 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'bs', { copy: 'Kopiraj', copyError: 'Sigurnosne postavke Vašeg pretraživaèa ne dozvoljavaju operacije automatskog kopiranja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+C).', cut: 'Izreži', cutError: 'Sigurnosne postavke vašeg pretraživaèa ne dozvoljavaju operacije automatskog rezanja. Molimo koristite kraticu na tastaturi (Ctrl/Cmd+X).', paste: 'Zalijepi', pasteArea: 'Paste Area', // MISSING pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING title: 'Zalijepi' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/pl.js0000644000201500020150000000157014517055557024121 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'pl', { copy: 'Kopiuj', copyError: 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne kopiowanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+C.', cut: 'Wytnij', cutError: 'Ustawienia bezpieczeństwa Twojej przeglądarki nie pozwalają na automatyczne wycinanie tekstu. Użyj skrótu klawiszowego Ctrl/Cmd+X.', paste: 'Wklej', pasteArea: 'Obszar wklejania', pasteMsg: 'Wklej tekst w poniższym polu, używając skrótu klawiaturowego (Ctrl/Cmd+V), i kliknij OK.', securityMsg: 'Zabezpieczenia przeglądarki uniemożliwiają wklejenie danych bezpośrednio do edytora. Proszę ponownie wkleić dane w tym oknie.', title: 'Wklej' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/bg.js0000644000201500020150000000245114517055557024075 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'bg', { copy: 'Копирай', copyError: 'Настройките за сигурност на вашия бразуър не разрешават на редактора да изпълни запаметяването. За целта използвайте клавиатурата (Ctrl/Cmd+C).', cut: 'Отрежи', cutError: 'Настройките за сигурност на Вашия браузър не позволяват на редактора автоматично да изъплни действията за отрязване. Моля ползвайте клавиатурните команди за целта (ctrl+x).', paste: 'Вмъкни', pasteArea: 'Зона за вмъкване', pasteMsg: 'Вмъкнете тук съдъжанието с клавиатуарата (Ctrl/Cmd+V) и натиснете OK.', securityMsg: 'Заради настройките за сигурност на Вашия браузър, редакторът не може да прочете данните от клипборда коректно.', title: 'Вмъкни' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/fa.js0000644000201500020150000000251214517055557024071 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'fa', { copy: 'رونوشت', copyError: 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای کپی کردن را انجام دهد. لطفا با دکمههای صفحه کلید این کار را انجام دهید (Ctrl/Cmd+C).', cut: 'برش', cutError: 'تنظیمات امنیتی مرورگر شما اجازه نمیدهد که ویرایشگر به طور خودکار عملکردهای برش را انجام دهد. لطفا با دکمههای صفحه کلید این کار را انجام دهید (Ctrl/Cmd+X).', paste: 'چسباندن', pasteArea: 'محل چسباندن', pasteMsg: 'لطفا متن را با کلیدهای (Ctrl/Cmd+V) در این جعبهٴ متنی بچسبانید و پذیرش را بزنید.', securityMsg: 'به خاطر تنظیمات امنیتی مرورگر شما، ویرایشگر نمیتواند دسترسی مستقیم به دادههای clipboard داشته باشد. شما باید دوباره آنرا در این پنجره بچسبانید.', title: 'چسباندن' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/ku.js0000644000201500020150000000247614517055557024133 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'ku', { copy: 'لەبەرگرتنەوە', copyError: 'پارێزی وێبگەڕەکەت ڕێگەنادات بەسەرنووسەکە لە لکاندنی دەقی خۆکارارنە. تکایە لەبری ئەمە ئەم فەرمانە بەکاربهێنە بەداگرتنی کلیلی (Ctrl/Cmd+C).', cut: 'بڕین', cutError: 'پارێزی وێبگەڕەکەت ڕێگەنادات بە سەرنووسەکە لەبڕینی خۆکارانە. تکایە لەبری ئەمە ئەم فەرمانە بەکاربهێنە بەداگرتنی کلیلی (Ctrl/Cmd+X).', paste: 'لکاندن', pasteArea: 'ناوچەی لکاندن', pasteMsg: 'تکایە بیلکێنە لەناوەوەی ئەم سنوقە لەڕێی تەختەکلیلەکەت بە بەکارهێنانی کلیلی (Ctrl/Cmd+V) دووای کلیکی باشە بکە.', securityMsg: 'بەهۆی شێوەپێدانی پارێزی وێبگەڕەکەت، سەرنووسەکه ناتوانێت دەستبگەیەنێت بەهەڵگیراوەکە ڕاستەوخۆ. بۆیه پێویسته دووباره بیلکێنیت لەم پەنجەرەیه.', title: 'لکاندن' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/bn.js0000644000201500020150000000263314517055557024106 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'bn', { copy: 'কপি', copyError: 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কপি করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+C)।', cut: 'কাট', cutError: 'আপনার ব্রাউজারের সুরক্ষা সেটিংস এডিটরকে অটোমেটিক কাট করার অনুমতি দেয়নি। দয়া করে এই কাজের জন্য কিবোর্ড ব্যবহার করুন (Ctrl/Cmd+X)।', paste: 'পেস্ট', pasteArea: 'Paste Area', // MISSING pasteMsg: 'অনুগ্রহ করে নীচের বাক্সে কিবোর্ড ব্যবহার করে (Ctrl/Cmd+V) পেস্ট করুন এবং OK চাপ দিন', securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING title: 'পেস্ট' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/el.js0000644000201500020150000000264714517055557024114 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'el', { copy: 'Αντιγραφή', copyError: 'Οι ρυθμίσεις ασφαλείας του περιηγητή σας δεν επιτρέπουν την επιλεγμένη εργασία αντιγραφής. Παρακαλώ χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+C).', cut: 'Αποκοπή', cutError: 'Οι ρυθμίσεις ασφαλείας του περιηγητή σας δεν επιτρέπουν την επιλεγμένη εργασία αποκοπής. Παρακαλώ χρησιμοποιείστε το πληκτρολόγιο (Ctrl/Cmd+X).', paste: 'Επικόλληση', pasteArea: 'Περιοχή Επικόλλησης', pasteMsg: 'Παρακαλώ επικολλήστε στο ακόλουθο κουτί χρησιμοποιώντας το πληκτρολόγιο (Ctrl/Cmd+V) και πατήστε OK.', securityMsg: 'Λόγων των ρυθμίσεων ασφάλειας του περιηγητή σας, ο επεξεργαστής δεν μπορεί να έχει πρόσβαση στην μνήμη επικόλλησης. Χρειάζεται να επικολλήσετε ξανά σε αυτό το παράθυρο.', title: 'Επικόλληση' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/fi.js0000644000201500020150000000145214517055557024103 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'fi', { copy: 'Kopioi', copyError: 'Selaimesi turva-asetukset eivät salli editorin toteuttaa kopioimista. Käytä näppäimistöä kopioimiseen (Ctrl+C).', cut: 'Leikkaa', cutError: 'Selaimesi turva-asetukset eivät salli editorin toteuttaa leikkaamista. Käytä näppäimistöä leikkaamiseen (Ctrl+X).', paste: 'Liitä', pasteArea: 'Leikealue', pasteMsg: 'Liitä painamalla (Ctrl+V) ja painamalla OK.', securityMsg: 'Selaimesi turva-asetukset eivät salli editorin käyttää leikepöytää suoraan. Sinun pitää suorittaa liittäminen tässä ikkunassa.', title: 'Liitä' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/ru.js0000644000201500020150000000263314517055557024135 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'ru', { copy: 'Копировать', copyError: 'Настройки безопасности вашего браузера не разрешают редактору выполнять операции по копированию текста. Пожалуйста, используйте для этого клавиатуру (Ctrl/Cmd+C).', cut: 'Вырезать', cutError: 'Настройки безопасности вашего браузера не разрешают редактору выполнять операции по вырезке текста. Пожалуйста, используйте для этого клавиатуру (Ctrl/Cmd+X).', paste: 'Вставить', pasteArea: 'Зона для вставки', pasteMsg: 'Пожалуйста, вставьте текст в зону ниже, используя клавиатуру (Ctrl/Cmd+V) и нажмите кнопку "OK".', securityMsg: 'Настройки безопасности вашего браузера не разрешают редактору напрямую обращаться к буферу обмена. Вы должны вставить текст снова в это окно.', title: 'Вставить' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/gl.js0000644000201500020150000000157214517055557024112 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'gl', { copy: 'Copiar', copyError: 'Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de copia. Use o teclado para iso (Ctrl/Cmd+C).', cut: 'Cortar', cutError: 'Os axustes de seguranza do seu navegador non permiten que o editor realice automaticamente as tarefas de corte. Use o teclado para iso (Ctrl/Cmd+X).', paste: 'Pegar', pasteArea: 'Zona de pegado', pasteMsg: 'Pegue dentro do seguinte cadro usando o teclado (Ctrl/Cmd+V) e prema en Aceptar', securityMsg: 'Por mor da configuración de seguranza do seu navegador, o editor non ten acceso ao portapapeis. É necesario pegalo novamente nesta xanela.', title: 'Pegar' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/sr-latn.js0000644000201500020150000000174714517055557025074 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'sr-latn', { copy: 'Kopiraj', 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).', cut: 'Iseci', cutError: 'Sigurnosna podešavanja Vašeg pretraživača ne dozvoljavaju operacije automatskog isecanja teksta. Molimo Vas da koristite prečicu sa tastature (Ctrl/Cmd+X).', paste: 'Zalepi', pasteArea: 'Prostor za lepljenje', pasteMsg: 'Molimo Vas da zalepite unutar donje povrine koristeći tastaturnu prečicu (Ctrl/Cmd+V) i da pritisnete OK.', securityMsg: 'Zbog sigurnosnih postavki vašeg pregledača, editor nije u mogućnosti da direktno pristupi podacima u klipbordu. Potrebno je da zalepite još jednom u ovom prozoru.', title: 'Zalepi' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/sq.js0000644000201500020150000000205214517055557024125 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'sq', { copy: 'Kopjo', copyError: 'Të dhënat e sigurisë së shfletuesit tuaj nuk lejojnë që redaktuesi automatikisht të kryej veprimin e kopjimit. Ju lutemi shfrytëzoni tastierën për këtë veprim (Ctrl/Cmd+C).', cut: 'Preje', cutError: 'Të dhënat e sigurisë së shfletuesit tuaj nuk lejojnë që redaktuesi automatikisht të kryej veprimin e prerjes. Ju lutemi shfrytëzoni tastierën për këtë veprim (Ctrl/Cmd+X).', paste: 'Hidhe', pasteArea: 'Hapësira Hedhëse', pasteMsg: 'Ju lutemi hidhni brenda kutizës në vijim duke shfrytëzuar tastierën (Ctrl/Cmd+V) dhe shtypni Mirë.', securityMsg: 'Për shkak të dhënave të sigurisë së shfletuesit tuaj, redaktuesi nuk është në gjendje të i qaset drejtpërdrejtë të dhanve të tabelës suaj të punës. Ju duhet të hidhni atë përsëri në këtë dritare.', title: 'Hidhe' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/pt-br.js0000644000201500020150000000176714517055557024542 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'pt-br', { copy: 'Copiar', 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).', cut: 'Recortar', cutError: 'As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl/Cmd+X).', paste: 'Colar', pasteArea: 'Área para Colar', pasteMsg: 'Transfira o link usado na caixa usando o teclado com (Ctrl/Cmd+V) e OK.', securityMsg: 'As configurações de segurança do seu navegador não permitem que o editor acesse os dados da área de transferência diretamente. Por favor cole o conteúdo manualmente nesta janela.', title: 'Colar' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/fo.js0000644000201500020150000000163314517055557024112 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'fo', { copy: 'Avrita', copyError: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at avrita tekstin. Vinarliga nýt knappaborðið til at avrita tekstin (Ctrl/Cmd+C).', cut: 'Kvett', cutError: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í at kvetta tekstin. Vinarliga nýt knappaborðið til at kvetta tekstin (Ctrl/Cmd+X).', paste: 'Innrita', pasteArea: 'Avritingarumráði', pasteMsg: 'Vinarliga koyr tekstin í hendan rútin við knappaborðinum (Ctrl/Cmd+V) og klikk á Góðtak.', securityMsg: 'Trygdaruppseting alnótskagans forðar tekstviðgeranum í beinleiðis atgongd til avritingarminnið. Tygum mugu royna aftur í hesum rútinum.', title: 'Innrita' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/af.js0000644000201500020150000000150414517055557024071 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'af', { copy: 'Kopiëer', copyError: 'U blaaier se sekuriteitsinstelling belet die kopiëringsaksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+C).', cut: 'Knip', cutError: 'U blaaier se sekuriteitsinstelling belet die outomatiese knip-aksie. Gebruik die sleutelbordkombinasie (Ctrl/Cmd+X).', paste: 'Plak', pasteArea: 'Plak-area', pasteMsg: 'Plak die teks in die volgende teks-area met die sleutelbordkombinasie (Ctrl/Cmd+V) en druk OK.', securityMsg: 'Weens u blaaier se sekuriteitsinstelling is data op die knipbord nie toeganklik nie. U kan dit eers weer in hierdie venster plak.', title: 'Byvoeg' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/hi.js0000644000201500020150000000260514517055557024106 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'hi', { copy: 'कॉपी', copyError: 'आपके ब्राआउज़र की सुरक्षा सॅटिन्ग्स ने कॉपी करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+C) का प्रयोग करें।', cut: 'कट', cutError: 'आपके ब्राउज़र की सुरक्षा सॅटिन्ग्स ने कट करने की अनुमति नहीं प्रदान की है। (Ctrl/Cmd+X) का प्रयोग करें।', paste: 'पेस्ट', pasteArea: 'Paste Area', // MISSING pasteMsg: 'Ctrl/Cmd+V का प्रयोग करके पेस्ट करें और ठीक है करें.', securityMsg: 'आपके ब्राउज़र की सुरक्षा आपके ब्राउज़र की सुरKश सैटिंग के कारण, एडिटर आपके क्लिपबोर्ड डेटा को नहीं पा सकता है. आपको उसे इस विन्डो में दोबारा पेस्ट करना होगा.', title: 'पेस्ट' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/km.js0000644000201500020150000000376414517055557024124 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'km', { copy: 'ចម្លង', copyError: 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ ចំលងអត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl/Cmd+C)។', cut: 'កាត់យក', cutError: 'ការកំណត់សុវត្ថភាពរបស់កម្មវិធីរុករករបស់លោកអ្នក នេះ​មិនអាចធ្វើកម្មវិធីតាក់តែងអត្ថបទ កាត់អត្ថបទយកដោយស្វ័យប្រវត្តបានឡើយ ។ សូមប្រើប្រាស់បន្សំ ឃីដូចនេះ (Ctrl/Cmd+X) ។', paste: 'បិទ​ភ្ជាប់', pasteArea: 'តំបន់​បិទ​ភ្ជាប់', pasteMsg: 'សូមចំលងអត្ថបទទៅដាក់ក្នុងប្រអប់ដូចខាងក្រោមដោយប្រើប្រាស់ ឃី ​(Ctrl/Cmd+V) ហើយចុច OK ។', securityMsg: 'ព្រោះតែ​ការកំណត់​សុវត្ថិភាព ប្រអប់សរសេរ​មិន​អាចចាប់​យកទិន្នន័យពីក្តារតម្បៀតខ្ទាស់​អ្នក​​ដោយផ្ទាល់​បានទេ។ អ្នក​ត្រូវចំលង​ដាក់វាម្តង​ទៀត ក្នុងផ្ទាំងនេះ។', title: 'បិទ​ភ្ជាប់' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/nl.js0000644000201500020150000000165614517055557024124 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'nl', { copy: 'Kopiëren', copyError: 'De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl/Cmd+C van het toetsenbord.', cut: 'Knippen', cutError: 'De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl/Cmd+X van het toetsenbord.', paste: 'Plakken', pasteArea: 'Plakgebied', pasteMsg: 'Plak de tekst in het volgende vak gebruikmakend van uw toetsenbord (Ctrl/Cmd+V) en klik op OK.', securityMsg: 'Door de beveiligingsinstellingen van uw browser is het niet mogelijk om direct vanuit het klembord in de editor te plakken. Middels opnieuw plakken in dit venster kunt u de tekst alsnog plakken in de editor.', title: 'Plakken' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/ka.js0000644000201500020150000000332214517055557024076 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'ka', { copy: 'ასლი', copyError: 'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა ასლის ოპერაციის ავტომატურად განხორციელების საშუალებას. გამოიყენეთ კლავიატურა ამისთვის (Ctrl/Cmd+C).', cut: 'ამოჭრა', cutError: 'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა ამოჭრის ოპერაციის ავტომატურად განხორციელების საშუალებას. გამოიყენეთ კლავიატურა ამისთვის (Ctrl/Cmd+X).', paste: 'ჩასმა', pasteArea: 'ჩასმის არე', pasteMsg: 'ჩასვით ამ არის შიგნით კლავიატურის გამოყენებით (Ctrl/Cmd+V) და დააჭირეთ OK-ს', securityMsg: 'თქვენი ბროუზერის უსაფრთხოების პარამეტრები არ იძლევა clipboard-ის მონაცემების წვდომის უფლებას. კიდევ უნდა ჩასვათ ტექსტი ამ ფანჯარაში.', title: 'ჩასმა' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/mn.js0000644000201500020150000000230214517055557024112 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'mn', { copy: 'Хуулах', copyError: 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хуулах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+C) товчны хослолыг ашиглана уу.', cut: 'Хайчлах', cutError: 'Таны browser-ын хамгаалалтын тохиргоо editor-д автоматаар хайчлах үйлдэлийг зөвшөөрөхгүй байна. (Ctrl/Cmd+X) товчны хослолыг ашиглана уу.', paste: 'Буулгах', pasteArea: 'Paste Area', // MISSING pasteMsg: '(Ctrl/Cmd+V) товчийг ашиглан paste хийнэ үү. Мөн OK дар.', securityMsg: 'Таны үзүүлэгч/browser/-н хамгаалалтын тохиргооноос болоод editor clipboard өгөгдөлрүү шууд хандах боломжгүй. Энэ цонход дахин paste хийхийг оролд.', title: 'Буулгах' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/da.js0000644000201500020150000000171514517055557024073 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'da', { copy: 'Kopiér', copyError: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.

Brug i stedet tastaturet til at kopiere teksten (Ctrl/Cmd+C).', cut: 'Klip', cutError: 'Din browsers sikkerhedsindstillinger tillader ikke editoren at få automatisk adgang til udklipsholderen.

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

Du skal indsætte udklipsholderens indhold i dette vindue igen.', title: 'Indsæt' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/he.js0000644000201500020150000000201514517055557024075 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'he', { copy: 'העתקה', copyError: 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות העתקה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+C).', cut: 'גזירה', cutError: 'הגדרות האבטחה בדפדפן שלך לא מאפשרות לעורך לבצע פעולות גזירה אוטומטיות. יש להשתמש במקלדת לשם כך (Ctrl/Cmd+X).', paste: 'הדבקה', pasteArea: 'איזור הדבקה', pasteMsg: 'נא להדביק בתוך הקופסה באמצעות (Ctrl/Cmd+V) וללחוץ על אישור.', securityMsg: 'עקב הגדרות אבטחה בדפדפן, לא ניתן לגשת אל לוח הגזירים (Clipboard) בצורה ישירה. נא להדביק שוב בחלון זה.', title: 'הדבקה' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/ca.js0000644000201500020150000000170614517055557024072 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'ca', { copy: 'Copiar', copyError: 'La configuració de seguretat del vostre navegador no permet executar automàticament les operacions de copiar. Si us plau, utilitzeu el teclat (Ctrl/Cmd+C).', cut: 'Retallar', cutError: 'La configuració de seguretat del vostre navegador no permet executar automàticament les operacions de retallar. Si us plau, utilitzeu el teclat (Ctrl/Cmd+X).', paste: 'Enganxar', pasteArea: 'Àrea d\'enganxat', pasteMsg: 'Si us plau, enganxi dins del següent camp utilitzant el teclat (Ctrl/Cmd+V) i premi OK.', securityMsg: 'A causa de la configuració de seguretat del vostre navegador, l\'editor no pot accedir a les dades del porta-retalls directament. Enganxeu-ho un altre cop en aquesta finestra.', title: 'Enganxar' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/gu.js0000644000201500020150000000241114517055557024114 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'gu', { copy: 'નકલ', copyError: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કોપી કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+C) का प्रयोग करें।', cut: 'કાપવું', cutError: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસ કટ કરવાની પરવાનગી નથી આપતી. (Ctrl/Cmd+X) નો ઉપયોગ કરો.', paste: 'પેસ્ટ', pasteArea: 'પેસ્ટ કરવાની જગ્યા', pasteMsg: 'Ctrl/Cmd+V નો પ્રયોગ કરી પેસ્ટ કરો', securityMsg: 'તમારા બ્રાઉઝર ની સુરક્ષિત સેટિંગસના કારણે,એડિટર તમારા કિલ્પબોર્ડ ડેટા ને કોપી નથી કરી શકતો. તમારે આ વિન્ડોમાં ફરીથી પેસ્ટ કરવું પડશે.', title: 'પેસ્ટ' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/ms.js0000644000201500020150000000156114517055557024125 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'ms', { copy: 'Salin', copyError: 'Keselamatan perisian browser anda tidak membenarkan operasi salinan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+C).', cut: 'Potong', cutError: 'Keselamatan perisian browser anda tidak membenarkan operasi suntingan text/imej. Sila gunakan papan kekunci (Ctrl/Cmd+X).', paste: 'Tampal', pasteArea: 'Paste Area', // MISSING pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING title: 'Tampal' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/th.js0000644000201500020150000000277714517055557024133 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'th', { copy: 'สำเนา', copyError: 'ไม่สามารถสำเนาข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว C พร้อมกัน).', cut: 'ตัด', cutError: 'ไม่สามารถตัดข้อความที่เลือกไว้ได้เนื่องจากการกำหนดค่าระดับความปลอดภัย. กรุณาใช้ปุ่มลัดเพื่อวางข้อความแทน (กดปุ่ม Ctrl/Cmd และตัว X พร้อมกัน).', paste: 'วาง', pasteArea: 'Paste Area', // MISSING pasteMsg: 'กรุณาใช้คีย์บอร์ดเท่านั้น โดยกดปุ๋ม (Ctrl/Cmd และ V)พร้อมๆกัน และกด OK.', securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING title: 'วาง' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/de.js0000644000201500020150000000203714517055557024075 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'de', { copy: 'Kopieren', copyError: 'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).', cut: 'Ausschneiden', cutError: 'Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).', paste: 'Einfügen', pasteArea: 'Einfügebereich', pasteMsg: 'Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit Strg+V) ein und bestätigen Sie mit OK.', securityMsg: 'Aufgrund von Sicherheitsbeschränkungen Ihres Browsers kann der Editor nicht direkt auf die Zwischenablage zugreifen. Bitte fügen Sie den Inhalt erneut in diesem Fenster ein.', title: 'Einfügen' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/en-ca.js0000644000201500020150000000161614517055557024472 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'en-ca', { copy: 'Copy', copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', cut: 'Cut', cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', paste: 'Paste', pasteArea: 'Paste Area', // MISSING pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', title: 'Paste' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/tt.js0000644000201500020150000000207114517055557024132 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'tt', { copy: 'Күчермәләү', copyError: 'Браузерыгызның иминлек үзлекләре автоматик рәвештә күчермәләү үтәүне тыя. Тиз төймәләрне (Ctrl/Cmd+C) кулланыгыз.', cut: 'Кисеп алу', cutError: 'Браузерыгызның иминлек үзлекләре автоматик рәвештә күчермәләү үтәүне тыя. Тиз төймәләрне (Ctrl/Cmd+C) кулланыгыз.', paste: 'Өстәү', pasteArea: 'Өстәү мәйданы', pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING title: 'Өстәү' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/vi.js0000644000201500020150000000210614517055557024120 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'vi', { copy: 'Sao chép', 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).', cut: 'Cắt', cutError: 'Các thiết lập bảo mật của trình duyệt không cho phép trình biên tập tự động thực thi lệnh cắt. Hãy sử dụng bàn phím cho lệnh này (Ctrl/Cmd+X).', paste: 'Dán', pasteArea: 'Khu vực dán', pasteMsg: 'Hãy dán nội dung vào trong khung bên dưới, sử dụng tổ hợp phím (Ctrl/Cmd+V) và nhấn vào nút Đồng ý.', securityMsg: 'Do thiết lập bảo mật của trình duyệt nên trình biên tập không thể truy cập trực tiếp vào nội dung đã sao chép. Bạn cần phải dán lại nội dung vào cửa sổ này.', title: 'Dán' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/cs.js0000644000201500020150000000207314517055557024112 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'cs', { copy: 'Kopírovat', 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).', cut: 'Vyjmout', cutError: 'Bezpečnostní nastavení vašeho prohlížeče nedovolují editoru spustit funkci pro vyjmutí zvoleného textu do schránky. Prosím vyjměte zvolený text do schránky pomocí klávesnice (Ctrl/Cmd+X).', paste: 'Vložit', pasteArea: 'Oblast vkládání', pasteMsg: 'Do následujícího pole vložte požadovaný obsah pomocí klávesnice (Ctrl/Cmd+V) a stiskněte OK.', securityMsg: 'Z důvodů nastavení bezpečnosti vašeho prohlížeče nemůže editor přistupovat přímo do schránky. Obsah schránky prosím vložte znovu do tohoto okna.', title: 'Vložit' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/tr.js0000644000201500020150000000171114517055557024130 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'tr', { copy: 'Kopyala', 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.', cut: 'Kes', cutError: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin otomatik kesme işlemine izin vermiyor. İşlem için (Ctrl/Cmd+X) tuşlarını kullanın.', paste: 'Yapıştır', pasteArea: 'Yapıştırma Alanı', pasteMsg: 'Lütfen aşağıdaki kutunun içine yapıştırın. (Ctrl/Cmd+V) ve Tamam butonunu tıklayın.', securityMsg: 'Gezgin yazılımınızın güvenlik ayarları düzenleyicinin direkt olarak panoya erişimine izin vermiyor. Bu pencere içine tekrar yapıştırmalısınız..', title: 'Yapıştır' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/ja.js0000644000201500020150000000226714517055557024104 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'ja', { copy: 'コピー', copyError: 'ブラウザーのセキュリティ設定によりエディタのコピー操作を自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+C)を使用してください。', cut: '切り取り', cutError: 'ブラウザーのセキュリティ設定によりエディタの切り取り操作を自動で実行することができません。実行するには手動でキーボードの(Ctrl/Cmd+X)を使用してください。', paste: '貼り付け', pasteArea: '貼り付け場所', pasteMsg: 'キーボード(Ctrl/Cmd+V)を使用して、次の入力エリア内で貼り付けて、OKを押してください。', securityMsg: 'ブラウザのセキュリティ設定により、エディタはクリップボードデータに直接アクセスすることができません。このウィンドウは貼り付け操作を行う度に表示されます。', title: '貼り付け' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/sl.js0000644000201500020150000000157414517055557024130 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'sl', { copy: 'Kopiraj', copyError: 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega kopiranja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+C).', cut: 'Izreži', cutError: 'Varnostne nastavitve brskalnika ne dopuščajo samodejnega izrezovanja. Uporabite kombinacijo tipk na tipkovnici (Ctrl/Cmd+X).', paste: 'Prilepi', pasteArea: 'Prilepi Prostor', pasteMsg: 'Prosim prilepite v sleči okvir s pomočjo tipkovnice (Ctrl/Cmd+V) in pritisnite V redu.', securityMsg: 'Zaradi varnostnih nastavitev vašega brskalnika urejevalnik ne more neposredno dostopati do odložišča. Vsebino odložišča ponovno prilepite v to okno.', title: 'Prilepi' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/lv.js0000644000201500020150000000175014517055557024127 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'lv', { copy: 'Kopēt', copyError: 'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj redaktoram automātiski veikt kopēšanas darbību. Lūdzu, izmantojiet (Ctrl/Cmd+C), lai veiktu šo darbību.', cut: 'Izgriezt', cutError: 'Jūsu pārlūkprogrammas drošības iestatījumi nepieļauj redaktoram automātiski veikt izgriezšanas darbību. Lūdzu, izmantojiet (Ctrl/Cmd+X), lai veiktu šo darbību.', paste: 'Ielīmēt', pasteArea: 'Ielīmēšanas zona', pasteMsg: 'Lūdzu, ievietojiet tekstu šajā laukumā, izmantojot klaviatūru (Ctrl/Cmd+V) un apstipriniet ar Darīts!.', securityMsg: 'Jūsu pārlūka drošības uzstādījumu dēļ, nav iespējams tieši piekļūt jūsu starpliktuvei. Jums jāielīmē atkārtoti šajā logā.', title: 'Ievietot' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/en-au.js0000644000201500020150000000161614517055557024514 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'en-au', { copy: 'Copy', copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', cut: 'Cut', cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', paste: 'Paste', pasteArea: 'Paste Area', // MISSING pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', title: 'Paste' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/en.js0000644000201500020150000000160014517055557024102 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'en', { copy: 'Copy', copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', cut: 'Cut', cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', paste: 'Paste', pasteArea: 'Paste Area', pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', title: 'Paste' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/no.js0000644000201500020150000000155414517055557024124 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'no', { copy: 'Kopier', copyError: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk kopiering av tekst. Vennligst bruk snarveien (Ctrl/Cmd+C).', cut: 'Klipp ut', cutError: 'Din nettlesers sikkerhetsinstillinger tillater ikke automatisk utklipping av tekst. Vennligst bruk snarveien (Ctrl/Cmd+X).', paste: 'Lim inn', pasteArea: 'Innlimingsområde', pasteMsg: 'Vennligst lim inn i følgende boks med tastaturet (Ctrl/Cmd+V) og trykk OK.', securityMsg: 'Din nettlesers sikkerhetsinstillinger gir ikke redigeringsverktøyet direkte tilgang til utklippstavlen. Du må derfor lime det inn på nytt i dette vinduet.', title: 'Lim inn' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/fr.js0000644000201500020150000000211014517055557024104 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'fr', { copy: 'Copier', copyError: 'Les paramètres de sécurité de votre navigateur ne permettent pas à l\'éditeur d\'exécuter automatiquement des opérations de copie. Veuillez utiliser le raccourci clavier (Ctrl/Cmd+C).', cut: 'Couper', cutError: 'Les paramètres de sécurité de votre navigateur ne permettent pas à l\'éditeur d\'exécuter automatiquement l\'opération "couper". Veuillez utiliser le raccourci clavier (Ctrl/Cmd+X).', paste: 'Coller', pasteArea: 'Coller la zone', pasteMsg: 'Veuillez coller le texte dans la zone suivante en utilisant le raccourci clavier (Ctrl/Cmd+V) et cliquez sur OK.', securityMsg: 'A cause des paramètres de sécurité de votre navigateur, l\'éditeur n\'est pas en mesure d\'accéder directement à vos données contenues dans le presse-papier. Vous devriez réessayer de coller les données dans la fenêtre.', title: 'Coller' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/id.js0000644000201500020150000000165214517055557024103 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'id', { copy: 'Salin', copyError: 'Pengaturan keamanan peramban anda tidak mengizinkan editor untuk mengeksekusi operasi menyalin secara otomatis. Mohon gunakan papan tuts (Ctrl/Cmd+C)', cut: 'Potong', cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', // MISSING paste: 'Tempel', pasteArea: 'Area Tempel', pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', // MISSING securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', // MISSING title: 'Tempel' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/ug.js0000644000201500020150000000276314517055557024126 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'ug', { copy: 'نەشر ھوقۇقىغا ئىگە بەلگىسى', copyError: 'تور كۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى تەھرىرلىگۈچنىڭ كۆچۈر مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+C) ئارقىلىق تاماملاڭ', cut: 'كەس', cutError: 'تور كۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى تەھرىرلىگۈچنىڭ كەس مەشغۇلاتىنى ئۆزلۈكىدىن ئىجرا قىلىشىغا يول قويمايدۇ، ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+X) ئارقىلىق تاماملاڭ', paste: 'چاپلا', pasteArea: 'چاپلاش دائىرىسى', pasteMsg: 'ھەرپتاختا تېز كۇنۇپكا (Ctrl/Cmd+V) نى ئىشلىتىپ مەزمۇننى تۆۋەندىكى رامكىغا كۆچۈرۈڭ، ئاندىن جەزملەنى بېسىڭ', securityMsg: 'توركۆرگۈڭىزنىڭ بىخەتەرلىك تەڭشىكى سەۋەبىدىن بۇ تەھرىرلىگۈچ چاپلاش تاختىسىدىكى مەزمۇننى بىۋاستە زىيارەت قىلالمايدۇ، بۇ كۆزنەكتە قايتا بىر قېتىم چاپلىشىڭىز كېرەك.', title: 'چاپلا' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/ar.js0000644000201500020150000000222314517055557024104 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'ar', { copy: 'نسخ', copyError: 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع عمليات النسخ التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+C).', cut: 'قص', cutError: 'الإعدادات الأمنية للمتصفح الذي تستخدمه تمنع القص التلقائي. فضلاً إستخدم لوحة المفاتيح لفعل ذلك (Ctrl/Cmd+X).', paste: 'لصق', pasteArea: 'منطقة اللصق', pasteMsg: 'الصق داخل الصندوق بإستخدام زرائر (Ctrl/Cmd+V) في لوحة المفاتيح، ثم اضغط زر موافق.', securityMsg: 'نظراً لإعدادات الأمان الخاصة بمتصفحك، لن يتمكن هذا المحرر من الوصول لمحتوى حافظتك، لذلك يجب عليك لصق المحتوى مرة أخرى في هذه النافذة.', title: 'لصق' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/sr.js0000644000201500020150000000254214517055557024132 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'sr', { copy: 'Копирај', copyError: 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског копирања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+C).', cut: 'Исеци', cutError: 'Сигурносна подешавања Вашег претраживача не дозвољавају операције аутоматског исецања текста. Молимо Вас да користите пречицу са тастатуре (Ctrl/Cmd+X).', paste: 'Залепи', pasteArea: 'Залепи зону', pasteMsg: 'Молимо Вас да залепите унутар доње површине користећи тастатурну пречицу (Ctrl/Cmd+V) и да притиснете OK.', securityMsg: 'Због сигурносних подешавања претраживача, едитор не може да приступи оставу. Требате да га поново залепите у овом прозору.', title: 'Залепи' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/eu.js0000644000201500020150000000160114517055557024112 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'eu', { copy: 'Kopiatu', copyError: 'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki kopiatzea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl/Cmd+C).', cut: 'Ebaki', cutError: 'Zure web nabigatzailearen segurtasun ezarpenak testuak automatikoki moztea ez dute baimentzen. Mesedez teklatua erabili ezazu (Ctrl/Cmd+X).', paste: 'Itsatsi', pasteArea: 'Itsasteko Area', pasteMsg: 'Mesedez teklatua erabilita (Ctrl/Cmd+V) ondorego eremuan testua itsatsi eta OK sakatu.', securityMsg: 'Nabigatzailearen segurtasun ezarpenak direla eta, editoreak ezin du arbela zuzenean erabili. Leiho honetan berriro itsatsi behar duzu.', title: 'Itsatsi' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/en-gb.js0000644000201500020150000000160314517055557024473 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'en-gb', { copy: 'Copy', copyError: 'Your browser security settings don\'t permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).', cut: 'Cut', cutError: 'Your browser security settings don\'t permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).', paste: 'Paste', pasteArea: 'Paste Area', pasteMsg: 'Please paste inside the following box using the keyboard (Ctrl/Cmd+V) and hit OK', securityMsg: 'Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.', title: 'Paste' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/lang/hu.js0000644000201500020150000000176014517055557024123 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'clipboard', 'hu', { copy: 'Másolás', 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).', cut: 'Kivágás', cutError: 'A böngésző biztonsági beállításai nem engedélyezik a szerkesztőnek, hogy végrehajtsa a kivágás műveletet. Használja az alábbi billentyűkombinációt (Ctrl/Cmd+X).', paste: 'Beillesztés', pasteArea: 'Beszúrás mező', pasteMsg: 'Másolja be az alábbi mezőbe a Ctrl/Cmd+V billentyűk lenyomásával, majd nyomjon Rendben-t.', securityMsg: 'A böngésző biztonsági beállításai miatt a szerkesztő nem képes hozzáférni a vágólap adataihoz. Illeszd be újra ebben az ablakban.', title: 'Beillesztés' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/dialogs/0000755000201500020150000000000014517055557023646 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/dialogs/paste.js0000644000201500020150000001543114517055557025324 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.dialog.add( 'paste', function( editor ) { var lang = editor.lang.clipboard; function onPasteFrameLoad( win ) { var doc = new CKEDITOR.dom.document( win.document ), body = doc.getBody(), script = doc.getById( 'cke_actscrpt' ); script && script.remove(); body.setAttribute( 'contenteditable', true ); // 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() { doc.$.selection.empty(); } ); } doc.on( 'keydown', function( e ) { var domEvent = e.data, key = domEvent.getKeystroke(), processed; switch ( key ) { case 27: this.hide(); processed = 1; break; case 9: case CKEDITOR.SHIFT + 9: this.changeFocus( 1 ); processed = 1; } processed && domEvent.preventDefault(); }, this ); editor.fire( 'ariaWidget', new CKEDITOR.dom.element( win.frameElement ) ); // Handle pending focus. if ( doc.getWindow().getFrame().removeCustomData( 'pendingFocus' ) ) body.focus(); } // If pasteDialogCommit wasn't canceled by e.g. editor.getClipboardData // then fire paste event. // Do not use editor#paste, because it would start from beforePaste event. editor.on( 'pasteDialogCommit', function( evt ) { if ( evt.data ) editor.fire( 'paste', { type: 'auto', dataValue: evt.data, method: 'paste', dataTransfer: CKEDITOR.plugins.clipboard.initPasteDataTransfer() } ); }, null, null, 1000 ); return { title: lang.title, minWidth: CKEDITOR.env.ie && CKEDITOR.env.quirks ? 370 : 350, minHeight: CKEDITOR.env.quirks ? 250 : 245, onShow: function() { // FIREFOX BUG: Force the browser to render the dialog to make the to-be- // inserted iframe editable. (#3366) this.parts.dialog.$.offsetHeight; this.setupContent(); // Set dialog title to the custom value (set e.g. in editor.openDialog callback) and reset this value. // If custom title not set, use default one. this.parts.title.setHtml( this.customTitle || lang.title ); this.customTitle = null; }, onLoad: function() { if ( ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) && editor.lang.dir == 'rtl' ) this.parts.contents.setStyle( 'overflow', 'hidden' ); }, onOk: function() { this.commitContent(); }, contents: [ { id: 'general', label: editor.lang.common.generalTab, elements: [ { type: 'html', id: 'securityMsg', html: '
' + lang.securityMsg + '
' }, { type: 'html', id: 'pasteMsg', html: '
' + lang.pasteMsg + '
' }, { type: 'html', id: 'editing_area', style: 'width:100%;height:100%', html: '', focus: function() { var iframe = this.getInputElement(), doc = iframe.getFrameDocument(), body = doc.getBody(); // Frame content may not loaded at the moment. if ( !body || body.isReadOnly() ) iframe.setCustomData( 'pendingFocus', 1 ); else body.focus(); }, setup: function() { var dialog = this.getDialog(); var htmlToLoad = '' + '' + '' + ''; var src = CKEDITOR.env.air ? 'javascript:void(0)' : // jshint ignore:line ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) ? 'javascript:void((function(){' + encodeURIComponent( // jshint ignore:line 'document.open();' + '(' + CKEDITOR.tools.fixDomain + ')();' + 'document.close();' ) + '})())"' : ''; var iframe = CKEDITOR.dom.element.createFromHtml( '' ); iframe.on( 'load', function( e ) { e.removeListener(); var doc = iframe.getFrameDocument(); doc.write( htmlToLoad ); editor.focusManager.add( doc.getBody() ); if ( CKEDITOR.env.air ) onPasteFrameLoad.call( this, doc.getWindow().$ ); }, dialog ); iframe.setCustomData( 'dialog', dialog ); var container = this.getElement(); container.setHtml( '' ); container.append( iframe ); // IE need a redirect on focus to make // the cursor blinking inside iframe. (#5461) if ( CKEDITOR.env.ie && !CKEDITOR.env.edge ) { var focusGrabber = CKEDITOR.dom.element.createFromHtml( '' ); focusGrabber.on( 'focus', function() { // Since fixDomain is called in src attribute, // IE needs some slight delay to correctly move focus. setTimeout( function() { iframe.$.contentWindow.focus(); } ); } ); container.append( focusGrabber ); // Override focus handler on field. this.focus = function() { focusGrabber.focus(); this.fire( 'focus' ); }; } this.getInputElement = function() { return iframe; }; // Force container to scale in IE. if ( CKEDITOR.env.ie ) { container.setStyle( 'display', 'block' ); container.setStyle( 'height', ( iframe.$.offsetHeight + 2 ) + 'px' ); } }, commit: function() { var editor = this.getDialog().getParentEditor(), body = this.getInputElement().getFrameDocument().getBody(), bogus = body.getBogus(), html; bogus && bogus.remove(); // Saving the contents so changes until paste is complete will not take place (#7500) html = body.getHtml(); // Opera needs some time to think about what has happened and what it should do now. setTimeout( function() { editor.fire( 'pasteDialogCommit', html ); }, 0 ); } } ] } ] }; } ); /** * Internal event to pass paste dialog's data to the listeners. * * @private * @event pasteDialogCommit * @member CKEDITOR.editor * @param {CKEDITOR.editor} editor This editor instance. */ rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/icons/0000755000201500020150000000000014517055557023337 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/icons/cut-rtl.png0000644000201500020150000000200714517055557025436 0ustar puckpuckPNG  IHDRabKGD pHYs B(x IDAT8EMLcuGc#]:%4=[]3\I;q,p1QbbH$Dc$"y`j IޜG (.ֈD"Vjh˲y1T*h4RZò"Ƚd2 5lۆmZ#L"d-Hk ,RFGGQ.;GGG$ot? |allj]~W5zzzaB"ֺ$NτaxnۉDŝ<3DDyQF|Ngb^P(\3Kȫ"bR J2=p]$055\%y&:99y5;;yO?,"Kd]}; C J%c{{!\|KSR6} @~mmkqA|HfIn$_(888IEINb jQ%tEXtdate:create2013-07-04T17:03:03+02:00Mx%tEXtdate:modify2013-07-04T17:03:03+02:00<tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/icons/paste.png0000644000201500020150000000132414517055557025161 0ustar puckpuckPNG  IHDRabKGD pHYs B(xIDAT8}JAYfu֛a\AL+yz$Yî(23L導u,XYY{O#fYP6*1eY{B v)vplhl t$]UU9]8sbWcUm[<{@4̊x]HieUUF]m n^.7c 91HibY9Ge8PeY|Ix֒eiFI%q,HI${$a!I& UU][H"ƸErv`9$#!l6kZDu˪%˲1B{OuV /7k-tfy`vb$Wu)瞣m7}k$)ϣ.c֎7 @OfY777ItXޟ\>~? .!H?R5!#_/@%tEXtdate:create2013-07-04T17:03:03+02:00Mx%tEXtdate:modify2013-07-04T17:03:03+02:00<tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/icons/paste-rtl.png0000644000201500020150000000132414517055557025760 0ustar puckpuckPNG  IHDRabKGD pHYs B(xIDAT8}JAYfu֛a\AL+yz$Yî(23L導u,XYY{O#fYP6*1eY{_x ]$ Yq]lq]\\B$!_q[AX$Ih>0~4If2dr9,F!,) *Bd:c;ΥdY4"4wܽ{_|#D$lQi'<}UWu(iضa '7ވZg$4$!T` 7ԛL& 6a4/\T~'_[ƲṞgLӧO ު(+;ܻzp\ Hwѫ7LR J`fk}|ޙ\[;hYt߷o60UU9!.֌\6 T+~lihlX]=!( ,#reY}}Ot>j9Bzd IBVU`ݏ? X?x2c-¶mrnْyղ!{<%!< o}L&O[8sTLM ɿB d5k\&ExUaqa뫀z׬(~?B*G|sjdy@$Iu&!KVU .=K% L>jҤMZ<禉ix<j&N$뷊 v{=u)]ǰ& B Kz) D$܎Ųm4N<6cƌw?nR),ˢuummkjQ SUdIB~?ÈiӪ|sN$|[|saѣGΞ=[)-+cf"fMa {a$|u4<f**KV>P0Hc֭@ '`-`,^P(tD"\;9LZa|ݻCC M3aD{{zw7OB8eYd2LwpU^w\w֭[kg͚xpÆ a74%>k1zş0 ~X \ ^Us=Ce$!2[GQlǡ'I@5mNkʾ-/C!iIgpowin[n݈-!G"G|цL&u7 ) x<wy@h-}')opfMsΉmx"{$dN&[ ʀOWj0E_^W1a;置\jNb,%tEXtdate:create2013-06-20T11:07:04+02:00I%tEXtdate:modify2013-06-20T11:07:04+02:00tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/icons/hidpi/paste.png0000644000201500020150000000364714517055557026270 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(xIDATXÝߋW?M$o4:3PfJvlem_0c ŋ^Zzۛ^htQZ հ+jaWˌ ΏM7sN/&Ll8$o<|s%B @)c-XNodk_k8&T}ϩ7ZcZwd}ҩFkj-3fz_}cZ-,LͲPZ*E&F*EdZZk dA92 \~ݻW>a zNW&&8xP_ۻwSS}𡝟s0D'egRB.8 GNd>s,6EbeX9{6QccGN8 ȑB.R[$ N:01QkårQQ !(V(" CA FGE\k(\H9R:v)Hڵk;٬}8;}h} r9 DOfg'ϝ.fN̰g|qk 8E\Sիv_g 8kqGk ^&#/?G| (zHˏ-k2a7f_1dIeooG&Yz}lZ!$ՠR)C:*fƍZ&،k-8N&j61Z#$8 P@_I )e-K++ (j7 D!t?()R2a6ufA Z240,֭i}] tdfdQ.cevHɋsɢK"tkC)W*JV#ɴ 7۬\}L M(HRmםLy7[!>sGYk{cm<ЉS1=f6ܞZZcRbkd4`>V%zǟ}4bFjN! 2`C G)% R$T 7AJJ|;~|PRߌ{As8۶:Y+Y n;ۜ$rm2bZ?^r 0L0k"O )3k-iGZNݾ!%R/qWvu@2MDzqp>xp_AENds75JI9 1DGE͡<8|20DvDd-LEfoQjn,kRiB[}AO>y:qޑ7<{vO<اbk h J%~R1zIBP145B-BۻW,S*Z9UB+WVMkSR)A?ܹu?~͛H_׈DHk 0W3plYV?%tEXtdate:create2013-06-20T11:07:04+02:00I%tEXtdate:modify2013-06-20T11:07:04+02:00tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/icons/hidpi/copy-rtl.png0000644000201500020150000000302614517055557026714 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(x/IDATXÝoe?;3N-^ G.JRܐscZ< ʅDZMA#(bnggnwv'd>~g䷙^ؿ筷Յ:`Eg?fyu8Iֲp1]]J)AkMOo/-,+`&cX ]p-PcV@믷4RVq9r;?? `-8Rl7w鋢H$Gw j><7o?YZ"ذ(O>x'bfg1֦ ݛHg2In18$Aٵo VŋSΟglttR@ I˱c<tbqns<z{wp(N/,],syTk DAI{8cϧ 9Ã֘kl^MxQ yKkϞzҥ)8J myMtJ)n>iAc ٩ɓ<74S,ʖh!VJW,{xBOt)ج 7O`R.1Ƥ2|ZP}z_Si.,LĖ,jQoݶ_޸+WlǩSn"= ΂qLRN9rt_EruDI"$`][/.ji*cgNk勫W4v@xAs%uQt9ccrՆ]޹-N("h<|C.*ӲɜR)?GɋJapps4 t a3<0@qZ7lRwB!9噑J:tHl.R"a zNW&&8xP_ۻwSS}𡝟s0D'egRB.8 GNd>s,6EbeX9{6QccGN8 ȑB.R[$ N:01QkårQQ !(V(" CA FGE\k(\H9R:v)Hڵk;٬}8;}h} r9 DOfg'ϝ.fN̰g|qk 8E\Sիv_g 8kqGk ^&#/?G| (zHˏ-k2a7f_1dIeooG&Yz}lZ!$ՠR)C:*fƍZ&،k-8N&j61Z#$8 P@_I )e-K++ (j7 D!t?()R2a6ufA Z240,֭i}] tdfdQ.cevHɋsɢK"tkC)W*JV#ɴ 7۬\}L M(HRmםLy7[!>sGYk{cm<ЉS1=f6ܞZZcRbkd4`>V%zǟ}4bFjN! 2`C G)% R$T 7AJJ|;~|PRߌ{As8۶:Y+Y n;ۜ$rm2bZ?^r 0L0k"O )3k-iGZNݾ!%R/qWvu@2MDzqp>xp_AENds75JI9 1DGE͡<8|20DvDd-LEfoQjn,kRiB[}AO>y:qޑ7<{vO<اbk h J%~R1zIBP145B-BۻW,S*Z9UB+WVMkSR)A?ܹu?~͛H_׈DHk 0W3plYV?%tEXtdate:create2013-06-20T11:07:04+02:00I%tEXtdate:modify2013-06-20T11:07:04+02:00tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/icons/hidpi/cut.png0000644000201500020150000000520414517055557025736 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(x IDATXÝ}lU?r}iKmoKY+LhKi{[XL:I e̸MuQ&e2eth:8D"Zh{˽ܗ?n[y$珛{9>_x ]$ Yq]lq]\\B$!_q[AX$Ih>0~4If2dr9,F!,) *Bd:c;ΥdY4"4wܽ{_|#D$lQi'<}UWu(iضa '7ވZg$4$!T` 7ԛL& 6a4/\T~'_[ƲṞgLӧO ު(+;ܻzp\ Hwѫ7LR J`fk}|ޙ\[;hYt߷o60UU9!.֌\6 T+~lihlX]=!( ,#reY}}Ot>j9Bzd IBVU`ݏ? X?x2c-¶mrnْyղ!{<%!< o}L&O[8sTLM ɿB d5k\&ExUaqa뫀z׬(~?B*G|sjdy@$Iu&!KVU .=K% L>jҤMZ<禉ix<j&N$뷊 v{=u)]ǰ& B Kz) D$܎Ųm4N<6cƌw?nR),ˢuummkjQ SUdIB~?ÈiӪ|sN$|[|saѣGΞ=[)-+cf"fMa {a$|u4<f**KV>P0Hc֭@ '`-`,^P(tD"\;9LZa|ݻCC M3aD{{zw7OB8eYd2LwpU^w\w֭[kg͚xpÆ a74%>k1zş0 ~X \ ^Us=Ce$!2[GQlǡ'I@5mNkʾ-/C!iIgpowin[n݈-!G"G|цL&u7 ) x<wy@h-}')opfMsΉmx"{$dN&[ ʀOWj0E_^W1a;置\jNb,%tEXtdate:create2013-06-20T11:07:04+02:00I%tEXtdate:modify2013-06-20T11:07:04+02:00tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/icons/hidpi/copy.png0000644000201500020150000000302614517055557026115 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(x/IDATXÝoe?;3N-^ G.JRܐscZ< ʅDZMA#(bnggnwv'd>~g䷙^ؿ筷Յ:`Eg?fyu8Iֲp1]]J)AkMOo/-,+`&cX ]p-PcV@믷4RVq9r;?? `-8Rl7w鋢H$Gw j><7o?YZ"ذ(O>x'bfg1֦ ݛHg2In18$Aٵo VŋSΟglttR@ I˱c<tbqns<z{wp(N/,],syTk DAI{8cϧ 9Ã֘kl^MxQ yKkϞzҥ)8J myMtJ)n>iAc ٩ɓ<74S,ʖh!VJW,{xBOt)ج 7O`R.1Ƥ2|ZP}z_Si.,LĖ,jQoݶ_޸+WlǩSn"= ΂qLRN9rt_EruDI"$`][/.ji*cgNk勫W4v@xAs%uQt9ccrՆ]޹-N("h<|C.*ӲɜR)?GɋJapps4 t a3<0@qZ7lRwB!9噑J:tHl.R"FGGQ.;GGG$ot? |allj]~W5zzzaB"ֺ$NτaxnۉDŝ<3DDyQF|Ngb^P(\3Kȫ"bR J2=p]$055\%y&:99y5;;yO?,"Kd]}; C J%c{{!\|KSR6} @~mmkqA|HfIn$_(888IEINb jQ%tEXtdate:create2013-07-04T17:03:03+02:00Mx%tEXtdate:modify2013-07-04T17:03:03+02:00<tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/clipboard/icons/copy.png0000644000201500020150000000125414517055557025021 0ustar puckpuckPNG  IHDRabKGD pHYs B(xIDAT8}Qj@ Eϝ%mqCՐutQAe@>B v)vplhl t$]UU9]8sbWcUm[<{@4̊x]HieUUF]m n^.7c 91HibY9Ge8PeY|Ix֒eiFI%q,HI${$a!I& UU][H"ƸErv`9$#!l6kZDu˪%˲1B{OuV /7k-tfy`vb$Wu)瞣m7}k$)ϣ.c֎7 @OfY777ItXޟ\>~? .!H?R5!#_/@%tEXtdate:create2013-07-04T17:03:03+02:00Mx%tEXtdate:modify2013-07-04T17:03:03+02:00<tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/0000755000201500020150000000000014517055560023153 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/filter/0000755000201500020150000000000014517055560024440 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/filter/default.js0000644000201500020150000012747314517055560026440 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ ( function() { var fragmentPrototype = CKEDITOR.htmlParser.fragment.prototype, elementPrototype = CKEDITOR.htmlParser.element.prototype; fragmentPrototype.onlyChild = elementPrototype.onlyChild = function() { var children = this.children, count = children.length, firstChild = ( count == 1 ) && children[ 0 ]; return firstChild || null; }; elementPrototype.removeAnyChildWithName = function( tagName ) { var children = this.children, childs = [], child; for ( var i = 0; i < children.length; i++ ) { child = children[ i ]; if ( !child.name ) continue; if ( child.name == tagName ) { childs.push( child ); children.splice( i--, 1 ); } childs = childs.concat( child.removeAnyChildWithName( tagName ) ); } return childs; }; elementPrototype.getAncestor = function( tagNameRegex ) { var parent = this.parent; while ( parent && !( parent.name && parent.name.match( tagNameRegex ) ) ) parent = parent.parent; return parent; }; fragmentPrototype.firstChild = elementPrototype.firstChild = function( evaluator ) { var child; for ( var i = 0; i < this.children.length; i++ ) { child = this.children[ i ]; if ( evaluator( child ) ) return child; else if ( child.name ) { child = child.firstChild( evaluator ); if ( child ) return child; } } return null; }; // Adding a (set) of styles to the element's 'style' attributes. elementPrototype.addStyle = function( name, value, isPrepend ) { var styleText, addingStyleText = ''; // name/value pair. if ( typeof value == 'string' ) addingStyleText += name + ':' + value + ';'; else { // style literal. if ( typeof name == 'object' ) { for ( var style in name ) { if ( name.hasOwnProperty( style ) ) addingStyleText += style + ':' + name[ style ] + ';'; } } // raw style text form. else { addingStyleText += name; } isPrepend = value; } if ( !this.attributes ) this.attributes = {}; styleText = this.attributes.style || ''; styleText = ( isPrepend ? [ addingStyleText, styleText ] : [ styleText, addingStyleText ] ).join( ';' ); this.attributes.style = styleText.replace( /^;+|;(?=;)/g, '' ); }; // Retrieve a style property value of the element. elementPrototype.getStyle = function( name ) { var styles = this.attributes.style; if ( styles ) { styles = CKEDITOR.tools.parseCssText( styles, 1 ); return styles[ name ]; } }; /** * Return the DTD-valid parent tag names of the specified one. * * @member CKEDITOR.dtd * @param {String} tagName * @returns {Object} */ CKEDITOR.dtd.parentOf = function( tagName ) { var result = {}; for ( var tag in this ) { if ( tag.indexOf( '$' ) == -1 && this[ tag ][ tagName ] ) result[ tag ] = 1; } return result; }; // 1. move consistent list item styles up to list root. // 2. clear out unnecessary list item numbering. function postProcessList( list ) { var children = list.children, child, attrs, count = list.children.length, match, mergeStyle, styleTypeRegexp = /list-style-type:(.*?)(?:;|$)/, stylesFilter = CKEDITOR.plugins.pastefromword.filters.stylesFilter; attrs = list.attributes; if ( styleTypeRegexp.exec( attrs.style ) ) return; for ( var i = 0; i < count; i++ ) { child = children[ i ]; if ( child.attributes.value && Number( child.attributes.value ) == i + 1 ) delete child.attributes.value; match = styleTypeRegexp.exec( child.attributes.style ); if ( match ) { if ( match[ 1 ] == mergeStyle || !mergeStyle ) mergeStyle = match[ 1 ]; else { mergeStyle = null; break; } } } if ( mergeStyle ) { for ( i = 0; i < count; i++ ) { attrs = children[ i ].attributes; attrs.style && ( attrs.style = stylesFilter( [ [ 'list-style-type' ] ] )( attrs.style ) || '' ); } list.addStyle( 'list-style-type', mergeStyle ); } } var emptyMarginRegex = /^(?:\b0[^\s]*\s*){1,4}$/; // e.g. 0px 0pt 0px var romanLiternalPattern = '^m{0,4}(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})$', lowerRomanLiteralRegex = new RegExp( romanLiternalPattern ), upperRomanLiteralRegex = new RegExp( romanLiternalPattern.toUpperCase() ); var orderedPatterns = { 'decimal': /\d+/, 'lower-roman': lowerRomanLiteralRegex, 'upper-roman': upperRomanLiteralRegex, 'lower-alpha': /^[a-z]+$/, 'upper-alpha': /^[A-Z]+$/ }, unorderedPatterns = { 'disc': /[l\u00B7\u2002]/, 'circle': /[\u006F\u00D8]/, 'square': /[\u006E\u25C6]/ }, listMarkerPatterns = { 'ol': orderedPatterns, 'ul': unorderedPatterns }, romans = [ [ 1000, 'M' ], [ 900, 'CM' ], [ 500, 'D' ], [ 400, 'CD' ], [ 100, 'C' ], [ 90, 'XC' ], [ 50, 'L' ], [ 40, 'XL' ], [ 10, 'X' ], [ 9, 'IX' ], [ 5, 'V' ], [ 4, 'IV' ], [ 1, 'I' ] ], alpahbets = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; // Convert roman numbering back to decimal. function fromRoman( str ) { str = str.toUpperCase(); var l = romans.length, retVal = 0; for ( var i = 0; i < l; ++i ) { for ( var j = romans[ i ], k = j[ 1 ].length; str.substr( 0, k ) == j[ 1 ]; str = str.substr( k ) ) retVal += j[ 0 ]; } return retVal; } // Convert alphabet numbering back to decimal. function fromAlphabet( str ) { str = str.toUpperCase(); var l = alpahbets.length, retVal = 1; for ( var x = 1; str.length > 0; x *= l ) { retVal += alpahbets.indexOf( str.charAt( str.length - 1 ) ) * x; str = str.substr( 0, str.length - 1 ); } return retVal; } var listBaseIndent = 0, previousListItemMargin = null, previousListId; var plugin = ( CKEDITOR.plugins.pastefromword = { utils: { // Create a which indicate an list item type. createListBulletMarker: function( bullet, bulletText ) { var marker = new CKEDITOR.htmlParser.element( 'cke:listbullet' ); marker.attributes = { 'cke:listsymbol': bullet[ 0 ] }; marker.add( new CKEDITOR.htmlParser.text( bulletText ) ); return marker; }, isListBulletIndicator: function( element ) { var styleText = element.attributes && element.attributes.style; if ( /mso-list\s*:\s*Ignore/i.test( styleText ) ) return true; }, isContainingOnlySpaces: function( element ) { var text; return ( ( text = element.onlyChild() ) && ( /^(:?\s| )+$/ ).test( text.value ) ); }, resolveList: function( element ) { // indicate a list item. var attrs = element.attributes, listMarker; if ( ( listMarker = element.removeAnyChildWithName( 'cke:listbullet' ) ) && listMarker.length && ( listMarker = listMarker[ 0 ] ) ) { element.name = 'cke:li'; if ( attrs.style ) { attrs.style = plugin.filters.stylesFilter( [ // Text-indent is not representing list item level any more. [ 'text-indent' ], [ 'line-height' ], // First attempt is to resolve indent level from on a constant margin increment. [ ( /^margin(:?-left)?$/ ), null, function( margin ) { // Deal with component/short-hand form. var values = margin.split( ' ' ); margin = CKEDITOR.tools.convertToPx( values[ 3 ] || values[ 1 ] || values[ 0 ] ); // Figure out the indent unit by checking the first time of incrementation. if ( !listBaseIndent && previousListItemMargin !== null && margin > previousListItemMargin ) listBaseIndent = margin - previousListItemMargin; previousListItemMargin = margin; attrs[ 'cke:indent' ] = listBaseIndent && ( Math.ceil( margin / listBaseIndent ) + 1 ) || 1; } ], // The best situation: "mso-list:l0 level1 lfo2" tells the belonged list root, list item indentation, etc. [ ( /^mso-list$/ ), null, function( val ) { val = val.split( ' ' ); // Ignore values like "mso-list:Ignore". (FF #11976) if ( val.length < 2 ) { return; } var listId = Number( val[ 0 ].match( /\d+/ ) ), indent = Number( val[ 1 ].match( /\d+/ ) ); if ( indent == 1 ) { listId !== previousListId && ( attrs[ 'cke:reset' ] = 1 ); previousListId = listId; } attrs[ 'cke:indent' ] = indent; } ] ] )( attrs.style, element ) || ''; } // First level list item might be presented without a margin. // In case all above doesn't apply. if ( !attrs[ 'cke:indent' ] ) { previousListItemMargin = 0; attrs[ 'cke:indent' ] = 1; } // Inherit attributes from bullet. CKEDITOR.tools.extend( attrs, listMarker.attributes ); return true; } // Current list disconnected. else { previousListId = previousListItemMargin = listBaseIndent = null; } return false; }, // Providing a shorthand style then retrieve one or more style component values. getStyleComponents: ( function() { var calculator = CKEDITOR.dom.element.createFromHtml( '
', CKEDITOR.document ); CKEDITOR.document.getBody().append( calculator ); return function( name, styleValue, fetchList ) { calculator.setStyle( name, styleValue ); var styles = {}, count = fetchList.length; for ( var i = 0; i < count; i++ ) styles[ fetchList[ i ] ] = calculator.getStyle( fetchList[ i ] ); return styles; }; } )(), listDtdParents: CKEDITOR.dtd.parentOf( 'ol' ) }, filters: { // Transform a normal list into flat list items only presentation. // E.g.
  • level1
    1. level2
  • => // level1 // level2 flattenList: function( element, level ) { level = typeof level == 'number' ? level : 1; var attrs = element.attributes, listStyleType; // All list items are of the same type. switch ( attrs.type ) { case 'a': listStyleType = 'lower-alpha'; break; case '1': listStyleType = 'decimal'; break; // TODO: Support more list style type from MS-Word. } var children = element.children, child; for ( var i = 0; i < children.length; i++ ) { child = children[ i ]; if ( child.name in CKEDITOR.dtd.$listItem ) { var attributes = child.attributes, listItemChildren = child.children, count = listItemChildren.length, first = listItemChildren[ 0 ], last = listItemChildren[ count - 1 ]; // Converts
  • {...}

  • ->
  • {...}
  • . // The above format is what we got when pasting from Word 2010 to IE11 and possibly some others. // Existence of extra

    tag that can be later recognized as list item (see #getRules.return.elements.p) // creates incorrect and problematic structures similar to {...}. (#11376) if ( first.attributes && first.attributes.style && first.attributes.style.indexOf( 'mso-list' ) > -1 ) { child.attributes.style = first.attributes.style; first.replaceWithChildren(); } // Move out nested list. if ( last.name in CKEDITOR.dtd.$list ) { element.add( last, i + 1 ); // Remove the parent list item if it's just a holder. if ( !--listItemChildren.length ) children.splice( i--, 1 ); } child.name = 'cke:li'; // Inherit numbering from list root on the first list item. attrs.start && !i && ( attributes.value = attrs.start ); plugin.filters.stylesFilter( [ [ 'tab-stops', null, function( val ) { // val = [left|center|right|decimal] Source: W3C, WD-tabs-970117. // In some cases the first word is missing - hence the square brackets. var margin = val.match( /0$|\d+\.?\d*\w+/ ); margin && ( previousListItemMargin = CKEDITOR.tools.convertToPx( margin[ 0 ] ) ); } ], ( level == 1 ? [ 'mso-list', null, function( val ) { val = val.split( ' ' ); var listId = Number( val[ 0 ].match( /\d+/ ) ); listId !== previousListId && ( attributes[ 'cke:reset' ] = 1 ); previousListId = listId; } ] : null ) ] )( attributes.style ); attributes[ 'cke:indent' ] = level; attributes[ 'cke:listtype' ] = element.name; attributes[ 'cke:list-style-type' ] = listStyleType; } // Flatten sub list. else if ( child.name in CKEDITOR.dtd.$list ) { // Absorb sub list children. arguments.callee.apply( this, [ child, level + 1 ] ); children = children.slice( 0, i ).concat( child.children ).concat( children.slice( i + 1 ) ); element.children = []; for ( var j = 0, num = children.length; j < num; j++ ) element.add( children[ j ] ); children = element.children; } } delete element.name; // We're loosing tag name here, signalize this element as a list. attrs[ 'cke:list' ] = 1; }, // Try to collect all list items among the children and establish one // or more HTML list structures for them. // @param element assembleList: function( element ) { var children = element.children, child, listItem, // The current processing cke:li element. listItemAttrs, listItemIndent, // Indent level of current list item. lastIndent, lastListItem, // The previous one just been added to the list. list, // Current staging list and it's parent list if any. openedLists = [], previousListStyleType, previousListType; // Properties of the list item are to be resolved from the list bullet. var bullet, listType, listStyleType, itemNumeric; for ( var i = 0; i < children.length; i++ ) { child = children[ i ]; if ( child.name == 'cke:li' ) { child.name = 'li'; listItem = child; listItemAttrs = listItem.attributes; bullet = listItemAttrs[ 'cke:listsymbol' ]; bullet = bullet && bullet.match( /^(?:[(]?)([^\s]+?)([.)]?)$/ ); listType = listStyleType = itemNumeric = null; if ( listItemAttrs[ 'cke:ignored' ] ) { children.splice( i--, 1 ); continue; } // This's from a new list root. listItemAttrs[ 'cke:reset' ] && ( list = lastIndent = lastListItem = null ); // List item indent level might come from a real list indentation or // been resolved from a pseudo list item's margin value, even get // no indentation at all. listItemIndent = Number( listItemAttrs[ 'cke:indent' ] ); // We're moving out of the current list, cleaning up. if ( listItemIndent != lastIndent ) previousListType = previousListStyleType = null; // List type and item style are already resolved. if ( !bullet ) { listType = listItemAttrs[ 'cke:listtype' ] || 'ol'; listStyleType = listItemAttrs[ 'cke:list-style-type' ]; } else { // Probably share the same list style type with previous list item, // give it priority to avoid ambiguous between C(Alpha) and C.(Roman). if ( previousListType && listMarkerPatterns[ previousListType ][ previousListStyleType ].test( bullet[ 1 ] ) ) { listType = previousListType; listStyleType = previousListStyleType; } else { for ( var type in listMarkerPatterns ) { for ( var style in listMarkerPatterns[ type ] ) { if ( listMarkerPatterns[ type ][ style ].test( bullet[ 1 ] ) ) { // Small numbering has higher priority, when dealing with ambiguous // between C(Alpha) and C.(Roman). if ( type == 'ol' && ( /alpha|roman/ ).test( style ) ) { var num = /roman/.test( style ) ? fromRoman( bullet[ 1 ] ) : fromAlphabet( bullet[ 1 ] ); if ( !itemNumeric || num < itemNumeric ) { itemNumeric = num; listType = type; listStyleType = style; } } else { listType = type; listStyleType = style; break; } } } } } // Simply use decimal/disc for the rest forms of unrepresentable // numerals, e.g. Chinese..., but as long as there a second part // included, it has a bigger chance of being a order list ;) !listType && ( listType = bullet[ 2 ] ? 'ol' : 'ul' ); } previousListType = listType; previousListStyleType = listStyleType || ( listType == 'ol' ? 'decimal' : 'disc' ); if ( listStyleType && listStyleType != ( listType == 'ol' ? 'decimal' : 'disc' ) ) listItem.addStyle( 'list-style-type', listStyleType ); // Figure out start numbering. if ( listType == 'ol' && bullet ) { switch ( listStyleType ) { case 'decimal': itemNumeric = Number( bullet[ 1 ] ); break; case 'lower-roman': case 'upper-roman': itemNumeric = fromRoman( bullet[ 1 ] ); break; case 'lower-alpha': case 'upper-alpha': itemNumeric = fromAlphabet( bullet[ 1 ] ); break; } // Always create the numbering, swipe out unnecessary ones later. listItem.attributes.value = itemNumeric; } // Start the list construction. if ( !list ) { openedLists.push( list = new CKEDITOR.htmlParser.element( listType ) ); list.add( listItem ); children[ i ] = list; } else { if ( listItemIndent > lastIndent ) { openedLists.push( list = new CKEDITOR.htmlParser.element( listType ) ); list.add( listItem ); lastListItem.add( list ); } else if ( listItemIndent < lastIndent ) { // There might be a negative gap between two list levels. (#4944) var diff = lastIndent - listItemIndent, parent; while ( diff-- && ( parent = list.parent ) ) list = parent.parent; list.add( listItem ); } else { list.add( listItem ); } children.splice( i--, 1 ); } lastListItem = listItem; lastIndent = listItemIndent; } else if ( list ) { list = lastIndent = lastListItem = null; } } for ( i = 0; i < openedLists.length; i++ ) postProcessList( openedLists[ i ] ); list = lastIndent = lastListItem = previousListId = previousListItemMargin = listBaseIndent = null; }, // A simple filter which always rejecting. falsyFilter: function() { return false; }, // A filter dedicated on the 'style' attribute filtering, e.g. dropping/replacing style properties. // @param styles {Array} in form of [ styleNameRegexp, styleValueRegexp, // newStyleValue/newStyleGenerator, newStyleName ] where only the first // parameter is mandatory. // @param whitelist {Boolean} Whether the {@param styles} will be considered as a white-list. stylesFilter: function( styles, whitelist ) { return function( styleText, element ) { var rules = []; // html-encoded quote might be introduced by 'font-family' // from MS-Word which confused the following regexp. e.g. //'font-family: "Lucida, Console"' ( styleText || '' ).replace( /"/g, '"' ).replace( /\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g, function( match, name, value ) { name = name.toLowerCase(); name == 'font-family' && ( value = value.replace( /["']/g, '' ) ); var namePattern, valuePattern, newValue, newName; for ( var i = 0; i < styles.length; i++ ) { if ( styles[ i ] ) { namePattern = styles[ i ][ 0 ]; valuePattern = styles[ i ][ 1 ]; newValue = styles[ i ][ 2 ]; newName = styles[ i ][ 3 ]; if ( name.match( namePattern ) && ( !valuePattern || value.match( valuePattern ) ) ) { name = newName || name; whitelist && ( newValue = newValue || value ); if ( typeof newValue == 'function' ) newValue = newValue( value, element, name ); // Return an couple indicate both name and value // changed. if ( newValue && newValue.push ) name = newValue[ 0 ], newValue = newValue[ 1 ]; if ( typeof newValue == 'string' ) rules.push( [ name, newValue ] ); return; } } } !whitelist && rules.push( [ name, value ] ); } ); for ( var i = 0; i < rules.length; i++ ) rules[ i ] = rules[ i ].join( ':' ); return rules.length ? ( rules.join( ';' ) + ';' ) : false; }; }, // Migrate the element by decorate styles on it. // @param styleDefinition // @param variables elementMigrateFilter: function( styleDefinition, variables ) { return styleDefinition ? function( element ) { var styleDef = variables ? new CKEDITOR.style( styleDefinition, variables )._.definition : styleDefinition; element.name = styleDef.element; CKEDITOR.tools.extend( element.attributes, CKEDITOR.tools.clone( styleDef.attributes ) ); element.addStyle( CKEDITOR.style.getStyleText( styleDef ) ); // Mark style classes as allowed so they will not be filtered out (#12256). if ( styleDef.attributes && styleDef.attributes[ 'class' ] ) { element.classWhiteList = ' ' + styleDef.attributes[ 'class' ] + ' '; } } : function() {}; }, // Migrate styles by creating a new nested stylish element. // @param styleDefinition styleMigrateFilter: function( styleDefinition, variableName ) { var elementMigrateFilter = this.elementMigrateFilter; return styleDefinition ? function( value, element ) { // Build an stylish element first. var styleElement = new CKEDITOR.htmlParser.element( null ), variables = {}; variables[ variableName ] = value; elementMigrateFilter( styleDefinition, variables )( styleElement ); // Place the new element inside the existing span. styleElement.children = element.children; element.children = [ styleElement ]; // #10285 - later on styleElement will replace element if element won't have any attributes. // However, in some cases styleElement is identical to element and therefore should not be filtered // to avoid inf loop. Unfortunately calling element.filterChildren() does not prevent from that (#10327). // However, we can assume that we don't need to filter styleElement at all, so it is safe to replace // its filter method. styleElement.filter = function() {}; styleElement.parent = element; } : function() {}; }, // A filter which remove cke-namespaced-attribute on // all none-cke-namespaced elements. // @param value // @param element bogusAttrFilter: function( value, element ) { if ( element.name.indexOf( 'cke:' ) == -1 ) return false; }, // A filter which will be used to apply inline css style according the stylesheet // definition rules, is generated lazily when filtering. applyStyleFilter: null }, getRules: function( editor, filter ) { var dtd = CKEDITOR.dtd, blockLike = CKEDITOR.tools.extend( {}, dtd.$block, dtd.$listItem, dtd.$tableContent ), config = editor.config, filters = this.filters, falsyFilter = filters.falsyFilter, stylesFilter = filters.stylesFilter, elementMigrateFilter = filters.elementMigrateFilter, styleMigrateFilter = CKEDITOR.tools.bind( this.filters.styleMigrateFilter, this.filters ), createListBulletMarker = this.utils.createListBulletMarker, flattenList = filters.flattenList, assembleList = filters.assembleList, isListBulletIndicator = this.utils.isListBulletIndicator, containsNothingButSpaces = this.utils.isContainingOnlySpaces, resolveListItem = this.utils.resolveList, convertToPx = function( value ) { value = CKEDITOR.tools.convertToPx( value ); return isNaN( value ) ? value : value + 'px'; }, getStyleComponents = this.utils.getStyleComponents, listDtdParents = this.utils.listDtdParents, removeFontStyles = config.pasteFromWordRemoveFontStyles !== false, removeStyles = config.pasteFromWordRemoveStyles !== false; return { elementNames: [ // Remove script, meta and link elements. [ ( /meta|link|script/ ), '' ] ], root: function( element ) { element.filterChildren( filter ); assembleList( element ); }, elements: { '^': function( element ) { // Transform CSS style declaration to inline style. var applyStyleFilter; if ( CKEDITOR.env.gecko && ( applyStyleFilter = filters.applyStyleFilter ) ) applyStyleFilter( element ); }, $: function( element ) { var tagName = element.name || '', attrs = element.attributes; // Convert length unit of width/height on blocks to // a more editor-friendly way (px). if ( tagName in blockLike && attrs.style ) attrs.style = stylesFilter( [ [ ( /^(:?width|height)$/ ), null, convertToPx ] ] )( attrs.style ) || ''; // Processing headings. if ( tagName.match( /h\d/ ) ) { element.filterChildren( filter ); // Is the heading actually a list item? if ( resolveListItem( element ) ) return; // Adapt heading styles to editor's convention. elementMigrateFilter( config[ 'format_' + tagName ] )( element ); } // Remove inline elements which contain only empty spaces. else if ( tagName in dtd.$inline ) { element.filterChildren( filter ); if ( containsNothingButSpaces( element ) ) delete element.name; } // Remove element with ms-office namespace, // with it's content preserved, e.g. 'o:p'. else if ( tagName.indexOf( ':' ) != -1 && tagName.indexOf( 'cke' ) == -1 ) { element.filterChildren( filter ); // Restore image real link from vml. if ( tagName == 'v:imagedata' ) { var href = element.attributes[ 'o:href' ]; if ( href ) element.attributes.src = href; element.name = 'img'; return; } delete element.name; } // Assembling list items into a whole list. if ( tagName in listDtdParents ) { element.filterChildren( filter ); assembleList( element ); } }, // We'll drop any style sheet, but Firefox conclude // certain styles in a single style element, which are // required to be changed into inline ones. 'style': function( element ) { if ( CKEDITOR.env.gecko ) { // Grab only the style definition section. var styleDefSection = element.onlyChild().value.match( /\/\* Style Definitions \*\/([\s\S]*?)\/\*/ ), styleDefText = styleDefSection && styleDefSection[ 1 ], rules = {}; // Storing the parsed result. if ( styleDefText ) { styleDefText // Remove line-breaks. .replace( /[\n\r]/g, '' ) // Extract selectors and style properties. .replace( /(.+?)\{(.+?)\}/g, function( rule, selectors, styleBlock ) { selectors = selectors.split( ',' ); var length = selectors.length; for ( var i = 0; i < length; i++ ) { // Assume MS-Word mostly generate only simple // selector( [Type selector][Class selector]). CKEDITOR.tools.trim( selectors[ i ] ).replace( /^(\w+)(\.[\w-]+)?$/g, function( match, tagName, className ) { tagName = tagName || '*'; className = className.substring( 1, className.length ); // Reject MS-Word Normal styles. if ( className.match( /MsoNormal/ ) ) return; if ( !rules[ tagName ] ) rules[ tagName ] = {}; if ( className ) rules[ tagName ][ className ] = styleBlock; else rules[ tagName ] = styleBlock; } ); } } ); filters.applyStyleFilter = function( element ) { var name = rules[ '*' ] ? '*' : element.name, className = element.attributes && element.attributes[ 'class' ], style; if ( name in rules ) { style = rules[ name ]; if ( typeof style == 'object' ) style = style[ className ]; // Maintain style rules priorities. style && element.addStyle( style, true ); } }; } } return false; }, 'p': function( element ) { // A a fall-back approach to resolve list item in browsers // that doesn't include "mso-list:Ignore" on list bullets, // note it's not perfect as not all list style (e.g. "heading list") is shipped // with this pattern. (#6662) if ( ( /MsoListParagraph/i ).exec( element.attributes[ 'class' ] ) || ( element.getStyle( 'mso-list' ) && !element.getStyle( 'mso-list' ).match( /^(none|skip)$/i ) ) ) { var bulletText = element.firstChild( function( node ) { return node.type == CKEDITOR.NODE_TEXT && !containsNothingButSpaces( node.parent ); } ); var bullet = bulletText && bulletText.parent; if ( bullet ) bullet.addStyle( 'mso-list', 'Ignore' ); } element.filterChildren( filter ); // Is the paragraph actually a list item? if ( resolveListItem( element ) ) return; // Adapt paragraph formatting to editor's convention // according to enter-mode. if ( config.enterMode == CKEDITOR.ENTER_BR ) { // We suffer from attribute/style lost in this situation. delete element.name; element.add( new CKEDITOR.htmlParser.element( 'br' ) ); } else { elementMigrateFilter( config[ 'format_' + ( config.enterMode == CKEDITOR.ENTER_P ? 'p' : 'div' ) ] )( element ); } }, 'div': function( element ) { // Aligned table with no text surrounded is represented by a wrapper div, from which // table cells inherit as text-align styles, which is wrong. // Instead we use a clear-float div after the table to properly achieve the same layout. var singleChild = element.onlyChild(); if ( singleChild && singleChild.name == 'table' ) { var attrs = element.attributes; singleChild.attributes = CKEDITOR.tools.extend( singleChild.attributes, attrs ); attrs.style && singleChild.addStyle( attrs.style ); var clearFloatDiv = new CKEDITOR.htmlParser.element( 'div' ); clearFloatDiv.addStyle( 'clear', 'both' ); element.add( clearFloatDiv ); delete element.name; } }, 'td': function( element ) { // 'td' in 'thead' is actually . if ( element.getAncestor( 'thead' ) ) element.name = 'th'; }, // MS-Word sometimes present list as a mixing of normal list // and pseudo-list, normalize the previous ones into pseudo form. 'ol': flattenList, 'ul': flattenList, 'dl': flattenList, 'font': function( element ) { // Drop the font tag if it comes from list bullet text. if ( isListBulletIndicator( element.parent ) ) { delete element.name; return; } element.filterChildren( filter ); var attrs = element.attributes, styleText = attrs.style, parent = element.parent; if ( parent.name == 'font' ) { // Merge nested tags. CKEDITOR.tools.extend( parent.attributes, element.attributes ); styleText && parent.addStyle( styleText ); delete element.name; } // Convert the merged into a span with all attributes preserved. else { // Use array to avoid string concatenation and get rid of problems with trailing ";" (#12243). styleText = ( styleText || '' ).split( ';' ); // IE's having those deprecated attributes, normalize them. if ( attrs.color ) { if ( attrs.color != '#000000' ) styleText.push( 'color:' + attrs.color ); delete attrs.color; } if ( attrs.face ) { styleText.push( 'font-family:' + attrs.face ); delete attrs.face; } // TODO: Mapping size in ranges of xx-small, // x-small, small, medium, large, x-large, xx-large. if ( attrs.size ) { styleText.push( 'font-size:' + ( attrs.size > 3 ? 'large' : ( attrs.size < 3 ? 'small' : 'medium' ) ) ); delete attrs.size; } element.name = 'span'; element.addStyle( styleText.join( ';' ) ); } }, 'span': function( element ) { // Remove the span if it comes from list bullet text. if ( isListBulletIndicator( element.parent ) ) return false; element.filterChildren( filter ); if ( containsNothingButSpaces( element ) ) { delete element.name; return null; } // List item bullet type is supposed to be indicated by // the text of a span with style 'mso-list : Ignore' or an image. if ( isListBulletIndicator( element ) ) { var listSymbolNode = element.firstChild( function( node ) { return node.value || node.name == 'img'; } ); var listSymbol = listSymbolNode && ( listSymbolNode.value || 'l.' ), listType = listSymbol && listSymbol.match( /^(?:[(]?)([^\s]+?)([.)]?)$/ ); if ( listType ) { var marker = createListBulletMarker( listType, listSymbol ); // Some non-existed list items might be carried by an inconsequential list, indicate by "mso-hide:all/display:none", // those are to be removed later, now mark it with "cke:ignored". var ancestor = element.getAncestor( 'span' ); if ( ancestor && ( / mso-hide:\s*all|display:\s*none / ).test( ancestor.attributes.style ) ) marker.attributes[ 'cke:ignored' ] = 1; return marker; } } // Update the src attribute of image element with href. var attrs = element.attributes, styleText = attrs && attrs.style; // Assume MS-Word mostly carry font related styles on , // adapting them to editor's convention. if ( styleText ) { attrs.style = stylesFilter( [ // Drop 'inline-height' style which make lines overlapping. [ 'line-height' ], [ ( /^font-family$/ ), null, !removeFontStyles ? styleMigrateFilter( config.font_style, 'family' ) : null ], [ ( /^font-size$/ ), null, !removeFontStyles ? styleMigrateFilter( config.fontSize_style, 'size' ) : null ], [ ( /^color$/ ), null, !removeFontStyles ? styleMigrateFilter( config.colorButton_foreStyle, 'color' ) : null ], [ ( /^background-color$/ ), null, !removeFontStyles ? styleMigrateFilter( config.colorButton_backStyle, 'color' ) : null ] ] )( styleText, element ) || ''; } if ( !attrs.style ) delete attrs.style; if ( CKEDITOR.tools.isEmpty( attrs ) ) delete element.name; return null; }, // Migrate basic style formats to editor configured ones. b: elementMigrateFilter( config.coreStyles_bold ), i: elementMigrateFilter( config.coreStyles_italic ), u: elementMigrateFilter( config.coreStyles_underline ), s: elementMigrateFilter( config.coreStyles_strike ), sup: elementMigrateFilter( config.coreStyles_superscript ), sub: elementMigrateFilter( config.coreStyles_subscript ), // Remove full paths from links to anchors. a: function( element ) { var attrs = element.attributes; if ( attrs.name && attrs.name.match( /ole_link\d+/i ) ) { delete element.name; return; } if ( attrs.href && attrs.href.match( /^file:\/\/\/[\S]+#/i ) ) attrs.href = attrs.href.replace( /^file:\/\/\/[^#]+/i, '' ); }, 'cke:listbullet': function( element ) { if ( element.getAncestor( /h\d/ ) && !config.pasteFromWordNumberedHeadingToList ) delete element.name; } }, attributeNames: [ // Remove onmouseover and onmouseout events (from MS Word comments effect) [ ( /^onmouse(:?out|over)/ ), '' ], // Onload on image element. [ ( /^onload$/ ), '' ], // Remove office and vml attribute from elements. [ ( /(?:v|o):\w+/ ), '' ], // Remove lang/language attributes. [ ( /^lang/ ), '' ] ], attributes: { 'style': stylesFilter( removeStyles ? // Provide a white-list of styles that we preserve, those should // be the ones that could later be altered with editor tools. [ // Leave list-style-type [ ( /^list-style-type$/ ), null ], // Preserve margin-left/right which used as default indent style in the editor. [ ( /^margin$|^margin-(?!bottom|top)/ ), null, function( value, element, name ) { if ( element.name in { p: 1, div: 1 } ) { var indentStyleName = config.contentsLangDirection == 'ltr' ? 'margin-left' : 'margin-right'; // Extract component value from 'margin' shorthand. if ( name == 'margin' ) value = getStyleComponents( name, value, [ indentStyleName ] )[ indentStyleName ]; else if ( name != indentStyleName ) return null; if ( value && !emptyMarginRegex.test( value ) ) return [ indentStyleName, value ]; } return null; } ], // Preserve clear float style. [ ( /^clear$/ ) ], [ ( /^border.*|margin.*|vertical-align|float$/ ), null, function( value, element ) { if ( element.name == 'img' ) return value; } ], [ ( /^width|height$/ ), null, function( value, element ) { if ( element.name in { table: 1, td: 1, th: 1, img: 1 } ) return value; } ] ] : // Otherwise provide a black-list of styles that we remove. [ [ ( /^mso-/ ) ], // Fixing color values. [ ( /-color$/ ), null, function( value ) { if ( value == 'transparent' ) return false; if ( CKEDITOR.env.gecko ) return value.replace( /-moz-use-text-color/g, 'transparent' ); } ], // Remove empty margin values, e.g. 0.00001pt 0em 0pt [ ( /^margin$/ ), emptyMarginRegex ], [ 'text-indent', '0cm' ], [ 'page-break-before' ], [ 'tab-stops' ], [ 'display', 'none' ], removeFontStyles ? [ ( /font-?/ ) ] : null ], removeStyles ), // Prefer width styles over 'width' attributes. 'width': function( value, element ) { if ( element.name in dtd.$tableContent ) return false; }, // Prefer border styles over table 'border' attributes. 'border': function( value, element ) { if ( element.name in dtd.$tableContent ) return false; }, // Only Firefox carry style sheet from MS-Word, which // will be applied by us manually. For other browsers // the css className is useless. // We need to keep classes added as a style (#12256). 'class': function( value, element ) { if ( element.classWhiteList && element.classWhiteList.indexOf( ' ' + value + ' ' ) != -1 ) { return value; } return false; }, // MS-Word always generate 'background-color' along with 'bgcolor', // simply drop the deprecated attributes. 'bgcolor': falsyFilter, // Deprecate 'valign' attribute in favor of 'vertical-align'. 'valign': removeStyles ? falsyFilter : function( value, element ) { element.addStyle( 'vertical-align', value ); return false; } }, // Fore none-IE, some useful data might be buried under these IE-conditional // comments where RegExp were the right approach to dig them out where usual approach // is transform it into a fake element node which hold the desired data. comment: !CKEDITOR.env.ie ? function( value, node ) { var imageInfo = value.match( // ), listInfo = value.match( /^\[if !supportLists\]([\s\S]*?)\[endif\]$/ ); // Seek for list bullet indicator. if ( listInfo ) { // Bullet symbol could be either text or an image. var listSymbol = listInfo[ 1 ] || ( imageInfo && 'l.' ), listType = listSymbol && listSymbol.match( />(?:[(]?)([^\s]+?)([.)]?) element in conditional comments for Firefox. if ( CKEDITOR.env.gecko && imageInfo ) { var img = CKEDITOR.htmlParser.fragment.fromHtml( imageInfo[ 0 ] ).children[ 0 ], previousComment = node.previous, // Try to dig the real image link from vml markup from previous comment text. imgSrcInfo = previousComment && previousComment.value.match( /]*o:href=['"](.*?)['"]/ ), imgSrc = imgSrcInfo && imgSrcInfo[ 1 ]; // Is there a real 'src' url to be used? imgSrc && ( img.attributes.src = imgSrc ); return img; } return false; } : falsyFilter }; } } ); // The paste processor here is just a reduced copy of html data processor. var pasteProcessor = function() { this.dataFilter = new CKEDITOR.htmlParser.filter(); }; pasteProcessor.prototype = { toHtml: function( data ) { var fragment = CKEDITOR.htmlParser.fragment.fromHtml( data ), writer = new CKEDITOR.htmlParser.basicWriter(); fragment.writeHtml( writer, this.dataFilter ); return writer.getHtml( true ); } }; CKEDITOR.cleanWord = function( data, editor ) { // We get and when we started using `dataTransfer` instead of pasteBin, so we need to // change to and to . data = data.replace( //g, '' ); // Firefox will be confused by those downlevel-revealed IE conditional // comments, fixing them first( convert it to upperlevel-revealed one ). // e.g. ... if ( CKEDITOR.env.gecko ) data = data.replace( /(([\S\s]*?))/gi, '$1$2$3' ); // #9456 - Webkit doesn't wrap list number with span, which is crucial for filter to recognize list. // //

    // // 3.       // Test3 //

    // // Transform to: // //

    // // // 3.       // // Test3 //

    if ( CKEDITOR.env.webkit ) data = data.replace( /(class="MsoListParagraph[^>]+>)([^<]+)()/gi, '$1$2$3' ); var dataProcessor = new pasteProcessor(), dataFilter = dataProcessor.dataFilter; // These rules will have higher priorities than default ones. dataFilter.addRules( CKEDITOR.plugins.pastefromword.getRules( editor, dataFilter ) ); // Allow extending data filter rules. editor.fire( 'beforeCleanWord', { filter: dataFilter } ); try { data = dataProcessor.toHtml( data ); } catch ( e ) { editor.showNotification( editor.lang.pastefromword.error ); } // Below post processing those things that are unable to delivered by filter rules. // Remove 'cke' namespaced attribute used in filter rules as marker. data = data.replace( /cke:.*?".*?"/g, '' ); // Remove empty style attribute. data = data.replace( /style=""/g, '' ); // Remove the dummy spans ( having no inline style ). data = data.replace( //g, '' ); return data; }; } )(); /** * Whether to ignore all font related formatting styles, including: * * * font size; * * font family; * * font foreground/background color. * * config.pasteFromWordRemoveFontStyles = false; * * @since 3.1 * @cfg {Boolean} [pasteFromWordRemoveFontStyles=true] * @member CKEDITOR.config */ /** * Whether to transform MS Word outline numbered headings into lists. * * config.pasteFromWordNumberedHeadingToList = true; * * @since 3.1 * @cfg {Boolean} [pasteFromWordNumberedHeadingToList=false] * @member CKEDITOR.config */ /** * Whether to remove element styles that can't be managed with the editor. Note * that this doesn't handle the font specific styles, which depends on the * {@link #pasteFromWordRemoveFontStyles} setting instead. * * config.pasteFromWordRemoveStyles = false; * * @since 3.1 * @cfg {Boolean} [pasteFromWordRemoveStyles=true] * @member CKEDITOR.config */ rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/plugin.js0000755000201500020150000001224214517055560025013 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ ( function() { CKEDITOR.plugins.add( 'pastefromword', { requires: 'clipboard', // jscs:disable maximumLineLength lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en,en-au,en-ca,en-gb,eo,es,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% // jscs:enable maximumLineLength icons: 'pastefromword,pastefromword-rtl', // %REMOVE_LINE_CORE% hidpi: true, // %REMOVE_LINE_CORE% init: function( editor ) { var commandName = 'pastefromword', // Flag indicate this command is actually been asked instead of a generic pasting. forceFromWord = 0, path = this.path; editor.addCommand( commandName, { // Snapshots are done manually by editable.insertXXX methods. canUndo: false, async: true, exec: function( editor ) { var cmd = this; forceFromWord = 1; // Force html mode for incomming paste events sequence. editor.once( 'beforePaste', forceHtmlMode ); editor.getClipboardData( { title: editor.lang.pastefromword.title }, function( data ) { // Do not use editor#paste, because it would start from beforePaste event. data && editor.fire( 'paste', { type: 'html', dataValue: data.dataValue, method: 'paste', dataTransfer: CKEDITOR.plugins.clipboard.initPasteDataTransfer() } ); editor.fire( 'afterCommandExec', { name: commandName, command: cmd, returnValue: !!data } ); } ); } } ); // Register the toolbar button. editor.ui.addButton && editor.ui.addButton( 'PasteFromWord', { label: editor.lang.pastefromword.toolbar, command: commandName, toolbar: 'clipboard,50' } ); editor.on( 'pasteState', function( evt ) { editor.getCommand( commandName ).setState( evt.data ); } ); // Features bring by this command beside the normal process: // 1. No more bothering of user about the clean-up. // 2. Perform the clean-up even if content is not from MS-Word. // (e.g. from a MS-Word similar application.) // 3. Listen with high priority (3), so clean up is done before content // type sniffing (priority = 6). editor.on( 'paste', function( evt ) { var data = evt.data, mswordHtml = data.dataValue; // MS-WORD format sniffing. if ( mswordHtml && ( forceFromWord || ( /(class=\"?Mso|style=\"[^\"]*\bmso\-|w:WordDocument)/ ).test( mswordHtml ) ) ) { // Do not apply paste filter to data filtered by the Word filter (#13093). data.dontFilter = true; // If filter rules aren't loaded then cancel 'paste' event, // load them and when they'll get loaded fire new paste event // for which data will be filtered in second execution of // this listener. var isLazyLoad = loadFilterRules( editor, path, function() { // Event continuation with the original data. if ( isLazyLoad ) editor.fire( 'paste', data ); else if ( !editor.config.pasteFromWordPromptCleanup || ( forceFromWord || confirm( editor.lang.pastefromword.confirmCleanup ) ) ) // jshint ignore:line data.dataValue = CKEDITOR.cleanWord( mswordHtml, editor ); // Reset forceFromWord. forceFromWord = 0; } ); // The cleanup rules are to be loaded, we should just cancel // this event. isLazyLoad && evt.cancel(); } }, null, null, 3 ); } } ); function loadFilterRules( editor, path, callback ) { var isLoaded = CKEDITOR.cleanWord; if ( isLoaded ) callback(); else { var filterFilePath = CKEDITOR.getUrl( editor.config.pasteFromWordCleanupFile || ( path + 'filter/default.js' ) ); // Load with busy indicator. CKEDITOR.scriptLoader.load( filterFilePath, callback, null, true ); } return !isLoaded; } function forceHtmlMode( evt ) { evt.data.type = 'html'; } } )(); /** * Whether to prompt the user about the clean up of content being pasted from MS Word. * * config.pasteFromWordPromptCleanup = true; * * @since 3.1 * @cfg {Boolean} [pasteFromWordPromptCleanup=false] * @member CKEDITOR.config */ /** * The file that provides the MS Word cleanup function for pasting operations. * * **Note:** This is a global configuration shared by all editor instances present * in the page. * * // Load from 'pastefromword' plugin 'filter' sub folder (custom.js file) using path relative to CKEditor installation folder. * CKEDITOR.config.pasteFromWordCleanupFile = 'plugins/pastefromword/filter/custom.js'; * * // Load from 'pastefromword' plugin 'filter' sub folder (custom.js file) using full path (including CKEditor installation folder). * CKEDITOR.config.pasteFromWordCleanupFile = '/ckeditor/plugins/pastefromword/filter/custom.js'; * * // Load custom.js file from 'customFilerts' folder (located in server's root) using full URL. * CKEDITOR.config.pasteFromWordCleanupFile = 'http://my.example.com/customFilerts/custom.js'; * * @since 3.1 * @cfg {String} [pasteFromWordCleanupFile= + 'filter/default.js'] * @member CKEDITOR.config */ rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/0000755000201500020150000000000014517055560024074 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/zh.js0000644000201500020150000000072314517055560025055 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'zh', { confirmCleanup: '您想貼上的文字似乎是自 Word 複製而來,請問您是否要先清除 Word 的格式後再行貼上?', error: '由於發生內部錯誤,無法清除清除 Word 的格式。', title: '自 Word 貼上', toolbar: '自 Word 貼上' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/nb.js0000644000201500020150000000072414517055560025034 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'nb', { confirmCleanup: 'Teksten du limer inn ser ut til å være kopiert fra Word. Vil du renske den før du limer den inn?', error: 'Det var ikke mulig å renske den innlimte teksten på grunn av en intern feil', title: 'Lim inn fra Word', toolbar: 'Lim inn fra Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/eo.js0000644000201500020150000000071714517055560025042 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'eo', { confirmCleanup: 'La teksto, kiun vi volas interglui, ŝajnas esti kopiita el Word. Ĉu vi deziras purigi ĝin antaŭ intergluo?', error: 'Ne eblis purigi la intergluitajn datenojn pro interna eraro', title: 'Interglui el Word', toolbar: 'Interglui el Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/es.js0000644000201500020150000000066414517055560025047 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'es', { confirmCleanup: 'El texto que desea parece provenir de Word.\r\n¿Desea depurarlo antes de pegarlo?', error: 'No ha sido posible limpiar los datos debido a un error interno', title: 'Pegar desde Word', toolbar: 'Pegar desde Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/ro.js0000644000201500020150000000073214517055560025054 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'ro', { confirmCleanup: 'Textul pe care doriți să-l lipiți este din Word. Doriți curățarea textului înante de a-l adăuga?', error: 'Nu a fost posibilă curățarea datelor adăugate datorită unei erori interne', title: 'Adaugă din Word', toolbar: 'Adaugă din Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/hr.js0000644000201500020150000000070714517055560025047 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'hr', { confirmCleanup: 'Tekst koji želite zalijepiti čini se da je kopiran iz Worda. Želite li prije očistiti tekst?', error: 'Nije moguće očistiti podatke za ljepljenje zbog interne greške', title: 'Zalijepi iz Worda', toolbar: 'Zalijepi iz Worda' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/it.js0000644000201500020150000000070714517055560025052 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'it', { confirmCleanup: 'Il testo da incollare sembra provenire da Word. Desideri pulirlo prima di incollare?', error: 'Non è stato possibile eliminare il testo incollato a causa di un errore interno.', title: 'Incolla da Word', toolbar: 'Incolla da Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/sk.js0000644000201500020150000000070714517055560025053 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'sk', { confirmCleanup: 'Vkladaný text vyzerá byť skopírovaný z Wordu. Chcete ho automaticky vyčistiť pred vkladaním?', error: 'Nebolo možné vyčistiť vložené dáta kvôli internej chybe', title: 'Vložiť z Wordu', toolbar: 'Vložiť z Wordu' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/pt.js0000644000201500020150000000070214517055560025054 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'pt', { confirmCleanup: 'O texto que pretende colar parece ter sido copiado do Word. Deseja limpá-lo antes de colar?', error: 'Não foi possivel limpar a informação colada decido a um erro interno.', title: 'Colar do Word', toolbar: 'Colar do Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/si.js0000644000201500020150000000103214517055560025041 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'si', { confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING title: 'වචන වලින් අලවන්න', toolbar: 'වචන වලින් අලවන්න' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/ko.js0000644000201500020150000000076014517055560025046 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'ko', { confirmCleanup: '붙여 넣을 내용은 MS Word에서 복사 한 것입니다. 붙여 넣기 전에 정리 하시겠습니까?', error: '내부 오류로 붙여 넣은 데이터를 정리 할 수 없습니다.', title: 'MS Word 에서 붙여넣기', toolbar: 'MS Word 에서 붙여넣기' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/mk.js0000644000201500020150000000076614517055560025052 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'mk', { confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING title: 'Paste from Word', // MISSING toolbar: 'Paste from Word' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/cy.js0000644000201500020150000000066314517055560025052 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'cy', { confirmCleanup: 'Mae\'r testun rydych chi am ludo wedi\'i gopïo o Word. Ydych chi am ei lanhau cyn ei ludo?', error: 'Doedd dim modd glanhau y data a ludwyd oherwydd gwall mewnol', title: 'Gludo o Word', toolbar: 'Gludo o Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/uk.js0000644000201500020150000000116514517055560025054 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'uk', { confirmCleanup: 'Текст, що Ви намагаєтесь вставити, схожий на скопійований з Word. Бажаєте очистити його форматування перед вставлянням?', error: 'Неможливо очистити форматування через внутрішню помилку.', title: 'Вставити з Word', toolbar: 'Вставити з Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/zh-cn.js0000644000201500020150000000066714517055560025462 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'zh-cn', { confirmCleanup: '您要粘贴的内容好像是来自 MS Word,是否要清除 MS Word 格式后再粘贴?', error: '由于内部错误无法清理要粘贴的数据', title: '从 MS Word 粘贴', toolbar: '从 MS Word 粘贴' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/sv.js0000644000201500020150000000075214517055560025066 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'sv', { confirmCleanup: 'Texten du vill klistra in verkar vara kopierad från Word. Vill du rensa den innan du klistrar in den?', error: 'Det var inte möjligt att städa upp den inklistrade data på grund av ett internt fel', title: 'Klistra in från Word', toolbar: 'Klistra in från Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/lt.js0000644000201500020150000000067614517055560025062 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'lt', { confirmCleanup: 'Tekstas, kurį įkeliate yra kopijuojamas iš Word. Ar norite jį išvalyti prieš įkeliant?', error: 'Dėl vidinių sutrikimų, nepavyko išvalyti įkeliamo teksto', title: 'Įdėti iš Word', toolbar: 'Įdėti iš Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/is.js0000644000201500020150000000073614517055560025053 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'is', { confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING title: 'Líma úr Word', toolbar: 'Líma úr Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/fr-ca.js0000644000201500020150000000073714517055560025431 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'fr-ca', { confirmCleanup: 'Le texte que vous tentez de coller semble provenir de Word. Désirez vous le nettoyer avant de coller?', error: 'Il n\'a pas été possible de nettoyer les données collées du à une erreur interne', title: 'Coller de Word', toolbar: 'Coller de Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/et.js0000644000201500020150000000070614517055560025045 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'et', { confirmCleanup: 'Tekst, mida tahad asetada näib pärinevat Wordist. Kas tahad selle enne asetamist puhastada?', error: 'Asetatud andmete puhastamine ei olnud sisemise vea tõttu võimalik', title: 'Asetamine Wordist', toolbar: 'Asetamine Wordist' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/bs.js0000644000201500020150000000074614517055560025045 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'bs', { confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING title: 'Zalijepi iz Word-a', toolbar: 'Zalijepi iz Word-a' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/pl.js0000644000201500020150000000100114517055560025035 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'pl', { confirmCleanup: 'Tekst, który chcesz wkleić, prawdopodobnie pochodzi z programu Microsoft Word. Czy chcesz go wyczyścić przed wklejeniem?', error: 'Wyczyszczenie wklejonych danych nie było możliwe z powodu wystąpienia błędu.', title: 'Wklej z programu MS Word', toolbar: 'Wklej z programu MS Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/bg.js0000644000201500020150000000076414517055560025031 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'bg', { confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING title: 'Вмъкни от MS Word', toolbar: 'Вмъкни от MS Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/fa.js0000644000201500020150000000116614517055560025024 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'fa', { confirmCleanup: 'متنی که میخواهید بچسبانید به نظر میرسد که از Word کپی شده است. آیا میخواهید قبل از چسباندن آن را پاکسازی کنید؟', error: 'به دلیل بروز خطای داخلی امکان پاکسازی اطلاعات بازنشانی شده وجود ندارد.', title: 'چسباندن از Word', toolbar: 'چسباندن از Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/ku.js0000644000201500020150000000112314517055560025046 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'ku', { confirmCleanup: 'ئەم دەقەی بەتەمای بیلکێنی پێدەچێت له word هێنرابێت. دەتەوێت پاکی بکەیوه پێش ئەوەی بیلکێنی؟', error: 'هیچ ڕێگەیەك نەبوو لەلکاندنی دەقەکه بەهۆی هەڵەیەکی ناوەخۆیی', title: 'لکاندنی لەلایەن Word', toolbar: 'لکاندنی لەڕێی Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/bn.js0000644000201500020150000000077614517055560025043 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'bn', { confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING title: 'পেস্ট (শব্দ)', toolbar: 'পেস্ট (শব্দ)' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/el.js0000644000201500020150000000125714517055560025037 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'el', { confirmCleanup: 'Το κείμενο που επικολλάται φαίνεται να είναι αντιγραμμένο από το Word. Μήπως θα θέλατε να καθαριστεί προτού επικολληθεί;', error: 'Δεν ήταν δυνατό να καθαριστούν τα δεδομένα λόγω ενός εσωτερικού σφάλματος', title: 'Επικόλληση από το Word', toolbar: 'Επικόλληση από το Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/fi.js0000644000201500020150000000075314517055560025035 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'fi', { confirmCleanup: 'Liittämäsi teksti näyttäisi olevan Word-dokumentista. Haluatko siivota sen ennen liittämistä? (Suositus: Kyllä)', error: 'Liitetyn tiedon siivoaminen ei onnistunut sisäisen virheen takia', title: 'Liitä Word-dokumentista', toolbar: 'Liitä Word-dokumentista' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/ru.js0000644000201500020150000000117714517055560025066 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'ru', { confirmCleanup: 'Текст, который вы желаете вставить, по всей видимости, был скопирован из Word. Следует ли очистить его перед вставкой?', error: 'Невозможно очистить вставленные данные из-за внутренней ошибки', title: 'Вставить из Word', toolbar: 'Вставить из Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/gl.js0000644000201500020150000000067714517055560025046 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'gl', { confirmCleanup: 'O texto que quere pegar semella ser copiado desde o Word. Quere depuralo antes de pegalo?', error: 'Non foi posíbel depurar os datos pegados por mor dun erro interno', title: 'Pegar desde Word', toolbar: 'Pegar desde Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/sr-latn.js0000644000201500020150000000074514517055560026020 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'sr-latn', { confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING title: 'Zalepi iz Worda', toolbar: 'Zalepi iz Worda' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/sq.js0000644000201500020150000000077614517055560025067 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'sq', { confirmCleanup: 'Teksti që dëshironi të e hidhni siç duket është kopjuar nga Word-i. Dëshironi të e pastroni para se të e hidhni?', error: 'Nuk ishte e mundur të fshiheshin të dhënat e hedhura për shkak të një gabimi të brendshëm', title: 'Hidhe nga Word-i', toolbar: 'Hidhe nga Word-i' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/pt-br.js0000644000201500020150000000073414517055560025462 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'pt-br', { confirmCleanup: 'O texto que você deseja colar parece ter sido copiado do Word. Você gostaria de remover a formatação antes de colar?', error: 'Não foi possível limpar os dados colados devido a um erro interno', title: 'Colar do Word', toolbar: 'Colar do Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/fo.js0000644000201500020150000000070114517055560025034 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'fo', { confirmCleanup: 'Teksturin, tú roynir at seta inn, sýnist at stava frá Word. Skal teksturin reinsast fyrst?', error: 'Tað eydnaðist ikki at reinsa tekstin vegna ein internan feil', title: 'Innrita frá Word', toolbar: 'Innrita frá Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/af.js0000644000201500020150000000073014517055560025020 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'af', { confirmCleanup: 'Die teks wat u wil plak lyk asof dit uit Word gekopiëer is. Wil u dit eers skoonmaak voordat dit geplak word?', error: 'Die geplakte teks kon nie skoongemaak word nie, weens \'n interne fout', title: 'Plak vanuit Word', toolbar: 'Plak vanuit Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/hi.js0000644000201500020150000000101414517055560025026 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'hi', { confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING title: 'पेस्ट (वर्ड से)', toolbar: 'पेस्ट (वर्ड से)' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/km.js0000644000201500020150000000157214517055560025046 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'km', { confirmCleanup: 'អត្ថបទ​ដែល​អ្នក​ចង់​បិទ​ភ្ជាប់​នេះ ទំនង​ដូច​ជា​ចម្លង​មក​ពី Word។ តើ​អ្នក​ចង់​សម្អាត​វា​មុន​បិទ​ភ្ជាប់​ទេ?', error: 'ដោយ​សារ​មាន​បញ្ហា​ផ្នែក​ក្នុង​ធ្វើ​ឲ្យ​មិន​អាច​សម្អាត​ទិន្នន័យ​ដែល​បាន​បិទ​ភ្ជាប់', title: 'បិទ​ភ្ជាប់​ពី Word', toolbar: 'បិទ​ភ្ជាប់​ពី Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/nl.js0000644000201500020150000000075714517055560025054 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'nl', { confirmCleanup: 'De tekst die u wilt plakken lijkt gekopieerd te zijn vanuit Word. Wilt u de tekst opschonen voordat deze geplakt wordt?', error: 'Het was niet mogelijk om de geplakte tekst op te schonen door een interne fout', title: 'Plakken vanuit Word', toolbar: 'Plakken vanuit Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/ka.js0000644000201500020150000000124314517055560025025 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'ka', { confirmCleanup: 'ჩასასმელი ტექსტი ვორდიდან გადმოტანილს გავს - გინდათ მისი წინასწარ გაწმენდა?', error: 'შიდა შეცდომის გამო ვერ მოხერხდა ტექსტის გაწმენდა', title: 'ვორდიდან ჩასმა', toolbar: 'ვორდიდან ჩასმა' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/mn.js0000644000201500020150000000076614517055560025055 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'mn', { confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING title: 'Word-оос буулгах', toolbar: 'Word-оос буулгах' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/da.js0000644000201500020150000000075114517055560025021 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'da', { confirmCleanup: 'Den tekst du forsøger at indsætte ser ud til at komme fra Word. Vil du rense teksten før den indsættes?', error: 'Det var ikke muligt at fjerne formatteringen på den indsatte tekst grundet en intern fejl', title: 'Indsæt fra Word', toolbar: 'Indsæt fra Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/he.js0000644000201500020150000000100314517055560025020 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'he', { confirmCleanup: 'נראה הטקסט שבכוונתך להדביק מקורו בקובץ וורד. האם ברצונך לנקות אותו טרם ההדבקה?', error: 'לא ניתן היה לנקות את המידע בשל תקלה פנימית.', title: 'הדבקה מ-Word', toolbar: 'הדבקה מ-Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/ca.js0000644000201500020150000000073414517055560025021 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'ca', { confirmCleanup: 'El text que voleu enganxar sembla provenir de Word. Voleu netejar aquest text abans que sigui enganxat?', error: 'No ha estat possible netejar les dades enganxades degut a un error intern', title: 'Enganxa des del Word', toolbar: 'Enganxa des del Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/gu.js0000644000201500020150000000127014517055560025045 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'gu', { confirmCleanup: 'તમે જે ટેક્ષ્ત્ કોપી કરી રહ્યા છો ટે વર્ડ ની છે. કોપી કરતા પેહલા સાફ કરવી છે?', error: 'પેસ્ટ કરેલો ડેટા ઇન્ટરનલ એરર ના લીથે સાફ કરી શકાયો નથી.', title: 'પેસ્ટ (વડૅ ટેક્સ્ટ)', toolbar: 'પેસ્ટ (વડૅ ટેક્સ્ટ)' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/ms.js0000644000201500020150000000074214517055560025054 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'ms', { confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING title: 'Tampal dari Word', toolbar: 'Tampal dari Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/th.js0000644000201500020150000000173414517055560025052 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'th', { confirmCleanup: 'ข้อความที่คุณต้องการวางลงไปเป็นข้อความที่คัดลอกมาจากโปรแกรมไมโครซอฟท์เวิร์ด คุณต้องการล้างค่าข้อความดังกล่าวก่อนวางลงไปหรือไม่?', error: 'ไม่สามารถล้างข้อมูลที่ต้องการวางได้เนื่องจากเกิดข้อผิดพลาดภายในระบบ', title: 'วางสำเนาจากตัวอักษรเวิร์ด', toolbar: 'วางสำเนาจากตัวอักษรเวิร์ด' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/de.js0000644000201500020150000000076614517055560025033 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'de', { confirmCleanup: 'Der Text, den Sie einfügen möchten, scheint aus MS-Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?', error: 'Aufgrund eines internen Fehlers war es nicht möglich die eingefügten Daten zu bereinigen', title: 'Aus Word einfügen', toolbar: 'Aus Word einfügen' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/en-ca.js0000644000201500020150000000074314517055560025421 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'en-ca', { confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING title: 'Paste from Word', toolbar: 'Paste from Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/tt.js0000644000201500020150000000076014517055560025064 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'tt', { confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING title: 'Word\'тан өстәү', toolbar: 'Word\'тан өстәү' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/vi.js0000644000201500020150000000102214517055560025043 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'vi', { confirmCleanup: 'Văn bản bạn muốn dán có kèm định dạng của Word. Bạn có muốn loại bỏ định dạng Word trước khi dán?', error: 'Không thể để làm sạch các dữ liệu dán do một lỗi nội bộ', title: 'Dán với định dạng Word', toolbar: 'Dán với định dạng Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/cs.js0000644000201500020150000000072214517055560025040 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'cs', { confirmCleanup: 'Jak je vidět, vkládaný text je kopírován z Wordu. Chcete jej před vložením vyčistit?', error: 'Z důvodu vnitřní chyby nebylo možné provést vyčištění vkládaného textu.', title: 'Vložit z Wordu', toolbar: 'Vložit z Wordu' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/tr.js0000644000201500020150000000074314517055560025063 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'tr', { confirmCleanup: 'Yapıştırmaya çalıştığınız metin Word\'den kopyalanmıştır. Yapıştırmadan önce silmek istermisiniz?', error: 'Yapıştırmadaki veri bilgisi hata düzelene kadar silinmeyecektir', title: 'Word\'den Yapıştır', toolbar: 'Word\'den Yapıştır' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/ja.js0000644000201500020150000000107114517055560025023 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'ja', { confirmCleanup: '貼り付けを行うテキストはワード文章からコピーされようとしています。貼り付ける前にクリーニングを行いますか?', error: '内部エラーにより貼り付けたデータをクリアできませんでした', title: 'ワード文章から貼り付け', toolbar: 'ワード文章から貼り付け' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/sl.js0000644000201500020150000000072114517055560025050 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'sl', { confirmCleanup: 'Besedilo, ki ga želite prilepiti je kopirano iz Word-a. Ali ga želite očistiti, preden ga prilepite?', error: 'Ni bilo mogoče očistiti prilepljenih podatkov zaradi notranje napake', title: 'Prilepi iz Worda', toolbar: 'Prilepi iz Worda' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/lv.js0000644000201500020150000000073214517055560025055 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'lv', { confirmCleanup: 'Teksts, kuru vēlaties ielīmēt, izskatās ir nokopēts no Word. Vai vēlaties to iztīrīt pirms ielīmēšanas?', error: 'Iekšējas kļūdas dēļ, neizdevās iztīrīt ielīmētos datus.', title: 'Ievietot no Worda', toolbar: 'Ievietot no Worda' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/en-au.js0000644000201500020150000000074314517055560025443 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'en-au', { confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING title: 'Paste from Word', toolbar: 'Paste from Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/en.js0000644000201500020150000000071214517055560025034 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'en', { confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', error: 'It was not possible to clean up the pasted data due to an internal error', title: 'Paste from Word', toolbar: 'Paste from Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/no.js0000644000201500020150000000072414517055560025051 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'no', { confirmCleanup: 'Teksten du limer inn ser ut til å være kopiert fra Word. Vil du renske den før du limer den inn?', error: 'Det var ikke mulig å renske den innlimte teksten på grunn av en intern feil', title: 'Lim inn fra Word', toolbar: 'Lim inn fra Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/fr.js0000644000201500020150000000073514517055560025046 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'fr', { confirmCleanup: 'Le texte à coller semble provenir de Word. Désirez-vous le nettoyer avant de coller?', error: 'Il n\'a pas été possible de nettoyer les données collées à la suite d\'une erreur interne.', title: 'Coller depuis Word', toolbar: 'Coller depuis Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/id.js0000644000201500020150000000073414517055560025032 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'id', { confirmCleanup: 'Teks yang ingin anda tempel sepertinya di salin dari Word. Apakah anda mau membersihkannya sebelum menempel?', error: 'Tidak mungkin membersihkan data yang ditempel dikerenakan kesalahan internal', title: 'Tempel dari Word', toolbar: 'Tempel dari Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/ug.js0000644000201500020150000000117714517055560025053 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'ug', { confirmCleanup: 'سىز چاپلىماقچى بولغان مەزمۇن MS Word تىن كەلگەندەك قىلىدۇ، MS Word پىچىمىنى تازىلىۋەتكەندىن كېيىن ئاندىن چاپلامدۇ؟', error: 'ئىچكى خاتالىق سەۋەبىدىن چاپلايدىغان سانلىق مەلۇماتنى تازىلىيالمايدۇ', title: 'MS Word تىن چاپلا', toolbar: 'MS Word تىن چاپلا' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/ar.js0000644000201500020150000000102114517055560025026 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'ar', { confirmCleanup: 'يبدو أن النص المراد لصقه منسوخ من برنامج وورد. هل تود تنظيفه قبل الشروع في عملية اللصق؟', error: 'لم يتم مسح المعلومات الملصقة لخلل داخلي', title: 'لصق من وورد', toolbar: 'لصق من وورد' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/sr.js0000644000201500020150000000076014517055560025061 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'sr', { confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', // MISSING error: 'It was not possible to clean up the pasted data due to an internal error', // MISSING title: 'Залепи из Worda', toolbar: 'Залепи из Worda' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/eu.js0000644000201500020150000000067214517055560025050 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'eu', { confirmCleanup: 'Itsatsi nahi duzun testua Wordetik hartua dela dirudi. Itsatsi baino lehen garbitu nahi duzu?', error: 'Barneko errore bat dela eta ezin izan da testua garbitu', title: 'Itsatsi Word-etik', toolbar: 'Itsatsi Word-etik' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/en-gb.js0000644000201500020150000000071514517055560025425 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'en-gb', { confirmCleanup: 'The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?', error: 'It was not possible to clean up the pasted data due to an internal error', title: 'Paste from Word', toolbar: 'Paste from Word' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/lang/hu.js0000644000201500020150000000073414517055560025052 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'pastefromword', 'hu', { confirmCleanup: 'Úgy tűnik a beillesztett szöveget Word-ből másolt át. Meg szeretné tisztítani a szöveget? (ajánlott)', error: 'Egy belső hiba miatt nem sikerült megtisztítani a szöveget', title: 'Beillesztés Word-ből', toolbar: 'Beillesztés Word-ből' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/icons/0000755000201500020150000000000014517055560024266 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/icons/pastefromword.png0000644000201500020150000000132314517055560027667 0ustar puckpuckPNG  IHDRabKGD pHYs B(xIDAT8}JQ3w茄eB "sa}=o5Eƍ!$L̴Mù;K8h$F$'DŽ9$! ' `g{{`cf}F@除j۝5Mu:u:5Muݙjg@*, 2t4"|>'2B=fFds s@π03sj5$R/766VfF$IBZ홙,̬Wן YL~+X#3SR);XEr#d2)Q_X zjG 08KPP$Z$q Ef}L s1ZX@)ɉNjEpzzlmmIfxIQnt/A,lZwח;+TY%tEXtdate:create2013-07-04T17:03:03+02:00Mx%tEXtdate:modify2013-07-04T17:03:03+02:00<tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/icons/hidpi/0000755000201500020150000000000014517055560025363 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/icons/hidpi/pastefromword.png0000644000201500020150000000407114517055560030767 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(xRIDATXåk?ٛv7)IEmUT`/c)ԏbňbc[C !ɃU:؊کHjcőYͬfwΜ>z$k7=pؙsn;+DCRcҩW_)LZ"CqWW?6_}upaq5σP^$GkM` ƘN+R\&Ck.G*$КQ՚\&MM70J !nݹ3IS--$"J!«TXY]e\׺~n\&CWGbx8 7߾pVW1/B+F jcsA16 ͝;_\vtx^FRd5uwt|D1u<|FkWT7LZh-9Bdc~?eÝ-,J@HZɷh10P8;[ "X,ʒm8뮛PmŢb`Yo@ڀIB c ߿T*o75ͭ]#T|1֌+leafGӧgf2d[~IhךmojpT+Eu9/Ρkޑoj)q!^Md_3d:M}(gB|4g<ƐNEuZq ,'>lnFsܹúR91lDA%X4ҲPK~:_5yA cJdP H)IZӼ^@HY/lUcXz캵%P[()R>߈[[c}y*HI ()ɦӴdgf&Z.!?ںRgm10JJZyo1F^4-Xʕkf< U*85oHS>O٨~wQ<ўE-FGc}ګbbpxS߼y(.*~_&Aq-=k''#cxllit Xa(^fxll*<wON)_ò;w0ZKW2M:`JZ.ruzzPB!PhM'۔ДeaHİm>tDۭ#Z"ZkZkH8׏8H)qS3ii))%j5u6RMJ~B?#l:zM)%t1l~)lѦٟHkzJ^,ЕiH\'iv?'^ ~Gvxrҕz oL)T DqP}~- )«Vǯ^xN&A $ 1.L )]c\Dۍ)h2_rر`hǎH5ւy*T(jdl$RӬsH|.|V]^q&"7fl޽@T Rб^|9tQ8ZYJh-B,)2܄Xѱn iN B@K&maHf&Rʘ)Dk=qjfxU(0 ,aipm#t AVݎmæMo3^X86kIwĪc9C`dC.F m=?ܙ;x5aIȾ5!m- ##3è0`0̤bH W鿫gDQ*NEDJcof^yzh :4 A2eYR4U={-KƬ0 3˥כ!キl (Uغۋ.| 57WPFK4  L5~[`:?m4r 'v/h]%tEXtdate:create2013-06-20T12:24:19+02:00U%tEXtdate:modify2013-06-20T12:24:19+02:00$StEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/pastefromword/icons/pastefromword-rtl.png0000644000201500020150000000132014517055560030463 0ustar puckpuckPNG  IHDRabKGD pHYs B(xIDAT8uOKQ73qC\.`BwYخG} B3 2AHPgc;]L5= CjA@34c4MJeY3///Al6  vL&c3s|>$Iq|+tVKv[v[VKNg)-Kb4 V+I:zzB@1x||D9 =I8X,=seA^VUjnCs4MYVu(5 ̬gf>:Jeo-03w%=QtGQTN@RH ox˽ޒZ19EqDV6(tzz)$o׹!iS`6\^__pJe;;;ιW[]Ib۩Zg M<swwG88::Jr$)&B \ Cil=YYj?$pj%tEXtdate:create2013-07-04T17:03:03+02:00Mx%tEXtdate:modify2013-07-04T17:03:03+02:00<tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/popup/0000755000201500020150000000000014517055560021422 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/popup/plugin.js0000644000201500020150000000434014517055560023257 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.add( 'popup' ); CKEDITOR.tools.extend( CKEDITOR.editor.prototype, { /** * Opens Browser in a popup. The `width` and `height` parameters accept * numbers (pixels) or percent (of screen size) values. * * @member CKEDITOR.editor * @param {String} url The url of the external file browser. * @param {Number/String} [width='80%'] Popup window width. * @param {Number/String} [height='70%'] Popup window height. * @param {String} [options='location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes'] * Popup window features. */ popup: function( url, width, height, options ) { width = width || '80%'; height = height || '70%'; if ( typeof width == 'string' && width.length > 1 && width.substr( width.length - 1, 1 ) == '%' ) width = parseInt( window.screen.width * parseInt( width, 10 ) / 100, 10 ); if ( typeof height == 'string' && height.length > 1 && height.substr( height.length - 1, 1 ) == '%' ) height = parseInt( window.screen.height * parseInt( height, 10 ) / 100, 10 ); if ( width < 640 ) width = 640; if ( height < 420 ) height = 420; var top = parseInt( ( window.screen.height - height ) / 2, 10 ), left = parseInt( ( window.screen.width - width ) / 2, 10 ); options = ( options || 'location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes' ) + ',width=' + width + ',height=' + height + ',top=' + top + ',left=' + left; var popupWindow = window.open( '', null, options, true ); // Blocked by a popup blocker. if ( !popupWindow ) return false; try { // Chrome is problematic with moveTo/resizeTo, but it's not really needed here (#8855). var ua = navigator.userAgent.toLowerCase(); if ( ua.indexOf( ' chrome/' ) == -1 ) { popupWindow.moveTo( left, top ); popupWindow.resizeTo( width, height ); } popupWindow.focus(); popupWindow.location.href = url; } catch ( e ) { popupWindow = window.open( url, null, options, true ); } return true; } } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/dialogui/0000755000201500020150000000000014517055557022062 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/dialogui/plugin.js0000644000201500020150000014561014517055557023725 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ /** * @fileOverview The Dialog User Interface plugin. */ CKEDITOR.plugins.add( 'dialogui', { onLoad: function() { var initPrivateObject = function( elementDefinition ) { this._ || ( this._ = {} ); this._[ 'default' ] = this._.initValue = elementDefinition[ 'default' ] || ''; this._.required = elementDefinition.required || false; var args = [ this._ ]; for ( var i = 1; i < arguments.length; i++ ) args.push( arguments[ i ] ); args.push( true ); CKEDITOR.tools.extend.apply( CKEDITOR.tools, args ); return this._; }, textBuilder = { build: function( dialog, elementDefinition, output ) { return new CKEDITOR.ui.dialog.textInput( dialog, elementDefinition, output ); } }, commonBuilder = { build: function( dialog, elementDefinition, output ) { return new CKEDITOR.ui.dialog[ elementDefinition.type ]( dialog, elementDefinition, output ); } }, containerBuilder = { build: function( dialog, elementDefinition, output ) { var children = elementDefinition.children, child, childHtmlList = [], childObjList = []; for ( var i = 0; ( i < children.length && ( child = children[ i ] ) ); i++ ) { var childHtml = []; childHtmlList.push( childHtml ); childObjList.push( CKEDITOR.dialog._.uiElementBuilders[ child.type ].build( dialog, child, childHtml ) ); } return new CKEDITOR.ui.dialog[ elementDefinition.type ]( dialog, childObjList, childHtmlList, output, elementDefinition ); } }, commonPrototype = { isChanged: function() { return this.getValue() != this.getInitValue(); }, reset: function( noChangeEvent ) { this.setValue( this.getInitValue(), noChangeEvent ); }, setInitValue: function() { this._.initValue = this.getValue(); }, resetInitValue: function() { this._.initValue = this._[ 'default' ]; }, getInitValue: function() { return this._.initValue; } }, commonEventProcessors = CKEDITOR.tools.extend( {}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, { onChange: function( dialog, func ) { if ( !this._.domOnChangeRegistered ) { dialog.on( 'load', function() { this.getInputElement().on( 'change', function() { // Make sure 'onchange' doesn't get fired after dialog closed. (#5719) if ( !dialog.parts.dialog.isVisible() ) return; this.fire( 'change', { value: this.getValue() } ); }, this ); }, this ); this._.domOnChangeRegistered = true; } this.on( 'change', func ); } }, true ), eventRegex = /^on([A-Z]\w+)/, cleanInnerDefinition = function( def ) { // An inner UI element should not have the parent's type, title or events. for ( var i in def ) { if ( eventRegex.test( i ) || i == 'title' || i == 'type' ) delete def[ i ]; } return def; }, // @context {CKEDITOR.dialog.uiElement} UI element (textarea or textInput) // @param {CKEDITOR.dom.event} evt toggleBidiKeyUpHandler = function( evt ) { var keystroke = evt.data.getKeystroke(); // ALT + SHIFT + Home for LTR direction. if ( keystroke == CKEDITOR.SHIFT + CKEDITOR.ALT + 36 ) this.setDirectionMarker( 'ltr' ); // ALT + SHIFT + End for RTL direction. else if ( keystroke == CKEDITOR.SHIFT + CKEDITOR.ALT + 35 ) this.setDirectionMarker( 'rtl' ); }; CKEDITOR.tools.extend( CKEDITOR.ui.dialog, { /** * Base class for all dialog window elements with a textual label on the left. * * @class CKEDITOR.ui.dialog.labeledElement * @extends CKEDITOR.ui.dialog.uiElement * @constructor Creates a labeledElement class instance. * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * * * `label` (Required) The label string. * * `labelLayout` (Optional) Put 'horizontal' here if the * label element is to be laid out horizontally. Otherwise a vertical * layout will be used. * * `widths` (Optional) This applies only to horizontal * layouts — a two-element array of lengths to specify the widths of the * label and the content element. * * `role` (Optional) Value for the `role` attribute. * * `includeLabel` (Optional) If set to `true`, the `aria-labelledby` attribute * will be included. * * @param {Array} htmlList The list of HTML code to output to. * @param {Function} contentHtml * A function returning the HTML code string to be added inside the content * cell. */ labeledElement: function( dialog, elementDefinition, htmlList, contentHtml ) { if ( arguments.length < 4 ) return; var _ = initPrivateObject.call( this, elementDefinition ); _.labelId = CKEDITOR.tools.getNextId() + '_label'; this._.children = []; var innerHTML = function() { var html = [], requiredClass = elementDefinition.required ? ' cke_required' : ''; if ( elementDefinition.labelLayout != 'horizontal' ) { html.push( '', '' ); } else { var hboxDefinition = { type: 'hbox', widths: elementDefinition.widths, padding: 0, children: [ { type: 'html', html: '' }, { type: 'html', html: '' + contentHtml.call( this, dialog, elementDefinition ) + '' } ] }; CKEDITOR.dialog._.uiElementBuilders.hbox.build( dialog, hboxDefinition, html ); } return html.join( '' ); }; var attributes = { role: elementDefinition.role || 'presentation' }; if ( elementDefinition.includeLabel ) attributes[ 'aria-labelledby' ] = _.labelId; CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'div', null, attributes, innerHTML ); }, /** * A text input with a label. This UI element class represents both the * single-line text inputs and password inputs in dialog boxes. * * @class CKEDITOR.ui.dialog.textInput * @extends CKEDITOR.ui.dialog.labeledElement * @constructor Creates a textInput class instance. * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * * * `default` (Optional) The default value. * * `validate` (Optional) The validation function. * * `maxLength` (Optional) The maximum length of text box contents. * * `size` (Optional) The size of the text box. This is * usually overridden by the size defined by the skin, though. * * @param {Array} htmlList List of HTML code to output to. */ textInput: function( dialog, elementDefinition, htmlList ) { if ( arguments.length < 3 ) return; initPrivateObject.call( this, elementDefinition ); var domId = this._.inputId = CKEDITOR.tools.getNextId() + '_textInput', attributes = { 'class': 'cke_dialog_ui_input_' + elementDefinition.type, id: domId, type: elementDefinition.type }; // Set the validator, if any. if ( elementDefinition.validate ) this.validate = elementDefinition.validate; // Set the max length and size. if ( elementDefinition.maxLength ) attributes.maxlength = elementDefinition.maxLength; if ( elementDefinition.size ) attributes.size = elementDefinition.size; if ( elementDefinition.inputStyle ) attributes.style = elementDefinition.inputStyle; // If user presses Enter in a text box, it implies clicking OK for the dialog. var me = this, keyPressedOnMe = false; dialog.on( 'load', function() { me.getInputElement().on( 'keydown', function( evt ) { if ( evt.data.getKeystroke() == 13 ) keyPressedOnMe = true; } ); // Lower the priority this 'keyup' since 'ok' will close the dialog.(#3749) me.getInputElement().on( 'keyup', function( evt ) { if ( evt.data.getKeystroke() == 13 && keyPressedOnMe ) { dialog.getButton( 'ok' ) && setTimeout( function() { dialog.getButton( 'ok' ).click(); }, 0 ); keyPressedOnMe = false; } if ( me.bidi ) toggleBidiKeyUpHandler.call( me, evt ); }, null, null, 1000 ); } ); var innerHTML = function() { // IE BUG: Text input fields in IE at 100% would exceed a or inline // container's width, so need to wrap it inside a
    . var html = [ '' ); return html.join( '' ); }; CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML ); }, /** * A text area with a label at the top or on the left. * * @class CKEDITOR.ui.dialog.textarea * @extends CKEDITOR.ui.dialog.labeledElement * @constructor Creates a textarea class instance. * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * * The element definition. Accepted fields: * * * `rows` (Optional) The number of rows displayed. * Defaults to 5 if not defined. * * `cols` (Optional) The number of cols displayed. * Defaults to 20 if not defined. Usually overridden by skins. * * `default` (Optional) The default value. * * `validate` (Optional) The validation function. * * @param {Array} htmlList List of HTML code to output to. */ textarea: function( dialog, elementDefinition, htmlList ) { if ( arguments.length < 3 ) return; initPrivateObject.call( this, elementDefinition ); var me = this, domId = this._.inputId = CKEDITOR.tools.getNextId() + '_textarea', attributes = {}; if ( elementDefinition.validate ) this.validate = elementDefinition.validate; // Generates the essential attributes for the textarea tag. attributes.rows = elementDefinition.rows || 5; attributes.cols = elementDefinition.cols || 20; attributes[ 'class' ] = 'cke_dialog_ui_input_textarea ' + ( elementDefinition[ 'class' ] || '' ); if ( typeof elementDefinition.inputStyle != 'undefined' ) attributes.style = elementDefinition.inputStyle; if ( elementDefinition.dir ) attributes.dir = elementDefinition.dir; if ( me.bidi ) { dialog.on( 'load', function() { me.getInputElement().on( 'keyup', toggleBidiKeyUpHandler ); }, me ); } var innerHTML = function() { attributes[ 'aria-labelledby' ] = this._.labelId; this._.required && ( attributes[ 'aria-required' ] = this._.required ); var html = [ '' ); return html.join( '' ); }; CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML ); }, /** * A single checkbox with a label on the right. * * @class CKEDITOR.ui.dialog.checkbox * @extends CKEDITOR.ui.dialog.uiElement * @constructor Creates a checkbox class instance. * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * * * `checked` (Optional) Whether the checkbox is checked * on instantiation. Defaults to `false`. * * `validate` (Optional) The validation function. * * `label` (Optional) The checkbox label. * * @param {Array} htmlList List of HTML code to output to. */ checkbox: function( dialog, elementDefinition, htmlList ) { if ( arguments.length < 3 ) return; var _ = initPrivateObject.call( this, elementDefinition, { 'default': !!elementDefinition[ 'default' ] } ); if ( elementDefinition.validate ) this.validate = elementDefinition.validate; var innerHTML = function() { var myDefinition = CKEDITOR.tools.extend( {}, elementDefinition, { id: elementDefinition.id ? elementDefinition.id + '_checkbox' : CKEDITOR.tools.getNextId() + '_checkbox' }, true ), html = []; var labelId = CKEDITOR.tools.getNextId() + '_label'; var attributes = { 'class': 'cke_dialog_ui_checkbox_input', type: 'checkbox', 'aria-labelledby': labelId }; cleanInnerDefinition( myDefinition ); if ( elementDefinition[ 'default' ] ) attributes.checked = 'checked'; if ( typeof myDefinition.inputStyle != 'undefined' ) myDefinition.style = myDefinition.inputStyle; _.checkbox = new CKEDITOR.ui.dialog.uiElement( dialog, myDefinition, html, 'input', null, attributes ); html.push( ' ' ); return html.join( '' ); }; CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'span', null, null, innerHTML ); }, /** * A group of radio buttons. * * @class CKEDITOR.ui.dialog.radio * @extends CKEDITOR.ui.dialog.labeledElement * @constructor Creates a radio class instance. * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * * * `default` (Required) The default value. * * `validate` (Optional) The validation function. * * `items` (Required) An array of options. Each option * is a one- or two-item array of format `[ 'Description', 'Value' ]`. If `'Value'` * is missing, then the value would be assumed to be the same as the description. * * @param {Array} htmlList List of HTML code to output to. */ radio: function( dialog, elementDefinition, htmlList ) { if ( arguments.length < 3 ) return; initPrivateObject.call( this, elementDefinition ); if ( !this._[ 'default' ] ) this._[ 'default' ] = this._.initValue = elementDefinition.items[ 0 ][ 1 ]; if ( elementDefinition.validate ) this.validate = elementDefinition.validate; var children = [], me = this; var innerHTML = function() { var inputHtmlList = [], html = [], commonName = ( elementDefinition.id ? elementDefinition.id : CKEDITOR.tools.getNextId() ) + '_radio'; for ( var i = 0; i < elementDefinition.items.length; i++ ) { var item = elementDefinition.items[ i ], title = item[ 2 ] !== undefined ? item[ 2 ] : item[ 0 ], value = item[ 1 ] !== undefined ? item[ 1 ] : item[ 0 ], inputId = CKEDITOR.tools.getNextId() + '_radio_input', labelId = inputId + '_label', inputDefinition = CKEDITOR.tools.extend( {}, elementDefinition, { id: inputId, title: null, type: null }, true ), labelDefinition = CKEDITOR.tools.extend( {}, inputDefinition, { title: title }, true ), inputAttributes = { type: 'radio', 'class': 'cke_dialog_ui_radio_input', name: commonName, value: value, 'aria-labelledby': labelId }, inputHtml = []; if ( me._[ 'default' ] == value ) inputAttributes.checked = 'checked'; cleanInnerDefinition( inputDefinition ); cleanInnerDefinition( labelDefinition ); if ( typeof inputDefinition.inputStyle != 'undefined' ) inputDefinition.style = inputDefinition.inputStyle; // Make inputs of radio type focusable (#10866). inputDefinition.keyboardFocusable = true; children.push( new CKEDITOR.ui.dialog.uiElement( dialog, inputDefinition, inputHtml, 'input', null, inputAttributes ) ); inputHtml.push( ' ' ); new CKEDITOR.ui.dialog.uiElement( dialog, labelDefinition, inputHtml, 'label', null, { id: labelId, 'for': inputAttributes.id }, item[ 0 ] ); inputHtmlList.push( inputHtml.join( '' ) ); } new CKEDITOR.ui.dialog.hbox( dialog, children, inputHtmlList, html ); return html.join( '' ); }; // Adding a role="radiogroup" to definition used for wrapper. elementDefinition.role = 'radiogroup'; elementDefinition.includeLabel = true; CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML ); this._.children = children; }, /** * A button with a label inside. * * @class CKEDITOR.ui.dialog.button * @extends CKEDITOR.ui.dialog.uiElement * @constructor Creates a button class instance. * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * * * `label` (Required) The button label. * * `disabled` (Optional) Set to `true` if you want the * button to appear in the disabled state. * * @param {Array} htmlList List of HTML code to output to. */ button: function( dialog, elementDefinition, htmlList ) { if ( !arguments.length ) return; if ( typeof elementDefinition == 'function' ) elementDefinition = elementDefinition( dialog.getParentEditor() ); initPrivateObject.call( this, elementDefinition, { disabled: elementDefinition.disabled || false } ); // Add OnClick event to this input. CKEDITOR.event.implementOn( this ); var me = this; // Register an event handler for processing button clicks. dialog.on( 'load', function() { var element = this.getElement(); ( function() { element.on( 'click', function( evt ) { me.click(); // #9958 evt.data.preventDefault(); } ); element.on( 'keydown', function( evt ) { if ( evt.data.getKeystroke() in { 32: 1 } ) { me.click(); evt.data.preventDefault(); } } ); } )(); element.unselectable(); }, this ); var outerDefinition = CKEDITOR.tools.extend( {}, elementDefinition ); delete outerDefinition.style; var labelId = CKEDITOR.tools.getNextId() + '_label'; CKEDITOR.ui.dialog.uiElement.call( this, dialog, outerDefinition, htmlList, 'a', null, { style: elementDefinition.style, href: 'javascript:void(0)', // jshint ignore:line title: elementDefinition.label, hidefocus: 'true', 'class': elementDefinition[ 'class' ], role: 'button', 'aria-labelledby': labelId }, '' + CKEDITOR.tools.htmlEncode( elementDefinition.label ) + '' ); }, /** * A select box. * * @class CKEDITOR.ui.dialog.select * @extends CKEDITOR.ui.dialog.uiElement * @constructor Creates a button class instance. * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * * * `default` (Required) The default value. * * `validate` (Optional) The validation function. * * `items` (Required) An array of options. Each option * is a one- or two-item array of format `[ 'Description', 'Value' ]`. If `'Value'` * is missing, then the value would be assumed to be the same as the * description. * * `multiple` (Optional) Set this to `true` if you would like * to have a multiple-choice select box. * * `size` (Optional) The number of items to display in * the select box. * * @param {Array} htmlList List of HTML code to output to. */ select: function( dialog, elementDefinition, htmlList ) { if ( arguments.length < 3 ) return; var _ = initPrivateObject.call( this, elementDefinition ); if ( elementDefinition.validate ) this.validate = elementDefinition.validate; _.inputId = CKEDITOR.tools.getNextId() + '_select'; var innerHTML = function() { var myDefinition = CKEDITOR.tools.extend( {}, elementDefinition, { id: ( elementDefinition.id ? elementDefinition.id + '_select' : CKEDITOR.tools.getNextId() + '_select' ) }, true ), html = [], innerHTML = [], attributes = { 'id': _.inputId, 'class': 'cke_dialog_ui_input_select', 'aria-labelledby': this._.labelId }; html.push( '' ); return html.join( '' ); }; CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML ); }, /** * A file upload input. * * @class CKEDITOR.ui.dialog.file * @extends CKEDITOR.ui.dialog.labeledElement * @constructor Creates a file class instance. * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * * * `validate` (Optional) The validation function. * * @param {Array} htmlList List of HTML code to output to. */ file: function( dialog, elementDefinition, htmlList ) { if ( arguments.length < 3 ) return; if ( elementDefinition[ 'default' ] === undefined ) elementDefinition[ 'default' ] = ''; var _ = CKEDITOR.tools.extend( initPrivateObject.call( this, elementDefinition ), { definition: elementDefinition, buttons: [] } ); if ( elementDefinition.validate ) this.validate = elementDefinition.validate; /** @ignore */ var innerHTML = function() { _.frameId = CKEDITOR.tools.getNextId() + '_fileInput'; var html = [ '' ); return html.join( '' ); }; // IE BUG: Parent container does not resize to contain the iframe automatically. dialog.on( 'load', function() { var iframe = CKEDITOR.document.getById( _.frameId ), contentDiv = iframe.getParent(); contentDiv.addClass( 'cke_dialog_ui_input_file' ); } ); CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML ); }, /** * A button for submitting the file in a file upload input. * * @class CKEDITOR.ui.dialog.fileButton * @extends CKEDITOR.ui.dialog.button * @constructor Creates a fileButton class instance. * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * * * `for` (Required) The file input's page and element ID * to associate with, in a two-item array format: `[ 'page_id', 'element_id' ]`. * * `validate` (Optional) The validation function. * * @param {Array} htmlList List of HTML code to output to. */ fileButton: function( dialog, elementDefinition, htmlList ) { var me = this; if ( arguments.length < 3 ) return; initPrivateObject.call( this, elementDefinition ); if ( elementDefinition.validate ) this.validate = elementDefinition.validate; var myDefinition = CKEDITOR.tools.extend( {}, elementDefinition ); var onClick = myDefinition.onClick; myDefinition.className = ( myDefinition.className ? myDefinition.className + ' ' : '' ) + 'cke_dialog_ui_button'; myDefinition.onClick = function( evt ) { var target = elementDefinition[ 'for' ]; // [ pageId, elementId ] if ( !onClick || onClick.call( this, evt ) !== false ) { dialog.getContentElement( target[ 0 ], target[ 1 ] ).submit(); this.disable(); } }; dialog.on( 'load', function() { dialog.getContentElement( elementDefinition[ 'for' ][ 0 ], elementDefinition[ 'for' ][ 1 ] )._.buttons.push( me ); } ); CKEDITOR.ui.dialog.button.call( this, dialog, myDefinition, htmlList ); }, html: ( function() { var myHtmlRe = /^\s*<[\w:]+\s+([^>]*)?>/, theirHtmlRe = /^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/, emptyTagRe = /\/$/; /** * A dialog window element made from raw HTML code. * * @class CKEDITOR.ui.dialog.html * @extends CKEDITOR.ui.dialog.uiElement * @constructor Creates a html class instance. * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition Element definition. * Accepted fields: * * * `html` (Required) HTML code of this element. * * @param {Array} htmlList List of HTML code to be added to the dialog's content area. */ return function( dialog, elementDefinition, htmlList ) { if ( arguments.length < 3 ) return; var myHtmlList = [], myHtml, theirHtml = elementDefinition.html, myMatch, theirMatch; // If the HTML input doesn't contain any tags at the beginning, add a tag around it. if ( theirHtml.charAt( 0 ) != '<' ) theirHtml = '' + theirHtml + ''; // Look for focus function in definition. var focus = elementDefinition.focus; if ( focus ) { var oldFocus = this.focus; this.focus = function() { ( typeof focus == 'function' ? focus : oldFocus ).call( this ); this.fire( 'focus' ); }; if ( elementDefinition.isFocusable ) { var oldIsFocusable = this.isFocusable; this.isFocusable = oldIsFocusable; } this.keyboardFocusable = true; } CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, myHtmlList, 'span', null, null, '' ); // Append the attributes created by the uiElement call to the real HTML. myHtml = myHtmlList.join( '' ); myMatch = myHtml.match( myHtmlRe ); theirMatch = theirHtml.match( theirHtmlRe ) || [ '', '', '' ]; if ( emptyTagRe.test( theirMatch[ 1 ] ) ) { theirMatch[ 1 ] = theirMatch[ 1 ].slice( 0, -1 ); theirMatch[ 2 ] = '/' + theirMatch[ 2 ]; } htmlList.push( [ theirMatch[ 1 ], ' ', myMatch[ 1 ] || '', theirMatch[ 2 ] ].join( '' ) ); }; } )(), /** * Form fieldset for grouping dialog UI elements. * * @class CKEDITOR.ui.dialog.fieldset * @extends CKEDITOR.ui.dialog.uiElement * @constructor Creates a fieldset class instance. * @param {CKEDITOR.dialog} dialog Parent dialog window object. * @param {Array} childObjList * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. * @param {Array} childHtmlList Array of HTML code that corresponds to the HTML output of all the * objects in childObjList. * @param {Array} htmlList Array of HTML code that this element will output to. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * * * `label` (Optional) The legend of the this fieldset. * * `children` (Required) An array of dialog window field definitions which will be grouped inside this fieldset. * */ fieldset: function( dialog, childObjList, childHtmlList, htmlList, elementDefinition ) { var legendLabel = elementDefinition.label; /** @ignore */ var innerHTML = function() { var html = []; legendLabel && html.push( '' + legendLabel + '' ); for ( var i = 0; i < childHtmlList.length; i++ ) html.push( childHtmlList[ i ] ); return html.join( '' ); }; this._ = { children: childObjList }; CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'fieldset', null, null, innerHTML ); } }, true ); CKEDITOR.ui.dialog.html.prototype = new CKEDITOR.ui.dialog.uiElement(); /** @class CKEDITOR.ui.dialog.labeledElement */ CKEDITOR.ui.dialog.labeledElement.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { /** * Sets the label text of the element. * * @param {String} label The new label text. * @returns {CKEDITOR.ui.dialog.labeledElement} The current labeled element. */ setLabel: function( label ) { var node = CKEDITOR.document.getById( this._.labelId ); if ( node.getChildCount() < 1 ) ( new CKEDITOR.dom.text( label, CKEDITOR.document ) ).appendTo( node ); else node.getChild( 0 ).$.nodeValue = label; return this; }, /** * Retrieves the current label text of the elment. * * @returns {String} The current label text. */ getLabel: function() { var node = CKEDITOR.document.getById( this._.labelId ); if ( !node || node.getChildCount() < 1 ) return ''; else return node.getChild( 0 ).getText(); }, /** * Defines the `onChange` event for UI element definitions. * @property {Object} */ eventProcessors: commonEventProcessors }, true ); /** @class CKEDITOR.ui.dialog.button */ CKEDITOR.ui.dialog.button.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { /** * Simulates a click to the button. * * @returns {Object} Return value of the `click` event. */ click: function() { if ( !this._.disabled ) return this.fire( 'click', { dialog: this._.dialog } ); return false; }, /** * Enables the button. */ enable: function() { this._.disabled = false; var element = this.getElement(); element && element.removeClass( 'cke_disabled' ); }, /** * Disables the button. */ disable: function() { this._.disabled = true; this.getElement().addClass( 'cke_disabled' ); }, /** * Checks whether a field is visible. * * @returns {Boolean} */ isVisible: function() { return this.getElement().getFirst().isVisible(); }, /** * Checks whether a field is enabled. Fields can be disabled by using the * {@link #disable} method and enabled by using the {@link #enable} method. * * @returns {Boolean} */ isEnabled: function() { return !this._.disabled; }, /** * Defines the `onChange` event and `onClick` for button element definitions. * * @property {Object} */ eventProcessors: CKEDITOR.tools.extend( {}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, { onClick: function( dialog, func ) { this.on( 'click', function() { func.apply( this, arguments ); } ); } }, true ), /** * Handler for the element's access key up event. Simulates a click to * the button. */ accessKeyUp: function() { this.click(); }, /** * Handler for the element's access key down event. Simulates a mouse * down to the button. */ accessKeyDown: function() { this.focus(); }, keyboardFocusable: true }, true ); /** @class CKEDITOR.ui.dialog.textInput */ CKEDITOR.ui.dialog.textInput.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement(), { /** * Gets the text input DOM element under this UI object. * * @returns {CKEDITOR.dom.element} The DOM element of the text input. */ getInputElement: function() { return CKEDITOR.document.getById( this._.inputId ); }, /** * Puts focus into the text input. */ focus: function() { var me = this.selectParentTab(); // GECKO BUG: setTimeout() is needed to workaround invisible selections. setTimeout( function() { var element = me.getInputElement(); element && element.$.focus(); }, 0 ); }, /** * Selects all the text in the text input. */ select: function() { var me = this.selectParentTab(); // GECKO BUG: setTimeout() is needed to workaround invisible selections. setTimeout( function() { var e = me.getInputElement(); if ( e ) { e.$.focus(); e.$.select(); } }, 0 ); }, /** * Handler for the text input's access key up event. Makes a `select()` * call to the text input. */ accessKeyUp: function() { this.select(); }, /** * Sets the value of this text input object. * * uiElement.setValue( 'Blamo' ); * * @param {Object} value The new value. * @returns {CKEDITOR.ui.dialog.textInput} The current UI element. */ setValue: function( value ) { if ( this.bidi ) { var marker = value && value.charAt( 0 ), dir = ( marker == '\u202A' ? 'ltr' : marker == '\u202B' ? 'rtl' : null ); if ( dir ) { value = value.slice( 1 ); } // Set the marker or reset it (if dir==null). this.setDirectionMarker( dir ); } if ( !value ) { value = ''; } return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply( this, arguments ); }, /** * Gets the value of this text input object. * * @returns {String} The value. */ getValue: function() { var value = CKEDITOR.ui.dialog.uiElement.prototype.getValue.call( this ); if ( this.bidi && value ) { var dir = this.getDirectionMarker(); if ( dir ) { value = ( dir == 'ltr' ? '\u202A' : '\u202B' ) + value; } } return value; }, /** * Sets the text direction marker and the `dir` attribute of the input element. * * @since 4.5 * @param {String} dir The text direction. Pass `null` to reset. */ setDirectionMarker: function( dir ) { var inputElement = this.getInputElement(); if ( dir ) { inputElement.setAttributes( { dir: dir, 'data-cke-dir-marker': dir } ); // Don't remove the dir attribute if this field hasn't got the marker, // because the dir attribute could be set independently. } else if ( this.getDirectionMarker() ) { inputElement.removeAttributes( [ 'dir', 'data-cke-dir-marker' ] ); } }, /** * Gets the value of the text direction marker. * * @since 4.5 * @returns {String} `'ltr'`, `'rtl'` or `null` if the marker is not set. */ getDirectionMarker: function() { return this.getInputElement().data( 'cke-dir-marker' ); }, keyboardFocusable: true }, commonPrototype, true ); CKEDITOR.ui.dialog.textarea.prototype = new CKEDITOR.ui.dialog.textInput(); /** @class CKEDITOR.ui.dialog.select */ CKEDITOR.ui.dialog.select.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement(), { /** * Gets the DOM element of the select box. * * @returns {CKEDITOR.dom.element} The `` element of this file input. * * @returns {CKEDITOR.dom.element} The file input element. */ getInputElement: function() { var frameDocument = CKEDITOR.document.getById( this._.frameId ).getFrameDocument(); return frameDocument.$.forms.length > 0 ? new CKEDITOR.dom.element( frameDocument.$.forms[ 0 ].elements[ 0 ] ) : this.getElement(); }, /** * Uploads the file in the file input. * * @returns {CKEDITOR.ui.dialog.file} This object. */ submit: function() { this.getInputElement().getParent().$.submit(); return this; }, /** * Gets the action assigned to the form. * * @returns {String} The value of the action. */ getAction: function() { return this.getInputElement().getParent().$.action; }, /** * The events must be applied to the inner input element, and * this must be done when the iframe and form have been loaded. */ registerEvents: function( definition ) { var regex = /^on([A-Z]\w+)/, match; var registerDomEvent = function( uiElement, dialog, eventName, func ) { uiElement.on( 'formLoaded', function() { uiElement.getInputElement().on( eventName, func, uiElement ); } ); }; for ( var i in definition ) { if ( !( match = i.match( regex ) ) ) continue; if ( this.eventProcessors[ i ] ) this.eventProcessors[ i ].call( this, this._.dialog, definition[ i ] ); else registerDomEvent( this, this._.dialog, match[ 1 ].toLowerCase(), definition[ i ] ); } return this; }, /** * Redraws the file input and resets the file path in the file input. * The redrawing logic is necessary because non-IE browsers tend to clear * the `', onLoad: function() { var iframe = this.getElement(); this.getDialog().on( 'selectPage', function( ev ) { if ( ev.data.page == 'preview' ) { var self = this; setTimeout( function() { var doc = iframe.getFrameDocument(), html = doc.getElementsByTag( 'html' ).getItem( 0 ), head = doc.getHead(), body = doc.getBody(); self.commitContent( doc, html, head, body, 1 ); }, 50 ); } } ); iframe.getAscendant( 'table' ).setStyle( 'height', '100%' ); } } ] } ] }; } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/docprops/samples/0000755000201500020150000000000014517055557023562 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/docprops/samples/docprops.html0000644000201500020150000001762314517055557026312 0ustar puckpuck Document Properties — CKEditor Sample

    CKEditor Samples » Document Properties Plugin

    This sample is not maintained anymore. Check out its brand new version in CKEditor SDK.

    This sample shows how to configure CKEditor to use the Document Properties plugin. This plugin allows you to set the metadata of the page, including the page encoding, margins, meta tags, or background.

    Note: This plugin is to be used along with the fullPage configuration.

    The CKEditor instance below is inserted with a JavaScript call using the following code:

    CKEDITOR.replace( 'textarea_id', {
    	fullPage: true,
    	extraPlugins: 'docprops',
    	allowedContent: true
    });
    

    Note that textarea_id in the code above is the id attribute of the <textarea> element to be replaced.

    The allowedContent in the code above is set to true to disable content filtering. Setting this option is not obligatory, but in full page mode there is a strong chance that one may want be able to freely enter any HTML content in source mode without any limitations.

    rt-4.4.7/devel/third-party/ckeditor-src/plugins/docprops/icons/0000755000201500020150000000000014517055557023231 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/docprops/icons/docprops.png0000644000201500020150000000151414517055557025571 0ustar puckpuckPNG  IHDRabKGD pHYs B(xeIDAT8mkFwV~HJ".L``ܬcW04xM!!MZbBXFѤpv/;Ü{92zAmۼWMӐ)YQ5ƘRJ>yV: C ,D@DPJ1yϻG^YYDhI Nd:q$硔2P5y$I1ZNPfgg"|>~~~Fk"B&677 ˲S?fjZ"zx7qp`@~mm &'NWWWZF`1dYNqd2!s|7eY1Qh/uF`0Y)[g7v]D_;~Nj4DgU* ߽ʲ(hf+Yqqq#rpp$I? Of x<!j8#3MUU1锇*knook8ckk$Mӿ.OOOض}l[s9EQP%eYwj1%iϙ眝-Hw@$4Mg"%tEXtdate:create2013-07-04T17:03:03+02:00Mx%tEXtdate:modify2013-07-04T17:03:03+02:00<tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/docprops/icons/hidpi/0000755000201500020150000000000014517055557024326 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/docprops/icons/hidpi/docprops.png0000644000201500020150000000362514517055557026673 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(xIDATXÕMl\5gx&p88N"8(vXMEY4u[AtE"+PQJ R( (ZD1`!yb>jkr+͌,(ZDz_01Z=?>(}}RJƷŕq35xz޺WKK)z >$ \(P^Y^$R HR裳25A8cUj9OoϜ9Ã{X=+5D[k*{ŋ Iؽ[vsV|nxhT25"KzMFEt^^Eto j?lqҥc?{)ٻ{7=gbmZ d2$: ! /YKPw=eB}`c-Jktuq t۹9ҩ޹Skذ0Pc jJK/hw#38(vrs}}JWY)QJ;eWW1]$9<|Et` b7np9JJ)G:  is ˗Y^^bc?QW"hv :0dlvk\.S"`*[@DpTmfN>Ky0=8ֺ-OȑLJIw||BZQ"ԯ> @k9#<2O>*?/./A|{ZQ{4v֤Idjj``Æ<63#ɾ>~h&Q"Ǐ;ÿt: ۙj D)VFo鲔w]g=:bk-ָV hc1Au;氲4Z|[5Z}_L.N&,2ܟd2ʄNJ+eP6̶mێEZ)R$21Ͼ,p'ή~՚'(k d|ÿ5XK-֐XYcV(/mj}ƍ+8f}#z8V*lۺZ5Ҥ 8\.8SըDQ$JD߷O8 JDEQ$zZF>љ\.c..NkLn2-N}ZV) DQD4I+pDQDPZrԩObg5.4ֲ׹H.R STr^\KA#[|3??ҚB@*R JkٲYn-B>;1:Z{MrQ5 1DQD.ݛ71:ZK/GYDsyAJDО70/)E˒N`ܠ `_~?%$| <}kv՝@w;R…?{ Ta5ZmGog B;N7k aHດծd+fQy^;04LIe'C֖7/DFqL=TL]i?eqӔt@h**_ 8JBC(r9l.myX䏯‰'T*8p߿*B;R?kmPvrP%tEXtdate:create2013-06-20T11:07:04+02:00I%tEXtdate:modify2013-06-20T11:07:04+02:00tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/docprops/icons/hidpi/docprops-rtl.png0000644000201500020150000000356514517055557027475 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(xIDATXÕKlT2{x Z IRC҂* "uPvuۭY7BD(QtA@A&Tm %ԋ"p{s9\|Hsf~#'Aac-Zk1خF]Ȧ3R)ce*:ژh2 7#SSg٧[T-7N|d9xbqvjb%jןqt~jx3u}v$Nwɏ8 ٍdҥKO%Z O)l/ ?^ ponV=gϳݺz|||v|^f?w.L |Aw]~Pa5*M!JQF<{llv޽dnn sT> 5(8F&>С?߷O6 ;t-pͽU "kTY+Bav|><4DpU +* ܿQ=<6yXȍkoNRשFQ܌1< C.?Ͽ1=TsZrYCRT6d12–|6Bu]Dz6f\p]LB9 p/J)򃃈Μme1K: yxzPT4#29[|ҩϽ֏>رn)Ȧ8k1XMzֹR|6LN ~ˮ#;Ѻ2}}/O?@>A N9"b&y60 A|&ϓ<A K3a0kL}kIv82X|E+^9u 8عsKZ 0h*a%њl1XGd_T6{)_)8IA:IvW)J_R "vÅ|m*#7os5W)"J$hj%uHChMRɓ2Q$ q#8"Nǒ$ QgftR]1#v60 _u2qn}8)u~}av Fkn *oۅJZhLVT*oZ>!-YMޅ]۷/(E\p|(8J1??Ϯ kVA 8Ao gt4mJqcCǔJ%>}=g/5nU 8"GV^A@:d q?f+jc50Pik`7h*ފ!6ac;̘$,/-񟹹~UZlŻ/A.jq+s!1$ ]|ߺ:nTmy}0HDz..4:6#7TᑑuccxX4$Zk,8IA<5l+Eli^+Wd!Z2V;@ts{X^Z\.WVp1r p2 "%tEXtdate:create2013-06-20T11:07:04+02:00I%tEXtdate:modify2013-06-20T11:07:04+02:00tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/docprops/icons/docprops-rtl.png0000644000201500020150000000151014517055557026364 0ustar puckpuckPNG  IHDRabKGD pHYs B(xaIDAT8m1K$Y[U]]mUvB'+"(L 2Px~n&,lftI#^ Us9'<("I3xxx k-KvuODD+5%yqq9iZ_13U "σ!9/H zka2k-+͍&Iw~~~VU.nc eYx"www&3Ðf1(硋sZho8qB$t:|}GQsi9q1pH t:e+𫵖4MFk-㼪N[oa@ߧh|D,u@a~&"?f՟j+uȲ', numberedTitle: '編號清單屬性', square: '方塊', start: '開始', type: '類型', upperAlpha: '大寫字母 (A, B, C, D, E 等)', upperRoman: '大寫羅馬數字 (I, II, III, IV, V 等)', validateStartNumber: '清單起始號碼須為一完整數字。' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/nb.js0000644000201500020150000000171214517055560024172 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'nb', { armenian: 'Armensk nummerering', bulletedTitle: 'Egenskaper for punktmerket liste', circle: 'Sirkel', decimal: 'Tall (1, 2, 3, osv.)', decimalLeadingZero: 'Tall, med førstesiffer null (01, 02, 03, osv.)', disc: 'Disk', georgian: 'Georgisk nummerering (an, ban, gan, osv.)', lowerAlpha: 'Alfabetisk, små (a, b, c, d, e, osv.)', lowerGreek: 'Gresk, små (alpha, beta, gamma, osv.)', lowerRoman: 'Romertall, små (i, ii, iii, iv, v, osv.)', none: 'Ingen', notset: '', numberedTitle: 'Egenskaper for nummerert liste', square: 'Firkant', start: 'Start', type: 'Type', upperAlpha: 'Alfabetisk, store (A, B, C, D, E, osv.)', upperRoman: 'Romertall, store (I, II, III, IV, V, osv.)', validateStartNumber: 'Starten på listen må være et heltall.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/eo.js0000644000201500020150000000174614517055560024205 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'eo', { armenian: 'Armena nombrado', bulletedTitle: 'Atributoj de Bula Listo', circle: 'Cirklo', decimal: 'Dekumaj Nombroj (1, 2, 3, ktp.)', decimalLeadingZero: 'Dekumaj Nombroj malantaŭ nulo (01, 02, 03, ktp.)', disc: 'Disko', georgian: 'Gruza nombrado (an, ban, gan, ktp.)', lowerAlpha: 'Minusklaj Literoj (a, b, c, d, e, ktp.)', lowerGreek: 'Grekaj Minusklaj Literoj (alpha, beta, gamma, ktp.)', lowerRoman: 'Minusklaj Romanaj Nombroj (i, ii, iii, iv, v, ktp.)', none: 'Neniu', notset: '', numberedTitle: 'Atributoj de Numera Listo', square: 'kvadrato', start: 'Komenco', type: 'Tipo', upperAlpha: 'Majusklaj Literoj (A, B, C, D, E, ktp.)', upperRoman: 'Majusklaj Romanaj Nombroj (I, II, III, IV, V, ktp.)', validateStartNumber: 'La unua listero devas esti entjera nombro.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/es.js0000644000201500020150000000177114517055560024207 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'es', { armenian: 'Numeración armenia', bulletedTitle: 'Propiedades de viñetas', circle: 'Círculo', decimal: 'Decimal (1, 2, 3, etc.)', decimalLeadingZero: 'Decimal con cero inicial (01, 02, 03, etc.)', disc: 'Disco', georgian: 'Numeración georgiana (an, ban, gan, etc.)', lowerAlpha: 'Alfabeto en minúsculas (a, b, c, d, e, etc.)', lowerGreek: 'Letras griegas (alpha, beta, gamma, etc.)', lowerRoman: 'Números romanos en minúsculas (i, ii, iii, iv, v, etc.)', none: 'Ninguno', notset: '', numberedTitle: 'Propiedades de lista numerada', square: 'Cuadrado', start: 'Inicio', type: 'Tipo', upperAlpha: 'Alfabeto en mayúsculas (A, B, C, D, E, etc.)', upperRoman: 'Números romanos en mayúsculas (I, II, III, IV, V, etc.)', validateStartNumber: 'El Inicio debe ser un número entero.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/ro.js0000644000201500020150000000173714517055560024222 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'ro', { armenian: 'Numerotare armeniană', bulletedTitle: 'Proprietățile listei cu simboluri', circle: 'Cerc', decimal: 'Decimale (1, 2, 3, etc.)', decimalLeadingZero: 'Decimale cu zero în față (01, 02, 03, etc.)', disc: 'Disc', georgian: 'Numerotare georgiană (an, ban, gan, etc.)', lowerAlpha: 'Litere mici (a, b, c, d, e, etc.)', lowerGreek: 'Litere grecești mici (alpha, beta, gamma, etc.)', lowerRoman: 'Cifre romane mici (i, ii, iii, iv, v, etc.)', none: 'Nimic', notset: '', numberedTitle: 'Proprietățile listei numerotate', square: 'Pătrat', start: 'Start', type: 'Tip', upperAlpha: 'Litere mari (A, B, C, D, E, etc.)', upperRoman: 'Cifre romane mari (I, II, III, IV, V, etc.)', validateStartNumber: 'Începutul listei trebuie să fie un număr întreg.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/hr.js0000644000201500020150000000177614517055560024216 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'hr', { armenian: 'Armenijska numeracija', bulletedTitle: 'Svojstva liste', circle: 'Krug', decimal: 'Decimalna numeracija (1, 2, 3, itd.)', decimalLeadingZero: 'Decimalna s vodećom nulom (01, 02, 03, itd)', disc: 'Disk', georgian: 'Gruzijska numeracija(an, ban, gan, etc.)', lowerAlpha: 'Znakovi mala slova (a, b, c, d, e, itd.)', lowerGreek: 'Grčka numeracija mala slova (alfa, beta, gama, itd).', lowerRoman: 'Romanska numeracija mala slova (i, ii, iii, iv, v, itd.)', none: 'Bez', notset: '', numberedTitle: 'Svojstva brojčane liste', square: 'Kvadrat', start: 'Početak', type: 'Vrsta', upperAlpha: 'Znakovi velika slova (A, B, C, D, E, itd.)', upperRoman: 'Romanska numeracija velika slova (I, II, III, IV, V, itd.)', validateStartNumber: 'Početak brojčane liste mora biti cijeli broj.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/it.js0000644000201500020150000000201114517055560024200 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'it', { armenian: 'Numerazione Armena', bulletedTitle: 'Proprietà liste puntate', circle: 'Cerchio', decimal: 'Decimale (1, 2, 3, ecc.)', decimalLeadingZero: 'Decimale preceduto da 0 (01, 02, 03, ecc.)', disc: 'Disco', georgian: 'Numerazione Georgiana (an, ban, gan, ecc.)', lowerAlpha: 'Alfabetico minuscolo (a, b, c, d, e, ecc.)', lowerGreek: 'Greco minuscolo (alpha, beta, gamma, ecc.)', lowerRoman: 'Numerazione Romana minuscola (i, ii, iii, iv, v, ecc.)', none: 'Nessuno', notset: '', numberedTitle: 'Proprietà liste numerate', square: 'Quadrato', start: 'Inizio', type: 'Tipo', upperAlpha: 'Alfabetico maiuscolo (A, B, C, D, E, ecc.)', upperRoman: 'Numerazione Romana maiuscola (I, II, III, IV, V, ecc.)', validateStartNumber: 'Il numero di inizio di una lista numerata deve essere un numero intero.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/sk.js0000644000201500020150000000176514517055560024220 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'sk', { armenian: 'Arménske číslovanie', bulletedTitle: 'Vlastnosti odrážkového zoznamu', circle: 'Kruh', decimal: 'Číselné (1, 2, 3, atď.)', decimalLeadingZero: 'Číselné s nulou (01, 02, 03, atď.)', disc: 'Disk', georgian: 'Gregoriánske číslovanie (an, ban, gan, atď.)', lowerAlpha: 'Malé latinské (a, b, c, d, e, atď.)', lowerGreek: 'Malé grécke (alfa, beta, gama, atď.)', lowerRoman: 'Malé rímske (i, ii, iii, iv, v, atď.)', none: 'Nič', notset: '', numberedTitle: 'Vlastnosti číselného zoznamu', square: 'Štvorec', start: 'Začiatok', type: 'Typ', upperAlpha: 'Veľké latinské (A, B, C, D, E, atď.)', upperRoman: 'Veľké rímske (I, II, III, IV, V, atď.)', validateStartNumber: 'Začiatočné číslo číselného zoznamu musí byť celé číslo.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/pt.js0000644000201500020150000000165014517055560024217 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'pt', { armenian: 'Numeração armênia', bulletedTitle: 'Bulleted List Properties', circle: 'Círculo', decimal: 'Decimal (1, 2, 3, etc.)', decimalLeadingZero: 'Decimal leading zero (01, 02, 03, etc.)', disc: 'Disco', georgian: 'Georgian numbering (an, ban, gan, etc.)', lowerAlpha: 'Lower Alpha (a, b, c, d, e, etc.)', lowerGreek: 'Lower Greek (alpha, beta, gamma, etc.)', lowerRoman: 'Lower Roman (i, ii, iii, iv, v, etc.)', none: 'Nenhum', notset: '', numberedTitle: 'Numbered List Properties', square: 'Quadrado', start: 'Iniciar', type: 'Tipo', upperAlpha: 'Upper Alpha (A, B, C, D, E, etc.)', upperRoman: 'Upper Roman (I, II, III, IV, V, etc.)', validateStartNumber: 'List start number must be a whole number.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/si.js0000644000201500020150000000217714517055560024214 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'si', { armenian: 'Armenian numbering', // MISSING bulletedTitle: 'Bulleted List Properties', // MISSING circle: 'Circle', // MISSING decimal: 'Decimal (1, 2, 3, etc.)', // MISSING decimalLeadingZero: 'Decimal leading zero (01, 02, 03, etc.)', // MISSING disc: 'Disc', // MISSING georgian: 'Georgian numbering (an, ban, gan, etc.)', // MISSING lowerAlpha: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING lowerGreek: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING lowerRoman: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING none: 'කිසිවක්ම නොවේ', notset: '<යොදා >', numberedTitle: 'Numbered List Properties', // MISSING square: 'Square', // MISSING start: 'Start', // MISSING type: 'වර්ගය', upperAlpha: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING upperRoman: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING validateStartNumber: 'List start number must be a whole number.' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/ko.js0000644000201500020150000000170114517055560024202 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'ko', { armenian: '아르메니아 숫자', bulletedTitle: '순서 없는 목록 속성', circle: '원', decimal: '수 (1, 2, 3, 등)', decimalLeadingZero: '0이 붙은 수 (01, 02, 03, 등)', disc: '내림차순', georgian: '그루지야 숫자 (an, ban, gan, 등)', lowerAlpha: '영소문자 (a, b, c, d, e, 등)', lowerGreek: '그리스 소문자 (alpha, beta, gamma, 등)', lowerRoman: '로마 소문자 (i, ii, iii, iv, v, 등)', none: '없음', notset: '<설정 없음>', numberedTitle: '순서 있는 목록 속성', square: '사각', start: '시작', type: '유형', upperAlpha: '영대문자 (A, B, C, D, E, 등)', upperRoman: '로마 대문자 (I, II, III, IV, V, 등)', validateStartNumber: '목록 시작 숫자는 정수여야 합니다.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/mk.js0000644000201500020150000000163514517055560024206 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'mk', { armenian: 'Armenian numbering', bulletedTitle: 'Bulleted List Properties', circle: 'Circle', decimal: 'Decimal (1, 2, 3, etc.)', decimalLeadingZero: 'Decimal leading zero (01, 02, 03, etc.)', disc: 'Disc', georgian: 'Georgian numbering (an, ban, gan, etc.)', lowerAlpha: 'Lower Alpha (a, b, c, d, e, etc.)', lowerGreek: 'Lower Greek (alpha, beta, gamma, etc.)', lowerRoman: 'Lower Roman (i, ii, iii, iv, v, etc.)', none: 'None', notset: '', numberedTitle: 'Numbered List Properties', square: 'Square', start: 'Start', type: 'Type', upperAlpha: 'Upper Alpha (A, B, C, D, E, etc.)', upperRoman: 'Upper Roman (I, II, III, IV, V, etc.)', validateStartNumber: 'List start number must be a whole number.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/cy.js0000644000201500020150000000163314517055560024210 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'cy', { armenian: 'Rhifo Armeneg', bulletedTitle: 'Priodweddau Rhestr Fwled', circle: 'Cylch', decimal: 'Degol (1, 2, 3, ayyb.)', decimalLeadingZero: 'Degol â sero arweiniol (01, 02, 03, ayyb.)', disc: 'Disg', georgian: 'Rhifau Sioraidd (an, ban, gan, ayyb.)', lowerAlpha: 'Alffa Is (a, b, c, d, e, ayyb.)', lowerGreek: 'Groeg Is (alpha, beta, gamma, ayyb.)', lowerRoman: 'Rhufeinig Is (i, ii, iii, iv, v, ayyb.)', none: 'Dim', notset: '', numberedTitle: 'Priodweddau Rhestr Rifol', square: 'Sgwâr', start: 'Dechrau', type: 'Math', upperAlpha: 'Alffa Uwch (A, B, C, D, E, ayyb.)', upperRoman: 'Rhufeinig Uwch (I, II, III, IV, V, ayyb.)', validateStartNumber: 'Rhaid bod y rhif cychwynnol yn gyfanrif.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/uk.js0000644000201500020150000000237114517055560024214 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'uk', { armenian: 'Вірменська нумерація', bulletedTitle: 'Опції маркованого списку', circle: 'Кільце', decimal: 'Десяткові (1, 2, 3 і т.д.)', decimalLeadingZero: 'Десяткові з нулем (01, 02, 03 і т.д.)', disc: 'Кружечок', georgian: 'Грузинська нумерація (an, ban, gan і т.д.)', lowerAlpha: 'Малі лат. букви (a, b, c, d, e і т.д.)', lowerGreek: 'Малі гр. букви (альфа, бета, гамма і т.д.)', lowerRoman: 'Малі римські (i, ii, iii, iv, v і т.д.)', none: 'Нема', notset: '<не вказано>', numberedTitle: 'Опції нумерованого списку', square: 'Квадратик', start: 'Почати з...', type: 'Тип', upperAlpha: 'Великі лат. букви (A, B, C, D, E і т.д.)', upperRoman: 'Великі римські (I, II, III, IV, V і т.д.)', validateStartNumber: 'Початковий номер списку повинен бути цілим числом.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/zh-cn.js0000644000201500020150000000175114517055560024615 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'zh-cn', { armenian: '传统的亚美尼亚编号方式', bulletedTitle: '项目列表属性', circle: '空心圆', decimal: '数字 (1, 2, 3, 等)', decimalLeadingZero: '0开头的数字标记(01, 02, 03, 等)', disc: '实心圆', georgian: '传统的乔治亚编号方式(an, ban, gan, 等)', lowerAlpha: '小写英文字母(a, b, c, d, e, 等)', lowerGreek: '小写希腊字母(alpha, beta, gamma, 等)', lowerRoman: '小写罗马数字(i, ii, iii, iv, v, 等)', none: '无标记', notset: '<没有设置>', numberedTitle: '编号列表属性', square: '实心方块', start: '开始序号', type: '标记类型', upperAlpha: '大写英文字母(A, B, C, D, E, 等)', upperRoman: '大写罗马数字(I, II, III, IV, V, 等)', validateStartNumber: '列表开始序号必须为整数格式' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/sv.js0000644000201500020150000000166514517055560024232 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'sv', { armenian: 'Armenisk numrering', bulletedTitle: 'Egenskaper för punktlista', circle: 'Cirkel', decimal: 'Decimal (1, 2, 3, etc.)', decimalLeadingZero: 'Decimal nolla (01, 02, 03, etc.)', disc: 'Disk', georgian: 'Georgisk numrering (an, ban, gan, etc.)', lowerAlpha: 'Alpha gemener (a, b, c, d, e, etc.)', lowerGreek: 'Grekiska gemener (alpha, beta, gamma, etc.)', lowerRoman: 'Romerska gemener (i, ii, iii, iv, v, etc.)', none: 'Ingen', notset: '', numberedTitle: 'Egenskaper för punktlista', square: 'Fyrkant', start: 'Start', type: 'Typ', upperAlpha: 'Alpha versaler (A, B, C, D, E, etc.)', upperRoman: 'Romerska versaler (I, II, III, IV, V, etc.)', validateStartNumber: 'Listans startnummer måste vara ett heltal.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/lt.js0000644000201500020150000000200214517055560024203 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'lt', { armenian: 'Armėniški skaitmenys', bulletedTitle: 'Ženklelinio sąrašo nustatymai', circle: 'Apskritimas', decimal: 'Dešimtainis (1, 2, 3, t.t)', decimalLeadingZero: 'Dešimtainis su nuliu priekyje (01, 02, 03, t.t)', disc: 'Diskas', georgian: 'Gruziniški skaitmenys (an, ban, gan, t.t)', lowerAlpha: 'Mažosios Alpha (a, b, c, d, e, t.t)', lowerGreek: 'Mažosios Graikų (alpha, beta, gamma, t.t)', lowerRoman: 'Mažosios Romėnų (i, ii, iii, iv, v, t.t)', none: 'Niekas', notset: '', numberedTitle: 'Skaitmeninio sąrašo nustatymai', square: 'Kvadratas', start: 'Pradžia', type: 'Rūšis', upperAlpha: 'Didžiosios Alpha (A, B, C, D, E, t.t)', upperRoman: 'Didžiosios Romėnų (I, II, III, IV, V, t.t)', validateStartNumber: 'Sąrašo pradžios skaitmuo turi būti sveikas skaičius.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/is.js0000644000201500020150000000163514517055560024212 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'is', { armenian: 'Armenian numbering', bulletedTitle: 'Bulleted List Properties', circle: 'Circle', decimal: 'Decimal (1, 2, 3, etc.)', decimalLeadingZero: 'Decimal leading zero (01, 02, 03, etc.)', disc: 'Disc', georgian: 'Georgian numbering (an, ban, gan, etc.)', lowerAlpha: 'Lower Alpha (a, b, c, d, e, etc.)', lowerGreek: 'Lower Greek (alpha, beta, gamma, etc.)', lowerRoman: 'Lower Roman (i, ii, iii, iv, v, etc.)', none: 'None', notset: '', numberedTitle: 'Numbered List Properties', square: 'Square', start: 'Start', type: 'Type', upperAlpha: 'Upper Alpha (A, B, C, D, E, etc.)', upperRoman: 'Upper Roman (I, II, III, IV, V, etc.)', validateStartNumber: 'List start number must be a whole number.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/fr-ca.js0000644000201500020150000000176314517055560024571 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'fr-ca', { armenian: 'Numération arménienne', bulletedTitle: 'Propriété de liste à puce', circle: 'Cercle', decimal: 'Décimal (1, 2, 3, etc.)', decimalLeadingZero: 'Décimal avec zéro (01, 02, 03, etc.)', disc: 'Disque', georgian: 'Numération géorgienne (an, ban, gan, etc.)', lowerAlpha: 'Alphabétique minuscule (a, b, c, d, e, etc.)', lowerGreek: 'Grecque minuscule (alpha, beta, gamma, etc.)', lowerRoman: 'Romain minuscule (i, ii, iii, iv, v, etc.)', none: 'Aucun', notset: '', numberedTitle: 'Propriété de la liste numérotée', square: 'Carré', start: 'Début', type: 'Type', upperAlpha: 'Alphabétique majuscule (A, B, C, D, E, etc.)', upperRoman: 'Romain Majuscule (I, II, III, IV, V, etc.)', validateStartNumber: 'Le numéro de début de liste doit être un entier.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/et.js0000644000201500020150000000165214517055560024206 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'et', { armenian: 'Armeenia numbrid', bulletedTitle: 'Punktloendi omadused', circle: 'Ring', decimal: 'Numbrid (1, 2, 3, jne)', decimalLeadingZero: 'Numbrid algusnulliga (01, 02, 03, jne)', disc: 'Täpp', georgian: 'Gruusia numbrid (an, ban, gan, jne)', lowerAlpha: 'Väiketähed (a, b, c, d, e, jne)', lowerGreek: 'Kreeka väiketähed (alpha, beta, gamma, jne)', lowerRoman: 'Väiksed rooma numbrid (i, ii, iii, iv, v, jne)', none: 'Puudub', notset: '', numberedTitle: 'Numberloendi omadused', square: 'Ruut', start: 'Algus', type: 'Liik', upperAlpha: 'Suurtähed (A, B, C, D, E, jne)', upperRoman: 'Suured rooma numbrid (I, II, III, IV, V, jne)', validateStartNumber: 'Loendi algusnumber peab olema täisarv.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/bs.js0000644000201500020150000000163514517055560024203 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'bs', { armenian: 'Armenian numbering', bulletedTitle: 'Bulleted List Properties', circle: 'Circle', decimal: 'Decimal (1, 2, 3, etc.)', decimalLeadingZero: 'Decimal leading zero (01, 02, 03, etc.)', disc: 'Disc', georgian: 'Georgian numbering (an, ban, gan, etc.)', lowerAlpha: 'Lower Alpha (a, b, c, d, e, etc.)', lowerGreek: 'Lower Greek (alpha, beta, gamma, etc.)', lowerRoman: 'Lower Roman (i, ii, iii, iv, v, etc.)', none: 'None', notset: '', numberedTitle: 'Numbered List Properties', square: 'Square', start: 'Start', type: 'Type', upperAlpha: 'Upper Alpha (A, B, C, D, E, etc.)', upperRoman: 'Upper Roman (I, II, III, IV, V, etc.)', validateStartNumber: 'List start number must be a whole number.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/pl.js0000644000201500020150000000175114517055560024211 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'pl', { armenian: 'Numerowanie armeńskie', bulletedTitle: 'Właściwości list wypunktowanych', circle: 'Koło', decimal: 'Liczby (1, 2, 3 itd.)', decimalLeadingZero: 'Liczby z początkowym zerem (01, 02, 03 itd.)', disc: 'Okrąg', georgian: 'Numerowanie gruzińskie (an, ban, gan itd.)', lowerAlpha: 'Małe litery (a, b, c, d, e itd.)', lowerGreek: 'Małe litery greckie (alpha, beta, gamma itd.)', lowerRoman: 'Małe cyfry rzymskie (i, ii, iii, iv, v itd.)', none: 'Brak', notset: '', numberedTitle: 'Właściwości list numerowanych', square: 'Kwadrat', start: 'Początek', type: 'Typ punktora', upperAlpha: 'Duże litery (A, B, C, D, E itd.)', upperRoman: 'Duże cyfry rzymskie (I, II, III, IV, V itd.)', validateStartNumber: 'Listę musi rozpoczynać liczba całkowita.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/bg.js0000644000201500020150000000222014517055560024156 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'bg', { armenian: 'Арменско номериране', bulletedTitle: 'Bulleted List Properties', circle: 'Кръг', decimal: 'Числа (1, 2, 3 и др.)', decimalLeadingZero: 'Числа с водеща нула (01, 02, 03 и т.н.)', disc: 'Диск', georgian: 'Грузинско номериране (an, ban, gan, и т.н.)', lowerAlpha: 'Малки букви (а, б, в, г, д и т.н.)', lowerGreek: 'Малки гръцки букви (алфа, бета, гама и т.н.)', lowerRoman: 'Малки римски числа (i, ii, iii, iv, v и т.н.)', none: 'Няма', notset: '<не е указано>', numberedTitle: 'Numbered List Properties', square: 'Квадрат', start: 'Старт', type: 'Тип', upperAlpha: 'Големи букви (А, Б, В, Г, Д и т.н.)', upperRoman: 'Големи римски числа (I, II, III, IV, V и т.н.)', validateStartNumber: 'List start number must be a whole number.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/fa.js0000644000201500020150000000222614517055560024162 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'fa', { armenian: 'شماره‌گذاری ارمنی', bulletedTitle: 'خصوصیات فهرست نقطه‌ای', circle: 'دایره', decimal: 'ده‌دهی (۱، ۲، ۳، ...)', decimalLeadingZero: 'دهدهی همراه با صفر (۰۱، ۰۲، ۰۳، ...)', disc: 'صفحه گرد', georgian: 'شمارهگذاری گریگورین (an, ban, gan, etc.)', lowerAlpha: 'پانویس الفبایی (a, b, c, d, e, etc.)', lowerGreek: 'پانویس یونانی (alpha, beta, gamma, etc.)', lowerRoman: 'پانویس رومی (i, ii, iii, iv, v, etc.)', none: 'هیچ', notset: '<تنظیم نشده>', numberedTitle: 'ویژگیهای فهرست شمارهدار', square: 'چهارگوش', start: 'شروع', type: 'نوع', upperAlpha: 'بالانویس الفبایی (A, B, C, D, E, etc.)', upperRoman: 'بالانویس رومی (I, II, III, IV, V, etc.)', validateStartNumber: 'فهرست شماره شروع باید یک عدد صحیح باشد.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/ku.js0000644000201500020150000000240414517055560024211 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'ku', { armenian: 'ئاراستەی ژمارەی ئەرمەنی', bulletedTitle: 'خاسیەتی لیستی خاڵی', circle: 'بازنه', decimal: 'ژمارە (1, 2, 3, وە هیتر.)', decimalLeadingZero: 'ژمارە سفڕی لەپێشەوه (01, 02, 03, وە هیتر.)', disc: 'پەپکە', georgian: 'ئاراستەی ژمارەی جۆڕجی (an, ban, gan, وە هیتر.)', lowerAlpha: 'ئەلفابێی بچووك (a, b, c, d, e, وە هیتر.)', lowerGreek: 'یۆنانی بچووك (alpha, beta, gamma, وە هیتر.)', lowerRoman: 'ژمارەی ڕۆمی بچووك (i, ii, iii, iv, v, وە هیتر.)', none: 'هیچ', notset: '<دانەندراوه>', numberedTitle: 'خاسیەتی لیستی ژمارەیی', square: 'چووراگۆشە', start: 'دەستپێکردن', type: 'جۆر', upperAlpha: 'ئەلفابێی گەوره (A, B, C, D, E, وە هیتر.)', upperRoman: 'ژمارەی ڕۆمی گەوره (I, II, III, IV, V, وە هیتر.)', validateStartNumber: 'دەستپێکەری لیستی ژمارەیی دەبێت تەنها ژمارە بێت.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/bn.js0000644000201500020150000000163514517055560024176 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'bn', { armenian: 'Armenian numbering', bulletedTitle: 'Bulleted List Properties', circle: 'Circle', decimal: 'Decimal (1, 2, 3, etc.)', decimalLeadingZero: 'Decimal leading zero (01, 02, 03, etc.)', disc: 'Disc', georgian: 'Georgian numbering (an, ban, gan, etc.)', lowerAlpha: 'Lower Alpha (a, b, c, d, e, etc.)', lowerGreek: 'Lower Greek (alpha, beta, gamma, etc.)', lowerRoman: 'Lower Roman (i, ii, iii, iv, v, etc.)', none: 'None', notset: '', numberedTitle: 'Numbered List Properties', square: 'Square', start: 'Start', type: 'Type', upperAlpha: 'Upper Alpha (A, B, C, D, E, etc.)', upperRoman: 'Upper Roman (I, II, III, IV, V, etc.)', validateStartNumber: 'List start number must be a whole number.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/el.js0000644000201500020150000000242114517055560024171 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'el', { armenian: 'Αρμενική αρίθμηση', bulletedTitle: 'Ιδιότητες Λίστας Σημείων', circle: 'Κύκλος', decimal: 'Δεκαδική (1, 2, 3, κτλ)', decimalLeadingZero: 'Δεκαδική με αρχικό μηδεν (01, 02, 03, κτλ)', disc: 'Δίσκος', georgian: 'Γεωργιανή αρίθμηση (ა, ბ, გ, κτλ)', lowerAlpha: 'Μικρά Λατινικά (a, b, c, d, e, κτλ.)', lowerGreek: 'Μικρά Ελληνικά (α, β, γ, κτλ)', lowerRoman: 'Μικρά Ρωμαϊκά (i, ii, iii, iv, v, κτλ)', none: 'Καμία', notset: '<δεν έχει οριστεί>', numberedTitle: 'Ιδιότητες Αριθμημένης Λίστας ', square: 'Τετράγωνο', start: 'Εκκίνηση', type: 'Τύπος', upperAlpha: 'Κεφαλαία Λατινικά (A, B, C, D, E, κτλ)', upperRoman: 'Κεφαλαία Ρωμαϊκά (I, II, III, IV, V, κτλ)', validateStartNumber: 'Ο αριθμός εκκίνησης της αρίθμησης πρέπει να είναι ακέραιος αριθμός.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/fi.js0000644000201500020150000000176514517055560024201 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'fi', { armenian: 'Armeenialainen numerointi', bulletedTitle: 'Numeroimattoman listan ominaisuudet', circle: 'Ympyrä', decimal: 'Desimaalit (1, 2, 3, jne.)', decimalLeadingZero: 'Desimaalit, alussa nolla (01, 02, 03, jne.)', disc: 'Levy', georgian: 'Georgialainen numerointi (an, ban, gan, etc.)', lowerAlpha: 'Pienet aakkoset (a, b, c, d, e, jne.)', lowerGreek: 'Pienet kreikkalaiset (alpha, beta, gamma, jne.)', lowerRoman: 'Pienet roomalaiset (i, ii, iii, iv, v, jne.)', none: 'Ei mikään', notset: '', numberedTitle: 'Numeroidun listan ominaisuudet', square: 'Neliö', start: 'Alku', type: 'Tyyppi', upperAlpha: 'Isot aakkoset (A, B, C, D, E, jne.)', upperRoman: 'Isot roomalaiset (I, II, III, IV, V, jne.)', validateStartNumber: 'Listan ensimmäisen numeron tulee olla kokonaisluku.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/ru.js0000644000201500020150000000254314517055560024224 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'ru', { armenian: 'Армянская нумерация', bulletedTitle: 'Свойства маркированного списка', circle: 'Круг', decimal: 'Десятичные (1, 2, 3, и т.д.)', decimalLeadingZero: 'Десятичные с ведущим нулём (01, 02, 03, и т.д.)', disc: 'Окружность', georgian: 'Грузинская нумерация (ани, бани, гани, и т.д.)', lowerAlpha: 'Строчные латинские (a, b, c, d, e, и т.д.)', lowerGreek: 'Строчные греческие (альфа, бета, гамма, и т.д.)', lowerRoman: 'Строчные римские (i, ii, iii, iv, v, и т.д.)', none: 'Нет', notset: '<не указано>', numberedTitle: 'Свойства нумерованного списка', square: 'Квадрат', start: 'Начиная с', type: 'Тип', upperAlpha: 'Заглавные латинские (A, B, C, D, E, и т.д.)', upperRoman: 'Заглавные римские (I, II, III, IV, V, и т.д.)', validateStartNumber: 'Первый номер списка должен быть задан обычным целым числом.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/gl.js0000644000201500020150000000203414517055560024173 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'gl', { armenian: 'Numeración armenia', bulletedTitle: 'Propiedades da lista viñeteada', circle: 'Circulo', decimal: 'Decimal (1, 2, 3, etc.)', decimalLeadingZero: 'Decimal con cero á esquerda (01, 02, 03, etc.)', disc: 'Disc', georgian: 'Numeración xeorxiana (an, ban, gan, etc.)', lowerAlpha: 'Alfabeto en minúsculas (a, b, c, d, e, etc.)', lowerGreek: 'Grego en minúsculas (alpha, beta, gamma, etc.)', lowerRoman: 'Números romanos en minúsculas (i, ii, iii, iv, v, etc.)', none: 'Ningún', notset: '', numberedTitle: 'Propiedades da lista numerada', square: 'Cadrado', start: 'Inicio', type: 'Tipo', upperAlpha: 'Alfabeto en maiúsculas (A, B, C, D, E, etc.)', upperRoman: 'Números romanos en maiúsculas (I, II, III, IV, V, etc.)', validateStartNumber: 'O número de inicio da lista debe ser un número enteiro.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/sr-latn.js0000644000201500020150000000164214517055560025155 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'sr-latn', { armenian: 'Armenian numbering', bulletedTitle: 'Bulleted List Properties', circle: 'Circle', decimal: 'Decimal (1, 2, 3, etc.)', decimalLeadingZero: 'Decimal leading zero (01, 02, 03, etc.)', disc: 'Disc', georgian: 'Georgian numbering (an, ban, gan, etc.)', lowerAlpha: 'Lower Alpha (a, b, c, d, e, etc.)', lowerGreek: 'Lower Greek (alpha, beta, gamma, etc.)', lowerRoman: 'Lower Roman (i, ii, iii, iv, v, etc.)', none: 'None', notset: '', numberedTitle: 'Numbered List Properties', square: 'Square', start: 'Start', type: 'Type', upperAlpha: 'Upper Alpha (A, B, C, D, E, etc.)', upperRoman: 'Upper Roman (I, II, III, IV, V, etc.)', validateStartNumber: 'List start number must be a whole number.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/sq.js0000644000201500020150000000175714517055560024227 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'sq', { armenian: 'Numërim armenian', bulletedTitle: 'Karakteristikat e Listës me Pulla', circle: 'Rreth', decimal: 'Decimal (1, 2, 3, etj.)', decimalLeadingZero: 'Decimal me zerro udhëheqëse (01, 02, 03, etj.)', disc: 'Disk', georgian: 'Numërim gjeorgjian (an, ban, gan, etj.)', lowerAlpha: 'Të vogla alfa (a, b, c, d, e, etj.)', lowerGreek: 'Të vogla greke (alpha, beta, gamma, etj.)', lowerRoman: 'Të vogla romake (i, ii, iii, iv, v, etj.)', none: 'Asnjë', notset: '', numberedTitle: 'Karakteristikat e Listës me Numra', square: 'Katror', start: 'Fillimi', type: 'LLoji', upperAlpha: 'Të mëdha alfa (A, B, C, D, E, etj.)', upperRoman: 'Të mëdha romake (I, II, III, IV, V, etj.)', validateStartNumber: 'Numri i fillimit të listës duhet të është numër i plotë.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/pt-br.js0000644000201500020150000000211214517055560024612 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'pt-br', { armenian: 'Numeração Armêna', bulletedTitle: 'Propriedades da Lista sem Numeros', circle: 'Círculo', decimal: 'Numeração Decimal (1, 2, 3, etc.)', decimalLeadingZero: 'Numeração Decimal com zeros (01, 02, 03, etc.)', disc: 'Disco', georgian: 'Numeração da Geórgia (an, ban, gan, etc.)', lowerAlpha: 'Numeração Alfabética minúscula (a, b, c, d, e, etc.)', lowerGreek: 'Numeração Grega minúscula (alpha, beta, gamma, etc.)', lowerRoman: 'Numeração Romana minúscula (i, ii, iii, iv, v, etc.)', none: 'Nenhum', notset: '', numberedTitle: 'Propriedades da Lista Numerada', square: 'Quadrado', start: 'Início', type: 'Tipo', upperAlpha: 'Numeração Alfabética Maiúscula (A, B, C, D, E, etc.)', upperRoman: 'Numeração Romana maiúscula (I, II, III, IV, V, etc.)', validateStartNumber: 'O número inicial da lista deve ser um número inteiro.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/fo.js0000644000201500020150000000175414517055560024205 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'fo', { armenian: 'Armensk talskipan', bulletedTitle: 'Eginleikar fyri lista við prikkum', circle: 'Sirkul', decimal: 'Vanlig tøl (1, 2, 3, etc.)', decimalLeadingZero: 'Tøl við null frammanfyri (01, 02, 03, etc.)', disc: 'Disc', georgian: 'Georgisk talskipan (an, ban, gan, osv.)', lowerAlpha: 'Lítlir bókstavir (a, b, c, d, e, etc.)', lowerGreek: 'Grikskt við lítlum (alpha, beta, gamma, etc.)', lowerRoman: 'Lítil rómaratøl (i, ii, iii, iv, v, etc.)', none: 'Einki', notset: '', numberedTitle: 'Eginleikar fyri lista við tølum', square: 'Fýrkantur', start: 'Byrjan', type: 'Slag', upperAlpha: 'Stórir bókstavir (A, B, C, D, E, etc.)', upperRoman: 'Stór rómaratøl (I, II, III, IV, V, etc.)', validateStartNumber: 'Byrjunartalið fyri lista má vera eitt heiltal.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/af.js0000644000201500020150000000175014517055560024163 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'af', { armenian: 'Armeense nommering', bulletedTitle: 'Eienskappe van ongenommerde lys', circle: 'Sirkel', decimal: 'Desimale syfers (1, 2, 3, ens.)', decimalLeadingZero: 'Desimale syfers met voorloopnul (01, 02, 03, ens.)', disc: 'Skyf', georgian: 'Georgiese nommering (an, ban, gan, ens.)', lowerAlpha: 'Kleinletters (a, b, c, d, e, ens.)', lowerGreek: 'Griekse kleinletters (alpha, beta, gamma, ens.)', lowerRoman: 'Romeinse kleinletters (i, ii, iii, iv, v, ens.)', none: 'Geen', notset: '', numberedTitle: 'Eienskappe van genommerde lys', square: 'Vierkant', start: 'Begin', type: 'Tipe', upperAlpha: 'Hoofletters (A, B, C, D, E, ens.)', upperRoman: 'Romeinse hoofletters (I, II, III, IV, V, ens.)', validateStartNumber: 'Beginnommer van lys moet \'n heelgetal wees.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/hi.js0000644000201500020150000000163514517055560024177 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'hi', { armenian: 'Armenian numbering', bulletedTitle: 'Bulleted List Properties', circle: 'Circle', decimal: 'Decimal (1, 2, 3, etc.)', decimalLeadingZero: 'Decimal leading zero (01, 02, 03, etc.)', disc: 'Disc', georgian: 'Georgian numbering (an, ban, gan, etc.)', lowerAlpha: 'Lower Alpha (a, b, c, d, e, etc.)', lowerGreek: 'Lower Greek (alpha, beta, gamma, etc.)', lowerRoman: 'Lower Roman (i, ii, iii, iv, v, etc.)', none: 'None', notset: '', numberedTitle: 'Numbered List Properties', square: 'Square', start: 'Start', type: 'Type', upperAlpha: 'Upper Alpha (A, B, C, D, E, etc.)', upperRoman: 'Upper Roman (I, II, III, IV, V, etc.)', validateStartNumber: 'List start number must be a whole number.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/km.js0000644000201500020150000000267714517055560024215 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'km', { armenian: 'លេខ​អារមេនី', bulletedTitle: 'លក្ខណៈ​សម្បត្តិ​បញ្ជី​ជា​ចំណុច', circle: 'រង្វង់​មូល', decimal: 'លេខ​ទសភាគ (1, 2, 3, ...)', decimalLeadingZero: 'ទសភាគ​ចាប់​ផ្ដើម​ពី​សូន្យ (01, 02, 03, ...)', disc: 'ថាស', georgian: 'លេខ​ចចជា (an, ban, gan, ...)', lowerAlpha: 'ព្យញ្ជនៈ​តូច (a, b, c, d, e, ...)', lowerGreek: 'លេខ​ក្រិក​តូច (alpha, beta, gamma, ...)', lowerRoman: 'លេខ​រ៉ូម៉ាំង​តូច (i, ii, iii, iv, v, ...)', none: 'គ្មាន', notset: '', numberedTitle: 'លក្ខណៈ​សម្បត្តិ​បញ្ជី​ជា​លេខ', square: 'ការេ', start: 'ចាប់​ផ្ដើម', type: 'ប្រភេទ', upperAlpha: 'អក្សរ​ធំ (A, B, C, D, E, ...)', upperRoman: 'លេខ​រ៉ូម៉ាំង​ធំ (I, II, III, IV, V, ...)', validateStartNumber: 'លេខ​ចាប់​ផ្ដើម​បញ្ជី ត្រូវ​តែ​ជា​តួ​លេខ​ពិត​ប្រាកដ។' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/nl.js0000644000201500020150000000175514517055560024213 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'nl', { armenian: 'Armeense nummering', bulletedTitle: 'Eigenschappen lijst met opsommingstekens', circle: 'Cirkel', decimal: 'Cijfers (1, 2, 3, etc.)', decimalLeadingZero: 'Cijfers beginnen met nul (01, 02, 03, etc.)', disc: 'Schijf', georgian: 'Georgische nummering (an, ban, gan, etc.)', lowerAlpha: 'Kleine letters (a, b, c, d, e, etc.)', lowerGreek: 'Grieks kleine letters (alpha, beta, gamma, etc.)', lowerRoman: 'Romeins kleine letters (i, ii, iii, iv, v, etc.)', none: 'Geen', notset: '', numberedTitle: 'Eigenschappen genummerde lijst', square: 'Vierkant', start: 'Start', type: 'Type', upperAlpha: 'Hoofdletters (A, B, C, D, E, etc.)', upperRoman: 'Romeinse hoofdletters (I, II, III, IV, V, etc.)', validateStartNumber: 'Startnummer van de lijst moet een heel nummer zijn.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/ka.js0000644000201500020150000000320114517055560024161 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'ka', { armenian: 'სომხური გადანომრვა', bulletedTitle: 'ღილებიანი სიის პარამეტრები', circle: 'წრეწირი', decimal: 'რიცხვებით (1, 2, 3, ..)', decimalLeadingZero: 'ნულით დაწყებული რიცხვებით (01, 02, 03, ..)', disc: 'წრე', georgian: 'ქართული გადანომრვა (ან, ბან, გან, ..)', lowerAlpha: 'პატარა ლათინური ასოებით (a, b, c, d, e, ..)', lowerGreek: 'პატარა ბერძნული ასოებით (ალფა, ბეტა, გამა, ..)', lowerRoman: 'რომაული გადანომრვცა პატარა ციფრებით (i, ii, iii, iv, v, ..)', none: 'არაფერი', notset: '<არაფერი>', numberedTitle: 'გადანომრილი სიის პარამეტრები', square: 'კვადრატი', start: 'საწყისი', type: 'ტიპი', upperAlpha: 'დიდი ლათინური ასოებით (A, B, C, D, E, ..)', upperRoman: 'რომაული გადანომრვა დიდი ციფრებით (I, II, III, IV, V, etc.)', validateStartNumber: 'სიის საწყისი მთელი რიცხვი უნდა იყოს.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/mn.js0000644000201500020150000000164314517055560024210 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'mn', { armenian: 'Armenian numbering', bulletedTitle: 'Bulleted List Properties', circle: 'Circle', decimal: 'Decimal (1, 2, 3, etc.)', decimalLeadingZero: 'Decimal leading zero (01, 02, 03, etc.)', disc: 'Disc', georgian: 'Georgian numbering (an, ban, gan, etc.)', lowerAlpha: 'Lower Alpha (a, b, c, d, e, etc.)', lowerGreek: 'Lower Greek (alpha, beta, gamma, etc.)', lowerRoman: 'Lower Roman (i, ii, iii, iv, v, etc.)', none: 'None', notset: '', numberedTitle: 'Numbered List Properties', square: 'Square', start: 'Start', type: 'Төрөл', upperAlpha: 'Upper Alpha (A, B, C, D, E, etc.)', upperRoman: 'Upper Roman (I, II, III, IV, V, etc.)', validateStartNumber: 'List start number must be a whole number.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/da.js0000644000201500020150000000175214517055560024163 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'da', { armenian: 'Armensk nummering', bulletedTitle: 'Værdier for cirkelpunktopstilling', circle: 'Cirkel', decimal: 'Decimal (1, 2, 3, osv.)', decimalLeadingZero: 'Decimaler med 0 først (01, 02, 03, etc.)', disc: 'Værdier for diskpunktopstilling', georgian: 'Georgiansk nummering (an, ban, gan, etc.)', lowerAlpha: 'Små alfabet (a, b, c, d, e, etc.)', lowerGreek: 'Små græsk (alpha, beta, gamma, etc.)', lowerRoman: 'Små romerske (i, ii, iii, iv, v, etc.)', none: 'Ingen', notset: '', numberedTitle: 'Egenskaber for nummereret liste', square: 'Firkant', start: 'Start', type: 'Type', upperAlpha: 'Store alfabet (A, B, C, D, E, etc.)', upperRoman: 'Store romerske (I, II, III, IV, V, etc.)', validateStartNumber: 'Den nummererede liste skal starte med et rundt nummer' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/he.js0000644000201500020150000000233714517055560024173 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'he', { armenian: 'ספרות ארמניות', bulletedTitle: 'תכונות רשימת תבליטים', circle: 'עיגול ריק', decimal: 'ספרות (1, 2, 3 וכו\')', decimalLeadingZero: 'ספרות עם 0 בהתחלה (01, 02, 03 וכו\')', disc: 'עיגול מלא', georgian: 'ספרות גיאורגיות (an, ban, gan וכו\')', lowerAlpha: 'אותיות אנגליות קטנות (a, b, c, d, e וכו\')', lowerGreek: 'אותיות יווניות קטנות (alpha, beta, gamma וכו\')', lowerRoman: 'ספירה רומית באותיות קטנות (i, ii, iii, iv, v וכו\')', none: 'ללא', notset: '<לא נקבע>', numberedTitle: 'תכונות רשימה ממוספרת', square: 'ריבוע', start: 'תחילת מספור', type: 'סוג', upperAlpha: 'אותיות אנגליות גדולות (A, B, C, D, E וכו\')', upperRoman: 'ספירה רומיות באותיות גדולות (I, II, III, IV, V וכו\')', validateStartNumber: 'שדה תחילת המספור חייב להכיל מספר שלם.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/ca.js0000644000201500020150000000163514517055560024162 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'ca', { armenian: 'Armenian numbering', bulletedTitle: 'Bulleted List Properties', circle: 'Circle', decimal: 'Decimal (1, 2, 3, etc.)', decimalLeadingZero: 'Decimal leading zero (01, 02, 03, etc.)', disc: 'Disc', georgian: 'Georgian numbering (an, ban, gan, etc.)', lowerAlpha: 'Lower Alpha (a, b, c, d, e, etc.)', lowerGreek: 'Lower Greek (alpha, beta, gamma, etc.)', lowerRoman: 'Lower Roman (i, ii, iii, iv, v, etc.)', none: 'None', notset: '', numberedTitle: 'Numbered List Properties', square: 'Square', start: 'Start', type: 'Type', upperAlpha: 'Upper Alpha (A, B, C, D, E, etc.)', upperRoman: 'Upper Roman (I, II, III, IV, V, etc.)', validateStartNumber: 'List start number must be a whole number.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/gu.js0000644000201500020150000000244314517055560024210 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'gu', { armenian: 'અરમેનિયન આંકડા પદ્ધતિ', bulletedTitle: 'બુલેટેડ લીસ્ટના ગુણ', circle: 'વર્તુળ', decimal: 'આંકડા (1, 2, 3, etc.)', decimalLeadingZero: 'સુન્ય આગળ આંકડા (01, 02, 03, etc.)', disc: 'ડિસ્ક', georgian: 'ગેઓર્ગિયન આંકડા પદ્ધતિ (an, ban, gan, etc.)', lowerAlpha: 'આલ્ફા નાના (a, b, c, d, e, etc.)', lowerGreek: 'ગ્રીક નાના (alpha, beta, gamma, etc.)', lowerRoman: 'રોમન નાના (i, ii, iii, iv, v, etc.)', none: 'કસુ ', notset: '<સેટ નથી>', numberedTitle: 'આંકડાના લીસ્ટના ગુણ', square: 'ચોરસ', start: 'શરુ કરવું', type: 'પ્રકાર', upperAlpha: 'આલ્ફા મોટા (A, B, C, D, E, etc.)', upperRoman: 'રોમન મોટા (I, II, III, IV, V, etc.)', validateStartNumber: 'લીસ્ટના સરુઆતનો આંકડો પુરો હોવો જોઈએ.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/ms.js0000644000201500020150000000163514517055560024216 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'ms', { armenian: 'Armenian numbering', bulletedTitle: 'Bulleted List Properties', circle: 'Circle', decimal: 'Decimal (1, 2, 3, etc.)', decimalLeadingZero: 'Decimal leading zero (01, 02, 03, etc.)', disc: 'Disc', georgian: 'Georgian numbering (an, ban, gan, etc.)', lowerAlpha: 'Lower Alpha (a, b, c, d, e, etc.)', lowerGreek: 'Lower Greek (alpha, beta, gamma, etc.)', lowerRoman: 'Lower Roman (i, ii, iii, iv, v, etc.)', none: 'None', notset: '', numberedTitle: 'Numbered List Properties', square: 'Square', start: 'Start', type: 'Type', upperAlpha: 'Upper Alpha (A, B, C, D, E, etc.)', upperRoman: 'Upper Roman (I, II, III, IV, V, etc.)', validateStartNumber: 'List start number must be a whole number.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/th.js0000644000201500020150000000163514517055560024212 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'th', { armenian: 'Armenian numbering', bulletedTitle: 'Bulleted List Properties', circle: 'Circle', decimal: 'Decimal (1, 2, 3, etc.)', decimalLeadingZero: 'Decimal leading zero (01, 02, 03, etc.)', disc: 'Disc', georgian: 'Georgian numbering (an, ban, gan, etc.)', lowerAlpha: 'Lower Alpha (a, b, c, d, e, etc.)', lowerGreek: 'Lower Greek (alpha, beta, gamma, etc.)', lowerRoman: 'Lower Roman (i, ii, iii, iv, v, etc.)', none: 'None', notset: '', numberedTitle: 'Numbered List Properties', square: 'Square', start: 'Start', type: 'Type', upperAlpha: 'Upper Alpha (A, B, C, D, E, etc.)', upperRoman: 'Upper Roman (I, II, III, IV, V, etc.)', validateStartNumber: 'List start number must be a whole number.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/de.js0000644000201500020150000000172314517055560024165 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'de', { armenian: 'Armenische Nummerierung', bulletedTitle: 'Aufzählungslisteneigenschaften', circle: 'Ring', decimal: 'Dezimal (1, 2, 3, etc.)', decimalLeadingZero: 'Dezimal mit führender Null (01, 02, 03, usw.)', disc: 'Kreis', georgian: 'Georgische Nummerierung (an, ban, gan, usw.)', lowerAlpha: 'Klein Alpha (a, b, c, d, e, usw.)', lowerGreek: 'Klein griechisch (alpha, beta, gamma, usw.)', lowerRoman: 'Klein römisch (i, ii, iii, iv, v, usw.)', none: 'Keine', notset: '', numberedTitle: 'Nummerierte Listeneigenschaften', square: 'Quadrat', start: 'Start', type: 'Typ', upperAlpha: 'Groß alpha (A, B, C, D, E, etc.)', upperRoman: 'Groß römisch (I, II, III, IV, V, usw.)', validateStartNumber: 'Listenstartnummer muss eine ganze Zahl sein.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/en-ca.js0000644000201500020150000000164014517055560024556 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'en-ca', { armenian: 'Armenian numbering', bulletedTitle: 'Bulleted List Properties', circle: 'Circle', decimal: 'Decimal (1, 2, 3, etc.)', decimalLeadingZero: 'Decimal leading zero (01, 02, 03, etc.)', disc: 'Disc', georgian: 'Georgian numbering (an, ban, gan, etc.)', lowerAlpha: 'Lower Alpha (a, b, c, d, e, etc.)', lowerGreek: 'Lower Greek (alpha, beta, gamma, etc.)', lowerRoman: 'Lower Roman (i, ii, iii, iv, v, etc.)', none: 'None', notset: '', numberedTitle: 'Numbered List Properties', square: 'Square', start: 'Start', type: 'Type', upperAlpha: 'Upper Alpha (A, B, C, D, E, etc.)', upperRoman: 'Upper Roman (I, II, III, IV, V, etc.)', validateStartNumber: 'List start number must be a whole number.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/tt.js0000644000201500020150000000216714517055560024227 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'tt', { armenian: 'Әрмән номерлавы', bulletedTitle: 'Маркерлы тезмә үзлекләре', circle: 'Түгәрәк', decimal: 'Унарлы (1, 2, 3, ...)', decimalLeadingZero: 'Ноль белән башланган унарлы (01, 02, 03, ...)', disc: 'Диск', georgian: 'Georgian numbering (an, ban, gan, etc.)', // MISSING lowerAlpha: 'Lower Alpha (a, b, c, d, e, etc.)', // MISSING lowerGreek: 'Lower Greek (alpha, beta, gamma, etc.)', // MISSING lowerRoman: 'Lower Roman (i, ii, iii, iv, v, etc.)', // MISSING none: 'Һичбер', notset: '<билгеләнмәгән>', numberedTitle: 'Номерлы тезмә үзлекләре', square: 'Шакмак', start: 'Башлау', type: 'Төр', upperAlpha: 'Upper Alpha (A, B, C, D, E, etc.)', // MISSING upperRoman: 'Upper Roman (I, II, III, IV, V, etc.)', // MISSING validateStartNumber: 'List start number must be a whole number.' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/vi.js0000644000201500020150000000205214517055560024207 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'vi', { armenian: 'Số theo kiểu Armenian', bulletedTitle: 'Thuộc tính danh sách không thứ tự', circle: 'Khuyên tròn', decimal: 'Kiểu số (1, 2, 3 ...)', decimalLeadingZero: 'Kiểu số (01, 02, 03...)', disc: 'Hình đĩa', georgian: 'Số theo kiểu Georgian (an, ban, gan...)', lowerAlpha: 'Kiểu abc thường (a, b, c, d, e...)', lowerGreek: 'Kiểu Hy Lạp (alpha, beta, gamma...)', lowerRoman: 'Số La Mã kiểu thường (i, ii, iii, iv, v...)', none: 'Không gì cả', notset: '', numberedTitle: 'Thuộc tính danh sách có thứ tự', square: 'Hình vuông', start: 'Bắt đầu', type: 'Kiểu loại', upperAlpha: 'Kiểu ABC HOA (A, B, C, D, E...)', upperRoman: 'Số La Mã kiểu HOA (I, II, III, IV, V...)', validateStartNumber: 'Số bắt đầu danh sách phải là một số nguyên.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/cs.js0000644000201500020150000000170114517055560024176 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'cs', { armenian: 'Arménské', bulletedTitle: 'Vlastnosti odrážek', circle: 'Kroužky', decimal: 'Arabská čísla (1, 2, 3, atd.)', decimalLeadingZero: 'Arabská čísla uvozená nulou (01, 02, 03, atd.)', disc: 'Kolečka', georgian: 'Gruzínské (an, ban, gan, atd.)', lowerAlpha: 'Malá latinka (a, b, c, d, e, atd.)', lowerGreek: 'Malé řecké (alpha, beta, gamma, atd.)', lowerRoman: 'Malé římské (i, ii, iii, iv, v, atd.)', none: 'Nic', notset: '', numberedTitle: 'Vlastnosti číslování', square: 'Čtverce', start: 'Počátek', type: 'Typ', upperAlpha: 'Velká latinka (A, B, C, D, E, atd.)', upperRoman: 'Velké římské (I, II, III, IV, V, atd.)', validateStartNumber: 'Číslování musí začínat celým číslem.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/tr.js0000644000201500020150000000171314517055560024221 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'tr', { armenian: 'Ermenice sayılandırma', bulletedTitle: 'Simgeli Liste Özellikleri', circle: 'Daire', decimal: 'Ondalık (1, 2, 3, vs.)', decimalLeadingZero: 'Başı sıfırlı ondalık (01, 02, 03, vs.)', disc: 'Disk', georgian: 'Gürcüce numaralandırma (an, ban, gan, vs.)', lowerAlpha: 'Küçük Alpha (a, b, c, d, e, vs.)', lowerGreek: 'Küçük Greek (alpha, beta, gamma, vs.)', lowerRoman: 'Küçük Roman (i, ii, iii, iv, v, vs.)', none: 'Yok', notset: '', numberedTitle: 'Sayılandırılmış Liste Özellikleri', square: 'Kare', start: 'Başla', type: 'Tipi', upperAlpha: 'Büyük Alpha (A, B, C, D, E, vs.)', upperRoman: 'Büyük Roman (I, II, III, IV, V, vs.)', validateStartNumber: 'Liste başlangıcı tam sayı olmalıdır.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/ja.js0000644000201500020150000000203414517055560024163 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'ja', { armenian: 'アルメニア数字', bulletedTitle: '箇条書きのプロパティ', circle: '白丸', decimal: '数字 (1, 2, 3, etc.)', decimalLeadingZero: '0付きの数字 (01, 02, 03, etc.)', disc: '黒丸', georgian: 'グルジア数字 (an, ban, gan, etc.)', lowerAlpha: '小文字アルファベット (a, b, c, d, e, etc.)', lowerGreek: '小文字ギリシャ文字 (alpha, beta, gamma, etc.)', lowerRoman: '小文字ローマ数字 (i, ii, iii, iv, v, etc.)', none: 'なし', notset: '<なし>', numberedTitle: '番号付きリストのプロパティ', square: '四角', start: '開始', type: '種類', upperAlpha: '大文字アルファベット (A, B, C, D, E, etc.)', upperRoman: '大文字ローマ数字 (I, II, III, IV, V, etc.)', validateStartNumber: 'リストの開始番号は数値で入力してください。' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/sl.js0000644000201500020150000000163514517055560024215 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'sl', { armenian: 'Armenian numbering', bulletedTitle: 'Bulleted List Properties', circle: 'Circle', decimal: 'Decimal (1, 2, 3, etc.)', decimalLeadingZero: 'Decimal leading zero (01, 02, 03, etc.)', disc: 'Disc', georgian: 'Georgian numbering (an, ban, gan, etc.)', lowerAlpha: 'Lower Alpha (a, b, c, d, e, etc.)', lowerGreek: 'Lower Greek (alpha, beta, gamma, etc.)', lowerRoman: 'Lower Roman (i, ii, iii, iv, v, etc.)', none: 'None', notset: '', numberedTitle: 'Numbered List Properties', square: 'Square', start: 'Start', type: 'Type', upperAlpha: 'Upper Alpha (A, B, C, D, E, etc.)', upperRoman: 'Upper Roman (I, II, III, IV, V, etc.)', validateStartNumber: 'List start number must be a whole number.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/liststyle/lang/lv.js0000644000201500020150000000171414517055560024216 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'liststyle', 'lv', { armenian: 'Armēņu skaitļi', bulletedTitle: 'Vienkārša saraksta uzstādījumi', circle: 'Aplis', decimal: 'Decimālie (1, 2, 3, utt)', decimalLeadingZero: 'Decimālie ar nulli (01, 02, 03, utt)', disc: 'Disks', georgian: 'Gruzīņu skaitļi (an, ban, gan, utt)', lowerAlpha: 'Mazie alfabēta (a, b, c, d, e, utt)', lowerGreek: 'Mazie grieķu (alfa, beta, gamma, utt)', lowerRoman: 'Mazie romāņu (i, ii, iii, iv, v, utt)', none: 'Nekas', notset: '
    ' ); dialog.parts.footer.append( resizer, 1 ); } ); editor.on( 'destroy', function() { CKEDITOR.tools.removeFunction( mouseDownFn ); } ); function mouseMoveHandler( evt ) { var rtl = editor.lang.dir == 'rtl', dx = ( evt.data.$.screenX - origin.x ) * ( rtl ? -1 : 1 ), dy = evt.data.$.screenY - origin.y, width = startSize.width, height = startSize.height, internalWidth = width + dx * ( dialog._.moved ? 1 : 2 ), internalHeight = height + dy * ( dialog._.moved ? 1 : 2 ), element = dialog._.element.getFirst(), right = rtl && element.getComputedStyle( 'right' ), position = dialog.getPosition(); if ( position.y + internalHeight > viewSize.height ) internalHeight = viewSize.height - position.y; if ( ( rtl ? right : position.x ) + internalWidth > viewSize.width ) internalWidth = viewSize.width - ( rtl ? right : position.x ); // Make sure the dialog will not be resized to the wrong side when it's in the leftmost position for RTL. if ( ( resizable == CKEDITOR.DIALOG_RESIZE_WIDTH || resizable == CKEDITOR.DIALOG_RESIZE_BOTH ) ) width = Math.max( def.minWidth || 0, internalWidth - wrapperWidth ); if ( resizable == CKEDITOR.DIALOG_RESIZE_HEIGHT || resizable == CKEDITOR.DIALOG_RESIZE_BOTH ) height = Math.max( def.minHeight || 0, internalHeight - wrapperHeight ); dialog.resize( width, height ); if ( !dialog._.moved ) dialog.layout(); evt.data.preventDefault(); } function mouseUpHandler() { CKEDITOR.document.removeListener( 'mouseup', mouseUpHandler ); CKEDITOR.document.removeListener( 'mousemove', mouseMoveHandler ); if ( dialogCover ) { dialogCover.remove(); dialogCover = null; } if ( CKEDITOR.env.ie6Compat ) { var coverDoc = currentCover.getChild( 0 ).getFrameDocument(); coverDoc.removeListener( 'mouseup', mouseUpHandler ); coverDoc.removeListener( 'mousemove', mouseMoveHandler ); } } } var resizeCover; // Caching resuable covers and allowing only one cover // on screen. var covers = {}, currentCover; function cancelEvent( ev ) { ev.data.preventDefault( 1 ); } function showCover( editor ) { var win = CKEDITOR.document.getWindow(); var config = editor.config, backgroundColorStyle = config.dialog_backgroundCoverColor || 'white', backgroundCoverOpacity = config.dialog_backgroundCoverOpacity, baseFloatZIndex = config.baseFloatZIndex, coverKey = CKEDITOR.tools.genKey( backgroundColorStyle, backgroundCoverOpacity, baseFloatZIndex ), coverElement = covers[ coverKey ]; if ( !coverElement ) { var html = [ '
    ' ]; if ( CKEDITOR.env.ie6Compat ) { // Support for custom document.domain in IE. var iframeHtml = ''; html.push( '' + '' ); } html.push( '
    ' ); coverElement = CKEDITOR.dom.element.createFromHtml( html.join( '' ) ); coverElement.setOpacity( backgroundCoverOpacity !== undefined ? backgroundCoverOpacity : 0.5 ); coverElement.on( 'keydown', cancelEvent ); coverElement.on( 'keypress', cancelEvent ); coverElement.on( 'keyup', cancelEvent ); coverElement.appendTo( CKEDITOR.document.getBody() ); covers[ coverKey ] = coverElement; } else { coverElement.show(); } // Makes the dialog cover a focus holder as well. editor.focusManager.add( coverElement ); currentCover = coverElement; var resizeFunc = function() { var size = win.getViewPaneSize(); coverElement.setStyles( { width: size.width + 'px', height: size.height + 'px' } ); }; var scrollFunc = function() { var pos = win.getScrollPosition(), cursor = CKEDITOR.dialog._.currentTop; coverElement.setStyles( { left: pos.x + 'px', top: pos.y + 'px' } ); if ( cursor ) { do { var dialogPos = cursor.getPosition(); cursor.move( dialogPos.x, dialogPos.y ); } while ( ( cursor = cursor._.parentDialog ) ); } }; resizeCover = resizeFunc; win.on( 'resize', resizeFunc ); resizeFunc(); // Using Safari/Mac, focus must be kept where it is (#7027) if ( !( CKEDITOR.env.mac && CKEDITOR.env.webkit ) ) coverElement.focus(); if ( CKEDITOR.env.ie6Compat ) { // IE BUG: win.$.onscroll assignment doesn't work.. it must be window.onscroll. // So we need to invent a really funny way to make it work. var myScrollHandler = function() { scrollFunc(); arguments.callee.prevScrollHandler.apply( this, arguments ); }; win.$.setTimeout( function() { myScrollHandler.prevScrollHandler = window.onscroll || function() {}; window.onscroll = myScrollHandler; }, 0 ); scrollFunc(); } } function hideCover( editor ) { if ( !currentCover ) return; editor.focusManager.remove( currentCover ); var win = CKEDITOR.document.getWindow(); currentCover.hide(); win.removeListener( 'resize', resizeCover ); if ( CKEDITOR.env.ie6Compat ) { win.$.setTimeout( function() { var prevScrollHandler = window.onscroll && window.onscroll.prevScrollHandler; window.onscroll = prevScrollHandler || null; }, 0 ); } resizeCover = null; } function removeCovers() { for ( var coverId in covers ) covers[ coverId ].remove(); covers = {}; } var accessKeyProcessors = {}; var accessKeyDownHandler = function( evt ) { var ctrl = evt.data.$.ctrlKey || evt.data.$.metaKey, alt = evt.data.$.altKey, shift = evt.data.$.shiftKey, key = String.fromCharCode( evt.data.$.keyCode ), keyProcessor = accessKeyProcessors[ ( ctrl ? 'CTRL+' : '' ) + ( alt ? 'ALT+' : '' ) + ( shift ? 'SHIFT+' : '' ) + key ]; if ( !keyProcessor || !keyProcessor.length ) return; keyProcessor = keyProcessor[ keyProcessor.length - 1 ]; keyProcessor.keydown && keyProcessor.keydown.call( keyProcessor.uiElement, keyProcessor.dialog, keyProcessor.key ); evt.data.preventDefault(); }; var accessKeyUpHandler = function( evt ) { var ctrl = evt.data.$.ctrlKey || evt.data.$.metaKey, alt = evt.data.$.altKey, shift = evt.data.$.shiftKey, key = String.fromCharCode( evt.data.$.keyCode ), keyProcessor = accessKeyProcessors[ ( ctrl ? 'CTRL+' : '' ) + ( alt ? 'ALT+' : '' ) + ( shift ? 'SHIFT+' : '' ) + key ]; if ( !keyProcessor || !keyProcessor.length ) return; keyProcessor = keyProcessor[ keyProcessor.length - 1 ]; if ( keyProcessor.keyup ) { keyProcessor.keyup.call( keyProcessor.uiElement, keyProcessor.dialog, keyProcessor.key ); evt.data.preventDefault(); } }; var registerAccessKey = function( uiElement, dialog, key, downFunc, upFunc ) { var procList = accessKeyProcessors[ key ] || ( accessKeyProcessors[ key ] = [] ); procList.push( { uiElement: uiElement, dialog: dialog, key: key, keyup: upFunc || uiElement.accessKeyUp, keydown: downFunc || uiElement.accessKeyDown } ); }; var unregisterAccessKey = function( obj ) { for ( var i in accessKeyProcessors ) { var list = accessKeyProcessors[ i ]; for ( var j = list.length - 1; j >= 0; j-- ) { if ( list[ j ].dialog == obj || list[ j ].uiElement == obj ) list.splice( j, 1 ); } if ( list.length === 0 ) delete accessKeyProcessors[ i ]; } }; var tabAccessKeyUp = function( dialog, key ) { if ( dialog._.accessKeyMap[ key ] ) dialog.selectPage( dialog._.accessKeyMap[ key ] ); }; var tabAccessKeyDown = function() {}; ( function() { CKEDITOR.ui.dialog = { /** * The base class of all dialog UI elements. * * @class CKEDITOR.ui.dialog.uiElement * @constructor Creates a uiElement class instance. * @param {CKEDITOR.dialog} dialog Parent dialog object. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition Element * definition. * * Accepted fields: * * * `id` (Required) The id of the UI element. See {@link CKEDITOR.dialog#getContentElement}. * * `type` (Required) The type of the UI element. The * value to this field specifies which UI element class will be used to * generate the final widget. * * `title` (Optional) The popup tooltip for the UI * element. * * `hidden` (Optional) A flag that tells if the element * should be initially visible. * * `className` (Optional) Additional CSS class names * to add to the UI element. Separated by space. * * `style` (Optional) Additional CSS inline styles * to add to the UI element. A semicolon (;) is required after the last * style declaration. * * `accessKey` (Optional) The alphanumeric access key * for this element. Access keys are automatically prefixed by CTRL. * * `on*` (Optional) Any UI element definition field that * starts with `on` followed immediately by a capital letter and * probably more letters is an event handler. Event handlers may be further * divided into registered event handlers and DOM event handlers. Please * refer to {@link CKEDITOR.ui.dialog.uiElement#registerEvents} and * {@link CKEDITOR.ui.dialog.uiElement#eventProcessors} for more information. * * @param {Array} htmlList * List of HTML code to be added to the dialog's content area. * @param {Function/String} [nodeNameArg='div'] * A function returning a string, or a simple string for the node name for * the root DOM node. * @param {Function/Object} [stylesArg={}] * A function returning an object, or a simple object for CSS styles applied * to the DOM node. * @param {Function/Object} [attributesArg={}] * A fucntion returning an object, or a simple object for attributes applied * to the DOM node. * @param {Function/String} [contentsArg=''] * A function returning a string, or a simple string for the HTML code inside * the root DOM node. Default is empty string. */ uiElement: function( dialog, elementDefinition, htmlList, nodeNameArg, stylesArg, attributesArg, contentsArg ) { if ( arguments.length < 4 ) return; var nodeName = ( nodeNameArg.call ? nodeNameArg( elementDefinition ) : nodeNameArg ) || 'div', html = [ '<', nodeName, ' ' ], styles = ( stylesArg && stylesArg.call ? stylesArg( elementDefinition ) : stylesArg ) || {}, attributes = ( attributesArg && attributesArg.call ? attributesArg( elementDefinition ) : attributesArg ) || {}, innerHTML = ( contentsArg && contentsArg.call ? contentsArg.call( this, dialog, elementDefinition ) : contentsArg ) || '', domId = this.domId = attributes.id || CKEDITOR.tools.getNextId() + '_uiElement', i; if ( elementDefinition.requiredContent && !dialog.getParentEditor().filter.check( elementDefinition.requiredContent ) ) { styles.display = 'none'; this.notAllowed = true; } // Set the id, a unique id is required for getElement() to work. attributes.id = domId; // Set the type and definition CSS class names. var classes = {}; if ( elementDefinition.type ) classes[ 'cke_dialog_ui_' + elementDefinition.type ] = 1; if ( elementDefinition.className ) classes[ elementDefinition.className ] = 1; if ( elementDefinition.disabled ) classes.cke_disabled = 1; var attributeClasses = ( attributes[ 'class' ] && attributes[ 'class' ].split ) ? attributes[ 'class' ].split( ' ' ) : []; for ( i = 0; i < attributeClasses.length; i++ ) { if ( attributeClasses[ i ] ) classes[ attributeClasses[ i ] ] = 1; } var finalClasses = []; for ( i in classes ) finalClasses.push( i ); attributes[ 'class' ] = finalClasses.join( ' ' ); // Set the popup tooltop. if ( elementDefinition.title ) attributes.title = elementDefinition.title; // Write the inline CSS styles. var styleStr = ( elementDefinition.style || '' ).split( ';' ); // Element alignment support. if ( elementDefinition.align ) { var align = elementDefinition.align; styles[ 'margin-left' ] = align == 'left' ? 0 : 'auto'; styles[ 'margin-right' ] = align == 'right' ? 0 : 'auto'; } for ( i in styles ) styleStr.push( i + ':' + styles[ i ] ); if ( elementDefinition.hidden ) styleStr.push( 'display:none' ); for ( i = styleStr.length - 1; i >= 0; i-- ) { if ( styleStr[ i ] === '' ) styleStr.splice( i, 1 ); } if ( styleStr.length > 0 ) attributes.style = ( attributes.style ? ( attributes.style + '; ' ) : '' ) + styleStr.join( '; ' ); // Write the attributes. for ( i in attributes ) html.push( i + '="' + CKEDITOR.tools.htmlEncode( attributes[ i ] ) + '" ' ); // Write the content HTML. html.push( '>', innerHTML, '' ); // Add contents to the parent HTML array. htmlList.push( html.join( '' ) ); ( this._ || ( this._ = {} ) ).dialog = dialog; // Override isChanged if it is defined in element definition. if ( typeof elementDefinition.isChanged == 'boolean' ) this.isChanged = function() { return elementDefinition.isChanged; }; if ( typeof elementDefinition.isChanged == 'function' ) this.isChanged = elementDefinition.isChanged; // Overload 'get(set)Value' on definition. if ( typeof elementDefinition.setValue == 'function' ) { this.setValue = CKEDITOR.tools.override( this.setValue, function( org ) { return function( val ) { org.call( this, elementDefinition.setValue.call( this, val ) ); }; } ); } if ( typeof elementDefinition.getValue == 'function' ) { this.getValue = CKEDITOR.tools.override( this.getValue, function( org ) { return function() { return elementDefinition.getValue.call( this, org.call( this ) ); }; } ); } // Add events. CKEDITOR.event.implementOn( this ); this.registerEvents( elementDefinition ); if ( this.accessKeyUp && this.accessKeyDown && elementDefinition.accessKey ) registerAccessKey( this, dialog, 'CTRL+' + elementDefinition.accessKey ); var me = this; dialog.on( 'load', function() { var input = me.getInputElement(); if ( input ) { var focusClass = me.type in { 'checkbox': 1, 'ratio': 1 } && CKEDITOR.env.ie && CKEDITOR.env.version < 8 ? 'cke_dialog_ui_focused' : ''; input.on( 'focus', function() { dialog._.tabBarMode = false; dialog._.hasFocus = true; me.fire( 'focus' ); focusClass && this.addClass( focusClass ); } ); input.on( 'blur', function() { me.fire( 'blur' ); focusClass && this.removeClass( focusClass ); } ); } } ); // Completes this object with everything we have in the // definition. CKEDITOR.tools.extend( this, elementDefinition ); // Register the object as a tab focus if it can be included. if ( this.keyboardFocusable ) { this.tabIndex = elementDefinition.tabIndex || 0; this.focusIndex = dialog._.focusList.push( this ) - 1; this.on( 'focus', function() { dialog._.currentFocusIndex = me.focusIndex; } ); } }, /** * Horizontal layout box for dialog UI elements, auto-expends to available width of container. * * @class CKEDITOR.ui.dialog.hbox * @extends CKEDITOR.ui.dialog.uiElement * @constructor Creates a hbox class instance. * @param {CKEDITOR.dialog} dialog Parent dialog object. * @param {Array} childObjList * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. * @param {Array} childHtmlList * Array of HTML code that correspond to the HTML output of all the * objects in childObjList. * @param {Array} htmlList * Array of HTML code that this element will output to. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * * * `widths` (Optional) The widths of child cells. * * `height` (Optional) The height of the layout. * * `padding` (Optional) The padding width inside child cells. * * `align` (Optional) The alignment of the whole layout. */ hbox: function( dialog, childObjList, childHtmlList, htmlList, elementDefinition ) { if ( arguments.length < 4 ) return; this._ || ( this._ = {} ); var children = this._.children = childObjList, widths = elementDefinition && elementDefinition.widths || null, height = elementDefinition && elementDefinition.height || null, styles = {}, i; /** @ignore */ var innerHTML = function() { var html = [ '' ]; for ( i = 0; i < childHtmlList.length; i++ ) { var className = 'cke_dialog_ui_hbox_child', styles = []; if ( i === 0 ) { className = 'cke_dialog_ui_hbox_first'; } if ( i == childHtmlList.length - 1 ) { className = 'cke_dialog_ui_hbox_last'; } html.push( ' 0 ) { html.push( 'style="' + styles.join( '; ' ) + '" ' ); } html.push( '>', childHtmlList[ i ], '' ); } html.push( '' ); return html.join( '' ); }; var attribs = { role: 'presentation' }; elementDefinition && elementDefinition.align && ( attribs.align = elementDefinition.align ); CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition || { type: 'hbox' }, htmlList, 'table', styles, attribs, innerHTML ); }, /** * Vertical layout box for dialog UI elements. * * @class CKEDITOR.ui.dialog.vbox * @extends CKEDITOR.ui.dialog.hbox * @constructor Creates a vbox class instance. * @param {CKEDITOR.dialog} dialog Parent dialog object. * @param {Array} childObjList * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. * @param {Array} childHtmlList * Array of HTML code that correspond to the HTML output of all the * objects in childObjList. * @param {Array} htmlList Array of HTML code that this element will output to. * @param {CKEDITOR.dialog.definition.uiElement} elementDefinition * The element definition. Accepted fields: * * * `width` (Optional) The width of the layout. * * `heights` (Optional) The heights of individual cells. * * `align` (Optional) The alignment of the layout. * * `padding` (Optional) The padding width inside child cells. * * `expand` (Optional) Whether the layout should expand * vertically to fill its container. */ vbox: function( dialog, childObjList, childHtmlList, htmlList, elementDefinition ) { if ( arguments.length < 3 ) return; this._ || ( this._ = {} ); var children = this._.children = childObjList, width = elementDefinition && elementDefinition.width || null, heights = elementDefinition && elementDefinition.heights || null; /** @ignore */ var innerHTML = function() { var html = [ '' ); for ( var i = 0; i < childHtmlList.length; i++ ) { var styles = []; html.push( '' ); } html.push( '
    0 ) html.push( 'style="', styles.join( '; ' ), '" ' ); html.push( ' class="cke_dialog_ui_vbox_child">', childHtmlList[ i ], '
    ' ); return html.join( '' ); }; CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition || { type: 'vbox' }, htmlList, 'div', null, { role: 'presentation' }, innerHTML ); } }; } )(); /** @class CKEDITOR.ui.dialog.uiElement */ CKEDITOR.ui.dialog.uiElement.prototype = { /** * Gets the root DOM element of this dialog UI object. * * uiElement.getElement().hide(); * * @returns {CKEDITOR.dom.element} Root DOM element of UI object. */ getElement: function() { return CKEDITOR.document.getById( this.domId ); }, /** * Gets the DOM element that the user inputs values. * * This function is used by {@link #setValue}, {@link #getValue} and {@link #focus}. It should * be overrided in child classes where the input element isn't the root * element. * * var rawValue = textInput.getInputElement().$.value; * * @returns {CKEDITOR.dom.element} The element where the user input values. */ getInputElement: function() { return this.getElement(); }, /** * Gets the parent dialog object containing this UI element. * * var dialog = uiElement.getDialog(); * * @returns {CKEDITOR.dialog} Parent dialog object. */ getDialog: function() { return this._.dialog; }, /** * Sets the value of this dialog UI object. * * uiElement.setValue( 'Dingo' ); * * @chainable * @param {Object} value The new value. * @param {Boolean} noChangeEvent Internal commit, to supress `change` event on this element. */ setValue: function( value, noChangeEvent ) { this.getInputElement().setValue( value ); !noChangeEvent && this.fire( 'change', { value: value } ); return this; }, /** * Gets the current value of this dialog UI object. * * var myValue = uiElement.getValue(); * * @returns {Object} The current value. */ getValue: function() { return this.getInputElement().getValue(); }, /** * Tells whether the UI object's value has changed. * * if ( uiElement.isChanged() ) * confirm( 'Value changed! Continue?' ); * * @returns {Boolean} `true` if changed, `false` if not changed. */ isChanged: function() { // Override in input classes. return false; }, /** * Selects the parent tab of this element. Usually called by focus() or overridden focus() methods. * * focus : function() { * this.selectParentTab(); * // do something else. * } * * @chainable */ selectParentTab: function() { var element = this.getInputElement(), cursor = element, tabId; while ( ( cursor = cursor.getParent() ) && cursor.$.className.search( 'cke_dialog_page_contents' ) == -1 ) { } // Some widgets don't have parent tabs (e.g. OK and Cancel buttons). if ( !cursor ) return this; tabId = cursor.getAttribute( 'name' ); // Avoid duplicate select. if ( this._.dialog._.currentTabId != tabId ) this._.dialog.selectPage( tabId ); return this; }, /** * Puts the focus to the UI object. Switches tabs if the UI object isn't in the active tab page. * * uiElement.focus(); * * @chainable */ focus: function() { this.selectParentTab().getInputElement().focus(); return this; }, /** * Registers the `on*` event handlers defined in the element definition. * * The default behavior of this function is: * * 1. If the on* event is defined in the class's eventProcesors list, * then the registration is delegated to the corresponding function * in the eventProcessors list. * 2. If the on* event is not defined in the eventProcessors list, then * register the event handler under the corresponding DOM event of * the UI element's input DOM element (as defined by the return value * of {@link #getInputElement}). * * This function is only called at UI element instantiation, but can * be overridded in child classes if they require more flexibility. * * @chainable * @param {CKEDITOR.dialog.definition.uiElement} definition The UI element * definition. */ registerEvents: function( definition ) { var regex = /^on([A-Z]\w+)/, match; var registerDomEvent = function( uiElement, dialog, eventName, func ) { dialog.on( 'load', function() { uiElement.getInputElement().on( eventName, func, uiElement ); } ); }; for ( var i in definition ) { if ( !( match = i.match( regex ) ) ) continue; if ( this.eventProcessors[ i ] ) this.eventProcessors[ i ].call( this, this._.dialog, definition[ i ] ); else registerDomEvent( this, this._.dialog, match[ 1 ].toLowerCase(), definition[ i ] ); } return this; }, /** * The event processor list used by * {@link CKEDITOR.ui.dialog.uiElement#getInputElement} at UI element * instantiation. The default list defines three `on*` events: * * 1. `onLoad` - Called when the element's parent dialog opens for the * first time. * 2. `onShow` - Called whenever the element's parent dialog opens. * 3. `onHide` - Called whenever the element's parent dialog closes. * * // This connects the 'click' event in CKEDITOR.ui.dialog.button to onClick * // handlers in the UI element's definitions. * CKEDITOR.ui.dialog.button.eventProcessors = CKEDITOR.tools.extend( {}, * CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, * { onClick : function( dialog, func ) { this.on( 'click', func ); } }, * true * ); * * @property {Object} */ eventProcessors: { onLoad: function( dialog, func ) { dialog.on( 'load', func, this ); }, onShow: function( dialog, func ) { dialog.on( 'show', func, this ); }, onHide: function( dialog, func ) { dialog.on( 'hide', func, this ); } }, /** * The default handler for a UI element's access key down event, which * tries to put focus to the UI element. * * Can be overridded in child classes for more sophisticaed behavior. * * @param {CKEDITOR.dialog} dialog The parent dialog object. * @param {String} key The key combination pressed. Since access keys * are defined to always include the `CTRL` key, its value should always * include a `'CTRL+'` prefix. */ accessKeyDown: function() { this.focus(); }, /** * The default handler for a UI element's access key up event, which * does nothing. * * Can be overridded in child classes for more sophisticated behavior. * * @param {CKEDITOR.dialog} dialog The parent dialog object. * @param {String} key The key combination pressed. Since access keys * are defined to always include the `CTRL` key, its value should always * include a `'CTRL+'` prefix. */ accessKeyUp: function() {}, /** * Disables a UI element. */ disable: function() { var element = this.getElement(), input = this.getInputElement(); input.setAttribute( 'disabled', 'true' ); element.addClass( 'cke_disabled' ); }, /** * Enables a UI element. */ enable: function() { var element = this.getElement(), input = this.getInputElement(); input.removeAttribute( 'disabled' ); element.removeClass( 'cke_disabled' ); }, /** * Determines whether an UI element is enabled or not. * * @returns {Boolean} Whether the UI element is enabled. */ isEnabled: function() { return !this.getElement().hasClass( 'cke_disabled' ); }, /** * Determines whether an UI element is visible or not. * * @returns {Boolean} Whether the UI element is visible. */ isVisible: function() { return this.getInputElement().isVisible(); }, /** * Determines whether an UI element is focus-able or not. * Focus-able is defined as being both visible and enabled. * * @returns {Boolean} Whether the UI element can be focused. */ isFocusable: function() { if ( !this.isEnabled() || !this.isVisible() ) return false; return true; } }; /** @class CKEDITOR.ui.dialog.hbox */ CKEDITOR.ui.dialog.hbox.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement(), { /** * Gets a child UI element inside this container. * * var checkbox = hbox.getChild( [0,1] ); * checkbox.setValue( true ); * * @param {Array/Number} indices An array or a single number to indicate the child's * position in the container's descendant tree. Omit to get all the children in an array. * @returns {Array/CKEDITOR.ui.dialog.uiElement} Array of all UI elements in the container * if no argument given, or the specified UI element if indices is given. */ getChild: function( indices ) { // If no arguments, return a clone of the children array. if ( arguments.length < 1 ) return this._.children.concat(); // If indices isn't array, make it one. if ( !indices.splice ) indices = [ indices ]; // Retrieve the child element according to tree position. if ( indices.length < 2 ) return this._.children[ indices[ 0 ] ]; else return ( this._.children[ indices[ 0 ] ] && this._.children[ indices[ 0 ] ].getChild ) ? this._.children[ indices[ 0 ] ].getChild( indices.slice( 1, indices.length ) ) : null; } }, true ); CKEDITOR.ui.dialog.vbox.prototype = new CKEDITOR.ui.dialog.hbox(); ( function() { var commonBuilder = { build: function( dialog, elementDefinition, output ) { var children = elementDefinition.children, child, childHtmlList = [], childObjList = []; for ( var i = 0; ( i < children.length && ( child = children[ i ] ) ); i++ ) { var childHtml = []; childHtmlList.push( childHtml ); childObjList.push( CKEDITOR.dialog._.uiElementBuilders[ child.type ].build( dialog, child, childHtml ) ); } return new CKEDITOR.ui.dialog[ elementDefinition.type ]( dialog, childObjList, childHtmlList, output, elementDefinition ); } }; CKEDITOR.dialog.addUIElement( 'hbox', commonBuilder ); CKEDITOR.dialog.addUIElement( 'vbox', commonBuilder ); } )(); /** * Generic dialog command. It opens a specific dialog when executed. * * // Register the "link" command, which opens the "link" dialog. * editor.addCommand( 'link', new CKEDITOR.dialogCommand( 'link' ) ); * * @class * @constructor Creates a dialogCommand class instance. * @extends CKEDITOR.commandDefinition * @param {String} dialogName The name of the dialog to open when executing * this command. * @param {Object} [ext] Additional command definition's properties. */ CKEDITOR.dialogCommand = function( dialogName, ext ) { this.dialogName = dialogName; CKEDITOR.tools.extend( this, ext, true ); }; CKEDITOR.dialogCommand.prototype = { exec: function( editor ) { editor.openDialog( this.dialogName ); }, // Dialog commands just open a dialog ui, thus require no undo logic, // undo support should dedicate to specific dialog implementation. canUndo: false, editorFocus: 1 }; ( function() { var notEmptyRegex = /^([a]|[^a])+$/, integerRegex = /^\d*$/, numberRegex = /^\d*(?:\.\d+)?$/, htmlLengthRegex = /^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/, cssLengthRegex = /^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i, inlineStyleRegex = /^(\s*[\w-]+\s*:\s*[^:;]+(?:;|$))*$/; CKEDITOR.VALIDATE_OR = 1; CKEDITOR.VALIDATE_AND = 2; CKEDITOR.dialog.validate = { functions: function() { var args = arguments; return function() { /** * It's important for validate functions to be able to accept the value * as argument in addition to this.getValue(), so that it is possible to * combine validate functions together to make more sophisticated * validators. */ var value = this && this.getValue ? this.getValue() : args[ 0 ]; var msg, relation = CKEDITOR.VALIDATE_AND, functions = [], i; for ( i = 0; i < args.length; i++ ) { if ( typeof args[ i ] == 'function' ) functions.push( args[ i ] ); else break; } if ( i < args.length && typeof args[ i ] == 'string' ) { msg = args[ i ]; i++; } if ( i < args.length && typeof args[ i ] == 'number' ) relation = args[ i ]; var passed = ( relation == CKEDITOR.VALIDATE_AND ? true : false ); for ( i = 0; i < functions.length; i++ ) { if ( relation == CKEDITOR.VALIDATE_AND ) passed = passed && functions[ i ]( value ); else passed = passed || functions[ i ]( value ); } return !passed ? msg : true; }; }, regex: function( regex, msg ) { /* * Can be greatly shortened by deriving from functions validator if code size * turns out to be more important than performance. */ return function() { var value = this && this.getValue ? this.getValue() : arguments[ 0 ]; return !regex.test( value ) ? msg : true; }; }, notEmpty: function( msg ) { return this.regex( notEmptyRegex, msg ); }, integer: function( msg ) { return this.regex( integerRegex, msg ); }, 'number': function( msg ) { return this.regex( numberRegex, msg ); }, 'cssLength': function( msg ) { return this.functions( function( val ) { return cssLengthRegex.test( CKEDITOR.tools.trim( val ) ); }, msg ); }, 'htmlLength': function( msg ) { return this.functions( function( val ) { return htmlLengthRegex.test( CKEDITOR.tools.trim( val ) ); }, msg ); }, 'inlineStyle': function( msg ) { return this.functions( function( val ) { return inlineStyleRegex.test( CKEDITOR.tools.trim( val ) ); }, msg ); }, equals: function( value, msg ) { return this.functions( function( val ) { return val == value; }, msg ); }, notEqual: function( value, msg ) { return this.functions( function( val ) { return val != value; }, msg ); } }; CKEDITOR.on( 'instanceDestroyed', function( evt ) { // Remove dialog cover on last instance destroy. if ( CKEDITOR.tools.isEmpty( CKEDITOR.instances ) ) { var currentTopDialog; while ( ( currentTopDialog = CKEDITOR.dialog._.currentTop ) ) currentTopDialog.hide(); removeCovers(); } var dialogs = evt.editor._.storedDialogs; for ( var name in dialogs ) dialogs[ name ].destroy(); } ); } )(); // Extend the CKEDITOR.editor class with dialog specific functions. CKEDITOR.tools.extend( CKEDITOR.editor.prototype, { /** * Loads and opens a registered dialog. * * CKEDITOR.instances.editor1.openDialog( 'smiley' ); * * @member CKEDITOR.editor * @param {String} dialogName The registered name of the dialog. * @param {Function} callback The function to be invoked after dialog instance created. * @returns {CKEDITOR.dialog} The dialog object corresponding to the dialog displayed. * `null` if the dialog name is not registered. * @see CKEDITOR.dialog#add */ openDialog: function( dialogName, callback ) { var dialog = null, dialogDefinitions = CKEDITOR.dialog._.dialogDefinitions[ dialogName ]; if ( CKEDITOR.dialog._.currentTop === null ) showCover( this ); // If the dialogDefinition is already loaded, open it immediately. if ( typeof dialogDefinitions == 'function' ) { var storedDialogs = this._.storedDialogs || ( this._.storedDialogs = {} ); dialog = storedDialogs[ dialogName ] || ( storedDialogs[ dialogName ] = new CKEDITOR.dialog( this, dialogName ) ); callback && callback.call( dialog, dialog ); dialog.show(); } else if ( dialogDefinitions == 'failed' ) { hideCover( this ); throw new Error( '[CKEDITOR.dialog.openDialog] Dialog "' + dialogName + '" failed when loading definition.' ); } else if ( typeof dialogDefinitions == 'string' ) { CKEDITOR.scriptLoader.load( CKEDITOR.getUrl( dialogDefinitions ), function() { var dialogDefinition = CKEDITOR.dialog._.dialogDefinitions[ dialogName ]; // In case of plugin error, mark it as loading failed. if ( typeof dialogDefinition != 'function' ) CKEDITOR.dialog._.dialogDefinitions[ dialogName ] = 'failed'; this.openDialog( dialogName, callback ); }, this, 0, 1 ); } CKEDITOR.skin.loadPart( 'dialog' ); return dialog; } } ); } )(); CKEDITOR.plugins.add( 'dialog', { requires: 'dialogui', init: function( editor ) { editor.on( 'doubleclick', function( evt ) { if ( evt.data.dialog ) editor.openDialog( evt.data.dialog ); }, null, null, 999 ); } } ); // Dialog related configurations. /** * The color of the dialog background cover. It should be a valid CSS color string. * * config.dialog_backgroundCoverColor = 'rgb(255, 254, 253)'; * * @cfg {String} [dialog_backgroundCoverColor='white'] * @member CKEDITOR.config */ /** * The opacity of the dialog background cover. It should be a number within the * range `[0.0, 1.0]`. * * config.dialog_backgroundCoverOpacity = 0.7; * * @cfg {Number} [dialog_backgroundCoverOpacity=0.5] * @member CKEDITOR.config */ /** * If the dialog has more than one tab, put focus into the first tab as soon as dialog is opened. * * config.dialog_startupFocusTab = true; * * @cfg {Boolean} [dialog_startupFocusTab=false] * @member CKEDITOR.config */ /** * The distance of magnetic borders used in moving and resizing dialogs, * measured in pixels. * * config.dialog_magnetDistance = 30; * * @cfg {Number} [dialog_magnetDistance=20] * @member CKEDITOR.config */ /** * The guideline to follow when generating the dialog buttons. There are 3 possible options: * * * `'OS'` - the buttons will be displayed in the default order of the user's OS; * * `'ltr'` - for Left-To-Right order; * * `'rtl'` - for Right-To-Left order. * * Example: * * config.dialog_buttonsOrder = 'rtl'; * * @since 3.5 * @cfg {String} [dialog_buttonsOrder='OS'] * @member CKEDITOR.config */ /** * The dialog contents to removed. It's a string composed by dialog name and tab name with a colon between them. * * Separate each pair with semicolon (see example). * * **Note:** All names are case-sensitive. * * **Note:** Be cautious when specifying dialog tabs that are mandatory, * like `'info'`, dialog functionality might be broken because of this! * * config.removeDialogTabs = 'flash:advanced;image:Link'; * * @since 3.5 * @cfg {String} [removeDialogTabs=''] * @member CKEDITOR.config */ /** * Tells if user should not be asked to confirm close, if any dialog field was modified. * By default it is set to `false` meaning that the confirmation dialog will be shown. * * config.dialog_noConfirmCancel = true; * * @since 4.3 * @cfg {Boolean} [dialog_noConfirmCancel=false] * @member CKEDITOR.config */ /** * Event fired when a dialog definition is about to be used to create a dialog into * an editor instance. This event makes it possible to customize the definition * before creating it. * * Note that this event is called only the first time a specific dialog is * opened. Successive openings will use the cached dialog, and this event will * not get fired. * * @event dialogDefinition * @member CKEDITOR * @param {CKEDITOR.dialog.definition} data The dialog defination that * is being loaded. * @param {CKEDITOR.editor} editor The editor instance that will use the dialog. */ /** * Event fired when a tab is going to be selected in a dialog. * * @event selectPage * @member CKEDITOR.dialog * @param data * @param {String} data.page The id of the page that it's gonna be selected. * @param {String} data.currentPage The id of the current page. */ /** * Event fired when the user tries to dismiss a dialog. * * @event cancel * @member CKEDITOR.dialog * @param data * @param {Boolean} data.hide Whether the event should proceed or not. */ /** * Event fired when the user tries to confirm a dialog. * * @event ok * @member CKEDITOR.dialog * @param data * @param {Boolean} data.hide Whether the event should proceed or not. */ /** * Event fired when a dialog is shown. * * @event show * @member CKEDITOR.dialog */ /** * Event fired when a dialog is shown. * * @event dialogShow * @member CKEDITOR.editor * @param {CKEDITOR.editor} editor This editor instance. * @param {CKEDITOR.dialog} data The opened dialog instance. */ /** * Event fired when a dialog is hidden. * * @event hide * @member CKEDITOR.dialog */ /** * Event fired when a dialog is hidden. * * @event dialogHide * @member CKEDITOR.editor * @param {CKEDITOR.editor} editor This editor instance. * @param {CKEDITOR.dialog} data The hidden dialog instance. */ /** * Event fired when a dialog is being resized. The event is fired on * both the {@link CKEDITOR.dialog} object and the dialog instance * since 3.5.3, previously it was only available in the global object. * * @static * @event resize * @member CKEDITOR.dialog * @param data * @param {CKEDITOR.dialog} data.dialog The dialog being resized (if * it is fired on the dialog itself, this parameter is not sent). * @param {String} data.skin The skin name. * @param {Number} data.width The new width. * @param {Number} data.height The new height. */ /** * Event fired when a dialog is being resized. The event is fired on * both the {@link CKEDITOR.dialog} object and the dialog instance * since 3.5.3, previously it was only available in the global object. * * @since 3.5 * @event resize * @member CKEDITOR.dialog * @param data * @param {Number} data.width The new width. * @param {Number} data.height The new height. */ /** * Event fired when the dialog state changes, usually by {@link CKEDITOR.dialog#setState}. * * @since 4.5 * @event state * @member CKEDITOR.dialog * @param data * @param {Number} data The new state. Either {@link CKEDITOR#DIALOG_STATE_IDLE} or {@link CKEDITOR#DIALOG_STATE_BUSY}. */ rt-4.4.7/devel/third-party/ckeditor-src/plugins/dialog/samples/0000755000201500020150000000000014517055557023170 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/dialog/samples/assets/0000755000201500020150000000000014517055557024472 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/dialog/samples/assets/my_dialog.js0000644000201500020150000000155214517055557026777 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.dialog.add( 'myDialog', function() { return { title: 'My Dialog', minWidth: 400, minHeight: 200, contents: [ { id: 'tab1', label: 'First Tab', title: 'First Tab', elements: [ { id: 'input1', type: 'text', label: 'Text Field' }, { id: 'select1', type: 'select', label: 'Select Field', items: [ [ 'option1', 'value1' ], [ 'option2', 'value2' ] ] } ] }, { id: 'tab2', label: 'Second Tab', title: 'Second Tab', elements: [ { id: 'button1', type: 'button', label: 'Button Field' } ] } ] }; } ); // %LEAVE_UNMINIFIED% %REMOVE_LINE% rt-4.4.7/devel/third-party/ckeditor-src/plugins/dialog/samples/dialog.html0000644000201500020150000001576314517055557025331 0ustar puckpuck Using API to Customize Dialog Windows — CKEditor Sample

    CKEditor Samples » Using CKEditor Dialog API

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

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

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

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

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

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

    1. Adding dialog tab – Add new tab "My Tab" to dialog window.
    2. Removing a dialog window tab – Remove "Second Tab" page from the dialog window.
    3. Adding dialog window fields – Add "My Custom Field" to the dialog window.
    4. Removing dialog window field – Remove "Select Field" selection field from the dialog window.
    5. Setting default values for dialog window fields – Set default value of "Text Field" text field.
    6. Setup initial focus for dialog window – Put initial focus on "My Custom Field" text field.
    rt-4.4.7/devel/third-party/ckeditor-src/plugins/dialog/dialogDefinition.js0000644000201500020150000006102614517055557025337 0ustar puckpuck// jscs:disable disallowMixedSpacesAndTabs /** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ /** * @fileOverview Defines the "virtual" dialog, dialog content and dialog button * definition classes. */ /** * The definition of a dialog window. * * This class is not really part of the API. It just illustrates the properties * that developers can use to define and create dialogs. * * // There is no constructor for this class, the user just has to define an * // object with the appropriate properties. * * CKEDITOR.dialog.add( 'testOnly', function( editor ) { * return { * title: 'Test Dialog', * resizable: CKEDITOR.DIALOG_RESIZE_BOTH, * minWidth: 500, * minHeight: 400, * contents: [ * { * id: 'tab1', * label: 'First Tab', * title: 'First Tab Title', * accessKey: 'Q', * elements: [ * { * type: 'text', * label: 'Test Text 1', * id: 'testText1', * 'default': 'hello world!' * } * ] * } * ] * }; * } ); * * @class CKEDITOR.dialog.definition */ /** * The dialog title, displayed in the dialog's header. Required. * * @property {String} title */ /** * How the dialog can be resized, must be one of the four contents defined below. * * * {@link CKEDITOR#DIALOG_RESIZE_NONE} * * {@link CKEDITOR#DIALOG_RESIZE_WIDTH} * * {@link CKEDITOR#DIALOG_RESIZE_HEIGHT} * * {@link CKEDITOR#DIALOG_RESIZE_BOTH} * * @property {Number} [resizable=CKEDITOR.DIALOG_RESIZE_NONE] */ /** * The minimum width of the dialog, in pixels. * * @property {Number} [minWidth=600] */ /** * The minimum height of the dialog, in pixels. * * @property {Number} [minHeight=400] */ /** * The initial width of the dialog, in pixels. * * @since 3.5.3 * @property {Number} [width=CKEDITOR.dialog.definition#minWidth] */ /** * The initial height of the dialog, in pixels. * * @since 3.5.3 * @property {Number} [height=CKEDITOR.dialog.definition.minHeight] */ /** * The buttons in the dialog, defined as an array of * {@link CKEDITOR.dialog.definition.button} objects. * * @property {Array} [buttons=[ CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton ]] */ /** * The contents in the dialog, defined as an array of * {@link CKEDITOR.dialog.definition.content} objects. Required. * * @property {Array} contents */ /** * The function to execute when OK is pressed. * * @property {Function} onOk */ /** * The function to execute when Cancel is pressed. * * @property {Function} onCancel */ /** * The function to execute when the dialog is displayed for the first time. * * @property {Function} onLoad */ /** * The function to execute when the dialog is loaded (executed every time the dialog is opened). * * @property {Function} onShow */ /** * This class is not really part of the API. It just illustrates the properties * that developers can use to define and create dialog content pages. * * @class CKEDITOR.dialog.definition.content. */ /** * The id of the content page. * * @property {String} id */ /** * The tab label of the content page. * * @property {String} label */ /** * The popup message of the tab label. * * @property {String} title */ /** * The CTRL hotkey for switching to the tab. * * contentDefinition.accessKey = 'Q'; // Switch to this page when CTRL-Q is pressed. * * @property {String} accessKey */ /** * The UI elements contained in this content page, defined as an array of * {@link CKEDITOR.dialog.definition.uiElement} objects. * * @property {Array} elements */ /** * The definition of user interface element (textarea, radio etc). * * This class is not really part of the API. It just illustrates the properties * that developers can use to define and create dialog UI elements. * * @class CKEDITOR.dialog.definition.uiElement * @see CKEDITOR.ui.dialog.uiElement */ /** * The id of the UI element. * * @property {String} id */ /** * The type of the UI element. Required. * * @property {String} type */ /** * The popup label of the UI element. * * @property {String} title */ /** * The content that needs to be allowed to enable this UI element. * All formats accepted by {@link CKEDITOR.filter#check} may be used. * * When all UI elements in a tab are disabled, this tab will be disabled automatically. * * @property {String/Object/CKEDITOR.style} requiredContent */ /** * CSS class names to append to the UI element. * * @property {String} className */ /** * Inline CSS classes to append to the UI element. * * @property {String} style */ /** * Horizontal alignment (in container) of the UI element. * * @property {String} align */ /** * Function to execute the first time the UI element is displayed. * * @property {Function} onLoad */ /** * Function to execute whenever the UI element's parent dialog is displayed. * * @property {Function} onShow */ /** * Function to execute whenever the UI element's parent dialog is closed. * * @property {Function} onHide */ /** * Function to execute whenever the UI element's parent * dialog's {@link CKEDITOR.dialog#setupContent} method is executed. * It usually takes care of the respective UI element as a standalone element. * * @property {Function} setup */ /** * Function to execute whenever the UI element's parent * dialog's {@link CKEDITOR.dialog#commitContent} method is executed. * It usually takes care of the respective UI element as a standalone element. * * @property {Function} commit */ // ----- hbox ----------------------------------------------------------------- /** * Horizontal layout box for dialog UI elements, auto-expends to available width of container. * * This class is not really part of the API. It just illustrates the properties * that developers can use to define and create horizontal layouts. * * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.hbox} object and can be accessed with {@link CKEDITOR.dialog#getContentElement}. * * // There is no constructor for this class, the user just has to define an * // object with the appropriate properties. * * // Example: * { * type: 'hbox', * widths: [ '25%', '25%', '50%' ], * children: [ * { * type: 'text', * id: 'id1', * width: '40px', * }, * { * type: 'text', * id: 'id2', * width: '40px', * }, * { * type: 'text', * id: 'id3' * } * ] * } * * @class CKEDITOR.dialog.definition.hbox * @extends CKEDITOR.dialog.definition.uiElement */ /** * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. * * @property {Array} children */ /** * (Optional) The widths of child cells. * * @property {Array} widths */ /** * (Optional) The height of the layout. * * @property {Number} height */ /** * The CSS styles to apply to this element. * * @property {String} styles */ /** * (Optional) The padding width inside child cells. Example: 0, 1. * * @property {Number} padding */ /** * (Optional) The alignment of the whole layout. Example: center, top. * * @property {String} align */ // ----- vbox ----------------------------------------------------------------- /** * Vertical layout box for dialog UI elements. * * This class is not really part of the API. It just illustrates the properties * that developers can use to define and create vertical layouts. * * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.vbox} object and can * be accessed with {@link CKEDITOR.dialog#getContentElement}. * * // There is no constructor for this class, the user just has to define an * // object with the appropriate properties. * * // Example: * { * type: 'vbox', * align: 'right', * width: '200px', * children: [ * { * type: 'text', * id: 'age', * label: 'Age' * }, * { * type: 'text', * id: 'sex', * label: 'Sex' * }, * { * type: 'text', * id: 'nationality', * label: 'Nationality' * } * ] * } * * @class CKEDITOR.dialog.definition.vbox * @extends CKEDITOR.dialog.definition.uiElement */ /** * Array of {@link CKEDITOR.ui.dialog.uiElement} objects inside this container. * * @property {Array} children */ /** * (Optional) The width of the layout. * * @property {Array} width */ /** * (Optional) The heights of individual cells. * * @property {Number} heights */ /** * The CSS styles to apply to this element. * * @property {String} styles */ /** * (Optional) The padding width inside child cells. Example: 0, 1. * * @property {Number} padding */ /** * (Optional) The alignment of the whole layout. Example: center, top. * * @property {String} align */ /** * (Optional) Whether the layout should expand vertically to fill its container. * * @property {Boolean} expand */ // ----- labeled element ------------------------------------------------------ /** * The definition of labeled user interface element (textarea, textInput etc). * * This class is not really part of the API. It just illustrates the properties * that developers can use to define and create dialog UI elements. * * @class CKEDITOR.dialog.definition.labeledElement * @extends CKEDITOR.dialog.definition.uiElement * @see CKEDITOR.ui.dialog.labeledElement */ /** * The label of the UI element. * * { * type: 'text', * label: 'My Label' * } * * @property {String} label */ /** * (Optional) Specify the layout of the label. Set to `'horizontal'` for horizontal layout. * The default layout is vertical. * * { * type: 'text', * label: 'My Label', * labelLayout: 'horizontal' * } * * @property {String} labelLayout */ /** * (Optional) Applies only to horizontal layouts: a two elements array of lengths to specify the widths of the * label and the content element. See also {@link CKEDITOR.dialog.definition.labeledElement#labelLayout}. * * { * type: 'text', * label: 'My Label', * labelLayout: 'horizontal', * widths: [100, 200] * } * * @property {Array} widths */ /** * Specify the inline style of the uiElement label. * * { * type: 'text', * label: 'My Label', * labelStyle: 'color: red' * } * * @property {String} labelStyle */ /** * Specify the inline style of the input element. * * { * type: 'text', * label: 'My Label', * inputStyle: 'text-align: center' * } * * @since 3.6.1 * @property {String} inputStyle */ /** * Specify the inline style of the input element container. * * { * type: 'text', * label: 'My Label', * controlStyle: 'width: 3em' * } * * @since 3.6.1 * @property {String} controlStyle */ // ----- button --------------------------------------------------------------- /** * The definition of a button. * * This class is not really part of the API. It just illustrates the properties * that developers can use to define and create buttons. * * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.button} object * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. * * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. * * // There is no constructor for this class, the user just has to define an * // object with the appropriate properties. * * // Example: * { * type: 'button', * id: 'buttonId', * label: 'Click me', * title: 'My title', * onClick: function() { * // this = CKEDITOR.ui.dialog.button * alert( 'Clicked: ' + this.id ); * } * } * * @class CKEDITOR.dialog.definition.button * @extends CKEDITOR.dialog.definition.uiElement */ /** * Whether the button is disabled. * * @property {Boolean} disabled */ /** * The label of the UI element. * * @property {String} label */ // ----- checkbox ------ /** * The definition of a checkbox element. * * This class is not really part of the API. It just illustrates the properties * that developers can use to define and create groups of checkbox buttons. * * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.checkbox} object * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. * * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. * * // There is no constructor for this class, the user just has to define an * // object with the appropriate properties. * * // Example: * { * type: 'checkbox', * id: 'agree', * label: 'I agree', * 'default': 'checked', * onClick: function() { * // this = CKEDITOR.ui.dialog.checkbox * alert( 'Checked: ' + this.getValue() ); * } * } * * @class CKEDITOR.dialog.definition.checkbox * @extends CKEDITOR.dialog.definition.uiElement */ /** * (Optional) The validation function. * * @property {Function} validate */ /** * The label of the UI element. * * @property {String} label */ /** * The default state. * * @property {String} [default='' (unchecked)] */ // ----- file ----------------------------------------------------------------- /** * The definition of a file upload input. * * This class is not really part of the API. It just illustrates the properties * that developers can use to define and create file upload elements. * * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.file} object * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. * * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. * * // There is no constructor for this class, the user just has to define an * // object with the appropriate properties. * * // Example: * { * type: 'file', * id: 'upload', * label: 'Select file from your computer', * size: 38 * }, * { * type: 'fileButton', * id: 'fileId', * label: 'Upload file', * 'for': [ 'tab1', 'upload' ], * filebrowser: { * onSelect: function( fileUrl, data ) { * alert( 'Successfully uploaded: ' + fileUrl ); * } * } * } * * @class CKEDITOR.dialog.definition.file * @extends CKEDITOR.dialog.definition.labeledElement */ /** * (Optional) The validation function. * * @property {Function} validate */ /** * (Optional) The action attribute of the form element associated with this file upload input. * If empty, CKEditor will use path to server connector for currently opened folder. * * @property {String} action */ /** * The size of the UI element. * * @property {Number} size */ // ----- fileButton ----------------------------------------------------------- /** * The definition of a button for submitting the file in a file upload input. * * This class is not really part of the API. It just illustrates the properties * that developers can use to define and create a button for submitting the file in a file upload input. * * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.fileButton} object * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. * * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. * * @class CKEDITOR.dialog.definition.fileButton * @extends CKEDITOR.dialog.definition.uiElement */ /** * (Optional) The validation function. * * @property {Function} validate */ /** * The label of the UI element. * * @property {String} label */ /** * The instruction for CKEditor how to deal with file upload. * By default, the file and fileButton elements will not work "as expected" if this attribute is not set. * * // Update field with id 'txtUrl' in the 'tab1' tab when file is uploaded. * filebrowser: 'tab1:txtUrl' * * // Call custom onSelect function when file is successfully uploaded. * filebrowser: { * onSelect: function( fileUrl, data ) { * alert( 'Successfully uploaded: ' + fileUrl ); * } * } * * @property {String} filebrowser/Object */ /** * An array that contains pageId and elementId of the file upload input element for which this button is created. * * [ pageId, elementId ] * * @property {String} for */ // ----- html ----------------------------------------------------------------- /** * The definition of a raw HTML element. * * This class is not really part of the API. It just illustrates the properties * that developers can use to define and create elements made from raw HTML code. * * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.html} object * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. * * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. * To access HTML elements use {@link CKEDITOR.dom.document#getById}. * * // There is no constructor for this class, the user just has to define an * // object with the appropriate properties. * * // Example 1: * { * type: 'html', * html: '

    This is some sample HTML content.

    ' * } * * // Example 2: * // Complete sample with document.getById() call when the "Ok" button is clicked. * var dialogDefinition = { * title: 'Sample dialog', * minWidth: 300, * minHeight: 200, * onOk: function() { * // "this" is now a CKEDITOR.dialog object. * var document = this.getElement().getDocument(); * // document = CKEDITOR.dom.document * var element = document.getById( 'myDiv' ); * if ( element ) * alert( element.getHtml() ); * }, * contents: [ * { * id: 'tab1', * label: '', * title: '', * elements: [ * { * type: 'html', * html: '
    Sample text.
    Another div.
    ' * } * ] * } * ], * buttons: [ CKEDITOR.dialog.cancelButton, CKEDITOR.dialog.okButton ] * }; * * @class CKEDITOR.dialog.definition.html * @extends CKEDITOR.dialog.definition.uiElement */ /** * (Required) HTML code of this element. * * @property {String} html */ // ----- radio ---------------------------------------------------------------- /** * The definition of a radio group. * * This class is not really part of the API. It just illustrates the properties * that developers can use to define and create groups of radio buttons. * * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.radio} object * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. * * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. * * // There is no constructor for this class, the user just has to define an * // object with the appropriate properties. * * // Example: * { * type: 'radio', * id: 'country', * label: 'Which country is bigger', * items: [ [ 'France', 'FR' ], [ 'Germany', 'DE' ] ], * style: 'color: green', * 'default': 'DE', * onClick: function() { * // this = CKEDITOR.ui.dialog.radio * alert( 'Current value: ' + this.getValue() ); * } * } * * @class CKEDITOR.dialog.definition.radio * @extends CKEDITOR.dialog.definition.labeledElement */ /** * The default value. * * @property {String} default */ /** * (Optional) The validation function. * * @property {Function} validate */ /** * An array of options. Each option is a 1- or 2-item array of format `[ 'Description', 'Value' ]`. * If `'Value'` is missing, then the value would be assumed to be the same as the description. * * @property {Array} items */ // ----- selectElement -------------------------------------------------------- /** * The definition of a select element. * * This class is not really part of the API. It just illustrates the properties * that developers can use to define and create select elements. * * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.select} object * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. * * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. * * // There is no constructor for this class, the user just has to define an * // object with the appropriate properties. * * // Example: * { * type: 'select', * id: 'sport', * label: 'Select your favourite sport', * items: [ [ 'Basketball' ], [ 'Baseball' ], [ 'Hockey' ], [ 'Football' ] ], * 'default': 'Football', * onChange: function( api ) { * // this = CKEDITOR.ui.dialog.select * alert( 'Current value: ' + this.getValue() ); * } * } * * @class CKEDITOR.dialog.definition.select * @extends CKEDITOR.dialog.definition.labeledElement */ /** * The default value. * * @property {String} default */ /** * (Optional) The validation function. * * @property {Function} validate */ /** * An array of options. Each option is a 1- or 2-item array of format `[ 'Description', 'Value' ]`. * If `'Value'` is missing, then the value would be assumed to be the same as the description. * * @property {Array} items */ /** * (Optional) Set this to true if you'd like to have a multiple-choice select box. * * @property {Boolean} [multiple=false] */ /** * (Optional) The number of items to display in the select box. * * @property {Number} size */ // ----- textInput ------------------------------------------------------------ /** * The definition of a text field (single line). * * This class is not really part of the API. It just illustrates the properties * that developers can use to define and create text fields. * * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.textInput} object * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. * * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. * * // There is no constructor for this class, the user just has to define an * // object with the appropriate properties. * * { * type: 'text', * id: 'name', * label: 'Your name', * 'default': '', * validate: function() { * if ( !this.getValue() ) { * api.openMsgDialog( '', 'Name cannot be empty.' ); * return false; * } * } * } * * @class CKEDITOR.dialog.definition.textInput * @extends CKEDITOR.dialog.definition.labeledElement */ /** * The default value. * * @property {String} default */ /** * (Optional) The maximum length. * * @property {Number} maxLength */ /** * (Optional) The size of the input field. * * @property {Number} size */ /** * (Optional) The validation function. * * @property {Function} validate */ /** * @property bidi * @inheritdoc CKEDITOR.dialog.definition.textarea#bidi */ // ----- textarea ------------------------------------------------------------- /** * The definition of a text field (multiple lines). * * This class is not really part of the API. It just illustrates the properties * that developers can use to define and create textarea. * * Once the dialog is opened, the created element becomes a {@link CKEDITOR.ui.dialog.textarea} object * and can be accessed with {@link CKEDITOR.dialog#getContentElement}. * * For a complete example of dialog definition, please check {@link CKEDITOR.dialog#add}. * * // There is no constructor for this class, the user just has to define an * // object with the appropriate properties. * * // Example: * { * type: 'textarea', * id: 'message', * label: 'Your comment', * 'default': '', * validate: function() { * if ( this.getValue().length < 5 ) { * api.openMsgDialog( 'The comment is too short.' ); * return false; * } * } * } * * @class CKEDITOR.dialog.definition.textarea * @extends CKEDITOR.dialog.definition.labeledElement */ /** * The number of rows. * * @property {Number} rows */ /** * The number of columns. * * @property {Number} cols */ /** * (Optional) The validation function. * * @property {Function} validate */ /** * The default value. * * @property {String} default */ /** * Whether the text direction of this input should be togglable using the following keystrokes: * * * *Shift+Alt+End* – switch to Right-To-Left, * * *Shift+Alt+Home* – switch to Left-To-Right. * * By default the input will be loaded without any text direction set, which means that * the direction will be inherited from the editor's text direction. * * If the direction was set, a marker will be prepended to every non-empty value of this input: * * * [`\u202A`](http://unicode.org/cldr/utility/character.jsp?a=202A) – for Right-To-Left, * * [`\u202B`](http://unicode.org/cldr/utility/character.jsp?a=202B) – for Left-To-Right. * * This marker allows for restoring the same text direction upon the next dialog opening. * * @since 4.5 * @property {Boolean} bidi */ rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/0000755000201500020150000000000014517055560022207 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/plugin.js0000644000201500020150000020030214517055560024040 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ /** * @fileOverview The Magic Line plugin that makes it easier to access some document areas that * are difficult to focus. */ 'use strict'; ( function() { CKEDITOR.plugins.add( 'magicline', { lang: 'af,ar,bg,ca,cs,cy,da,de,el,en,en-gb,eo,es,et,eu,fa,fi,fr,fr-ca,gl,he,hr,hu,id,it,ja,km,ko,ku,lv,nb,nl,no,pl,pt,pt-br,ru,si,sk,sl,sq,sv,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% init: initPlugin } ); // Activates the box inside of an editor. function initPlugin( editor ) { // Configurables var config = editor.config, triggerOffset = config.magicline_triggerOffset || 30, enterMode = config.enterMode, that = { // Global stuff is being initialized here. editor: editor, enterMode: enterMode, triggerOffset: triggerOffset, holdDistance: 0 | triggerOffset * ( config.magicline_holdDistance || 0.5 ), boxColor: config.magicline_color || '#ff0000', rtl: config.contentsLangDirection == 'rtl', tabuList: [ 'data-cke-hidden-sel' ].concat( config.magicline_tabuList || [] ), triggers: config.magicline_everywhere ? DTD_BLOCK : { table: 1, hr: 1, div: 1, ul: 1, ol: 1, dl: 1, form: 1, blockquote: 1 } }, scrollTimeout, checkMouseTimeoutPending, checkMouseTimer; // %REMOVE_START% // Internal DEBUG uses tools located in the topmost window. // (#9701) Due to security limitations some browsers may throw // errors when accessing window.top object. Do it safely first then. try { that.debug = window.top.DEBUG; } catch ( e ) {} that.debug = that.debug || { groupEnd: function() {}, groupStart: function() {}, log: function() {}, logElements: function() {}, logElementsEnd: function() {}, logEnd: function() {}, mousePos: function() {}, showHidden: function() {}, showTrigger: function() {}, startTimer: function() {}, stopTimer: function() {} }; // %REMOVE_END% // Simple irrelevant elements filter. that.isRelevant = function( node ) { return isHtml( node ) && // -> Node must be an existing HTML element. !isLine( that, node ) && // -> Node can be neither the box nor its child. !isFlowBreaker( node ); // -> Node can be neither floated nor positioned nor aligned. }; editor.on( 'contentDom', addListeners, this ); function addListeners() { var editable = editor.editable(), doc = editor.document, win = editor.window; // Global stuff is being initialized here. extend( that, { editable: editable, inInlineMode: editable.isInline(), doc: doc, win: win, hotNode: null }, true ); // This is the boundary of the editor. For inline the boundary is editable itself. // For classic (`iframe`-based) editor, the HTML element is a real boundary. that.boundary = that.inInlineMode ? that.editable : that.doc.getDocumentElement(); // Enabling the box inside of inline editable is pointless. // There's no need to access spaces inside paragraphs, links, spans, etc. if ( editable.is( dtd.$inline ) ) return; // Handle in-line editing by setting appropriate position. // If current position is static, make it relative and clear top/left coordinates. if ( that.inInlineMode && !isPositioned( editable ) ) { editable.setStyles( { position: 'relative', top: null, left: null } ); } // Enable the box. Let it produce children elements, initialize // event handlers and own methods. initLine.call( this, that ); // Get view dimensions and scroll positions. // At this stage (before any checkMouse call) it is used mostly // by tests. Nevertheless it a crucial thing. updateWindowSize( that ); // Remove the box before an undo image is created. // This is important. If we didn't do that, the *undo thing* would revert the box into an editor. // Thanks to that, undo doesn't even know about the existence of the box. editable.attachListener( editor, 'beforeUndoImage', function() { that.line.detach(); } ); // Removes the box HTML from editor data string if getData is called. // Thanks to that, an editor never yields data polluted by the box. // Listen with very high priority, so line will be removed before other // listeners will see it. editable.attachListener( editor, 'beforeGetData', function() { // If the box is in editable, remove it. if ( that.line.wrap.getParent() ) { that.line.detach(); // Restore line in the last listener for 'getData'. editor.once( 'getData', function() { that.line.attach(); }, null, null, 1000 ); } }, null, null, 0 ); // Hide the box on mouseout if mouse leaves document. editable.attachListener( that.inInlineMode ? doc : doc.getWindow().getFrame(), 'mouseout', function( event ) { if ( editor.mode != 'wysiwyg' ) return; // Check for inline-mode editor. If so, check mouse position // and remove the box if mouse outside of an editor. if ( that.inInlineMode ) { var mouse = { x: event.data.$.clientX, y: event.data.$.clientY }; updateWindowSize( that ); updateEditableSize( that, true ); var size = that.view.editable, scroll = that.view.scroll; // If outside of an editor... if ( !inBetween( mouse.x, size.left - scroll.x, size.right - scroll.x ) || !inBetween( mouse.y, size.top - scroll.y, size.bottom - scroll.y ) ) { clearTimeout( checkMouseTimer ); checkMouseTimer = null; that.line.detach(); } } else { clearTimeout( checkMouseTimer ); checkMouseTimer = null; that.line.detach(); } } ); // This one deactivates hidden mode of an editor which // prevents the box from being shown. editable.attachListener( editable, 'keyup', function() { that.hiddenMode = 0; that.debug.showHidden( that.hiddenMode ); // %REMOVE_LINE% } ); editable.attachListener( editable, 'keydown', function( event ) { if ( editor.mode != 'wysiwyg' ) return; var keyStroke = event.data.getKeystroke(); switch ( keyStroke ) { // Shift pressed case 2228240: // IE case 16: that.hiddenMode = 1; that.line.detach(); } that.debug.showHidden( that.hiddenMode ); // %REMOVE_LINE% } ); // This method ensures that checkMouse aren't executed // in parallel and no more frequently than specified in timeout function. // In classic (`iframe`-based) editor, document is used as a trigger, to provide magicline // functionality when mouse is below the body (short content, short body). editable.attachListener( that.inInlineMode ? editable : doc, 'mousemove', function( event ) { checkMouseTimeoutPending = true; if ( editor.mode != 'wysiwyg' || editor.readOnly || checkMouseTimer ) return; // IE<9 requires this event-driven object to be created // outside of the setTimeout statement. // Otherwise it loses the event object with its properties. var mouse = { x: event.data.$.clientX, y: event.data.$.clientY }; checkMouseTimer = setTimeout( function() { checkMouse( mouse ); }, 30 ); // balances performance and accessibility } ); // This one removes box on scroll event. // It is to avoid box displacement. editable.attachListener( win, 'scroll', function() { if ( editor.mode != 'wysiwyg' ) return; that.line.detach(); // To figure this out just look at the mouseup // event handler below. if ( env.webkit ) { that.hiddenMode = 1; clearTimeout( scrollTimeout ); scrollTimeout = setTimeout( function() { // Don't leave hidden mode until mouse remains pressed and // scroll is being used, i.e. when dragging something. if ( !that.mouseDown ) that.hiddenMode = 0; that.debug.showHidden( that.hiddenMode ); // %REMOVE_LINE% }, 50 ); that.debug.showHidden( that.hiddenMode ); // %REMOVE_LINE% } } ); // Those event handlers remove the box on mousedown // and don't reveal it until the mouse is released. // It is to prevent box insertion e.g. while scrolling // (w/ scrollbar), selecting and so on. editable.attachListener( env_ie8 ? doc : win, 'mousedown', function() { if ( editor.mode != 'wysiwyg' ) return; that.line.detach(); that.hiddenMode = 1; that.mouseDown = 1; that.debug.showHidden( that.hiddenMode ); // %REMOVE_LINE% } ); // Google Chrome doesn't trigger this on the scrollbar (since 2009...) // so it is totally useless to check for scroll finish // see: http://code.google.com/p/chromium/issues/detail?id=14204 editable.attachListener( env_ie8 ? doc : win, 'mouseup', function() { that.hiddenMode = 0; that.mouseDown = 0; that.debug.showHidden( that.hiddenMode ); // %REMOVE_LINE% } ); // Editor commands for accessing difficult focus spaces. editor.addCommand( 'accessPreviousSpace', accessFocusSpaceCmd( that ) ); editor.addCommand( 'accessNextSpace', accessFocusSpaceCmd( that, true ) ); editor.setKeystroke( [ [ config.magicline_keystrokePrevious, 'accessPreviousSpace' ], [ config.magicline_keystrokeNext, 'accessNextSpace' ] ] ); // Revert magicline hot node on undo/redo. editor.on( 'loadSnapshot', function() { var elements, element, i; for ( var t in { p: 1, br: 1, div: 1 } ) { // document.find is not available in QM (#11149). elements = editor.document.getElementsByTag( t ); for ( i = elements.count(); i--; ) { if ( ( element = elements.getItem( i ) ).data( 'cke-magicline-hot' ) ) { // Restore hotNode that.hotNode = element; // Restore last access direction that.lastCmdDirection = element.data( 'cke-magicline-dir' ) === 'true' ? true : false; return; } } } } ); // This method handles mousemove mouse for box toggling. // It uses mouse position to determine underlying element, then // it tries to use different trigger type in order to place the box // in correct place. The following procedure is executed periodically. function checkMouse( mouse ) { that.debug.groupStart( 'CheckMouse' ); // %REMOVE_LINE% that.debug.startTimer(); // %REMOVE_LINE% that.mouse = mouse; that.trigger = null; checkMouseTimer = null; updateWindowSize( that ); if ( checkMouseTimeoutPending && // There must be an event pending. !that.hiddenMode && // Can't be in hidden mode. editor.focusManager.hasFocus && // Editor must have focus. !that.line.mouseNear() && // Mouse pointer can't be close to the box. ( that.element = elementFromMouse( that, true ) ) // There must be valid element. ) { // If trigger exists, and trigger is correct -> show the box. // Don't show the line if trigger is a descendant of some tabu-list element. if ( ( that.trigger = triggerEditable( that ) || triggerEdge( that ) || triggerExpand( that ) ) && !isInTabu( that, that.trigger.upper || that.trigger.lower ) ) { that.line.attach().place(); } // Otherwise remove the box else { that.trigger = null; that.line.detach(); } that.debug.showTrigger( that.trigger ); // %REMOVE_LINE% that.debug.mousePos( mouse.y, that.element ); // %REMOVE_LINE% checkMouseTimeoutPending = false; } that.debug.stopTimer(); // %REMOVE_LINE% that.debug.groupEnd(); // %REMOVE_LINE% } // This one allows testing and debugging. It reveals some // inner methods to the world. this.backdoor = { accessFocusSpace: accessFocusSpace, boxTrigger: boxTrigger, isLine: isLine, getAscendantTrigger: getAscendantTrigger, getNonEmptyNeighbour: getNonEmptyNeighbour, getSize: getSize, that: that, triggerEdge: triggerEdge, triggerEditable: triggerEditable, triggerExpand: triggerExpand }; } } // Some shorthands for common methods to save bytes var extend = CKEDITOR.tools.extend, newElement = CKEDITOR.dom.element, newElementFromHtml = newElement.createFromHtml, env = CKEDITOR.env, env_ie8 = CKEDITOR.env.ie && CKEDITOR.env.version < 9, dtd = CKEDITOR.dtd, // Global object associating enter modes with elements. enterElements = {}, // Constant values, types and so on. EDGE_TOP = 128, EDGE_BOTTOM = 64, EDGE_MIDDLE = 32, TYPE_EDGE = 16, TYPE_EXPAND = 8, LOOK_TOP = 4, LOOK_BOTTOM = 2, LOOK_NORMAL = 1, WHITE_SPACE = '\u00A0', DTD_LISTITEM = dtd.$listItem, DTD_TABLECONTENT = dtd.$tableContent, DTD_NONACCESSIBLE = extend( {}, dtd.$nonEditable, dtd.$empty ), DTD_BLOCK = dtd.$block, // Minimum time that must elapse between two update*Size calls. // It prevents constant getComuptedStyle calls and improves performance. CACHE_TIME = 100, // Shared CSS stuff for box elements CSS_COMMON = 'width:0px;height:0px;padding:0px;margin:0px;display:block;' + 'z-index:9999;color:#fff;position:absolute;font-size: 0px;line-height:0px;', CSS_TRIANGLE = CSS_COMMON + 'border-color:transparent;display:block;border-style:solid;', TRIANGLE_HTML = '' + WHITE_SPACE + ''; enterElements[ CKEDITOR.ENTER_BR ] = 'br'; enterElements[ CKEDITOR.ENTER_P ] = 'p'; enterElements[ CKEDITOR.ENTER_DIV ] = 'div'; function areSiblings( that, upper, lower ) { return isHtml( upper ) && isHtml( lower ) && lower.equals( upper.getNext( function( node ) { return !( isEmptyTextNode( node ) || isComment( node ) || isFlowBreaker( node ) ); } ) ); } // boxTrigger is an abstract type which describes // the relationship between elements that may result // in showing the box. // // The following type is used by numerous methods // to share information about the hypothetical box placement // and look by referring to boxTrigger properties. function boxTrigger( triggerSetup ) { this.upper = triggerSetup[ 0 ]; this.lower = triggerSetup[ 1 ]; this.set.apply( this, triggerSetup.slice( 2 ) ); } boxTrigger.prototype = { set: function( edge, type, look ) { this.properties = edge + type + ( look || LOOK_NORMAL ); return this; }, is: function( property ) { return ( this.properties & property ) == property; } }; var elementFromMouse = ( function() { function elementFromPoint( doc, mouse ) { var pointedElement = doc.$.elementFromPoint( mouse.x, mouse.y ); // IE9QM: from times to times it will return an empty object on scroll bar hover. (#12185) return pointedElement && pointedElement.nodeType ? new CKEDITOR.dom.element( pointedElement ) : null; } return function( that, ignoreBox, forceMouse ) { if ( !that.mouse ) return null; var doc = that.doc, lineWrap = that.line.wrap, mouse = forceMouse || that.mouse, // Note: element might be null. element = elementFromPoint( doc, mouse ); // If ignoreBox is set and element is the box, it means that we // need to hide the box for a while, repeat elementFromPoint // and show it again. if ( ignoreBox && isLine( that, element ) ) { lineWrap.hide(); element = elementFromPoint( doc, mouse ); lineWrap.show(); } // Return nothing if: // \-> Element is not HTML. if ( !( element && element.type == CKEDITOR.NODE_ELEMENT && element.$ ) ) return null; // Also return nothing if: // \-> We're IE<9 and element is out of the top-level element (editable for inline and HTML for classic (`iframe`-based)). // This is due to the bug which allows IE<9 firing mouse events on element // with contenteditable=true while doing selection out (far, away) of the element. // Thus we must always be sure that we stay in editable or HTML. if ( env.ie && env.version < 9 ) { if ( !( that.boundary.equals( element ) || that.boundary.contains( element ) ) ) return null; } return element; }; } )(); // Gets the closest parent node that belongs to triggers group. function getAscendantTrigger( that ) { var node = that.element, trigger; if ( node && isHtml( node ) ) { trigger = node.getAscendant( that.triggers, true ); // If trigger is an element, neither editable nor editable's ascendant. if ( trigger && that.editable.contains( trigger ) ) { // Check for closest editable limit. // Don't consider trigger as a limit as it may be nested editable (includeSelf=false) (#12009). var limit = getClosestEditableLimit( trigger ); // Trigger in nested editable area. if ( limit.getAttribute( 'contenteditable' ) == 'true' ) return trigger; // Trigger in non-editable area. else if ( limit.is( that.triggers ) ) return limit; else return null; return trigger; } else { return null; } } return null; } function getMidpoint( that, upper, lower ) { updateSize( that, upper ); updateSize( that, lower ); var upperSizeBottom = upper.size.bottom, lowerSizeTop = lower.size.top; return upperSizeBottom && lowerSizeTop ? 0 | ( upperSizeBottom + lowerSizeTop ) / 2 : upperSizeBottom || lowerSizeTop; } // Get nearest node (either text or HTML), but: // \-> Omit all empty text nodes (containing white characters only). // \-> Omit BR elements // \-> Omit flow breakers. function getNonEmptyNeighbour( that, node, goBack ) { node = node[ goBack ? 'getPrevious' : 'getNext' ]( function( node ) { return ( isTextNode( node ) && !isEmptyTextNode( node ) ) || ( isHtml( node ) && !isFlowBreaker( node ) && !isLine( that, node ) ); } ); return node; } function inBetween( val, lower, upper ) { return val > lower && val < upper; } // Returns the closest ancestor that has contenteditable attribute. // Such ancestor is the limit of (non-)editable DOM branch that element // belongs to. This method omits editor editable. function getClosestEditableLimit( element, includeSelf ) { if ( element.data( 'cke-editable' ) ) return null; if ( !includeSelf ) element = element.getParent(); while ( element ) { if ( element.data( 'cke-editable' ) ) return null; if ( element.hasAttribute( 'contenteditable' ) ) return element; element = element.getParent(); } return null; } // Access space line consists of a few elements (spans): // \-> Line wrapper. // \-> Line. // \-> Line triangles: left triangle (LT), right triangle (RT). // \-> Button handler (BTN). // // +--------------------------------------------------- line.wrap (span) -----+ // | +---------------------------------------------------- line (span) -----+ | // | | +- LT \ +- BTN -+ / RT -+ | | // | | | \ | | | / | | | // | | | / | <__| | \ | | | // | | +-----/ +-------+ \-----+ | | // | +----------------------------------------------------------------------+ | // +--------------------------------------------------------------------------+ // function initLine( that ) { var doc = that.doc, // This the main box element that holds triangles and the insertion button line = newElementFromHtml( '', doc ), iconPath = CKEDITOR.getUrl( this.path + 'images/' + ( env.hidpi ? 'hidpi/' : '' ) + 'icon' + ( that.rtl ? '-rtl' : '' ) + '.png' ); extend( line, { attach: function() { // Only if not already attached if ( !this.wrap.getParent() ) this.wrap.appendTo( that.editable, true ); return this; }, // Looks are as follows: [ LOOK_TOP, LOOK_BOTTOM, LOOK_NORMAL ]. lineChildren: [ extend( newElementFromHtml( '', doc ), { base: CSS_COMMON + 'height:17px;width:17px;' + ( that.rtl ? 'left' : 'right' ) + ':17px;' + 'background:url(' + iconPath + ') center no-repeat ' + that.boxColor + ';cursor:pointer;' + ( env.hc ? 'font-size: 15px;line-height:14px;border:1px solid #fff;text-align:center;' : '' ) + ( env.hidpi ? 'background-size: 9px 10px;' : '' ), looks: [ 'top:-8px; border-radius: 2px;', 'top:-17px; border-radius: 2px 2px 0px 0px;', 'top:-1px; border-radius: 0px 0px 2px 2px;' ] } ), extend( newElementFromHtml( TRIANGLE_HTML, doc ), { base: CSS_TRIANGLE + 'left:0px;border-left-color:' + that.boxColor + ';', looks: [ 'border-width:8px 0 8px 8px;top:-8px', 'border-width:8px 0 0 8px;top:-8px', 'border-width:0 0 8px 8px;top:0px' ] } ), extend( newElementFromHtml( TRIANGLE_HTML, doc ), { base: CSS_TRIANGLE + 'right:0px;border-right-color:' + that.boxColor + ';', looks: [ 'border-width:8px 8px 8px 0;top:-8px', 'border-width:8px 8px 0 0;top:-8px', 'border-width:0 8px 8px 0;top:0px' ] } ) ], detach: function() { // Detach only if already attached. if ( this.wrap.getParent() ) this.wrap.remove(); return this; }, // Checks whether mouseY is around an element by comparing boundaries and considering // an offset distance. mouseNear: function() { that.debug.groupStart( 'mouseNear' ); // %REMOVE_LINE% updateSize( that, this ); var offset = that.holdDistance, size = this.size; // Determine neighborhood by element dimensions and offsets. if ( size && inBetween( that.mouse.y, size.top - offset, size.bottom + offset ) && inBetween( that.mouse.x, size.left - offset, size.right + offset ) ) { that.debug.logEnd( 'Mouse is near.' ); // %REMOVE_LINE% return true; } that.debug.logEnd( 'Mouse isn\'t near.' ); // %REMOVE_LINE% return false; }, // Adjusts position of the box according to the trigger properties. // If also affects look of the box depending on the type of the trigger. place: function() { var view = that.view, editable = that.editable, trigger = that.trigger, upper = trigger.upper, lower = trigger.lower, any = upper || lower, parent = any.getParent(), styleSet = {}; // Save recent trigger for further insertion. // It is necessary due to the fact, that that.trigger may // contain different boxTrigger at the moment of insertion // or may be even null. this.trigger = trigger; upper && updateSize( that, upper, true ); lower && updateSize( that, lower, true ); updateSize( that, parent, true ); // Yeah, that's gonna be useful in inline-mode case. if ( that.inInlineMode ) updateEditableSize( that, true ); // Set X coordinate (left, right, width). if ( parent.equals( editable ) ) { styleSet.left = view.scroll.x; styleSet.right = -view.scroll.x; styleSet.width = ''; } else { styleSet.left = any.size.left - any.size.margin.left + view.scroll.x - ( that.inInlineMode ? view.editable.left + view.editable.border.left : 0 ); styleSet.width = any.size.outerWidth + any.size.margin.left + any.size.margin.right + view.scroll.x; styleSet.right = ''; } // Set Y coordinate (top) for trigger consisting of two elements. if ( upper && lower ) { // No margins at all or they're equal. Place box right between. if ( upper.size.margin.bottom === lower.size.margin.top ) styleSet.top = 0 | ( upper.size.bottom + upper.size.margin.bottom / 2 ); else { // Upper margin < lower margin. Place at lower margin. if ( upper.size.margin.bottom < lower.size.margin.top ) styleSet.top = upper.size.bottom + upper.size.margin.bottom; // Upper margin > lower margin. Place at upper margin - lower margin. else styleSet.top = upper.size.bottom + upper.size.margin.bottom - lower.size.margin.top; } } // Set Y coordinate (top) for single-edge trigger. else if ( !upper ) styleSet.top = lower.size.top - lower.size.margin.top; else if ( !lower ) { styleSet.top = upper.size.bottom + upper.size.margin.bottom; } // Set box button modes if close to the viewport horizontal edge // or look forced by the trigger. if ( trigger.is( LOOK_TOP ) || inBetween( styleSet.top, view.scroll.y - 15, view.scroll.y + 5 ) ) { styleSet.top = that.inInlineMode ? 0 : view.scroll.y; this.look( LOOK_TOP ); } else if ( trigger.is( LOOK_BOTTOM ) || inBetween( styleSet.top, view.pane.bottom - 5, view.pane.bottom + 15 ) ) { styleSet.top = that.inInlineMode ? ( view.editable.height + view.editable.padding.top + view.editable.padding.bottom ) : ( view.pane.bottom - 1 ); this.look( LOOK_BOTTOM ); } else { if ( that.inInlineMode ) styleSet.top -= view.editable.top + view.editable.border.top; this.look( LOOK_NORMAL ); } if ( that.inInlineMode ) { // 1px bug here... styleSet.top--; // Consider the editable to be an element with overflow:scroll // and non-zero scrollTop/scrollLeft value. // For example: divarea editable. (#9383) styleSet.top += view.editable.scroll.top; styleSet.left += view.editable.scroll.left; } // Append `px` prefixes. for ( var style in styleSet ) styleSet[ style ] = CKEDITOR.tools.cssLength( styleSet[ style ] ); this.setStyles( styleSet ); }, // Changes look of the box according to current needs. // Three different styles are available: [ LOOK_TOP, LOOK_BOTTOM, LOOK_NORMAL ]. look: function( look ) { if ( this.oldLook == look ) return; for ( var i = this.lineChildren.length, child; i--; ) ( child = this.lineChildren[ i ] ).setAttribute( 'style', child.base + child.looks[ 0 | look / 2 ] ); this.oldLook = look; }, wrap: new newElement( 'span', that.doc ) } ); // Insert children into the box. for ( var i = line.lineChildren.length; i--; ) line.lineChildren[ i ].appendTo( line ); // Set default look of the box. line.look( LOOK_NORMAL ); // Using that wrapper prevents IE (8,9) from resizing editable area at the moment // of box insertion. This works thanks to the fact, that positioned box is wrapped by // an inline element. So much tricky. line.appendTo( line.wrap ); // Make the box unselectable. line.unselectable(); // Handle accessSpace node insertion. line.lineChildren[ 0 ].on( 'mouseup', function( event ) { line.detach(); accessFocusSpace( that, function( accessNode ) { // Use old trigger that was saved by 'place' method. Look: line.place var trigger = that.line.trigger; accessNode[ trigger.is( EDGE_TOP ) ? 'insertBefore' : 'insertAfter' ]( trigger.is( EDGE_TOP ) ? trigger.lower : trigger.upper ); }, true ); that.editor.focus(); if ( !env.ie && that.enterMode != CKEDITOR.ENTER_BR ) that.hotNode.scrollIntoView(); event.data.preventDefault( true ); } ); // Prevents IE9 from displaying the resize box and disables drag'n'drop functionality. line.on( 'mousedown', function( event ) { event.data.preventDefault( true ); } ); that.line = line; } // This function allows accessing any focus space according to the insert function: // * For enterMode ENTER_P it creates P element filled with dummy white-space. // * For enterMode ENTER_DIV it creates DIV element filled with dummy white-space. // * For enterMode ENTER_BR it creates BR element or   in IE. // // The node is being inserted according to insertFunction. Finally the method // selects the non-breaking space making the node ready for typing. function accessFocusSpace( that, insertFunction, doSave ) { var range = new CKEDITOR.dom.range( that.doc ), editor = that.editor, accessNode; // IE requires text node of   in ENTER_BR mode. if ( env.ie && that.enterMode == CKEDITOR.ENTER_BR ) accessNode = that.doc.createText( WHITE_SPACE ); // In other cases a regular element is used. else { // Use the enterMode of editable's limit or editor's // enter mode if not in nested editable. var limit = getClosestEditableLimit( that.element, true ), // This is an enter mode for the context. We cannot use // editor.activeEnterMode because the focused nested editable will // have a different enterMode as editor but magicline will be inserted // directly into editor's editable. enterMode = limit && limit.data( 'cke-enter-mode' ) || that.enterMode; accessNode = new newElement( enterElements[ enterMode ], that.doc ); if ( !accessNode.is( 'br' ) ) { var dummy = that.doc.createText( WHITE_SPACE ); dummy.appendTo( accessNode ); } } doSave && editor.fire( 'saveSnapshot' ); insertFunction( accessNode ); //dummy.appendTo( accessNode ); range.moveToPosition( accessNode, CKEDITOR.POSITION_AFTER_START ); editor.getSelection().selectRanges( [ range ] ); that.hotNode = accessNode; doSave && editor.fire( 'saveSnapshot' ); } // Access focus space on demand by taking an element under the caret as a reference. // The space is accessed provided the element under the caret is trigger AND: // // 1. First/last-child of its parent: // +----------------------- Parent element -+ // | +------------------------------ DIV -+ | <-- Access before // | | Foo^ | | // | | | | // | +------------------------------------+ | <-- Access after // +----------------------------------------+ // // OR // // 2. It has a direct sibling element, which is also a trigger: // +-------------------------------- DIV#1 -+ // | Foo^ | // | | // +----------------------------------------+ // <-- Access here // +-------------------------------- DIV#2 -+ // | Bar | // | | // +----------------------------------------+ // // OR // // 3. It has a direct sibling, which is a trigger and has a valid neighbour trigger, // but belongs to dtd.$.empty/nonEditable: // +------------------------------------ P -+ // | Foo^ | // | | // +----------------------------------------+ // +----------------------------------- HR -+ // <-- Access here // +-------------------------------- DIV#2 -+ // | Bar | // | | // +----------------------------------------+ // function accessFocusSpaceCmd( that, insertAfter ) { return { canUndo: true, modes: { wysiwyg: 1 }, exec: ( function() { // Inserts line (accessNode) at the position by taking target node as a reference. function doAccess( target ) { // Remove old hotNode under certain circumstances. var hotNodeChar = ( env.ie && env.version < 9 ? ' ' : WHITE_SPACE ), removeOld = that.hotNode && // Old hotNode must exist. that.hotNode.getText() == hotNodeChar && // Old hotNode hasn't been changed. that.element.equals( that.hotNode ) && // Caret is inside old hotNode. // Command is executed in the same direction. that.lastCmdDirection === !!insertAfter; // jshint ignore:line accessFocusSpace( that, function( accessNode ) { if ( removeOld && that.hotNode ) that.hotNode.remove(); accessNode[ insertAfter ? 'insertAfter' : 'insertBefore' ]( target ); // Make this element distinguishable. Also remember the direction // it's been inserted into document. accessNode.setAttributes( { 'data-cke-magicline-hot': 1, 'data-cke-magicline-dir': !!insertAfter } ); // Save last direction of the command (is insertAfter?). that.lastCmdDirection = !!insertAfter; } ); if ( !env.ie && that.enterMode != CKEDITOR.ENTER_BR ) that.hotNode.scrollIntoView(); // Detach the line if was visible (previously triggered by mouse). that.line.detach(); } return function( editor ) { var selected = editor.getSelection().getStartElement(), limit; // (#9833) Go down to the closest non-inline element in DOM structure // since inline elements don't participate in in magicline. selected = selected.getAscendant( DTD_BLOCK, 1 ); // Stop if selected is a child of a tabu-list element. if ( isInTabu( that, selected ) ) return; // Sometimes it may happen that there's no parent block below selected element // or, for example, getAscendant reaches editable or editable parent. // We must avoid such pathological cases. if ( !selected || selected.equals( that.editable ) || selected.contains( that.editable ) ) return; // Executing the command directly in nested editable should // access space before/after it. if ( ( limit = getClosestEditableLimit( selected ) ) && limit.getAttribute( 'contenteditable' ) == 'false' ) selected = limit; // That holds element from mouse. Replace it with the // element under the caret. that.element = selected; // (3.) Handle the following cases where selected neighbour // is a trigger inaccessible for the caret AND: // - Is first/last-child // OR // - Has a sibling, which is also a trigger. var neighbor = getNonEmptyNeighbour( that, selected, !insertAfter ), neighborSibling; // Check for a neighbour that belongs to triggers. // Consider only non-accessible elements (they cannot have any children) // since they cannot be given a caret inside, to run the command // the regular way (1. & 2.). if ( isHtml( neighbor ) && neighbor.is( that.triggers ) && neighbor.is( DTD_NONACCESSIBLE ) && ( // Check whether neighbor is first/last-child. !getNonEmptyNeighbour( that, neighbor, !insertAfter ) || // Check for a sibling of a neighbour that also is a trigger. ( ( neighborSibling = getNonEmptyNeighbour( that, neighbor, !insertAfter ) ) && isHtml( neighborSibling ) && neighborSibling.is( that.triggers ) ) ) ) { doAccess( neighbor ); return; } // Look for possible target element DOWN "selected" DOM branch (towards editable) // that belong to that.triggers var target = getAscendantTrigger( that, selected ); // No HTML target -> no access. if ( !isHtml( target ) ) return; // (1.) Target is first/last child -> access. if ( !getNonEmptyNeighbour( that, target, !insertAfter ) ) { doAccess( target ); return; } var sibling = getNonEmptyNeighbour( that, target, !insertAfter ); // (2.) Target has a sibling that belongs to that.triggers -> access. if ( sibling && isHtml( sibling ) && sibling.is( that.triggers ) ) { doAccess( target ); return; } }; } )() }; } function isLine( that, node ) { if ( !( node && node.type == CKEDITOR.NODE_ELEMENT && node.$ ) ) return false; var line = that.line; return line.wrap.equals( node ) || line.wrap.contains( node ); } // Is text node containing white-spaces only? var isEmptyTextNode = CKEDITOR.dom.walker.whitespaces(); // Is fully visible HTML node? function isHtml( node ) { return node && node.type == CKEDITOR.NODE_ELEMENT && node.$; // IE requires that } function isFloated( element ) { if ( !isHtml( element ) ) return false; var options = { left: 1, right: 1, center: 1 }; return !!( options[ element.getComputedStyle( 'float' ) ] || options[ element.getAttribute( 'align' ) ] ); } function isFlowBreaker( element ) { if ( !isHtml( element ) ) return false; return isPositioned( element ) || isFloated( element ); } // Isn't node of NODE_COMMENT type? var isComment = CKEDITOR.dom.walker.nodeType( CKEDITOR.NODE_COMMENT ); function isPositioned( element ) { return !!{ absolute: 1, fixed: 1 }[ element.getComputedStyle( 'position' ) ]; } // Is text node? function isTextNode( node ) { return node && node.type == CKEDITOR.NODE_TEXT; } function isTrigger( that, element ) { return isHtml( element ) ? element.is( that.triggers ) : null; } function isInTabu( that, element ) { if ( !element ) return false; var parents = element.getParents( 1 ); for ( var i = parents.length ; i-- ; ) { for ( var j = that.tabuList.length ; j-- ; ) { if ( parents[ i ].hasAttribute( that.tabuList[ j ] ) ) return true; } } return false; } // This function checks vertically is there's a relevant child between element's edge // and the pointer. // \-> Table contents are omitted. function isChildBetweenPointerAndEdge( that, parent, edgeBottom ) { var edgeChild = parent[ edgeBottom ? 'getLast' : 'getFirst' ]( function( node ) { return that.isRelevant( node ) && !node.is( DTD_TABLECONTENT ); } ); if ( !edgeChild ) return false; updateSize( that, edgeChild ); return edgeBottom ? edgeChild.size.top > that.mouse.y : edgeChild.size.bottom < that.mouse.y; } // This method handles edge cases: // \-> Mouse is around upper or lower edge of view pane. // \-> Also scroll position is either minimal or maximal. // \-> It's OK to show LOOK_TOP(BOTTOM) type line. // // This trigger doesn't need additional post-filtering. // // +----------------------------- Editable -+ /-- // | +---------------------- First child -+ | | <-- Top edge (first child) // | | | | | // | | | | | * Mouse activation area * // | | | | | // | | ... | | \-- Top edge + trigger offset // | . . | // | | // | . . | // | | ... | | /-- Bottom edge - trigger offset // | | | | | // | | | | | * Mouse activation area * // | | | | | // | +----------------------- Last child -+ | | <-- Bottom edge (last child) // +----------------------------------------+ \-- // function triggerEditable( that ) { that.debug.groupStart( 'triggerEditable' ); // %REMOVE_LINE% var editable = that.editable, mouse = that.mouse, view = that.view, triggerOffset = that.triggerOffset, triggerLook; // Update editable dimensions. updateEditableSize( that ); // This flag determines whether checking bottom trigger. var bottomTrigger = mouse.y > ( that.inInlineMode ? ( view.editable.top + view.editable.height / 2 ) : ( // This is to handle case when editable.height / 2 <<< pane.height. Math.min( view.editable.height, view.pane.height ) / 2 ) ), // Edge node according to bottomTrigger. edgeNode = editable[ bottomTrigger ? 'getLast' : 'getFirst' ]( function( node ) { return !( isEmptyTextNode( node ) || isComment( node ) ); } ); // There's no edge node. Abort. if ( !edgeNode ) { that.debug.logEnd( 'ABORT. No edge node found.' ); // %REMOVE_LINE% return null; } // If the edgeNode in editable is ML, get the next one. if ( isLine( that, edgeNode ) ) { edgeNode = that.line.wrap[ bottomTrigger ? 'getPrevious' : 'getNext' ]( function( node ) { return !( isEmptyTextNode( node ) || isComment( node ) ); } ); } // Exclude bad nodes (no ML needed then): // \-> Edge node is text. // \-> Edge node is floated, etc. // // Edge node *must be* a valid trigger at this stage as well. if ( !isHtml( edgeNode ) || isFlowBreaker( edgeNode ) || !isTrigger( that, edgeNode ) ) { that.debug.logEnd( 'ABORT. Invalid edge node.' ); // %REMOVE_LINE% return null; } // Update size of edge node. Dimensions will be necessary. updateSize( that, edgeNode ); // Return appropriate trigger according to bottomTrigger. // \-> Top edge trigger case first. if ( !bottomTrigger && // Top trigger case. edgeNode.size.top >= 0 && // Check if the first element is fully visible. inBetween( mouse.y, 0, edgeNode.size.top + triggerOffset ) ) { // Check if mouse in [0, edgeNode.top + triggerOffset]. // Determine trigger look. triggerLook = that.inInlineMode || view.scroll.y === 0 ? LOOK_TOP : LOOK_NORMAL; that.debug.logEnd( 'SUCCESS. Created box trigger. EDGE_TOP.' ); // %REMOVE_LINE% return new boxTrigger( [ null, edgeNode, EDGE_TOP, TYPE_EDGE, triggerLook ] ); } // \-> Bottom case. else if ( bottomTrigger && edgeNode.size.bottom <= view.pane.height && // Check if the last element is fully visible inBetween( mouse.y, // Check if mouse in... edgeNode.size.bottom - triggerOffset, view.pane.height ) ) { // [ edgeNode.bottom - triggerOffset, paneHeight ] // Determine trigger look. triggerLook = that.inInlineMode || inBetween( edgeNode.size.bottom, view.pane.height - triggerOffset, view.pane.height ) ? LOOK_BOTTOM : LOOK_NORMAL; that.debug.logEnd( 'SUCCESS. Created box trigger. EDGE_BOTTOM.' ); // %REMOVE_LINE% return new boxTrigger( [ edgeNode, null, EDGE_BOTTOM, TYPE_EDGE, triggerLook ] ); } that.debug.logEnd( 'ABORT. No trigger created.' ); // %REMOVE_LINE% return null; } // This method covers cases *inside* of an element: // \-> The pointer is in the top (bottom) area of an element and there's // HTML node before (after) this element. // \-> An element being the first or last child of its parent. // // +----------------------- Parent element -+ // | +----------------------- Element #1 -+ | /-- // | | | | | * Mouse activation area (as first child) * // | | | | \-- // | | | | /-- // | | | | | * Mouse activation area (Element #2) * // | +------------------------------------+ | \-- // | | // | +----------------------- Element #2 -+ | /-- // | | | | | * Mouse activation area (Element #1) * // | | | | \-- // | | | | // | +------------------------------------+ | // | | // | Text node is here. | // | | // | +----------------------- Element #3 -+ | // | | | | // | | | | // | | | | /-- // | | | | | * Mouse activation area (as last child) * // | +------------------------------------+ | \-- // +----------------------------------------+ // function triggerEdge( that ) { that.debug.groupStart( 'triggerEdge' ); // %REMOVE_LINE% var mouse = that.mouse, view = that.view, triggerOffset = that.triggerOffset; // Get the ascendant trigger basing on elementFromMouse. var element = getAscendantTrigger( that ); that.debug.logElements( [ element ], [ 'Ascendant trigger' ], 'First stage' ); // %REMOVE_LINE% // Abort if there's no appropriate element. if ( !element ) { that.debug.logEnd( 'ABORT. No element, element is editable or element contains editable.' ); // %REMOVE_LINE% return null; } // Dimensions will be necessary. updateSize( that, element ); // If triggerOffset is larger than a half of element's height, // use an offset of 1/2 of element's height. If the offset wasn't reduced, // top area would cover most (all) cases. var fixedOffset = Math.min( triggerOffset, 0 | ( element.size.outerHeight / 2 ) ), // This variable will hold the trigger to be returned. triggerSetup = [], triggerLook, // This flag determines whether dealing with a bottom trigger. bottomTrigger; // \-> Top trigger. if ( inBetween( mouse.y, element.size.top - 1, element.size.top + fixedOffset ) ) bottomTrigger = false; // \-> Bottom trigger. else if ( inBetween( mouse.y, element.size.bottom - fixedOffset, element.size.bottom + 1 ) ) bottomTrigger = true; // \-> Abort. Not in a valid trigger space. else { that.debug.logEnd( 'ABORT. Not around of any edge.' ); // %REMOVE_LINE% return null; } // Reject wrong elements. // \-> Reject an element which is a flow breaker. // \-> Reject an element which has a child above/below the mouse pointer. // \-> Reject an element which belongs to list items. if ( isFlowBreaker( element ) || isChildBetweenPointerAndEdge( that, element, bottomTrigger ) || element.getParent().is( DTD_LISTITEM ) ) { that.debug.logEnd( 'ABORT. element is wrong', element ); // %REMOVE_LINE% return null; } // Get sibling according to bottomTrigger. var elementSibling = getNonEmptyNeighbour( that, element, !bottomTrigger ); // No sibling element. // This is a first or last child case. if ( !elementSibling ) { // No need to reject the element as it has already been done before. // Prepare a trigger. // Determine trigger look. if ( element.equals( that.editable[ bottomTrigger ? 'getLast' : 'getFirst' ]( that.isRelevant ) ) ) { updateEditableSize( that ); if ( bottomTrigger && inBetween( mouse.y, element.size.bottom - fixedOffset, view.pane.height ) && inBetween( element.size.bottom, view.pane.height - fixedOffset, view.pane.height ) ) { triggerLook = LOOK_BOTTOM; } else if ( inBetween( mouse.y, 0, element.size.top + fixedOffset ) ) { triggerLook = LOOK_TOP; } } else { triggerLook = LOOK_NORMAL; } triggerSetup = [ null, element ][ bottomTrigger ? 'reverse' : 'concat' ]().concat( [ bottomTrigger ? EDGE_BOTTOM : EDGE_TOP, TYPE_EDGE, triggerLook, element.equals( that.editable[ bottomTrigger ? 'getLast' : 'getFirst' ]( that.isRelevant ) ) ? ( bottomTrigger ? LOOK_BOTTOM : LOOK_TOP ) : LOOK_NORMAL ] ); that.debug.log( 'Configured edge trigger of ' + ( bottomTrigger ? 'EDGE_BOTTOM' : 'EDGE_TOP' ) ); // %REMOVE_LINE% } // Abort. Sibling is a text element. else if ( isTextNode( elementSibling ) ) { that.debug.logEnd( 'ABORT. Sibling is non-empty text element' ); // %REMOVE_LINE% return null; } // Check if the sibling is a HTML element. // If so, create an TYPE_EDGE, EDGE_MIDDLE trigger. else if ( isHtml( elementSibling ) ) { // Reject wrong elementSiblings. // \-> Reject an elementSibling which is a flow breaker. // \-> Reject an elementSibling which isn't a trigger. // \-> Reject an elementSibling which belongs to list items. if ( isFlowBreaker( elementSibling ) || !isTrigger( that, elementSibling ) || elementSibling.getParent().is( DTD_LISTITEM ) ) { that.debug.logEnd( 'ABORT. elementSibling is wrong', elementSibling ); // %REMOVE_LINE% return null; } // Prepare a trigger. triggerSetup = [ elementSibling, element ][ bottomTrigger ? 'reverse' : 'concat' ]().concat( [ EDGE_MIDDLE, TYPE_EDGE ] ); that.debug.log( 'Configured edge trigger of EDGE_MIDDLE' ); // %REMOVE_LINE% } if ( 0 in triggerSetup ) { that.debug.logEnd( 'SUCCESS. Returning a trigger.' ); // %REMOVE_LINE% return new boxTrigger( triggerSetup ); } that.debug.logEnd( 'ABORT. No trigger generated.' ); // %REMOVE_LINE% return null; } // Checks iteratively up and down in search for elements using elementFromMouse method. // Useful if between two triggers. // // +----------------------- Parent element -+ // | +----------------------- Element #1 -+ | // | | | | // | | | | // | | | | // | +------------------------------------+ | // | | /-- // | . | | // | . +-- Floated -+ | | // | | | | | | * Mouse activation area * // | | | IGNORE | | | // | X | | | | Method searches vertically for sibling elements. // | | +------------+ | | Start point is X (mouse-y coordinate). // | | | | Floated elements, comments and empty text nodes are omitted. // | . | | // | . | | // | | \-- // | +----------------------- Element #2 -+ | // | | | | // | | | | // | | | | // | | | | // | +------------------------------------+ | // +----------------------------------------+ // var triggerExpand = ( function() { // The heart of the procedure. This method creates triggers that are // filtered by expandFilter method. function expandEngine( that ) { that.debug.groupStart( 'expandEngine' ); // %REMOVE_LINE% var startElement = that.element, upper, lower, trigger; if ( !isHtml( startElement ) || startElement.contains( that.editable ) ) { that.debug.logEnd( 'ABORT. No start element, or start element contains editable.' ); // %REMOVE_LINE% return null; } // Stop searching if element is in non-editable branch of DOM. if ( startElement.isReadOnly() ) return null; trigger = verticalSearch( that, function( current, startElement ) { return !startElement.equals( current ); // stop when start element and the current one differ }, function( that, mouse ) { return elementFromMouse( that, true, mouse ); }, startElement ), upper = trigger.upper, lower = trigger.lower; that.debug.logElements( [ upper, lower ], [ 'Upper', 'Lower' ], 'Pair found' ); // %REMOVE_LINE% // Success: two siblings have been found if ( areSiblings( that, upper, lower ) ) { that.debug.logEnd( 'SUCCESS. Expand trigger created.' ); // %REMOVE_LINE% return trigger.set( EDGE_MIDDLE, TYPE_EXPAND ); } that.debug.logElements( [ startElement, upper, lower ], // %REMOVE_LINE% [ 'Start', 'Upper', 'Lower' ], 'Post-processing' ); // %REMOVE_LINE% // Danger. Dragons ahead. // No siblings have been found during previous phase, post-processing may be necessary. // We can traverse DOM until a valid pair of elements around the pointer is found. // Prepare for post-processing: // 1. Determine if upper and lower are children of startElement. // 1.1. If so, find their ascendants that are closest to startElement (one level deeper than startElement). // 1.2. Otherwise use first/last-child of the startElement as upper/lower. Why?: // a) upper/lower belongs to another branch of the DOM tree. // b) verticalSearch encountered an edge of the viewport and failed. // 1.3. Make sure upper and lower still exist. Why?: // a) Upper and lower may be not belong to the branch of the startElement (may not exist at all) and // startElement has no children. // 2. Perform the post-processing. // 2.1. Gather dimensions of an upper element. // 2.2. Abort if lower edge of upper is already under the mouse pointer. Why?: // a) We expect upper to be above and lower below the mouse pointer. // 3. Perform iterative search while upper != lower. // 3.1. Find the upper-next element. If there's no such element, break current search. Why?: // a) There's no point in further search if there are only text nodes ahead. // 3.2. Calculate the distance between the middle point of ( upper, upperNext ) and mouse-y. // 3.3. If the distance is shorter than the previous best, save it (save upper, upperNext as well). // 3.4. If the optimal pair is found, assign it back to the trigger. // 1.1., 1.2. if ( upper && startElement.contains( upper ) ) { while ( !upper.getParent().equals( startElement ) ) upper = upper.getParent(); } else { upper = startElement.getFirst( function( node ) { return expandSelector( that, node ); } ); } if ( lower && startElement.contains( lower ) ) { while ( !lower.getParent().equals( startElement ) ) lower = lower.getParent(); } else { lower = startElement.getLast( function( node ) { return expandSelector( that, node ); } ); } // 1.3. if ( !upper || !lower ) { that.debug.logEnd( 'ABORT. There is no upper or no lower element.' ); // %REMOVE_LINE% return null; } // 2.1. updateSize( that, upper ); updateSize( that, lower ); if ( !checkMouseBetweenElements( that, upper, lower ) ) { that.debug.logEnd( 'ABORT. Mouse is already above upper or below lower.' ); // %REMOVE_LINE% return null; } var minDistance = Number.MAX_VALUE, currentDistance, upperNext, minElement, minElementNext; while ( lower && !lower.equals( upper ) ) { // 3.1. if ( !( upperNext = upper.getNext( that.isRelevant ) ) ) break; // 3.2. currentDistance = Math.abs( getMidpoint( that, upper, upperNext ) - that.mouse.y ); // 3.3. if ( currentDistance < minDistance ) { minDistance = currentDistance; minElement = upper; minElementNext = upperNext; } upper = upperNext; updateSize( that, upper ); } that.debug.logElements( [ minElement, minElementNext ], // %REMOVE_LINE% [ 'Min', 'MinNext' ], 'Post-processing results' ); // %REMOVE_LINE% // 3.4. if ( !minElement || !minElementNext ) { that.debug.logEnd( 'ABORT. No Min or MinNext' ); // %REMOVE_LINE% return null; } if ( !checkMouseBetweenElements( that, minElement, minElementNext ) ) { that.debug.logEnd( 'ABORT. Mouse is already above minElement or below minElementNext.' ); // %REMOVE_LINE% return null; } // An element of minimal distance has been found. Assign it to the trigger. trigger.upper = minElement; trigger.lower = minElementNext; // Success: post-processing revealed a pair of elements. that.debug.logEnd( 'SUCCESSFUL post-processing. Trigger created.' ); // %REMOVE_LINE% return trigger.set( EDGE_MIDDLE, TYPE_EXPAND ); } // This is default element selector used by the engine. function expandSelector( that, node ) { return !( isTextNode( node ) || isComment( node ) || isFlowBreaker( node ) || isLine( that, node ) || ( node.type == CKEDITOR.NODE_ELEMENT && node.$ && node.is( 'br' ) ) ); } // This method checks whether mouse-y is between the top edge of upper // and bottom edge of lower. // // NOTE: This method assumes that updateSize has already been called // for the elements and is up-to-date. // // +---------------------------- Upper -+ /-- // | | | // +------------------------------------+ | // | // ... | // | // X | * Return true for mouse-y in this range * // | // ... | // | // +---------------------------- Lower -+ | // | | | // +------------------------------------+ \-- // function checkMouseBetweenElements( that, upper, lower ) { return inBetween( that.mouse.y, upper.size.top, lower.size.bottom ); } // A method for trigger filtering. Accepts or rejects trigger pairs // by their location in DOM etc. function expandFilter( that, trigger ) { that.debug.groupStart( 'expandFilter' ); // %REMOVE_LINE% var upper = trigger.upper, lower = trigger.lower; if ( !upper || !lower || // NOT: EDGE_MIDDLE trigger ALWAYS has two elements. isFlowBreaker( lower ) || isFlowBreaker( upper ) || // NOT: one of the elements is floated or positioned lower.equals( upper ) || upper.equals( lower ) || // NOT: two trigger elements, one equals another. lower.contains( upper ) || upper.contains( lower ) ) { // NOT: two trigger elements, one contains another. that.debug.logEnd( 'REJECTED. No upper or no lower or they contain each other.' ); // %REMOVE_LINE% return false; } // YES: two trigger elements, pure siblings. else if ( isTrigger( that, upper ) && isTrigger( that, lower ) && areSiblings( that, upper, lower ) ) { that.debug.logElementsEnd( [ upper, lower ], // %REMOVE_LINE% [ 'upper', 'lower' ], 'APPROVED EDGE_MIDDLE' ); // %REMOVE_LINE% return true; } that.debug.logElementsEnd( [ upper, lower ], // %REMOVE_LINE% [ 'upper', 'lower' ], 'Rejected unknown pair' ); // %REMOVE_LINE% return false; } // Simple wrapper for expandEngine and expandFilter. return function( that ) { that.debug.groupStart( 'triggerExpand' ); // %REMOVE_LINE% var trigger = expandEngine( that ); that.debug.groupEnd(); // %REMOVE_LINE% return trigger && expandFilter( that, trigger ) ? trigger : null; }; } )(); // Collects dimensions of an element. var sizePrefixes = [ 'top', 'left', 'right', 'bottom' ]; function getSize( that, element, ignoreScroll, force ) { var docPosition = element.getDocumentPosition(), border = {}, margin = {}, padding = {}, box = {}; for ( var i = sizePrefixes.length; i--; ) { border[ sizePrefixes[ i ] ] = parseInt( getStyle( 'border-' + sizePrefixes[ i ] + '-width' ), 10 ) || 0; padding[ sizePrefixes[ i ] ] = parseInt( getStyle( 'padding-' + sizePrefixes[ i ] ), 10 ) || 0; margin[ sizePrefixes[ i ] ] = parseInt( getStyle( 'margin-' + sizePrefixes[ i ] ), 10 ) || 0; } // updateWindowSize if forced to do so OR NOT ignoring scroll. if ( !ignoreScroll || force ) updateWindowSize( that, force ); box.top = docPosition.y - ( ignoreScroll ? 0 : that.view.scroll.y ), box.left = docPosition.x - ( ignoreScroll ? 0 : that.view.scroll.x ), // w/ borders and paddings. box.outerWidth = element.$.offsetWidth, box.outerHeight = element.$.offsetHeight, // w/o borders and paddings. box.height = box.outerHeight - ( padding.top + padding.bottom + border.top + border.bottom ), box.width = box.outerWidth - ( padding.left + padding.right + border.left + border.right ), box.bottom = box.top + box.outerHeight, box.right = box.left + box.outerWidth; if ( that.inInlineMode ) { box.scroll = { top: element.$.scrollTop, left: element.$.scrollLeft }; } return extend( { border: border, padding: padding, margin: margin, ignoreScroll: ignoreScroll }, box, true ); function getStyle( propertyName ) { return element.getComputedStyle.call( element, propertyName ); } } function updateSize( that, element, ignoreScroll ) { if ( !isHtml( element ) ) // i.e. an element is hidden return ( element.size = null ); // -> reset size to make it useless for other methods if ( !element.size ) element.size = {}; // Abort if there was a similar query performed recently. // This kind of caching provides great performance improvement. else if ( element.size.ignoreScroll == ignoreScroll && element.size.date > new Date() - CACHE_TIME ) { that.debug.log( 'element.size: get from cache' ); // %REMOVE_LINE% return null; } that.debug.log( 'element.size: capture' ); // %REMOVE_LINE% return extend( element.size, getSize( that, element, ignoreScroll ), { date: +new Date() }, true ); } // Updates that.view.editable object. // This one must be called separately outside of updateWindowSize // to prevent cyclic dependency getSize<->updateWindowSize. // It calls getSize with force flag to avoid getWindowSize cache (look: getSize). function updateEditableSize( that, ignoreScroll ) { that.view.editable = getSize( that, that.editable, ignoreScroll, true ); } function updateWindowSize( that, force ) { if ( !that.view ) that.view = {}; var view = that.view; if ( !force && view && view.date > new Date() - CACHE_TIME ) { that.debug.log( 'win.size: get from cache' ); // %REMOVE_LINE% return; } that.debug.log( 'win.size: capturing' ); // %REMOVE_LINE% var win = that.win, scroll = win.getScrollPosition(), paneSize = win.getViewPaneSize(); extend( that.view, { scroll: { x: scroll.x, y: scroll.y, width: that.doc.$.documentElement.scrollWidth - paneSize.width, height: that.doc.$.documentElement.scrollHeight - paneSize.height }, pane: { width: paneSize.width, height: paneSize.height, bottom: paneSize.height + scroll.y }, date: +new Date() }, true ); } // This method searches document vertically using given // select criterion until stop criterion is fulfilled. function verticalSearch( that, stopCondition, selectCriterion, startElement ) { var upper = startElement, lower = startElement, mouseStep = 0, upperFound = false, lowerFound = false, viewPaneHeight = that.view.pane.height, mouse = that.mouse; while ( mouse.y + mouseStep < viewPaneHeight && mouse.y - mouseStep > 0 ) { if ( !upperFound ) upperFound = stopCondition( upper, startElement ); if ( !lowerFound ) lowerFound = stopCondition( lower, startElement ); // Still not found... if ( !upperFound && mouse.y - mouseStep > 0 ) upper = selectCriterion( that, { x: mouse.x, y: mouse.y - mouseStep } ); if ( !lowerFound && mouse.y + mouseStep < viewPaneHeight ) lower = selectCriterion( that, { x: mouse.x, y: mouse.y + mouseStep } ); if ( upperFound && lowerFound ) break; // Instead of ++ to reduce the number of invocations by half. // It's trades off accuracy in some edge cases for improved performance. mouseStep += 2; } return new boxTrigger( [ upper, lower, null, null ] ); } } )(); /** * Sets the default vertical distance between the edge of the element and the mouse pointer that * causes the magic line to appear. This option accepts a value in pixels, without the unit (for example: * `15` for 15 pixels). * * // Changes the offset to 15px. * CKEDITOR.config.magicline_triggerOffset = 15; * * @cfg {Number} [magicline_triggerOffset=30] * @member CKEDITOR.config * @see CKEDITOR.config#magicline_holdDistance */ /** * Defines the distance between the mouse pointer and the box, within * which the magic line stays revealed and no other focus space is offered to be accessed. * This value is relative to {@link #magicline_triggerOffset}. * * // Increases the distance to 80% of CKEDITOR.config.magicline_triggerOffset. * CKEDITOR.config.magicline_holdDistance = .8; * * @cfg {Number} [magicline_holdDistance=0.5] * @member CKEDITOR.config * @see CKEDITOR.config#magicline_triggerOffset */ /** * Defines the default keystroke that access the closest unreachable focus space **before** * the caret (start of the selection). If there's no any focus space, selection remains. * * // Changes the default keystroke to "Ctrl + ,". * CKEDITOR.config.magicline_keystrokePrevious = CKEDITOR.CTRL + 188; * * @cfg {Number} [magicline_keystrokePrevious=CKEDITOR.CTRL + CKEDITOR.SHIFT + 51 (CTRL + SHIFT + 3)] * @member CKEDITOR.config */ CKEDITOR.config.magicline_keystrokePrevious = CKEDITOR.CTRL + CKEDITOR.SHIFT + 51; // CTRL + SHIFT + 3 /** * Defines the default keystroke that access the closest unreachable focus space **after** * the caret (start of the selection). If there's no any focus space, selection remains. * * // Changes keystroke to "Ctrl + .". * CKEDITOR.config.magicline_keystrokeNext = CKEDITOR.CTRL + 190; * * @cfg {Number} [magicline_keystrokeNext=CKEDITOR.CTRL + CKEDITOR.SHIFT + 52 (CTRL + SHIFT + 4)] * @member CKEDITOR.config */ CKEDITOR.config.magicline_keystrokeNext = CKEDITOR.CTRL + CKEDITOR.SHIFT + 52; // CTRL + SHIFT + 4 /** * Defines a list of attributes that, if assigned to some elements, prevent the magic line from being * used within these elements. * * // Adds the "data-tabu" attribute to the magic line tabu list. * CKEDITOR.config.magicline_tabuList = [ 'data-tabu' ]; * * @cfg {Number} [magicline_tabuList=[ 'data-widget-wrapper' ]] * @member CKEDITOR.config */ /** * Defines the color of the magic line. The color may be adjusted to enhance readability. * * // Changes magic line color to blue. * CKEDITOR.config.magicline_color = '#0000FF'; * * @cfg {String} [magicline_color='#FF0000'] * @member CKEDITOR.config */ /** * Activates the special all-encompassing mode that considers all focus spaces between * {@link CKEDITOR.dtd#$block} elements as accessible by the magic line. * * // Enables the greedy "put everywhere" mode. * CKEDITOR.config.magicline_everywhere = true; * * @cfg {Boolean} [magicline_everywhere=false] * @member CKEDITOR.config */ rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/dev/0000755000201500020150000000000014517055560022765 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/dev/magicline.html0000644000201500020150000055411414517055560025615 0ustar puckpuck Magicline muddy trenches – CKEditor Sample

    CKEditor Sample — magicline muddy trenches

    Various cases

    Odd case: first (last) element at the very beginning, short editable

    Large document, put everywhere

    Deeply nested divs

    Line custom look

    Little Red Riding Hood

    "Little Red Riding Hood" is a famous fairy tale about a young girl's encounter with a wolf. The story has been changed considerably in its history and subject to numerous modern adaptations and readings.

    International Names
    Chinese 小紅帽
    Italian Cappuccetto Rosso
    Spanish Caperucita Roja


    The version most widely known today is based on the Brothers Grimm variant. It is about a girl called Little Red Riding Hood, after the red hooded cape or cloak she wears. The girl walks through the woods to deliver food to her sick grandmother.

    A wolf wants to eat the girl but is afraid to do so in public. He approaches the girl, and she naïvely tells him where she is going. He suggests the girl pick some flowers, which she does. In the meantime, he goes to the grandmother's house and gains entry by pretending to be the girl. He swallows the grandmother whole, and waits for the girl, disguised as the grandmother.

    When the girl arrives, she notices he looks very strange to be her grandma. In most retellings, this eventually culminates with Little Red Riding Hood saying, "My, what big teeth you have!"
    To which the wolf replies, "The better to eat you with," and swallows her whole, too.

    A hunter, however, comes to the rescue and cuts the wolf open. Little Red Riding Hood and her grandmother emerge unharmed. They fill the wolf's body with heavy stones, which drown him when he falls into a well. Other versions of the story have had the grandmother shut in the closet instead of eaten, and some have Little Red Riding Hood saved by the hunter as the wolf advances on her rather than after she is eaten.

    The tale makes the clearest contrast between the safe world of the village and the dangers of the forest, conventional antitheses that are essentially medieval, though no written versions are as old as that.

    Extreme inline editing

    Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies. Curabitur et ligula. Ut molestie a, ultricies porta urna. Vestibulum commodo volutpat a, convallis ac, laoreet enim.
    Position static
    foo
    Key
    Value
    Whatever

    Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies



    Lorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies

    foo

    Enter mode: BR

    Mouse over: Mouse Y-pos.:

    Time:

    Hidden state:

    rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/0000755000201500020150000000000014517055560023130 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/zh.js0000644000201500020150000000036214517055560024110 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'zh', { title: '在此插入段落' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/nb.js0000644000201500020150000000037114517055560024066 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'nb', { title: 'Sett inn nytt avsnitt her' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/eo.js0000644000201500020150000000037214517055560024073 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'eo', { title: 'Enmeti paragrafon ĉi-tien' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/es.js0000644000201500020150000000036714517055560024103 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'es', { title: 'Insertar párrafo aquí' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/hr.js0000644000201500020150000000036414517055560024102 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'hr', { title: 'Ubaci paragraf ovdje' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/it.js0000644000201500020150000000036714517055560024110 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'it', { title: 'Inserisci paragrafo qui' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/sk.js0000644000201500020150000000036414517055560024106 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'sk', { title: 'Sem vložte paragraf' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/pt.js0000644000201500020150000000037014517055560024111 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'pt', { title: 'Insira aqui o parágrafo' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/si.js0000644000201500020150000000041714517055560024103 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'si', { title: 'චේදය ඇතුලත් කරන්න' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/ko.js0000644000201500020150000000036714517055560024105 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'ko', { title: '여기에 단락 삽입' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/cy.js0000644000201500020150000000036614517055560024106 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'cy', { title: 'Mewnosod paragraff yma' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/uk.js0000644000201500020150000000037314517055560024110 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'uk', { title: 'Вставити абзац' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/zh-cn.js0000644000201500020150000000036514517055560024511 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'zh-cn', { title: '在这插入段落' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/sv.js0000644000201500020150000000036414517055560024121 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'sv', { title: 'Infoga paragraf här' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/fr-ca.js0000644000201500020150000000037514517055560024463 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'fr-ca', { title: 'Insérer le paragraphe ici' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/et.js0000644000201500020150000000037114517055560024077 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'et', { title: 'Sisesta siia lõigu tekst' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/pl.js0000644000201500020150000000036114517055560024101 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'pl', { title: 'Wstaw nowy akapit' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/bg.js0000644000201500020150000000041014517055560024051 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'bg', { title: 'Вмъкнете параграф тук' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/fa.js0000644000201500020150000000041014517055560024047 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'fa', { title: 'قرار دادن بند در اینجا' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/ku.js0000644000201500020150000000037414517055560024111 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'ku', { title: 'بڕگە لێرە دابنێ' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/el.js0000644000201500020150000000041214517055560024063 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'el', { title: 'Εισάγετε παράγραφο εδώ' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/fi.js0000644000201500020150000000037014517055560024064 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'fi', { title: 'Lisää kappale tähän.' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/ru.js0000644000201500020150000000041414517055560024113 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'ru', { title: 'Вставить здесь параграф' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/gl.js0000644000201500020150000000037214517055560024072 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'gl', { title: 'Inserir aquí o parágrafo' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/sq.js0000644000201500020150000000036514517055560024115 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'sq', { title: 'Vendos paragraf këtu' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/pt-br.js0000644000201500020150000000037414517055560024516 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'pt-br', { title: 'Insera um parágrafo aqui' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/af.js0000644000201500020150000000036614517055560024061 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'af', { title: 'Voeg paragraaf hier in' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/km.js0000644000201500020150000000044514517055560024100 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'km', { title: 'បញ្ចូល​កថាខណ្ឌ​នៅ​ទីនេះ' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/nl.js0000644000201500020150000000036714517055560024105 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'nl', { title: 'Hier paragraaf invoeren' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/da.js0000644000201500020150000000035614517055560024056 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'da', { title: 'Indsæt afsnit' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/he.js0000644000201500020150000000037014517055560024062 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'he', { title: 'הכנס פסקה כאן' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/ca.js0000644000201500020150000000037314517055560024054 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'ca', { title: 'Insereix el paràgraf aquí' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/de.js0000644000201500020150000000036514517055560024062 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'de', { title: 'Absatz hier einfügen' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/tt.js0000644000201500020150000000041014517055560024110 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'tt', { title: 'Бирегә параграф өстәү' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/vi.js0000644000201500020150000000037014517055560024104 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'vi', { title: 'Chèn đoạn vào đây' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/cs.js0000644000201500020150000000036414517055560024076 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'cs', { title: 'zde vložit odstavec' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/tr.js0000644000201500020150000000036714517055560024121 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'tr', { title: 'Parağrafı buraya ekle' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/ja.js0000644000201500020150000000037014517055560024060 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'ja', { title: 'ここに段落を挿入' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/sl.js0000644000201500020150000000036714517055560024112 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'sl', { title: 'Vstavite odstavek tukaj' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/lv.js0000644000201500020150000000036714517055560024115 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'lv', { title: 'Ievietot šeit rindkopu' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/en.js0000644000201500020150000000036514517055560024074 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'en', { title: 'Insert paragraph here' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/no.js0000644000201500020150000000037114517055560024103 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'no', { title: 'Sett inn nytt avsnitt her' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/fr.js0000644000201500020150000000037214517055560024077 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'fr', { title: 'Insérez un paragraphe ici' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/id.js0000644000201500020150000000037014517055560024062 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'id', { title: 'Masukkan paragraf disini' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/ug.js0000644000201500020150000000041114517055560024075 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'ug', { title: 'بۇ جايغا ئابزاس قىستۇر' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/ar.js0000644000201500020150000000037214517055560024072 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'ar', { title: 'إدراج فقرة هنا' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/eu.js0000644000201500020150000000037114517055560024100 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'eu', { title: 'Txertatu paragrafoa hemen' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/en-gb.js0000644000201500020150000000037014517055560024456 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'en-gb', { title: 'Insert paragraph here' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/lang/hu.js0000644000201500020150000000037314517055560024105 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'magicline', 'hu', { title: 'Szúrja be a bekezdést ide' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/images/0000755000201500020150000000000014101750135023441 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/images/hidpi/0000755000201500020150000000000014101750135024536 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/images/hidpi/icon-rtl.png0000644000201500020150000000026014101750135026771 0ustar puckpuckPNG  IHDRrpyPLTEHmtRNSoDIDATcPQa4+4 ÔBכMff0}iPD@&L & 3j'_S~R.IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/images/hidpi/icon.png0000644000201500020150000000030714101750135026174 0ustar puckpuckPNG  IHDRrpyPLTE#~_tRNSWIDAT}0 ߕZ1>~ [)CC !!٭ mTXO!fg|-1%I?b }%NIENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/images/icon-rtl.png0000644000201500020150000000021214101750135025671 0ustar puckpuckPNG  IHDR ftQIDATA 5a!& k4NAee% ALHgNzmPs]lu=b& #3IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/images/icon.png0000644000201500020150000000020514101750135025074 0ustar puckpuckPNG  IHDR ftLIDATӅ10UڬBzb8 Qv X 0bܴI Punm줁vcB7/'ܸIENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/samples/0000755000201500020150000000000014517055560023653 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/magicline/samples/magicline.html0000644000201500020150000001775314517055560026506 0ustar puckpuck Using Magicline plugin — CKEditor Sample

    CKEditor Samples » Using Magicline plugin

    This sample is not maintained anymore. Check out its brand new version in CKEditor SDK.

    This sample shows the advantages of Magicline plugin which is to enhance the editing process. Thanks to this plugin, a number of difficult focus spaces which are inaccessible due to browser issues can now be focused.

    Magicline plugin shows a red line with a handler which, when clicked, inserts a paragraph and allows typing. To see this, focus an editor and move your mouse above the focus space you want to access. The plugin is enabled by default so no additional configuration is necessary.

    This editor uses a default Magicline setup.


    This editor is using a blue line.

    CKEDITOR.replace( 'editor2', {
    	magicline_color: 'blue'
    });
    rt-4.4.7/devel/third-party/ckeditor-src/plugins/tabletools/0000755000201500020150000000000014517055560022427 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/tabletools/plugin.js0000644000201500020150000007166714517055560024304 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ ( function() { var cellNodeRegex = /^(?:td|th)$/; function getSelectedCells( selection ) { var ranges = selection.getRanges(); var retval = []; var database = {}; function moveOutOfCellGuard( node ) { // Apply to the first cell only. if ( retval.length > 0 ) return; // If we are exiting from the first , then the td should definitely be // included. if ( node.type == CKEDITOR.NODE_ELEMENT && cellNodeRegex.test( node.getName() ) && !node.getCustomData( 'selected_cell' ) ) { CKEDITOR.dom.element.setMarker( database, node, 'selected_cell', true ); retval.push( node ); } } for ( var i = 0; i < ranges.length; i++ ) { var range = ranges[ i ]; if ( range.collapsed ) { // Walker does not handle collapsed ranges yet - fall back to old API. var startNode = range.getCommonAncestor(); var nearestCell = startNode.getAscendant( 'td', true ) || startNode.getAscendant( 'th', true ); if ( nearestCell ) retval.push( nearestCell ); } else { var walker = new CKEDITOR.dom.walker( range ); var node; walker.guard = moveOutOfCellGuard; while ( ( node = walker.next() ) ) { // If may be possible for us to have a range like this: // ^1^2 // The 2nd td shouldn't be included. // // So we have to take care to include a td we've entered only when we've // walked into its children. if ( node.type != CKEDITOR.NODE_ELEMENT || !node.is( CKEDITOR.dtd.table ) ) { var parent = node.getAscendant( 'td', true ) || node.getAscendant( 'th', true ); if ( parent && !parent.getCustomData( 'selected_cell' ) ) { CKEDITOR.dom.element.setMarker( database, parent, 'selected_cell', true ); retval.push( parent ); } } } } } CKEDITOR.dom.element.clearAllMarkers( database ); return retval; } function getFocusElementAfterDelCells( 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 insertRow( selection, insertBefore ) { var cells = getSelectedCells( selection ), firstCell = cells[ 0 ], table = firstCell.getAscendant( 'table' ), doc = firstCell.getDocument(), startRow = cells[ 0 ].getParent(), startRowIndex = startRow.$.rowIndex, lastCell = cells[ cells.length - 1 ], endRowIndex = lastCell.getParent().$.rowIndex + lastCell.$.rowSpan - 1, endRow = new CKEDITOR.dom.element( table.$.rows[ endRowIndex ] ), rowIndex = insertBefore ? startRowIndex : endRowIndex, row = insertBefore ? startRow : endRow; var map = CKEDITOR.tools.buildTableMap( table ), cloneRow = map[ rowIndex ], nextRow = insertBefore ? map[ rowIndex - 1 ] : map[ rowIndex + 1 ], width = map[ 0 ].length; var newRow = doc.createElement( 'tr' ); for ( var i = 0; cloneRow[ i ] && i < width; i++ ) { var cell; // Check whether there's a spanning row here, do not break it. if ( cloneRow[ i ].rowSpan > 1 && nextRow && cloneRow[ i ] == nextRow[ i ] ) { cell = cloneRow[ i ]; cell.rowSpan += 1; } else { cell = new CKEDITOR.dom.element( cloneRow[ i ] ).clone(); cell.removeAttribute( 'rowSpan' ); cell.appendBogus(); newRow.append( cell ); cell = cell.$; } i += cell.colSpan - 1; } insertBefore ? newRow.insertBefore( row ) : newRow.insertAfter( row ); } function deleteRows( selectionOrRow ) { if ( selectionOrRow instanceof CKEDITOR.dom.selection ) { var cells = getSelectedCells( selectionOrRow ), firstCell = cells[ 0 ], table = firstCell.getAscendant( 'table' ), map = CKEDITOR.tools.buildTableMap( table ), startRow = cells[ 0 ].getParent(), startRowIndex = startRow.$.rowIndex, lastCell = cells[ cells.length - 1 ], endRowIndex = lastCell.getParent().$.rowIndex + lastCell.$.rowSpan - 1, rowsToDelete = []; // Delete cell or reduce cell spans by checking through the table map. for ( var i = startRowIndex; i <= endRowIndex; i++ ) { var mapRow = map[ i ], row = new CKEDITOR.dom.element( table.$.rows[ i ] ); for ( var j = 0; j < mapRow.length; j++ ) { var cell = new CKEDITOR.dom.element( mapRow[ j ] ), cellRowIndex = cell.getParent().$.rowIndex; if ( cell.$.rowSpan == 1 ) cell.remove(); // Row spanned cell. else { // Span row of the cell, reduce spanning. cell.$.rowSpan -= 1; // Root row of the cell, root cell to next row. if ( cellRowIndex == i ) { var nextMapRow = map[ i + 1 ]; nextMapRow[ j - 1 ] ? cell.insertAfter( new CKEDITOR.dom.element( nextMapRow[ j - 1 ] ) ) : new CKEDITOR.dom.element( table.$.rows[ i + 1 ] ).append( cell, 1 ); } } j += cell.$.colSpan - 1; } rowsToDelete.push( row ); } var rows = table.$.rows; // Where to put the cursor after rows been deleted? // 1. Into next sibling row if any; // 2. Into previous sibling row if any; // 3. Into table's parent element if it's the very last row. var cursorPosition = new CKEDITOR.dom.element( rows[ endRowIndex + 1 ] || ( startRowIndex > 0 ? rows[ startRowIndex - 1 ] : null ) || table.$.parentNode ); for ( i = rowsToDelete.length; i >= 0; i-- ) deleteRows( rowsToDelete[ i ] ); return cursorPosition; } else if ( selectionOrRow instanceof CKEDITOR.dom.element ) { table = selectionOrRow.getAscendant( 'table' ); if ( table.$.rows.length == 1 ) table.remove(); else selectionOrRow.remove(); } return null; } function getCellColIndex( cell, isStart ) { var row = cell.getParent(), rowCells = row.$.cells; var colIndex = 0; for ( var i = 0; i < rowCells.length; i++ ) { var mapCell = rowCells[ i ]; colIndex += isStart ? 1 : mapCell.colSpan; if ( mapCell == cell.$ ) break; } return colIndex - 1; } function getColumnsIndices( cells, isStart ) { var retval = isStart ? Infinity : 0; for ( var i = 0; i < cells.length; i++ ) { var colIndex = getCellColIndex( cells[ i ], isStart ); if ( isStart ? colIndex < retval : colIndex > retval ) retval = colIndex; } return retval; } function insertColumn( selection, insertBefore ) { var cells = getSelectedCells( selection ), firstCell = cells[ 0 ], table = firstCell.getAscendant( 'table' ), startCol = getColumnsIndices( cells, 1 ), lastCol = getColumnsIndices( cells ), colIndex = insertBefore ? startCol : lastCol; var map = CKEDITOR.tools.buildTableMap( table ), cloneCol = [], nextCol = [], height = map.length; for ( var i = 0; i < height; i++ ) { cloneCol.push( map[ i ][ colIndex ] ); var nextCell = insertBefore ? map[ i ][ colIndex - 1 ] : map[ i ][ colIndex + 1 ]; nextCol.push( nextCell ); } for ( i = 0; i < height; i++ ) { var cell; if ( !cloneCol[ i ] ) continue; // Check whether there's a spanning column here, do not break it. if ( cloneCol[ i ].colSpan > 1 && nextCol[ i ] == cloneCol[ i ] ) { cell = cloneCol[ i ]; cell.colSpan += 1; } else { cell = new CKEDITOR.dom.element( cloneCol[ i ] ).clone(); cell.removeAttribute( 'colSpan' ); cell.appendBogus(); cell[ insertBefore ? 'insertBefore' : 'insertAfter' ].call( cell, new CKEDITOR.dom.element( cloneCol[ i ] ) ); cell = cell.$; } i += cell.rowSpan - 1; } } function deleteColumns( selectionOrCell ) { var cells = getSelectedCells( selectionOrCell ), firstCell = cells[ 0 ], lastCell = cells[ cells.length - 1 ], table = firstCell.getAscendant( 'table' ), map = CKEDITOR.tools.buildTableMap( table ), startColIndex, endColIndex, rowsToDelete = []; // Figure out selected cells' column indices. for ( var i = 0, rows = map.length; i < rows; i++ ) { for ( var j = 0, cols = map[ i ].length; j < cols; j++ ) { if ( map[ i ][ j ] == firstCell.$ ) startColIndex = j; if ( map[ i ][ j ] == lastCell.$ ) endColIndex = j; } } // Delete cell or reduce cell spans by checking through the table map. for ( i = startColIndex; i <= endColIndex; i++ ) { for ( j = 0; j < map.length; j++ ) { var mapRow = map[ j ], row = new CKEDITOR.dom.element( table.$.rows[ j ] ), cell = new CKEDITOR.dom.element( mapRow[ i ] ); if ( cell.$ ) { if ( cell.$.colSpan == 1 ) cell.remove(); // Reduce the col spans. else cell.$.colSpan -= 1; j += cell.$.rowSpan - 1; if ( !row.$.cells.length ) rowsToDelete.push( row ); } } } var firstRowCells = table.$.rows[ 0 ] && table.$.rows[ 0 ].cells; // Where to put the cursor after columns been deleted? // 1. Into next cell of the first row if any; // 2. Into previous cell of the first row if any; // 3. Into table's parent element; var cursorPosition = new CKEDITOR.dom.element( firstRowCells[ startColIndex ] || ( startColIndex ? firstRowCells[ startColIndex - 1 ] : table.$.parentNode ) ); // Delete table rows only if all columns are gone (do not remove empty row). if ( rowsToDelete.length == rows ) table.remove(); return cursorPosition; } function insertCell( selection, insertBefore ) { var startElement = selection.getStartElement(); var cell = startElement.getAscendant( 'td', 1 ) || startElement.getAscendant( 'th', 1 ); if ( !cell ) return; // Create the new cell element to be added. var newCell = cell.clone(); newCell.appendBogus(); if ( insertBefore ) newCell.insertBefore( cell ); else newCell.insertAfter( cell ); } function deleteCells( selectionOrCell ) { if ( selectionOrCell instanceof CKEDITOR.dom.selection ) { var cellsToDelete = getSelectedCells( selectionOrCell ); var table = cellsToDelete[ 0 ] && cellsToDelete[ 0 ].getAscendant( 'table' ); var cellToFocus = getFocusElementAfterDelCells( 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 ) { var tr = selectionOrCell.getParent(); if ( tr.getChildCount() == 1 ) tr.remove(); else selectionOrCell.remove(); } } // Remove filler at end and empty spaces around the cell content. function trimCell( cell ) { var bogus = cell.getBogus(); bogus && bogus.remove(); cell.trim(); } function placeCursorInCell( cell, placeAtEnd ) { var docInner = cell.getDocument(), docOuter = CKEDITOR.document; // Fixing "Unspecified error" thrown in IE10 by resetting // selection the dirty and shameful way (#10308). // We can not apply this hack to IE8 because // it causes error (#11058). if ( CKEDITOR.env.ie && CKEDITOR.env.version == 10 ) { docOuter.focus(); docInner.focus(); } var range = new CKEDITOR.dom.range( docInner ); if ( !range[ 'moveToElementEdit' + ( placeAtEnd ? 'End' : 'Start' ) ]( cell ) ) { range.selectNodeContents( cell ); range.collapse( placeAtEnd ? false : true ); } range.select( true ); } function cellInRow( tableMap, rowIndex, cell ) { var oRow = tableMap[ rowIndex ]; if ( typeof cell == 'undefined' ) return oRow; for ( var c = 0; oRow && c < oRow.length; c++ ) { if ( cell.is && oRow[ c ] == cell.$ ) return c; else if ( c == cell ) return new CKEDITOR.dom.element( oRow[ c ] ); } return cell.is ? -1 : null; } function cellInCol( tableMap, colIndex ) { var oCol = []; for ( var r = 0; r < tableMap.length; r++ ) { var row = tableMap[ r ]; oCol.push( row[ colIndex ] ); // Avoid adding duplicate cells. if ( row[ colIndex ].rowSpan > 1 ) r += row[ colIndex ].rowSpan - 1; } return oCol; } function mergeCells( selection, mergeDirection, isDetect ) { var cells = getSelectedCells( selection ); // Invalid merge request if: // 1. In batch mode despite that less than two selected. // 2. In solo mode while not exactly only one selected. // 3. Cells distributed in different table groups (e.g. from both thead and tbody). var commonAncestor; if ( ( mergeDirection ? cells.length != 1 : cells.length < 2 ) || ( commonAncestor = selection.getCommonAncestor() ) && commonAncestor.type == CKEDITOR.NODE_ELEMENT && commonAncestor.is( 'table' ) ) return false; var cell, firstCell = cells[ 0 ], table = firstCell.getAscendant( 'table' ), map = CKEDITOR.tools.buildTableMap( table ), mapHeight = map.length, mapWidth = map[ 0 ].length, startRow = firstCell.getParent().$.rowIndex, startColumn = cellInRow( map, startRow, firstCell ); if ( mergeDirection ) { var targetCell; try { var rowspan = parseInt( firstCell.getAttribute( 'rowspan' ), 10 ) || 1; var colspan = parseInt( firstCell.getAttribute( 'colspan' ), 10 ) || 1; targetCell = map[ mergeDirection == 'up' ? ( startRow - rowspan ) : mergeDirection == 'down' ? ( startRow + rowspan ) : startRow ][ mergeDirection == 'left' ? ( startColumn - colspan ) : mergeDirection == 'right' ? ( startColumn + colspan ) : startColumn ]; } catch ( er ) { return false; } // 1. No cell could be merged. // 2. Same cell actually. if ( !targetCell || firstCell.$ == targetCell ) return false; // Sort in map order regardless of the DOM sequence. cells[ ( mergeDirection == 'up' || mergeDirection == 'left' ) ? 'unshift' : 'push' ]( new CKEDITOR.dom.element( targetCell ) ); } // Start from here are merging way ignorance (merge up/right, batch merge). var doc = firstCell.getDocument(), lastRowIndex = startRow, totalRowSpan = 0, totalColSpan = 0, // Use a documentFragment as buffer when appending cell contents. frag = !isDetect && new CKEDITOR.dom.documentFragment( doc ), dimension = 0; for ( var i = 0; i < cells.length; i++ ) { cell = cells[ i ]; var tr = cell.getParent(), cellFirstChild = cell.getFirst(), colSpan = cell.$.colSpan, rowSpan = cell.$.rowSpan, rowIndex = tr.$.rowIndex, colIndex = cellInRow( map, rowIndex, cell ); // Accumulated the actual places taken by all selected cells. dimension += colSpan * rowSpan; // Accumulated the maximum virtual spans from column and row. totalColSpan = Math.max( totalColSpan, colIndex - startColumn + colSpan ); totalRowSpan = Math.max( totalRowSpan, rowIndex - startRow + rowSpan ); if ( !isDetect ) { // Trim all cell fillers and check to remove empty cells. if ( trimCell( cell ), cell.getChildren().count() ) { // Merge vertically cells as two separated paragraphs. if ( rowIndex != lastRowIndex && cellFirstChild && !( cellFirstChild.isBlockBoundary && cellFirstChild.isBlockBoundary( { br: 1 } ) ) ) { var last = frag.getLast( CKEDITOR.dom.walker.whitespaces( true ) ); if ( last && !( last.is && last.is( 'br' ) ) ) frag.append( 'br' ); } cell.moveChildren( frag ); } i ? cell.remove() : cell.setHtml( '' ); } lastRowIndex = rowIndex; } if ( !isDetect ) { frag.moveChildren( firstCell ); firstCell.appendBogus(); if ( totalColSpan >= mapWidth ) firstCell.removeAttribute( 'rowSpan' ); else firstCell.$.rowSpan = totalRowSpan; if ( totalRowSpan >= mapHeight ) firstCell.removeAttribute( 'colSpan' ); else firstCell.$.colSpan = totalColSpan; // Swip empty left at the end of table due to the merging. var trs = new CKEDITOR.dom.nodeList( table.$.rows ), count = trs.count(); for ( i = count - 1; i >= 0; i-- ) { var tailTr = trs.getItem( i ); if ( !tailTr.$.cells.length ) { tailTr.remove(); count++; continue; } } return firstCell; } // Be able to merge cells only if actual dimension of selected // cells equals to the caculated rectangle. else { return ( totalRowSpan * totalColSpan ) == dimension; } } function horizontalSplitCell( selection, isDetect ) { var cells = getSelectedCells( selection ); if ( cells.length > 1 ) return false; else if ( isDetect ) return true; var cell = cells[ 0 ], tr = cell.getParent(), table = tr.getAscendant( 'table' ), map = CKEDITOR.tools.buildTableMap( table ), rowIndex = tr.$.rowIndex, colIndex = cellInRow( map, rowIndex, cell ), rowSpan = cell.$.rowSpan, newCell, newRowSpan, newCellRowSpan, newRowIndex; if ( rowSpan > 1 ) { newRowSpan = Math.ceil( rowSpan / 2 ); newCellRowSpan = Math.floor( rowSpan / 2 ); newRowIndex = rowIndex + newRowSpan; var newCellTr = new CKEDITOR.dom.element( table.$.rows[ newRowIndex ] ), newCellRow = cellInRow( map, newRowIndex ), candidateCell; newCell = cell.clone(); // Figure out where to insert the new cell by checking the vitual row. for ( var c = 0; c < newCellRow.length; c++ ) { candidateCell = newCellRow[ c ]; // Catch first cell actually following the column. if ( candidateCell.parentNode == newCellTr.$ && c > colIndex ) { newCell.insertBefore( new CKEDITOR.dom.element( candidateCell ) ); break; } else { candidateCell = null; } } // The destination row is empty, append at will. if ( !candidateCell ) newCellTr.append( newCell ); } else { newCellRowSpan = newRowSpan = 1; newCellTr = tr.clone(); newCellTr.insertAfter( tr ); newCellTr.append( newCell = cell.clone() ); var cellsInSameRow = cellInRow( map, rowIndex ); for ( var i = 0; i < cellsInSameRow.length; i++ ) cellsInSameRow[ i ].rowSpan++; } newCell.appendBogus(); cell.$.rowSpan = newRowSpan; newCell.$.rowSpan = newCellRowSpan; if ( newRowSpan == 1 ) cell.removeAttribute( 'rowSpan' ); if ( newCellRowSpan == 1 ) newCell.removeAttribute( 'rowSpan' ); return newCell; } function verticalSplitCell( selection, isDetect ) { var cells = getSelectedCells( selection ); if ( cells.length > 1 ) return false; else if ( isDetect ) return true; var cell = cells[ 0 ], tr = cell.getParent(), table = tr.getAscendant( 'table' ), map = CKEDITOR.tools.buildTableMap( table ), rowIndex = tr.$.rowIndex, colIndex = cellInRow( map, rowIndex, cell ), colSpan = cell.$.colSpan, newCell, newColSpan, newCellColSpan; if ( colSpan > 1 ) { newColSpan = Math.ceil( colSpan / 2 ); newCellColSpan = Math.floor( colSpan / 2 ); } else { newCellColSpan = newColSpan = 1; var cellsInSameCol = cellInCol( map, colIndex ); for ( var i = 0; i < cellsInSameCol.length; i++ ) cellsInSameCol[ i ].colSpan++; } newCell = cell.clone(); newCell.insertAfter( cell ); newCell.appendBogus(); cell.$.colSpan = newColSpan; newCell.$.colSpan = newCellColSpan; if ( newColSpan == 1 ) cell.removeAttribute( 'colSpan' ); if ( newCellColSpan == 1 ) newCell.removeAttribute( 'colSpan' ); return newCell; } CKEDITOR.plugins.tabletools = { requires: 'table,dialog,contextmenu', init: function( editor ) { var lang = editor.lang.table; function createDef( def ) { return CKEDITOR.tools.extend( def || {}, { contextSensitive: 1, refresh: function( editor, path ) { this.setState( path.contains( { td: 1, th: 1 }, 1 ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED ); } } ); } function addCmd( name, def ) { var cmd = editor.addCommand( name, def ); editor.addFeature( cmd ); } addCmd( 'cellProperties', new CKEDITOR.dialogCommand( 'cellProperties', createDef( { allowedContent: 'td th{width,height,border-color,background-color,white-space,vertical-align,text-align}[colspan,rowspan]', requiredContent: 'table' } ) ) ); CKEDITOR.dialog.add( 'cellProperties', this.path + 'dialogs/tableCell.js' ); addCmd( 'rowDelete', createDef( { requiredContent: 'table', exec: function( editor ) { var selection = editor.getSelection(); placeCursorInCell( deleteRows( selection ) ); } } ) ); addCmd( 'rowInsertBefore', createDef( { requiredContent: 'table', exec: function( editor ) { var selection = editor.getSelection(); insertRow( selection, true ); } } ) ); addCmd( 'rowInsertAfter', createDef( { requiredContent: 'table', exec: function( editor ) { var selection = editor.getSelection(); insertRow( selection ); } } ) ); addCmd( 'columnDelete', createDef( { requiredContent: 'table', exec: function( editor ) { var selection = editor.getSelection(); var element = deleteColumns( selection ); element && placeCursorInCell( element, true ); } } ) ); addCmd( 'columnInsertBefore', createDef( { requiredContent: 'table', exec: function( editor ) { var selection = editor.getSelection(); insertColumn( selection, true ); } } ) ); addCmd( 'columnInsertAfter', createDef( { requiredContent: 'table', exec: function( editor ) { var selection = editor.getSelection(); insertColumn( selection ); } } ) ); addCmd( 'cellDelete', createDef( { requiredContent: 'table', exec: function( editor ) { var selection = editor.getSelection(); deleteCells( selection ); } } ) ); addCmd( 'cellMerge', createDef( { allowedContent: 'td[colspan,rowspan]', requiredContent: 'td[colspan,rowspan]', exec: function( editor ) { placeCursorInCell( mergeCells( editor.getSelection() ), true ); } } ) ); addCmd( 'cellMergeRight', createDef( { allowedContent: 'td[colspan]', requiredContent: 'td[colspan]', exec: function( editor ) { placeCursorInCell( mergeCells( editor.getSelection(), 'right' ), true ); } } ) ); addCmd( 'cellMergeDown', createDef( { allowedContent: 'td[rowspan]', requiredContent: 'td[rowspan]', exec: function( editor ) { placeCursorInCell( mergeCells( editor.getSelection(), 'down' ), true ); } } ) ); addCmd( 'cellVerticalSplit', createDef( { allowedContent: 'td[rowspan]', requiredContent: 'td[rowspan]', exec: function( editor ) { placeCursorInCell( verticalSplitCell( editor.getSelection() ) ); } } ) ); addCmd( 'cellHorizontalSplit', createDef( { allowedContent: 'td[colspan]', requiredContent: 'td[colspan]', exec: function( editor ) { placeCursorInCell( horizontalSplitCell( editor.getSelection() ) ); } } ) ); addCmd( 'cellInsertBefore', createDef( { requiredContent: 'table', exec: function( editor ) { var selection = editor.getSelection(); insertCell( selection, true ); } } ) ); addCmd( 'cellInsertAfter', createDef( { requiredContent: 'table', exec: function( editor ) { var selection = editor.getSelection(); insertCell( selection ); } } ) ); // If the "menu" plugin is loaded, register the menu items. if ( editor.addMenuItems ) { editor.addMenuItems( { tablecell: { label: lang.cell.menu, group: 'tablecell', order: 1, getItems: function() { var selection = editor.getSelection(), cells = getSelectedCells( selection ); return { tablecell_insertBefore: CKEDITOR.TRISTATE_OFF, tablecell_insertAfter: CKEDITOR.TRISTATE_OFF, tablecell_delete: CKEDITOR.TRISTATE_OFF, tablecell_merge: mergeCells( selection, null, true ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, tablecell_merge_right: mergeCells( selection, 'right', true ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, tablecell_merge_down: mergeCells( selection, 'down', true ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, tablecell_split_vertical: verticalSplitCell( selection, true ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, tablecell_split_horizontal: horizontalSplitCell( selection, true ) ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED, tablecell_properties: cells.length > 0 ? CKEDITOR.TRISTATE_OFF : CKEDITOR.TRISTATE_DISABLED }; } }, tablecell_insertBefore: { label: lang.cell.insertBefore, group: 'tablecell', command: 'cellInsertBefore', order: 5 }, tablecell_insertAfter: { label: lang.cell.insertAfter, group: 'tablecell', command: 'cellInsertAfter', order: 10 }, tablecell_delete: { label: lang.cell.deleteCell, group: 'tablecell', command: 'cellDelete', order: 15 }, tablecell_merge: { label: lang.cell.merge, group: 'tablecell', command: 'cellMerge', order: 16 }, tablecell_merge_right: { label: lang.cell.mergeRight, group: 'tablecell', command: 'cellMergeRight', order: 17 }, tablecell_merge_down: { label: lang.cell.mergeDown, group: 'tablecell', command: 'cellMergeDown', order: 18 }, tablecell_split_horizontal: { label: lang.cell.splitHorizontal, group: 'tablecell', command: 'cellHorizontalSplit', order: 19 }, tablecell_split_vertical: { label: lang.cell.splitVertical, group: 'tablecell', command: 'cellVerticalSplit', order: 20 }, tablecell_properties: { label: lang.cell.title, group: 'tablecellproperties', command: 'cellProperties', order: 21 }, tablerow: { label: lang.row.menu, group: 'tablerow', order: 1, getItems: function() { return { tablerow_insertBefore: CKEDITOR.TRISTATE_OFF, tablerow_insertAfter: CKEDITOR.TRISTATE_OFF, tablerow_delete: CKEDITOR.TRISTATE_OFF }; } }, tablerow_insertBefore: { label: lang.row.insertBefore, group: 'tablerow', command: 'rowInsertBefore', order: 5 }, tablerow_insertAfter: { label: lang.row.insertAfter, group: 'tablerow', command: 'rowInsertAfter', order: 10 }, tablerow_delete: { label: lang.row.deleteRow, group: 'tablerow', command: 'rowDelete', order: 15 }, tablecolumn: { label: lang.column.menu, group: 'tablecolumn', order: 1, getItems: function() { return { tablecolumn_insertBefore: CKEDITOR.TRISTATE_OFF, tablecolumn_insertAfter: CKEDITOR.TRISTATE_OFF, tablecolumn_delete: CKEDITOR.TRISTATE_OFF }; } }, tablecolumn_insertBefore: { label: lang.column.insertBefore, group: 'tablecolumn', command: 'columnInsertBefore', order: 5 }, tablecolumn_insertAfter: { label: lang.column.insertAfter, group: 'tablecolumn', command: 'columnInsertAfter', order: 10 }, tablecolumn_delete: { label: lang.column.deleteColumn, group: 'tablecolumn', command: 'columnDelete', order: 15 } } ); } // If the "contextmenu" plugin is laoded, register the listeners. if ( editor.contextMenu ) { editor.contextMenu.addListener( function( element, selection, path ) { var cell = path.contains( { 'td': 1, 'th': 1 }, 1 ); if ( cell && !cell.isReadOnly() ) { return { tablecell: CKEDITOR.TRISTATE_OFF, tablerow: CKEDITOR.TRISTATE_OFF, tablecolumn: CKEDITOR.TRISTATE_OFF }; } return null; } ); } }, getSelectedCells: getSelectedCells }; CKEDITOR.plugins.add( 'tabletools', CKEDITOR.plugins.tabletools ); } )(); /** * Create a two-dimension array that reflects the actual layout of table cells, * with cell spans, with mappings to the original td elements. * * @param {CKEDITOR.dom.element} table * @member CKEDITOR.tools */ CKEDITOR.tools.buildTableMap = function( table ) { var aRows = table.$.rows; // Row and Column counters. var r = -1; var aMap = []; for ( var i = 0; i < aRows.length; i++ ) { r++; !aMap[ r ] && ( aMap[ r ] = [] ); var c = -1; for ( var j = 0; j < aRows[ i ].cells.length; j++ ) { var oCell = aRows[ i ].cells[ j ]; c++; while ( aMap[ r ][ c ] ) c++; var iColSpan = isNaN( oCell.colSpan ) ? 1 : oCell.colSpan; var iRowSpan = isNaN( oCell.rowSpan ) ? 1 : oCell.rowSpan; for ( var rs = 0; rs < iRowSpan; rs++ ) { if ( !aMap[ r + rs ] ) aMap[ r + rs ] = []; for ( var cs = 0; cs < iColSpan; cs++ ) { aMap[ r + rs ][ c + cs ] = aRows[ i ].cells[ j ]; } } c += iColSpan - 1; } } return aMap; }; rt-4.4.7/devel/third-party/ckeditor-src/plugins/tabletools/dialogs/0000755000201500020150000000000014517055560024051 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/tabletools/dialogs/tableCell.js0000644000201500020150000003462314517055560026306 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.dialog.add( 'cellProperties', function( editor ) { var langTable = editor.lang.table, langCell = langTable.cell, langCommon = editor.lang.common, validate = CKEDITOR.dialog.validate, widthPattern = /^(\d+(?:\.\d+)?)(px|%)$/, spacer = { type: 'html', html: ' ' }, rtl = editor.lang.dir == 'rtl', colorDialog = editor.plugins.colordialog; // Returns a function, which runs regular "setup" for all selected cells to find out // whether the initial value of the field would be the same for all cells. If so, // the value is displayed just as if a regular "setup" was executed. Otherwise, // i.e. when there are several cells of different value of the property, a field // gets empty value. // // * @param {Function} setup Setup function which returns a value instead of setting it. // * @returns {Function} A function to be used in dialog definition. function setupCells( setup ) { return function( cells ) { var fieldValue = setup( cells[ 0 ] ); // If one of the cells would have a different value of the // property, set the empty value for a field. for ( var i = 1; i < cells.length; i++ ) { if ( setup( cells[ i ] ) !== fieldValue ) { fieldValue = null; break; } } // Setting meaningful or empty value only makes sense // when setup returns some value. Otherwise, a *default* value // is used for that field. if ( typeof fieldValue != 'undefined' ) { this.setValue( fieldValue ); // The only way to have an empty select value in Firefox is // to set a negative selectedIndex. if ( CKEDITOR.env.gecko && this.type == 'select' && !fieldValue ) this.getInputElement().$.selectedIndex = -1; } }; } // Reads the unit of width property of the table cell. // // * @param {CKEDITOR.dom.element} cell An element representing table cell. // * @returns {String} A unit of width: 'px', '%' or undefined if none. function getCellWidthType( cell ) { var match = widthPattern.exec( cell.getStyle( 'width' ) || cell.getAttribute( 'width' ) ); if ( match ) return match[ 2 ]; } return { title: langCell.title, minWidth: CKEDITOR.env.ie && CKEDITOR.env.quirks ? 450 : 410, minHeight: CKEDITOR.env.ie && ( CKEDITOR.env.ie7Compat || CKEDITOR.env.quirks ) ? 230 : 220, contents: [ { id: 'info', label: langCell.title, accessKey: 'I', elements: [ { type: 'hbox', widths: [ '40%', '5%', '40%' ], children: [ { type: 'vbox', padding: 0, children: [ { type: 'hbox', widths: [ '70%', '30%' ], children: [ { type: 'text', id: 'width', width: '100px', label: langCommon.width, validate: validate.number( langCell.invalidWidth ), // Extra labelling of width unit type. onLoad: function() { var widthType = this.getDialog().getContentElement( 'info', 'widthType' ), labelElement = widthType.getElement(), inputElement = this.getInputElement(), ariaLabelledByAttr = inputElement.getAttribute( 'aria-labelledby' ); inputElement.setAttribute( 'aria-labelledby', [ ariaLabelledByAttr, labelElement.$.id ].join( ' ' ) ); }, setup: setupCells( function( element ) { var widthAttr = parseInt( element.getAttribute( 'width' ), 10 ), widthStyle = parseInt( element.getStyle( 'width' ), 10 ); return !isNaN( widthStyle ) ? widthStyle : !isNaN( widthAttr ) ? widthAttr : ''; } ), commit: function( element ) { var value = parseInt( this.getValue(), 10 ), // There might be no widthType value, i.e. when multiple cells are // selected but some of them have width expressed in pixels and some // of them in percent. Try to re-read the unit from the cell in such // case (#11439). unit = this.getDialog().getValueOf( 'info', 'widthType' ) || getCellWidthType( element ); if ( !isNaN( value ) ) element.setStyle( 'width', value + unit ); else element.removeStyle( 'width' ); element.removeAttribute( 'width' ); }, 'default': '' }, { type: 'select', id: 'widthType', label: editor.lang.table.widthUnit, labelStyle: 'visibility:hidden', 'default': 'px', items: [ [ langTable.widthPx, 'px' ], [ langTable.widthPc, '%' ] ], setup: setupCells( getCellWidthType ) } ] }, { type: 'hbox', widths: [ '70%', '30%' ], children: [ { type: 'text', id: 'height', label: langCommon.height, width: '100px', 'default': '', validate: validate.number( langCell.invalidHeight ), // Extra labelling of height unit type. onLoad: function() { var heightType = this.getDialog().getContentElement( 'info', 'htmlHeightType' ), labelElement = heightType.getElement(), inputElement = this.getInputElement(), ariaLabelledByAttr = inputElement.getAttribute( 'aria-labelledby' ); inputElement.setAttribute( 'aria-labelledby', [ ariaLabelledByAttr, labelElement.$.id ].join( ' ' ) ); }, setup: setupCells( function( element ) { var heightAttr = parseInt( element.getAttribute( 'height' ), 10 ), heightStyle = parseInt( element.getStyle( 'height' ), 10 ); return !isNaN( heightStyle ) ? heightStyle : !isNaN( heightAttr ) ? heightAttr : ''; } ), commit: function( element ) { var value = parseInt( this.getValue(), 10 ); if ( !isNaN( value ) ) element.setStyle( 'height', CKEDITOR.tools.cssLength( value ) ); else element.removeStyle( 'height' ); element.removeAttribute( 'height' ); } }, { id: 'htmlHeightType', type: 'html', html: '
    ' + langTable.widthPx } ] }, spacer, { type: 'select', id: 'wordWrap', label: langCell.wordWrap, 'default': 'yes', items: [ [ langCell.yes, 'yes' ], [ langCell.no, 'no' ] ], setup: setupCells( function( element ) { var wordWrapAttr = element.getAttribute( 'noWrap' ), wordWrapStyle = element.getStyle( 'white-space' ); if ( wordWrapStyle == 'nowrap' || wordWrapAttr ) return 'no'; } ), commit: function( element ) { if ( this.getValue() == 'no' ) element.setStyle( 'white-space', 'nowrap' ); else element.removeStyle( 'white-space' ); element.removeAttribute( 'noWrap' ); } }, spacer, { type: 'select', id: 'hAlign', label: langCell.hAlign, 'default': '', items: [ [ langCommon.notSet, '' ], [ langCommon.alignLeft, 'left' ], [ langCommon.alignCenter, 'center' ], [ langCommon.alignRight, 'right' ], [ langCommon.alignJustify, 'justify' ] ], setup: setupCells( function( element ) { var alignAttr = element.getAttribute( 'align' ), textAlignStyle = element.getStyle( 'text-align' ); return textAlignStyle || alignAttr || ''; } ), commit: function( selectedCell ) { var value = this.getValue(); if ( value ) selectedCell.setStyle( 'text-align', value ); else selectedCell.removeStyle( 'text-align' ); selectedCell.removeAttribute( 'align' ); } }, { type: 'select', id: 'vAlign', label: langCell.vAlign, 'default': '', items: [ [ langCommon.notSet, '' ], [ langCommon.alignTop, 'top' ], [ langCommon.alignMiddle, 'middle' ], [ langCommon.alignBottom, 'bottom' ], [ langCell.alignBaseline, 'baseline' ] ], setup: setupCells( function( element ) { var vAlignAttr = element.getAttribute( 'vAlign' ), vAlignStyle = element.getStyle( 'vertical-align' ); switch ( vAlignStyle ) { // Ignore all other unrelated style values.. case 'top': case 'middle': case 'bottom': case 'baseline': break; default: vAlignStyle = ''; } return vAlignStyle || vAlignAttr || ''; } ), commit: function( element ) { var value = this.getValue(); if ( value ) element.setStyle( 'vertical-align', value ); else element.removeStyle( 'vertical-align' ); element.removeAttribute( 'vAlign' ); } } ] }, spacer, { type: 'vbox', padding: 0, children: [ { type: 'select', id: 'cellType', label: langCell.cellType, 'default': 'td', items: [ [ langCell.data, 'td' ], [ langCell.header, 'th' ] ], setup: setupCells( function( selectedCell ) { return selectedCell.getName(); } ), commit: function( selectedCell ) { selectedCell.renameNode( this.getValue() ); } }, spacer, { type: 'text', id: 'rowSpan', label: langCell.rowSpan, 'default': '', validate: validate.integer( langCell.invalidRowSpan ), setup: setupCells( function( selectedCell ) { var attrVal = parseInt( selectedCell.getAttribute( 'rowSpan' ), 10 ); if ( attrVal && attrVal != 1 ) return attrVal; } ), commit: function( selectedCell ) { var value = parseInt( this.getValue(), 10 ); if ( value && value != 1 ) selectedCell.setAttribute( 'rowSpan', this.getValue() ); else selectedCell.removeAttribute( 'rowSpan' ); } }, { type: 'text', id: 'colSpan', label: langCell.colSpan, 'default': '', validate: validate.integer( langCell.invalidColSpan ), setup: setupCells( function( element ) { var attrVal = parseInt( element.getAttribute( 'colSpan' ), 10 ); if ( attrVal && attrVal != 1 ) return attrVal; } ), commit: function( selectedCell ) { var value = parseInt( this.getValue(), 10 ); if ( value && value != 1 ) selectedCell.setAttribute( 'colSpan', this.getValue() ); else selectedCell.removeAttribute( 'colSpan' ); } }, spacer, { type: 'hbox', padding: 0, widths: [ '60%', '40%' ], children: [ { type: 'text', id: 'bgColor', label: langCell.bgColor, 'default': '', setup: setupCells( function( element ) { var bgColorAttr = element.getAttribute( 'bgColor' ), bgColorStyle = element.getStyle( 'background-color' ); return bgColorStyle || bgColorAttr; } ), commit: function( selectedCell ) { var value = this.getValue(); if ( value ) selectedCell.setStyle( 'background-color', this.getValue() ); else selectedCell.removeStyle( 'background-color' ); selectedCell.removeAttribute( 'bgColor' ); } }, colorDialog ? { type: 'button', id: 'bgColorChoose', 'class': 'colorChooser', // jshint ignore:line label: langCell.chooseColor, onLoad: function() { // Stick the element to the bottom (#5587) this.getElement().getParent().setStyle( 'vertical-align', 'bottom' ); }, onClick: function() { editor.getColorFromDialog( function( color ) { if ( color ) this.getDialog().getContentElement( 'info', 'bgColor' ).setValue( color ); this.focus(); }, this ); } } : spacer ] }, spacer, { type: 'hbox', padding: 0, widths: [ '60%', '40%' ], children: [ { type: 'text', id: 'borderColor', label: langCell.borderColor, 'default': '', setup: setupCells( function( element ) { var borderColorAttr = element.getAttribute( 'borderColor' ), borderColorStyle = element.getStyle( 'border-color' ); return borderColorStyle || borderColorAttr; } ), commit: function( selectedCell ) { var value = this.getValue(); if ( value ) selectedCell.setStyle( 'border-color', this.getValue() ); else selectedCell.removeStyle( 'border-color' ); selectedCell.removeAttribute( 'borderColor' ); } }, colorDialog ? { type: 'button', id: 'borderColorChoose', 'class': 'colorChooser', // jshint ignore:line label: langCell.chooseColor, style: ( rtl ? 'margin-right' : 'margin-left' ) + ': 10px', onLoad: function() { // Stick the element to the bottom (#5587) this.getElement().getParent().setStyle( 'vertical-align', 'bottom' ); }, onClick: function() { editor.getColorFromDialog( function( color ) { if ( color ) this.getDialog().getContentElement( 'info', 'borderColor' ).setValue( color ); this.focus(); }, this ); } } : spacer ] } ] } ] } ] } ], onShow: function() { this.cells = CKEDITOR.plugins.tabletools.getSelectedCells( this._.editor.getSelection() ); this.setupContent( this.cells ); }, 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 ] ); this._.editor.forceNextSelectionCheck(); selection.selectBookmarks( bookmarks ); this._.editor.selectionChange(); }, onLoad: function() { var saved = {}; // Prevent from changing cell properties when the field's value // remains unaltered, i.e. when selected multiple cells and dialog loaded // only the properties of the first cell (#11439). this.foreach( function( field ) { if ( !field.setup || !field.commit ) return; // Save field's value every time after "setup" is called. field.setup = CKEDITOR.tools.override( field.setup, function( orgSetup ) { return function() { orgSetup.apply( this, arguments ); saved[ field.id ] = field.getValue(); }; } ); // Compare saved value with actual value. Update cell only if value has changed. field.commit = CKEDITOR.tools.override( field.commit, function( orgCommit ) { return function() { if ( saved[ field.id ] !== field.getValue() ) orgCommit.apply( this, arguments ); }; } ); } ); } }; } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/0000755000201500020150000000000014517055557022612 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/plugin.js0000644000201500020150000001226314517055557024452 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.add( 'basicstyles', { // jscs:disable maximumLineLength lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en,en-au,en-ca,en-gb,eo,es,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn', // %REMOVE_LINE_CORE% // jscs:enable maximumLineLength icons: 'bold,italic,underline,strike,subscript,superscript', // %REMOVE_LINE_CORE% hidpi: true, // %REMOVE_LINE_CORE% init: function( editor ) { var order = 0; // All buttons use the same code to register. So, to avoid // duplications, let's use this tool function. var addButtonCommand = function( buttonName, buttonLabel, commandName, styleDefiniton ) { // Disable the command if no definition is configured. if ( !styleDefiniton ) return; var style = new CKEDITOR.style( styleDefiniton ), forms = contentForms[ commandName ]; // Put the style as the most important form. forms.unshift( style ); // Listen to contextual style activation. editor.attachStyleStateChange( style, function( state ) { !editor.readOnly && editor.getCommand( commandName ).setState( state ); } ); // Create the command that can be used to apply the style. editor.addCommand( commandName, new CKEDITOR.styleCommand( style, { contentForms: forms } ) ); // Register the button, if the button plugin is loaded. if ( editor.ui.addButton ) { editor.ui.addButton( buttonName, { label: buttonLabel, command: commandName, toolbar: 'basicstyles,' + ( order += 10 ) } ); } }; var contentForms = { bold: [ 'strong', 'b', [ 'span', function( el ) { var fw = el.styles[ 'font-weight' ]; return fw == 'bold' || +fw >= 700; } ] ], italic: [ 'em', 'i', [ 'span', function( el ) { return el.styles[ 'font-style' ] == 'italic'; } ] ], underline: [ 'u', [ 'span', function( el ) { return el.styles[ 'text-decoration' ] == 'underline'; } ] ], strike: [ 's', 'strike', [ 'span', function( el ) { return el.styles[ 'text-decoration' ] == 'line-through'; } ] ], subscript: [ 'sub' ], superscript: [ 'sup' ] }, config = editor.config, lang = editor.lang.basicstyles; addButtonCommand( 'Bold', lang.bold, 'bold', config.coreStyles_bold ); addButtonCommand( 'Italic', lang.italic, 'italic', config.coreStyles_italic ); addButtonCommand( 'Underline', lang.underline, 'underline', config.coreStyles_underline ); addButtonCommand( 'Strike', lang.strike, 'strike', config.coreStyles_strike ); addButtonCommand( 'Subscript', lang.subscript, 'subscript', config.coreStyles_subscript ); addButtonCommand( 'Superscript', lang.superscript, 'superscript', config.coreStyles_superscript ); editor.setKeystroke( [ [ CKEDITOR.CTRL + 66 /*B*/, 'bold' ], [ CKEDITOR.CTRL + 73 /*I*/, 'italic' ], [ CKEDITOR.CTRL + 85 /*U*/, 'underline' ] ] ); } } ); // Basic Inline Styles. /** * The style definition that applies the **bold** style to the text. * * config.coreStyles_bold = { element: 'b', overrides: 'strong' }; * * config.coreStyles_bold = { * element: 'span', * attributes: { 'class': 'Bold' } * }; * * @cfg * @member CKEDITOR.config */ CKEDITOR.config.coreStyles_bold = { element: 'strong', overrides: 'b' }; /** * The style definition that applies the *italics* style to the text. * * config.coreStyles_italic = { element: 'i', overrides: 'em' }; * * CKEDITOR.config.coreStyles_italic = { * element: 'span', * attributes: { 'class': 'Italic' } * }; * * @cfg * @member CKEDITOR.config */ CKEDITOR.config.coreStyles_italic = { element: 'em', overrides: 'i' }; /** * The style definition that applies the underline style to the text. * * CKEDITOR.config.coreStyles_underline = { * element: 'span', * attributes: { 'class': 'Underline' } * }; * * @cfg * @member CKEDITOR.config */ CKEDITOR.config.coreStyles_underline = { element: 'u' }; /** * The style definition that applies the strikethrough style to the text. * * CKEDITOR.config.coreStyles_strike = { * element: 'span', * attributes: { 'class': 'Strikethrough' }, * overrides: 'strike' * }; * * @cfg * @member CKEDITOR.config */ CKEDITOR.config.coreStyles_strike = { element: 's', overrides: 'strike' }; /** * The style definition that applies the subscript style to the text. * * CKEDITOR.config.coreStyles_subscript = { * element: 'span', * attributes: { 'class': 'Subscript' }, * overrides: 'sub' * }; * * @cfg * @member CKEDITOR.config */ CKEDITOR.config.coreStyles_subscript = { element: 'sub' }; /** * The style definition that applies the superscript style to the text. * * CKEDITOR.config.coreStyles_superscript = { * element: 'span', * attributes: { 'class': 'Superscript' }, * overrides: 'sup' * }; * * @cfg * @member CKEDITOR.config */ CKEDITOR.config.coreStyles_superscript = { element: 'sup' }; rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/0000755000201500020150000000000014517055557023533 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/zh.js0000644000201500020150000000050214517055557024507 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'zh', { bold: '粗體', italic: '斜體', strike: '刪除線', subscript: '下標', superscript: '上標', underline: '底線' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/nb.js0000644000201500020150000000053114517055557024467 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'nb', { bold: 'Fet', italic: 'Kursiv', strike: 'Gjennomstreking', subscript: 'Senket skrift', superscript: 'Hevet skrift', underline: 'Understreking' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/eo.js0000644000201500020150000000052014517055557024471 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'eo', { bold: 'Grasa', italic: 'Kursiva', strike: 'Trastreko', subscript: 'Suba indico', superscript: 'Supra indico', underline: 'Substreko' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/es.js0000644000201500020150000000051714517055557024503 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'es', { bold: 'Negrita', italic: 'Cursiva', strike: 'Tachado', subscript: 'Subíndice', superscript: 'Superíndice', underline: 'Subrayado' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/ro.js0000644000201500020150000000062014517055557024507 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'ro', { bold: 'Îngroşat (bold)', italic: 'Înclinat (italic)', strike: 'Tăiat (strike through)', subscript: 'Indice (subscript)', superscript: 'Putere (superscript)', underline: 'Subliniat (underline)' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/hr.js0000644000201500020150000000051714517055557024505 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'hr', { bold: 'Podebljaj', italic: 'Ukosi', strike: 'Precrtano', subscript: 'Subscript', superscript: 'Superscript', underline: 'Potcrtano' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/it.js0000644000201500020150000000051114517055557024502 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'it', { bold: 'Grassetto', italic: 'Corsivo', strike: 'Barrato', subscript: 'Pedice', superscript: 'Apice', underline: 'Sottolineato' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/sk.js0000644000201500020150000000053614517055557024512 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'sk', { bold: 'Tučné', italic: 'Kurzíva', strike: 'Prečiarknuté', subscript: 'Dolný index', superscript: 'Horný index', underline: 'Podčiarknuté' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/pt.js0000644000201500020150000000053614517055557024520 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'pt', { bold: 'Negrito', italic: 'Itálico', strike: 'Rasurado', subscript: 'Superior à linha', superscript: 'Inferior à Linha', underline: 'Sublinhado' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/si.js0000644000201500020150000000075614517055557024514 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'si', { bold: 'තද අකුරින් ලියනලද', italic: 'බැධීඅකුරින් ලියන ලද', strike: 'Strikethrough', // MISSING subscript: 'Subscript', // MISSING superscript: 'Superscript', // MISSING underline: 'යටින් ඉරි අදින ලද' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/ko.js0000644000201500020150000000052314517055557024502 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'ko', { bold: '굵게', italic: '기울임꼴', strike: '취소선', subscript: '아래 첨자', superscript: '위 첨자', underline: '밑줄' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/mk.js0000644000201500020150000000062114517055557024477 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'mk', { bold: 'Bold', // MISSING italic: 'Italic', // MISSING strike: 'Strikethrough', // MISSING subscript: 'Subscript', // MISSING superscript: 'Superscript', // MISSING underline: 'Underline' // MISSING } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/cy.js0000644000201500020150000000052114517055557024502 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'cy', { bold: 'Bras', italic: 'Italig', strike: 'Llinell Trwyddo', subscript: 'Is-sgript', superscript: 'Uwchsgript', underline: 'Tanlinellu' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/uk.js0000644000201500020150000000062514517055557024513 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'uk', { bold: 'Жирний', italic: 'Курсив', strike: 'Закреслений', subscript: 'Нижній індекс', superscript: 'Верхній індекс', underline: 'Підкреслений' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/zh-cn.js0000644000201500020150000000051014517055557025104 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'zh-cn', { bold: '加粗', italic: '倾斜', strike: '删除线', subscript: '下标', superscript: '上标', underline: '下划线' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/sv.js0000644000201500020150000000053514517055557024524 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'sv', { bold: 'Fet', italic: 'Kursiv', strike: 'Genomstruken', subscript: 'Nedsänkta tecken', superscript: 'Upphöjda tecken', underline: 'Understruken' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/lt.js0000644000201500020150000000054614517055557024515 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'lt', { bold: 'Pusjuodis', italic: 'Kursyvas', strike: 'Perbrauktas', subscript: 'Apatinis indeksas', superscript: 'Viršutinis indeksas', underline: 'Pabrauktas' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/is.js0000644000201500020150000000054314517055557024506 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'is', { bold: 'Feitletrað', italic: 'Skáletrað', strike: 'Yfirstrikað', subscript: 'Niðurskrifað', superscript: 'Uppskrifað', underline: 'Undirstrikað' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/fr-ca.js0000644000201500020150000000050714517055557025063 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'fr-ca', { bold: 'Gras', italic: 'Italique', strike: 'Barré', subscript: 'Indice', superscript: 'Exposant', underline: 'Souligné' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/et.js0000644000201500020150000000052214517055557024500 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'et', { bold: 'Paks', italic: 'Kursiiv', strike: 'Läbijoonitud', subscript: 'Allindeks', superscript: 'Ülaindeks', underline: 'Allajoonitud' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/bs.js0000644000201500020150000000051314517055557024474 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'bs', { bold: 'Boldiraj', italic: 'Ukosi', strike: 'Precrtaj', subscript: 'Subscript', superscript: 'Superscript', underline: 'Podvuci' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/pl.js0000644000201500020150000000054114517055557024504 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'pl', { bold: 'Pogrubienie', italic: 'Kursywa', strike: 'Przekreślenie', subscript: 'Indeks dolny', superscript: 'Indeks górny', underline: 'Podkreślenie' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/bg.js0000644000201500020150000000063514517055557024465 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'bg', { bold: 'Удебелен', italic: 'Наклонен', strike: 'Зачертан текст', subscript: 'Индексиран текст', superscript: 'Суперскрипт', underline: 'Подчертан' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/fa.js0000644000201500020150000000055714517055557024466 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'fa', { bold: 'درشت', italic: 'خمیده', strike: 'خط‌خورده', subscript: 'زیرنویس', superscript: 'بالانویس', underline: 'زیرخط‌دار' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/ku.js0000644000201500020150000000053514517055557024513 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'ku', { bold: 'قەڵەو', italic: 'لار', strike: 'لێدان', subscript: 'ژێرنووس', superscript: 'سەرنووس', underline: 'ژێرهێڵ' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/bn.js0000644000201500020150000000064314517055557024473 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'bn', { bold: 'বোল্ড', italic: 'ইটালিক', strike: 'স্ট্রাইক থ্রু', subscript: 'অধোলেখ', superscript: 'অভিলেখ', underline: 'আন্ডারলাইন' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/el.js0000644000201500020150000000060614517055557024473 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'el', { bold: 'Έντονη', italic: 'Πλάγια', strike: 'Διακριτή Διαγραφή', subscript: 'Δείκτης', superscript: 'Εκθέτης', underline: 'Υπογράμμιση' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/fi.js0000644000201500020150000000053214517055557024467 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'fi', { bold: 'Lihavoitu', italic: 'Kursivoitu', strike: 'Yliviivattu', subscript: 'Alaindeksi', superscript: 'Yläindeksi', underline: 'Alleviivattu' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/ru.js0000644000201500020150000000065714517055557024527 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'ru', { bold: 'Полужирный', italic: 'Курсив', strike: 'Зачеркнутый', subscript: 'Подстрочный индекс', superscript: 'Надстрочный индекс', underline: 'Подчеркнутый' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/gl.js0000644000201500020150000000051614517055557024475 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'gl', { bold: 'Negra', italic: 'Cursiva', strike: 'Riscado', subscript: 'Subíndice', superscript: 'Superíndice', underline: 'Subliñado' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/sr-latn.js0000644000201500020150000000051714517055557025454 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'sr-latn', { bold: 'Podebljano', italic: 'Kurziv', strike: 'Precrtano', subscript: 'Indeks', superscript: 'Stepen', underline: 'Podvučeno' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/sq.js0000644000201500020150000000053214517055557024514 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'sq', { bold: 'Trash', italic: 'Pjerrët', strike: 'Nëpërmes', subscript: 'Nën-skriptë', superscript: 'Super-skriptë', underline: 'Nënvijëzuar' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/pt-br.js0000644000201500020150000000052214517055557025114 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'pt-br', { bold: 'Negrito', italic: 'Itálico', strike: 'Tachado', subscript: 'Subscrito', superscript: 'Sobrescrito', underline: 'Sublinhado' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/fo.js0000644000201500020150000000055014517055557024475 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'fo', { bold: 'Feit skrift', italic: 'Skráskrift', strike: 'Yvirstrikað', subscript: 'Lækkað skrift', superscript: 'Hækkað skrift', underline: 'Undirstrikað' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/af.js0000644000201500020150000000051514517055557024460 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'af', { bold: 'Vet', italic: 'Skuins', strike: 'Deurgestreep', subscript: 'Onderskrif', superscript: 'Bo-skrif', underline: 'Onderstreep' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/hi.js0000644000201500020150000000063214517055557024472 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'hi', { bold: 'बोल्ड', italic: 'इटैलिक', strike: 'स्ट्राइक थ्रू', subscript: 'अधोलेख', superscript: 'अभिलेख', underline: 'रेखांकण' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/km.js0000644000201500020150000000075214517055557024504 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'km', { bold: 'ដិត', italic: 'ទ្រេត', strike: 'គូស​បន្ទាត់​ចំ​កណ្ដាល', subscript: 'អក្សរតូចក្រោម', superscript: 'អក្សរតូចលើ', underline: 'គូស​បន្ទាត់​ក្រោម' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/nl.js0000644000201500020150000000051614517055557024504 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'nl', { bold: 'Vet', italic: 'Cursief', strike: 'Doorhalen', subscript: 'Subscript', superscript: 'Superscript', underline: 'Onderstrepen' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/ka.js0000644000201500020150000000064514517055557024471 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'ka', { bold: 'მსხვილი', italic: 'დახრილი', strike: 'გადახაზული', subscript: 'ინდექსი', superscript: 'ხარისხი', underline: 'გახაზული' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/mn.js0000644000201500020150000000071414517055557024505 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'mn', { bold: 'Тод бүдүүн', italic: 'Налуу', strike: 'Дундуур нь зураастай болгох', subscript: 'Суурь болгох', superscript: 'Зэрэг болгох', underline: 'Доогуур нь зураастай болгох' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/da.js0000644000201500020150000000053014517055557024453 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'da', { bold: 'Fed', italic: 'Kursiv', strike: 'Gennemstreget', subscript: 'Sænket skrift', superscript: 'Hævet skrift', underline: 'Understreget' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/he.js0000644000201500020150000000056314517055557024471 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'he', { bold: 'מודגש', italic: 'נטוי', strike: 'כתיב מחוק', subscript: 'כתיב תחתון', superscript: 'כתיב עליון', underline: 'קו תחתון' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/ca.js0000644000201500020150000000051614517055557024456 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'ca', { bold: 'Negreta', italic: 'Cursiva', strike: 'Ratllat', subscript: 'Subíndex', superscript: 'Superíndex', underline: 'Subratllat' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/gu.js0000644000201500020150000000115614517055557024507 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'gu', { bold: 'બોલ્ડ/સ્પષ્ટ', italic: 'ઇટેલિક, ત્રાંસા', strike: 'છેકી નાખવું', subscript: 'એક ચિહ્નની નીચે કરેલું બીજું ચિહ્ન', superscript: 'એક ચિહ્ન ઉપર કરેલું બીજું ચિહ્ન.', underline: 'અન્ડર્લાઇન, નીચે લીટી' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/ms.js0000644000201500020150000000052014517055557024505 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'ms', { bold: 'Bold', italic: 'Italic', strike: 'Strike Through', subscript: 'Subscript', superscript: 'Superscript', underline: 'Underline' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/th.js0000644000201500020150000000066714517055557024515 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'th', { bold: 'ตัวหนา', italic: 'ตัวเอียง', strike: 'ตัวขีดเส้นทับ', subscript: 'ตัวห้อย', superscript: 'ตัวยก', underline: 'ตัวขีดเส้นใต้' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/de.js0000644000201500020150000000053114517055557024460 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'de', { bold: 'Fett', italic: 'Kursiv', strike: 'Durchgestrichen', subscript: 'Tiefgestellt', superscript: 'Hochgestellt', underline: 'Unterstrichen' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/en-ca.js0000644000201500020150000000052314517055557025054 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'en-ca', { bold: 'Bold', italic: 'Italic', strike: 'Strike Through', subscript: 'Subscript', superscript: 'Superscript', underline: 'Underline' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/tt.js0000644000201500020150000000061014517055557024515 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'tt', { bold: 'Калын', italic: 'Курсив', strike: 'Сызылган', subscript: 'Аскы индекс', superscript: 'Өске индекс', underline: 'Астына сызылган' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/vi.js0000644000201500020150000000055214517055557024511 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'vi', { bold: 'Đậm', italic: 'Nghiêng', strike: 'Gạch xuyên ngang', subscript: 'Chỉ số dưới', superscript: 'Chỉ số trên', underline: 'Gạch chân' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/cs.js0000644000201500020150000000053314517055557024477 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'cs', { bold: 'Tučné', italic: 'Kurzíva', strike: 'Přeškrtnuté', subscript: 'Dolní index', superscript: 'Horní index', underline: 'Podtržené' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/tr.js0000644000201500020150000000053014517055557024514 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'tr', { bold: 'Kalın', italic: 'İtalik', strike: 'Üstü Çizgili', subscript: 'Alt Simge', superscript: 'Üst Simge', underline: 'Altı Çizgili' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/ja.js0000644000201500020150000000051614517055557024465 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'ja', { bold: '太字', italic: '斜体', strike: '打ち消し線', subscript: '下付き', superscript: '上付き', underline: '下線' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/sl.js0000644000201500020150000000051714517055557024512 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'sl', { bold: 'Krepko', italic: 'Ležeče', strike: 'Prečrtano', subscript: 'Podpisano', superscript: 'Nadpisano', underline: 'Podčrtano' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/lv.js0000644000201500020150000000053714517055557024517 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'lv', { bold: 'Treknināts', italic: 'Kursīvs', strike: 'Pārsvītrots', subscript: 'Apakšrakstā', superscript: 'Augšrakstā', underline: 'Pasvītrots' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/en-au.js0000644000201500020150000000052314517055557025076 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'en-au', { bold: 'Bold', italic: 'Italic', strike: 'Strike Through', subscript: 'Subscript', superscript: 'Superscript', underline: 'Underline' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/en.js0000644000201500020150000000051714517055557024476 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'en', { bold: 'Bold', italic: 'Italic', strike: 'Strikethrough', subscript: 'Subscript', superscript: 'Superscript', underline: 'Underline' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/no.js0000644000201500020150000000053114517055557024504 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'no', { bold: 'Fet', italic: 'Kursiv', strike: 'Gjennomstreking', subscript: 'Senket skrift', superscript: 'Hevet skrift', underline: 'Understreking' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/fr.js0000644000201500020150000000050414517055557024477 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'fr', { bold: 'Gras', italic: 'Italique', strike: 'Barré', subscript: 'Indice', superscript: 'Exposant', underline: 'Souligné' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/id.js0000644000201500020150000000057714517055557024476 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'id', { bold: 'Huruf Tebal', italic: 'Huruf Miring', strike: 'Strikethrough', // MISSING subscript: 'Subscript', // MISSING superscript: 'Superscript', // MISSING underline: 'Garis Bawah' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/ug.js0000644000201500020150000000061714517055557024510 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'ug', { bold: 'توم', italic: 'يانتۇ', strike: 'ئۆچۈرۈش سىزىقى', subscript: 'تۆۋەن ئىندېكس', superscript: 'يۇقىرى ئىندېكس', underline: 'ئاستى سىزىق' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/ar.js0000644000201500020150000000053214517055557024473 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'ar', { bold: 'عريض', italic: 'مائل', strike: 'يتوسطه خط', subscript: 'منخفض', superscript: 'مرتفع', underline: 'تسطير' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/sr.js0000644000201500020150000000056514517055557024523 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'sr', { bold: 'Подебљано', italic: 'Курзив', strike: 'Прецртано', subscript: 'Индекс', superscript: 'Степен', underline: 'Подвучено' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/eu.js0000644000201500020150000000051614517055557024504 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'eu', { bold: 'Lodia', italic: 'Etzana', strike: 'Marratua', subscript: 'Azpi-indize', superscript: 'Goi-indize', underline: 'Azpimarratu' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/en-gb.js0000644000201500020150000000052314517055557025061 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'en-gb', { bold: 'Bold', italic: 'Italic', strike: 'Strike Through', subscript: 'Subscript', superscript: 'Superscript', underline: 'Underline' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/lang/hu.js0000644000201500020150000000052714517055557024511 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'basicstyles', 'hu', { bold: 'Félkövér', italic: 'Dőlt', strike: 'Áthúzott', subscript: 'Alsó index', superscript: 'Felső index', underline: 'Aláhúzott' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/icons/0000755000201500020150000000000014517055557023725 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/icons/underline.png0000644000201500020150000000135314517055557026422 0ustar puckpuckPNG  IHDRabKGD pHYs B(xIDAT8ˍj@Eϼ2E-B0, ^!!?E~7. BMv #,B@Y,͌-01Zk 롔ZKEDQR i9Z<Zkz"SI( VEQ`EXCDPJ,s64@]rtt֚888(_dYX,Ȳ,(A1,1<-9cƘ{]6Yȃ  !V˳✳O +c [[[MJ)*ݭR5ŏ<{* a0\EL`%2FѷtZat~Mx<>==f͚e="EQ0?f_0+_Ǫ*cDvx gޮV+,c\BL&488'I0LFySu7Ks <%tEXtdate:create2013-07-04T17:03:03+02:00Mx%tEXtdate:modify2013-07-04T17:03:03+02:00<tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/icons/hidpi/0000755000201500020150000000000014517055557025022 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/icons/hidpi/underline.png0000644000201500020150000000305114517055557027514 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(xBIDATXíϋE?Uݽ3l _&%%J$!C уD/@NJ <1$@<ē"/ "A4  *.ݯ*q !Dc0l# p$IJ,,!jIBk]8oۖ#AkD_*A۩1Dq"AY8RJT({^fo hṂ E+@`YkYs`mߍqZ=pgKt+N| 0> DG<׽/̤1)%\X-h6o]K)%r/C}iۜ;{6ghٸc=!%;20LӔfI8ĖeY8[ƛ%rIcB`9ΪZ-$RZ-!Đɏ1.a@iV k(X)316L/ H ϣ?! HP\)`d#18luI8us]B%U5fcC%(v31<@!%g}^P) B{((0O. `95.H#7+?ԔRE$i[8*0ZvɐQ:eaI{)).:J) GpiKJ)tNT*֬jkWeviJ#0 QW5qc[f]l!%6SSwUT_Z""?Eu=a(5A0}z޽u)DkSS1fx!<}ׂ" Cگި hXc6J޵B}s0onݴi-[T*J' o dd/%tEXtdate:create2013-06-20T11:07:04+02:00I%tEXtdate:modify2013-06-20T11:07:04+02:00tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/icons/hidpi/italic.png0000644000201500020150000000265414517055557027004 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(xIDATXŗۋUU?/g}n8"hAcY6BOS_гQP! BiXP!f a83yٳÜc9ЂZ[]r? @dMRx-s]aPJQ"*B%($˘Ic3TRڲU;v40KQ@ *š_ܻ&EƐZ|05ufNN$޷WO)*"26<~F`-0jњg>IcFoպ ڷ }GQҥKDR0 0Ɛ$ 4 ^>11swqtJ?9z+`Ӎ+$7>>~s`&@)k)Zs}n\< p7~TkMd}->TsZH廩4ޕ+yNےZA!Ak}@cm n>Zk<緫W.<A)Z }b`ýkXkɲ{._:PmF5QA,l y^xy:_/! C"7ZCkM|{-s$O)q&?Zcl޽M[nqߗ ""() myN3IxmrV.#>X k-1\ɇM]WB<+! CCO,C,NZ "Xceȑz 'jϟlL5z]߹ }fZK^ݳ BT$~F9Pw9Lc6LT0m<?gqmsWI%tEXtdate:create2013-06-20T11:07:04+02:00I%tEXtdate:modify2013-06-20T11:07:04+02:00tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/icons/hidpi/subscript.png0000644000201500020150000000365514517055557027557 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(xIDATXOlbG!.& dRPR)j+np^Z5-5 &`B @7_`ꤶ*=3<+y0fhj_`<M(B)5 iabXI=ja8–iύ" @4q:\;Fؘ_ARܤ$T uq~uzi*2@k"0p]7o}}{M%KH'id tvb fEo!t;߼y Lk cخ gOuӽb``H}IѼ;:Wgx|x`ww7w'&6oئG45M,@^ٰY;^n2zQfnuCӓ5gxP2$h_te ¯V O_P.+$_|qH==iӓv6J󘜜dKr"(«T5>cvBjJV#ھ}]*>fvosjZ)>|8rB ӀB)Jll+VRiql4`&jZFP󼑋/~[.1S)BhFq~ |pʕRDAmضM^'JJY;%[qnۜ;x >|rr4 RXl… /;x0mІL!eіrС&|R(ZGJR7n8?Ͱ-,X,y9biGGdzVl10HnKa?r%-4Mf]4fE<@47"]p'֬~q0 +u044gFF>`H?'&(><2ВRE !eX7f Ǚ)nA@^X," Jd2eYITٳJO=D<=jRJb ^bAJrի-[6@& H~3Nfiow`W eU%?5 cVkZ.5*d2X!zh_5tM- Jq}||Њ3Nj>R{~|޽톦Q,h$˭?jh۷vvv?L&!*ΕJ% J)˖E6hy߹sBpҥKwmv2˭}|"<ɱgr;SSSMsqmܲ *y[7onh\ 3N{;#W׿^w}8^TXx1B~ϬXẀTj6E -?^~q㰵ufi2>nIh Iо/y'zJ-[z!Bx@k[EDŽטb.BRX^&Ce28!%b8 !0ĵyea[-B-P7T*E ΀L*EΔW213C^'NL NӺd !Ŕ**T{흫VQ)U(PJq%fT1B`&mGGab/tTr *LvDww g y m%LLLp7$)ia }KcW0o@ AqjC( ?<~xq||499IDQD.\^p=)- ~\34}jJsu###ű8Z q_(nĬփj~W[M)A)5822΅ _|y^r98j*ɵmg 4ŋ\|mjjj<={c{hwÆãzx\~grrްF:IP*=7|N߁e|y͵ۃ_}u )y7zKy{#7L1i|{L|IÐ~|g@kT>* Bia۳J' I>*ZV*5kHmlӜb!7.HEhXlIbyrBr%tEXtdate:create2013-06-20T11:07:04+02:00I%tEXtdate:modify2013-06-20T11:07:04+02:00tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/icons/hidpi/strike.png0000644000201500020150000000417314517055557027036 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(xIDATXŗm>/;;;IbbZ1/QjR~W-~JQD*R%B[- ~Ē~Ph .&Ub⮛lfyyޟ{af6fw@.<3=Ε+] "7D, %\cƐ)YʒPk3J@u]T6ͷ6hV֤i x~kmv;74%RR\ټ|}'Ii<>#`VV?44744(mP.cDz$MVfygG{[ Cn4|0ܽt X,T yo㎯zE2m2ld5`?4$x z(Is9,(` 2NooijbvKbƍrșG&fdݺi _hPhԇ9PJa)C\kLLMxeV ɠ cY̜?OR SSհ3׌-Va8W1iK),]]]뮻>8tֽ{\.Qgt,Dql'&;q3{i366CZT pJ);R;,Z/sX%J)D)(EGM%k^_ y15I~&T;8m[H`u],|\.8ضRJ:s(bVSjU{G5#ǎ|i}@T*1]Ϸ=.ɢÇ壏>R===e aJ\{'_q.Z\w);wHc۷Oei֜ y>۲.1E$A@(RB)Eh!q)IrOi-J9$s}7Z v6r݋Zcm*)y'_M^ (" C(D7>LMM199)]]]fʕX G+!}嗏gJ%2`!n5w;6lгaÆn8j` t)mgdH >faZeϣRvY@S)ӹ1jFiMVCgM>_ Ee}Ժz eЌuՑkzR;.R^}E<̕+ޥ캨0ƀ ֘ȝJ) 2۶&߾k~ O{RZZBGj @!:2>rj1x<8dYRxIv޽g7徛T\-nÐB|y^@3338y䎑4RJ==<~br{˾lV7McZS,LdÇ?KT*H)QJcHb =Y5wgZA6rS;-!y%J) s]LPC;vLf{!J]k!rwEXD)F%X  8;@#Q{zSS[W}91aHRV?ցGd' M!LRLN ?|N&߿_XEP̧n]_>N$BjH'۶8l"͢D!ANW?\ۙ Zr+aEJ?czʸSpx](kʰhͅ0 jaؘ$keBx93 ԂM ;DeR=zoR |>?`ݲ%fcbbBܸyW[q]B)J@JIaq1:tOR`__RbϞtʱ{%a#l~8 ,~cqqN+Z𥑑mcX `ӭRвj6[wPF|ĉYRjj&n7-;Ѧ$>z28H;vsu;KKK;<j5LU  o[d R B}tTLXARi6h(s"@btt X"THًR#SZ#4R )%߻w /䁿ԥDbmrܝin {, !D1-ZR(xg>ū.=O5S`x">Dy\+ԩر'et4|t"*u.&r2t /gg,_Ϝ9 C)D}׀ӗ_{\"klū1xsKbq!ۋLnt"}W7MX ;lڲ64Bxmoz\Bp8P2%tEXtdate:create2013-06-20T11:07:04+02:00I%tEXtdate:modify2013-06-20T11:07:04+02:00tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/icons/italic.png0000644000201500020150000000130414517055557025676 0ustar puckpuckPNG  IHDRabKGD pHYs B(xIDAT8unA;;^Įŏqe7yHXNtӸ9>)ȉ,QH ,xa'Miw=sGFRhQJ+k-ZsxѻJ)8Pi\.޳Wf ދH{0|W7={o///kqc!MSm9ιj4M~dX0 n:N9VG6\ڿD5ވ y4J)DdSW899V+$yf{DD^\\\ܭkyV~\nAay3`>Yk7JFc1{ J)(j!"7"'I] "rwxxXzہ@nɤ0:qQ!r9{Nc9,ȁQe,oA؈Րh %tEXtdate:create2013-07-04T17:03:03+02:00Mx%tEXtdate:modify2013-07-04T17:03:03+02:00<tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/icons/subscript.png0000644000201500020150000000144614517055557026456 0ustar puckpuckPNG  IHDRabKGD pHYs B(x?IDAT8˥oRQ?+ɣ.&`MӤS:t?a`Lutd@)@Gy8Ah7.s~ s"1c ARLU hT* шLD 1MUb2 @3%p%tEXtdate:create2013-07-04T17:03:03+02:00Mx%tEXtdate:modify2013-07-04T17:03:03+02:00<tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/icons/superscript.png0000644000201500020150000000153314517055557027020 0ustar puckpuckPNG  IHDRabKGD pHYs B(xtIDAT8ˍMKQ{#3lJ$Y躵B~JPp(teqe+Mmą!jc#B;Dg̼]%Y=/ܣRh1 5yeR8 4%"#0, 0nEa`&eQ,qRJRbYVgll S)ie\~@Tu]e!" ӆa`j)RJH^,mn.P5@V{*"k@v:@QD"Z(F;~i8r'^%tEXtdate:create2013-07-04T17:03:03+02:00Mx%tEXtdate:modify2013-07-04T17:03:03+02:00<tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/icons/strike.png0000644000201500020150000000155714517055557025744 0ustar puckpuckPNG  IHDRabKGD pHYs B(xIDAT8}S=KQ~^1&D^Dp(D6K; ] pp .]:t(-"NTZh1D&ァC Yιy9<, I(R 3k- "= Zcbbxjf c iR`H~$dd'/I:D&ɷtJ)clߟ-wh =Rԋz=lmmt:-8::fhg$# d2'|1)Dd0:ID,..`!m,Ykh4P(q0(t־;9r{L%>x.jp@PH֣z-"t: ///U$RJvwwZ qvvA-+b1h6899p^zCnTk H~ dddj<Z-c~c~~Z*JZ u2677 jU6PLJ)T*1:ɤƆ<~X|oh=X DוlTƣa %³%tEXtdate:create2013-07-04T17:03:03+02:00Mx%tEXtdate:modify2013-07-04T17:03:03+02:00<tEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/ckeditor-src/plugins/basicstyles/icons/bold.png0000644000201500020150000000145514517055557025360 0ustar puckpuckPNG  IHDRabKGD pHYs B(xFIDAT8uKQvyQR )bIP@M@9 E Á 0AMi<jf9<<@D0yq9CUAc aRT0p]\\1ZT^yyW~&""ADezMX^^&sZi:F$yQWD䥪J}\;ih4tss=11JvڞP809"IUn{*J""DdQDctkkO$M }\.0djj Uemm^V%I1PU startSize.width && ( config.resize_minWidth = startSize.width ); config.resize_minHeight > startSize.height && ( config.resize_minHeight = startSize.height ); CKEDITOR.document.on( 'mousemove', dragHandler ); CKEDITOR.document.on( 'mouseup', dragEndHandler ); if ( editor.document ) { editor.document.on( 'mousemove', dragHandler ); editor.document.on( 'mouseup', dragEndHandler ); } $event.preventDefault && $event.preventDefault(); } ); editor.on( 'destroy', function() { CKEDITOR.tools.removeFunction( mouseDownFn ); } ); editor.on( 'uiSpace', function( event ) { if ( event.data.space == 'bottom' ) { var direction = ''; if ( resizeHorizontal && !resizeVertical ) direction = ' cke_resizer_horizontal'; if ( !resizeHorizontal && resizeVertical ) direction = ' cke_resizer_vertical'; var resizerHtml = '' + // BLACK LOWER RIGHT TRIANGLE (ltr) // BLACK LOWER LEFT TRIANGLE (rtl) ( resizeDir == 'ltr' ? '\u25E2' : '\u25E3' ) + '
    '; // Always sticks the corner of botttom space. resizeDir == 'ltr' && direction == 'ltr' ? event.data.html += resizerHtml : event.data.html = resizerHtml + event.data.html; } }, editor, null, 100 ); // Toggle the visibility of the resizer when an editor is being maximized or minimized. editor.on( 'maximize', function( event ) { editor.ui.space( 'resizer' )[ event.data == CKEDITOR.TRISTATE_ON ? 'hide' : 'show' ](); } ); } } } ); /** * The minimum editor width, in pixels, when resizing the editor interface by using the resize handle. * Note: It falls back to editor's actual width if it is smaller than the default value. * * config.resize_minWidth = 500; * * @cfg {Number} [resize_minWidth=750] * @member CKEDITOR.config */ /** * The minimum editor height, in pixels, when resizing the editor interface by using the resize handle. * Note: It falls back to editor's actual height if it is smaller than the default value. * * config.resize_minHeight = 600; * * @cfg {Number} [resize_minHeight=250] * @member CKEDITOR.config */ /** * The maximum editor width, in pixels, when resizing the editor interface by using the resize handle. * * config.resize_maxWidth = 750; * * @cfg {Number} [resize_maxWidth=3000] * @member CKEDITOR.config */ /** * The maximum editor height, in pixels, when resizing the editor interface by using the resize handle. * * config.resize_maxHeight = 600; * * @cfg {Number} [resize_maxHeight=3000] * @member CKEDITOR.config */ /** * Whether to enable the resizing feature. If this feature is disabled, the resize handle will not be visible. * * config.resize_enabled = false; * * @cfg {Boolean} [resize_enabled=true] * @member CKEDITOR.config */ /** * The dimensions for which the editor resizing is enabled. Possible values * are `both`, `vertical`, and `horizontal`. * * config.resize_dir = 'both'; * * @since 3.3 * @cfg {String} [resize_dir='vertical'] * @member CKEDITOR.config */ rt-4.4.7/devel/third-party/ckeditor-src/plugins/xml/0000755000201500020150000000000014517055560021057 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/xml/plugin.js0000644000201500020150000001227514517055560022722 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ /** * @fileOverview Defines the {@link CKEDITOR.xml} class, which represents a * loaded XML document. */ ( function() { /* global ActiveXObject */ CKEDITOR.plugins.add( 'xml', {} ); /** * Represents a loaded XML document. * * var xml = new CKEDITOR.xml( '' ); * * @class * @constructor Creates xml class instance. * @param {Object/String} xmlObjectOrData A native XML (DOM document) object or * a string containing the XML definition to be loaded. */ CKEDITOR.xml = function( xmlObjectOrData ) { var baseXml = null; if ( typeof xmlObjectOrData == 'object' ) baseXml = xmlObjectOrData; else { var data = ( xmlObjectOrData || '' ).replace( / /g, '\xA0' ); // Check ActiveXObject before DOMParser, because IE10+ support both, but // there's no XPath support in DOMParser instance. // Also, the only check for ActiveXObject which still works in IE11+ is with `in` operator. if ( 'ActiveXObject' in window ) { try { baseXml = new ActiveXObject( 'MSXML2.DOMDocument' ); } catch ( e ) { try { baseXml = new ActiveXObject( 'Microsoft.XmlDom' ); } catch ( err ) {} } if ( baseXml ) { baseXml.async = false; baseXml.resolveExternals = false; baseXml.validateOnParse = false; baseXml.loadXML( data ); } } else if ( window.DOMParser ) { baseXml = ( new DOMParser() ).parseFromString( data, 'text/xml' ); } } /** * The native XML (DOM document) used by the class instance. * * @property {Object} */ this.baseXml = baseXml; }; CKEDITOR.xml.prototype = { /** * Get a single node from the XML document, based on a XPath query. * * // Create the XML instance. * var xml = new CKEDITOR.xml( '' ); * // Get the first node. * var itemNode = xml.selectSingleNode( 'list/item' ); * // Alert "item". * alert( itemNode.nodeName ); * * @param {String} xpath The XPath query to execute. * @param {Object} [contextNode] The XML DOM node to be used as the context * for the XPath query. The document root is used by default. * @returns {Object} A XML node element or null if the query has no results. */ selectSingleNode: function( xpath, contextNode ) { var baseXml = this.baseXml; if ( contextNode || ( contextNode = baseXml ) ) { if ( 'selectSingleNode' in contextNode ) // IEs return contextNode.selectSingleNode( xpath ); else if ( baseXml.evaluate ) { // Others var result = baseXml.evaluate( xpath, contextNode, null, 9, null ); return ( result && result.singleNodeValue ) || null; } } return null; }, /** * Gets a list node from the XML document, based on a XPath query. * * // Create the XML instance. * var xml = new CKEDITOR.xml( '' ); * // Get all nodes. * var itemNodes = xml.selectNodes( 'list/item' ); * // Alert "item" twice, one for each . * for ( var i = 0; i < itemNodes.length; i++ ) * alert( itemNodes[i].nodeName ); * * @param {String} xpath The XPath query to execute. * @param {Object} [contextNode] The XML DOM node to be used as the context * for the XPath query. The document root is used by default. * @returns {Array} An array containing all matched nodes. The array will * be empty if the query has no results. */ selectNodes: function( xpath, contextNode ) { var baseXml = this.baseXml, nodes = []; if ( contextNode || ( contextNode = baseXml ) ) { if ( 'selectNodes' in contextNode ) // IEs return contextNode.selectNodes( xpath ); else if ( baseXml.evaluate ) { // Others var result = baseXml.evaluate( xpath, contextNode, null, 5, null ); if ( result ) { var node; while ( ( node = result.iterateNext() ) ) nodes.push( node ); } } } return nodes; }, /** * Gets the string representation of hte inner contents of a XML node, * based on a XPath query. * * // Create the XML instance. * var xml = new CKEDITOR.xml( '' ); * // Alert "". * alert( xml.getInnerXml( 'list' ) ); * * @param {String} xpath The XPath query to execute. * @param {Object} [contextNode] The XML DOM node to be used as the context * for the XPath query. The document root is used by default. * @returns {String} The textual representation of the inner contents of * the node or null if the query has no results. */ getInnerXml: function( xpath, contextNode ) { var node = this.selectSingleNode( xpath, contextNode ), xml = []; if ( node ) { node = node.firstChild; while ( node ) { if ( node.xml ) // IEs xml.push( node.xml ); else if ( window.XMLSerializer ) // Others xml.push( ( new XMLSerializer() ).serializeToString( node ) ); node = node.nextSibling; } } return xml.length ? xml.join( '' ) : null; } }; } )(); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/0000755000201500020150000000000014517055560022747 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/plugin.js0000644000201500020150000004562414517055560024616 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ 'use strict'; ( function() { CKEDITOR.plugins.add( 'uploadwidget', { lang: 'cs,da,de,en,eo,fr,gl,hu,it,ko,ku,nb,nl,pl,pt-br,ru,sv,tr,zh,zh-cn', // %REMOVE_LINE_CORE% requires: 'widget,clipboard,filetools,notificationaggregator', init: function( editor ) { // Images which should be changed into upload widget needs to be marked with `data-widget` on paste, // because otherwise wrong widget may handle upload placeholder element (e.g. image2 plugin would handle image). // `data-widget` attribute is allowed only in the elements which has also `data-cke-upload-id` attribute. editor.filter.allow( '*[!data-widget,!data-cke-upload-id]' ); } } ); /** * This function creates an upload widget — a placeholder to show the progress of an upload. The upload widget * is based on its {@link CKEDITOR.fileTools.uploadWidgetDefinition definition}. The `addUploadWidget` method also * creates a `paste` event, if the {@link CKEDITOR.fileTools.uploadWidgetDefinition#fileToElement fileToElement} method * is defined. This event helps in handling pasted files, as it will automatically check if the files were pasted and * mark them to be uploaded. * * The upload widget helps to handle content that is uploaded asynchronously inside the editor. It solves issues such as: * editing during upload, undo manager integration, getting data, removing or copying uploaded element. * * To create an upload widget you need to define two transformation methods: * * * The {@link CKEDITOR.fileTools.uploadWidgetDefinition#fileToElement fileToElement} method which will be called on * `paste` and transform a file into a placeholder. * * The {@link CKEDITOR.fileTools.uploadWidgetDefinition#onUploaded onUploaded} method with * the {@link CKEDITOR.fileTools.uploadWidgetDefinition#replaceWith replaceWith} method which will be called to replace * the upload placeholder with the final HTML when the upload is done. * If you want to show more information about the progress you can also define * the {@link CKEDITOR.fileTools.uploadWidgetDefinition#onLoading onLoading} and * {@link CKEDITOR.fileTools.uploadWidgetDefinition#onUploading onUploading} methods. * * The simplest uploading widget which uploads a file and creates a link to it may look like this: * * CKEDITOR.fileTools.addUploadWidget( editor, 'uploadfile', { * uploadUrl: CKEDITOR.fileTools.getUploadUrl( editor.config ), * * fileToElement: function( file ) { * var a = new CKEDITOR.dom.element( 'a' ); * a.setText( file.name ); * a.setAttribute( 'href', '#' ); * return a; * }, * * onUploaded: function( upload ) { * this.replaceWith( '' + upload.fileName + '' ); * } * } ); * * The upload widget uses {@link CKEDITOR.fileTools.fileLoader} as a helper to upload the file. A * {@link CKEDITOR.fileTools.fileLoader} instance is created when the file is pasted and a proper method is * called — by default it is the {@link CKEDITOR.fileTools.fileLoader#loadAndUpload} method. If you want * to only use the `load` or `upload`, you can use the {@link CKEDITOR.fileTools.uploadWidgetDefinition#loadMethod loadMethod} * property. * * Note that if you want to handle a big file, e.g. a video, you may need to use `upload` instead of * `loadAndUpload` because the file may be too big to load it to memory at once. * * If you do not upload the file, you need to define {@link CKEDITOR.fileTools.uploadWidgetDefinition#onLoaded onLoaded} * instead of {@link CKEDITOR.fileTools.uploadWidgetDefinition#onUploaded onUploaded}. * For example, if you want to read the content of the file: * * CKEDITOR.fileTools.addUploadWidget( editor, 'fileReader', { * loadMethod: 'load', * supportedTypes: /text\/(plain|html)/, * * fileToElement: function( file ) { * var el = new CKEDITOR.dom.element( 'span' ); * el.setText( '...' ); * return el; * }, * * onLoaded: function( loader ) { * this.replaceWith( atob( loader.data.split( ',' )[ 1 ] ) ); * } * } ); * * If you need custom `paste` handling you need to mark the pasted element to be changed into an upload widget * using {@link CKEDITOR.fileTools#markElement markElement}. For example, instead of the `fileToElement` helper from the * example above, a `paste` listener can be created manually: * * editor.on( 'paste', function( evt ) { * var file, i, el, loader; * * for ( i = 0; i < evt.data.dataTransfer.getFilesCount(); i++ ) { * file = evt.data.dataTransfer.getFile( i ); * * if ( CKEDITOR.fileTools.isTypeSupported( file, /text\/(plain|html)/ ) ) { * el = new CKEDITOR.dom.element( 'span' ), * loader = editor.uploadRepository.create( file ); * * el.setText( '...' ); * * loader.load(); * * CKEDITOR.fileTools.markElement( el, 'filereader', loader.id ); * * evt.data.dataValue += el.getOuterHtml(); * } * } * } ); * * Note that you can bind notifications to the upload widget on paste using * the {@link CKEDITOR.fileTools#bindNotifications} method, so notifications will automatically * show the progress of the upload. Because this method shows notifications about upload, do not use it if you only * {@link CKEDITOR.fileTools.fileLoader#load load} (and not upload) a file. * * editor.on( 'paste', function( evt ) { * var file, i, el, loader; * * for ( i = 0; i < evt.data.dataTransfer.getFilesCount(); i++ ) { * file = evt.data.dataTransfer.getFile( i ); * * if ( CKEDITOR.fileTools.isTypeSupported( file, /text\/pdf/ ) ) { * el = new CKEDITOR.dom.element( 'span' ), * loader = editor.uploadRepository.create( file ); * * el.setText( '...' ); * * loader.upload(); * * CKEDITOR.fileTools.markElement( el, 'pdfuploader', loader.id ); * * CKEDITOR.fileTools.bindNotifications( editor, loader ); * * evt.data.dataValue += el.getOuterHtml(); * } * } * } ); * * @member CKEDITOR.fileTools * @param {CKEDITOR.editor} editor The editor instance. * @param {String} name The name of the upload widget. * @param {CKEDITOR.fileTools.uploadWidgetDefinition} def Upload widget definition. */ function addUploadWidget( editor, name, def ) { var fileTools = CKEDITOR.fileTools, uploads = editor.uploadRepository, // Plugins which support all file type has lower priority than plugins which support specific types. priority = def.supportedTypes ? 10 : 20; if ( def.fileToElement ) { editor.on( 'paste', function( evt ) { var data = evt.data, dataTransfer = data.dataTransfer, filesCount = dataTransfer.getFilesCount(), loadMethod = def.loadMethod || 'loadAndUpload', file, i; if ( data.dataValue || !filesCount ) { return; } for ( i = 0; i < filesCount; i++ ) { file = dataTransfer.getFile( i ); // No def.supportedTypes means all types are supported. if ( !def.supportedTypes || fileTools.isTypeSupported( file, def.supportedTypes ) ) { var el = def.fileToElement( file ), loader = uploads.create( file ); if ( el ) { loader[ loadMethod ]( def.uploadUrl ); CKEDITOR.fileTools.markElement( el, name, loader.id ); if ( loadMethod == 'loadAndUpload' || loadMethod == 'upload' ) { CKEDITOR.fileTools.bindNotifications( editor, loader ); } data.dataValue += el.getOuterHtml(); } } } }, null, null, priority ); } /** * This is an abstract class that describes a definition of an upload widget. * It is a type of {@link CKEDITOR.fileTools#addUploadWidget} method's second argument. * * Note that because the upload widget is a type of a widget, this definition extends * {@link CKEDITOR.plugins.widget.definition}. * It adds several new properties and callbacks and implements the {@link CKEDITOR.plugins.widget.definition#downcast} * and {@link CKEDITOR.plugins.widget.definition#init} callbacks. These two properties * should not be overwritten. * * Also, the upload widget definition defines a few properties ({@link #fileToElement}, {@link #supportedTypes}, * {@link #loadMethod loadMethod} and {@link #uploadUrl}) used in the {@link CKEDITOR.editor#paste} listener * which is registered by {@link CKEDITOR.fileTools#addUploadWidget} if the upload widget definition contains * the {@link #fileToElement} callback. * * @abstract * @class CKEDITOR.fileTools.uploadWidgetDefinition * @mixins CKEDITOR.plugins.widget.definition */ CKEDITOR.tools.extend( def, { /** * Upload widget definition overwrites the {@link CKEDITOR.plugins.widget.definition#downcast} property. * This should not be changed. * * @property {String/Function} */ downcast: function() { return new CKEDITOR.htmlParser.text( '' ); }, /** * Upload widget definition overwrites the {@link CKEDITOR.plugins.widget.definition#init} property. * If you want to add some code in the `init` callback remember to call the base function. * * @property {Function} */ init: function() { var widget = this, id = this.wrapper.findOne( '[data-cke-upload-id]' ).data( 'cke-upload-id' ), loader = uploads.loaders[ id ], capitalize = CKEDITOR.tools.capitalize, oldStyle, newStyle; loader.on( 'update', function( evt ) { // Abort if widget was removed. if ( !widget.wrapper || !widget.wrapper.getParent() ) { if ( !editor.editable().find( '[data-cke-upload-id="' + id + '"]' ).count() ) { loader.abort(); } evt.removeListener(); return; } editor.fire( 'lockSnapshot' ); // Call users method, eg. if the status is `uploaded` then // `onUploaded` method will be called, if exists. var methodName = 'on' + capitalize( loader.status ); if ( typeof widget[ methodName ] === 'function' ) { if ( widget[ methodName ]( loader ) === false ) { editor.fire( 'unlockSnapshot' ); return; } } // Set style to the wrapper if it still exists. newStyle = 'cke_upload_' + loader.status; if ( widget.wrapper && newStyle != oldStyle ) { oldStyle && widget.wrapper.removeClass( oldStyle ); widget.wrapper.addClass( newStyle ); oldStyle = newStyle; } // Remove widget on error or abort. if ( loader.status == 'error' || loader.status == 'abort' ) { editor.widgets.del( widget ); } editor.fire( 'unlockSnapshot' ); } ); loader.update(); }, /** * Replaces the upload widget with the final HTML. This method should be called when the upload is done, * usually in the {@link #onUploaded} callback. * * @property {Function} * @param {String} data HTML to replace the upload widget. * @param {String} [mode='html'] See {@link CKEDITOR.editor#method-insertHtml}'s modes. */ replaceWith: function( data, mode ) { if ( data.trim() === '' ) { editor.widgets.del( this ); return; } var wasSelected = ( this == editor.widgets.focused ), editable = editor.editable(), range = editor.createRange(), bookmark, bookmarks; if ( !wasSelected ) { bookmarks = editor.getSelection().createBookmarks(); } range.setStartBefore( this.wrapper ); range.setEndAfter( this.wrapper ); if ( wasSelected ) { bookmark = range.createBookmark(); } editable.insertHtmlIntoRange( data, range, mode ); editor.widgets.checkWidgets( { initOnlyNew: true } ); // Ensure that old widgets instance will be removed. // If replaceWith is called in init, because of paste then checkWidgets will not remove it. editor.widgets.destroy( this, true ); if ( wasSelected ) { range.moveToBookmark( bookmark ); range.select(); } else { editor.getSelection().selectBookmarks( bookmarks ); } } /** * If this property is defined, paste listener is created to transform the pasted file into an HTML element. * It creates an HTML element which will be then transformed into an upload widget. * It is only called for {@link #supportedTypes supported files}. * If multiple files were pasted, this function will be called for each file of a supported type. * * @property {Function} fileToElement * @param {Blob} file A pasted file to load or upload. * @returns {CKEDITOR.dom.element} An element which will be transformed into the upload widget. */ /** * Regular expression to check if the file type is supported by this widget. * If not defined, all files will be handled. * * @property {String} [supportedTypes] */ /** * The URL to which the file will be uploaded. It should be taken from the configuration using * {@link CKEDITOR.fileTools#getUploadUrl}. * * @property {String} [uploadUrl] */ /** * The type of loading operation that should be executed as a result of pasting a file. Possible options are: * * * 'loadAndUpload' – Default behavior, the {@link CKEDITOR.fileTools.fileLoader#loadAndUpload} method will be * executed, the file will be loaded first and uploaded immediately after loading is done. * * 'load' – The {@link CKEDITOR.fileTools.fileLoader#load} method will be executed. This loading type should * be used if you only want to load file data without uploading it. * * 'upload' – The {@link CKEDITOR.fileTools.fileLoader#upload} method will be executed, the file will be uploaded * without loading it to memory. This loading type should be used if you want to upload a big file, * otherwise you can get an "out of memory" error. * * @property {String} [loadMethod=loadAndUpload] */ /** * A function called when the {@link CKEDITOR.fileTools.fileLoader#status status} of the upload changes to `loading`. * * @property {Function} [onLoading] * @param {CKEDITOR.fileTools.fileLoader} loader Loader instance. * @returns {Boolean} */ /** * A function called when the {@link CKEDITOR.fileTools.fileLoader#status status} of the upload changes to `loaded`. * * @property {Function} [onLoaded] * @param {CKEDITOR.fileTools.fileLoader} loader Loader instance. * @returns {Boolean} */ /** * A function called when the {@link CKEDITOR.fileTools.fileLoader#status status} of the upload changes to `uploading`. * * @property {Function} [onUploading] * @param {CKEDITOR.fileTools.fileLoader} loader Loader instance. * @returns {Boolean} */ /** * A function called when the {@link CKEDITOR.fileTools.fileLoader#status status} of the upload changes to `uploaded`. * At that point the upload is done and the upload widget should be replaced with the final HTML using * the {@link #replaceWith} method. * * @property {Function} [onUploaded] * @param {CKEDITOR.fileTools.fileLoader} loader Loader instance. * @returns {Boolean} */ /** * A function called when the {@link CKEDITOR.fileTools.fileLoader#status status} of the upload changes to `error`. * The default behavior is to remove the widget and it can be canceled if this function returns `false`. * * @property {Function} [onError] * @param {CKEDITOR.fileTools.fileLoader} loader Loader instance. * @returns {Boolean} If `false`, the default behavior (remove widget) will be canceled. */ /** * A function called when the {@link CKEDITOR.fileTools.fileLoader#status status} of the upload changes to `abort`. * The default behavior is to remove the widget and it can be canceled if this function returns `false`. * * @property {Function} [onAbort] * @param {CKEDITOR.fileTools.fileLoader} loader Loader instance. * @returns {Boolean} If `false`, the default behavior (remove widget) will be canceled. */ } ); editor.widgets.add( name, def ); } /** * Marks an element which should be transformed into an upload widget. * * @see CKEDITOR.fileTools.addUploadWidget * * @member CKEDITOR.fileTools * @param {CKEDITOR.dom.element} element Element to be marked. * @param {String} widgetName The name of the upload widget. * @param {Number} loaderId The ID of a related {@link CKEDITOR.fileTools.fileLoader}. */ function markElement( element, widgetName, loaderId ) { element.setAttributes( { 'data-cke-upload-id': loaderId, 'data-widget': widgetName } ); } /** * Binds a notification to the {@link CKEDITOR.fileTools.fileLoader file loader} so the upload widget will use * the notification to show the status and progress. * This function uses {@link CKEDITOR.plugins.notificationAggregator}, so even if multiple files are uploading * only one notification is shown. Warnings are an exception, because they are shown in separate notifications. * This notification shows only the progress of the upload, so this method should not be used if * the {@link CKEDITOR.fileTools.fileLoader#load loader.load} method was called. It works with * {@link CKEDITOR.fileTools.fileLoader#upload upload} and {@link CKEDITOR.fileTools.fileLoader#loadAndUpload loadAndUpload}. * * @member CKEDITOR.fileTools * @param {CKEDITOR.editor} editor The editor instance. * @param {CKEDITOR.fileTools.fileLoader} loader The file loader instance. */ function bindNotifications( editor, loader ) { var aggregator = editor._.uploadWidgetNotificaionAggregator; // Create one notification agregator for all types of upload widgets for the editor. if ( !aggregator || aggregator.isFinished() ) { aggregator = editor._.uploadWidgetNotificaionAggregator = new CKEDITOR.plugins.notificationAggregator( editor, editor.lang.uploadwidget.uploadMany, editor.lang.uploadwidget.uploadOne ); aggregator.once( 'finished', function() { var tasks = aggregator.getTaskCount(); if ( tasks === 0 ) { aggregator.notification.hide(); } else { aggregator.notification.update( { message: tasks == 1 ? editor.lang.uploadwidget.doneOne : editor.lang.uploadwidget.doneMany.replace( '%1', tasks ), type: 'success', important: 1 } ); } } ); } var task = aggregator.createTask( { weight: loader.total } ); loader.on( 'update', function() { if ( task && loader.status == 'uploading' ) { task.update( loader.uploaded ); } } ); loader.on( 'uploaded', function() { task && task.done(); } ); loader.on( 'error', function() { task && task.cancel(); editor.showNotification( loader.message, 'warning' ); } ); loader.on( 'abort', function() { task && task.cancel(); editor.showNotification( editor.lang.uploadwidget.abort, 'info' ); } ); } // Two plugins extend this object. if ( !CKEDITOR.fileTools ) { CKEDITOR.fileTools = {}; } CKEDITOR.tools.extend( CKEDITOR.fileTools, { addUploadWidget: addUploadWidget, markElement: markElement, bindNotifications: bindNotifications } ); } )(); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/dev/0000755000201500020150000000000014517055560023525 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/dev/filereaderplugin.js0000644000201500020150000000257314517055560027413 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ 'use strict'; ( function() { CKEDITOR.plugins.add( 'filereader', { requires: 'uploadwidget', init: function( editor ) { var fileTools = CKEDITOR.fileTools; fileTools.addUploadWidget( editor, 'filereader', { onLoaded: function( upload ) { var data = upload.data; if ( data && data.indexOf( ',' ) >= 0 && data.indexOf( ',' ) < data.length - 1 ) { this.replaceWith( atob( upload.data.split( ',' )[ 1 ] ) ); } else { editor.widgets.del( this ); } } } ); editor.on( 'paste', function( evt ) { var data = evt.data, dataTransfer = data.dataTransfer, filesCount = dataTransfer.getFilesCount(), file, i; if ( data.dataValue || !filesCount ) { return; } for ( i = 0; i < filesCount; i++ ) { file = dataTransfer.getFile( i ); if ( fileTools.isTypeSupported( file, /text\/(plain|html)/ ) ) { var el = new CKEDITOR.dom.element( 'span' ), loader = editor.uploadRepository.create( file ); el.setText( '...' ); loader.load(); fileTools.markElement( el, 'filereader', loader.id ); fileTools.bindNotifications( editor, loader ); data.dataValue += el.getOuterHtml(); } } } ); } } ); } )(); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/dev/cors.html0000644000201500020150000001365014517055560025366 0ustar puckpuck CORS sample

    CORS sample

    rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/dev/upload.html0000644000201500020150000002427614517055560025712 0ustar puckpuck Upload image dev sample

    Upload image dev sample

    Saturn V carrying Apollo 11 Apollo 11

    Apollo 11 was the spaceflight that landed the first humans, Americans Neil Armstrong and Buzz Aldrin, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.

    Armstrong spent about three and a half two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5 kg) of lunar material for return to Earth. A third member of the mission, Michael Collins, piloted the command spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.

    Broadcasting and quotes

    Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:

    One small step for [a] man, one giant leap for mankind.

    Apollo 11 effectively ended the Space Race and fulfilled a national goal proposed in 1961 by the late U.S. President John F. Kennedy in a speech before the United States Congress:

    [...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.

    Technical details

    Mission crew
    Position Astronaut
    Commander Neil A. Armstrong
    Command Module Pilot Michael Collins
    Lunar Module Pilot Edwin "Buzz" E. Aldrin, Jr.

    Launched by a Saturn V rocket from Kennedy Space Center in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of NASA's Apollo program. The Apollo spacecraft had three parts:

    1. Command Module with a cabin for the three astronauts which was the only part which landed back on Earth
    2. Service Module which supported the Command Module with propulsion, electrical power, oxygen and water
    3. Lunar Module for landing on the Moon.

    After being sent to the Moon by the Saturn V's upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the Sea of Tranquility. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the Pacific Ocean on July 24.


    Source: Wikipedia.org

    rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/0000755000201500020150000000000014517055560023670 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/zh.js0000644000201500020150000000073514517055560024654 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'zh', { abort: '上傳由使用者放棄。', doneOne: '檔案成功上傳。', doneMany: '成功上傳 %1 檔案。', uploadOne: '正在上傳檔案({percentage}%)...', uploadMany: '正在上傳檔案,{max} 中的 {current} 已完成({percentage}%)...' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/nb.js0000644000201500020150000000074214517055560024630 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'nb', { abort: 'Opplasting ble avbrutt av brukeren.', doneOne: 'Filen har blitt lastet opp.', doneMany: 'Fullført opplasting av %1 filer.', uploadOne: 'Laster opp fil ({percentage}%)...', uploadMany: 'Laster opp filer, {current} av {max} fullført ({percentage}%)...' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/eo.js0000644000201500020150000000073614517055560024637 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'eo', { abort: 'Alŝuto ĉesigita de la uzanto', doneOne: 'Dosiero sukcese alŝutita.', doneMany: 'Sukcese alŝutitaj %1 dosieroj.', uploadOne: 'alŝutata dosiero ({percentage}%)...', uploadMany: 'Alŝutataj dosieroj, {current} el {max} faritaj ({percentage}%)...' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/it.js0000644000201500020150000000100414517055560024635 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'it', { abort: 'Caricamento interrotto dall\'utente.', doneOne: 'Il file è stato caricato correttamente.', doneMany: '%1 file sono stati caricati correttamente.', uploadOne: 'Caricamento del file ({percentage}%)...', uploadMany: 'Caricamento dei file, {current} di {max} completati ({percentage}%)...' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/ko.js0000644000201500020150000000105514517055560024640 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'ko', { abort: '사용자가 업로드를 중단했습니다.', doneOne: '파일이 성공적으로 업로드되었습니다.', doneMany: '파일 %1개를 성공적으로 업로드하였습니다.', uploadOne: '파일 업로드중 ({percentage}%)...', uploadMany: '파일 {max} 개 중 {current} 번째 파일 업로드 중 ({percentage}%)...' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/zh-cn.js0000644000201500020150000000074214517055560025250 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'zh-cn', { abort: '上传已被用户中止。', doneOne: '文件上传成功。', doneMany: '成功上传了 %1 个文件。', uploadOne: '正在上传文件({percentage}%)……', uploadMany: '正在上传文件,{max} 中的 {current}({percentage}%)……' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/sv.js0000644000201500020150000000073714517055560024665 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'sv', { abort: 'Uppladdning avbruten av användaren.', doneOne: 'Filuppladdning lyckades.', doneMany: 'Uppladdning av %1 filer lyckades.', uploadOne: 'Laddar upp fil ({percentage}%)...', uploadMany: 'Laddar upp filer, {current} av {max} färdiga ({percentage}%)...' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/pl.js0000644000201500020150000000075214517055560024645 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'pl', { abort: 'Wysyłanie przerwane przez użytkownika.', doneOne: 'Plik został pomyślnie wysłany.', doneMany: 'Pomyślnie wysłane pliki: %1.', uploadOne: 'Wysyłanie pliku ({percentage}%)...', uploadMany: 'Wysyłanie plików, gotowe {current} z {max} ({percentage}%)...' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/ku.js0000644000201500020150000000114314517055560024644 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'ku', { abort: 'بارکردنەکە بڕدرا لەلایەن بەکارهێنەر.', doneOne: 'پەڕگەکە بەسەرکەوتووانە بارکرا.', doneMany: 'بەسەرکەوتووانە بارکرا %1 پەڕگە.', uploadOne: 'پەڕگە باردەکرێت ({percentage}%)...', uploadMany: 'پەڕگە باردەکرێت, {current} لە {max} ئەنجامدراوە ({percentage}%)...' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/ru.js0000644000201500020150000000107314517055560024655 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'ru', { abort: 'Загрузка отменена пользователем', doneOne: 'Файл успешно загружен', doneMany: 'Успешно загружено файлов: %1', uploadOne: 'Загрузка файла ({percentage}%)', uploadMany: 'Загрузка файлов, {current} из {max} загружено ({percentage}%)...' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/gl.js0000644000201500020150000000076614517055560024641 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'gl', { abort: 'Envío interrompido polo usuario.', doneOne: 'Ficheiro enviado satisfactoriamente.', doneMany: '%1 ficheiros enviados satisfactoriamente.', uploadOne: 'Enviando o ficheiro ({percentage}%)...', uploadMany: 'Enviando ficheiros, {current} de {max} feito o ({percentage}%)...' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/pt-br.js0000644000201500020150000000074314517055560025256 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'pt-br', { abort: 'Envio cancelado pelo usuário.', doneOne: 'Arquivo enviado com sucesso.', doneMany: 'Enviados %1 arquivos com sucesso.', uploadOne: 'Enviando arquivo({percentage}%)...', uploadMany: 'Enviando arquivos, {current} de {max} completos ({percentage}%)...' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/nl.js0000644000201500020150000000075214517055560024643 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'nl', { abort: 'Upload gestopt door de gebruiker.', doneOne: 'Bestand succesvol geüpload.', doneMany: 'Succesvol %1 bestanden geüpload.', uploadOne: 'Uploaden bestand ({percentage}%)…', uploadMany: 'Bestanden aan het uploaden, {current} van {max} klaar ({percentage}%)…' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/da.js0000644000201500020150000000071014517055560024610 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'da', { abort: 'Upload er afbrudt af brugen.', doneOne: 'Filen er uploadet.', doneMany: 'Du har uploadet %1 filer.', uploadOne: 'Uploader fil ({percentage}%)...', uploadMany: 'Uploader filer, {current} af {max} er uploadet ({percentage}%)...' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/de.js0000644000201500020150000000077514517055560024627 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'de', { abort: 'Hochladen durch den Benutzer abgebrochen.', doneOne: 'Datei erfolgreich hochgeladen.', doneMany: '%1 Dateien erfolgreich hochgeladen.', uploadOne: 'Datei wird hochgeladen ({percentage}%)...', uploadMany: 'Dateien werden hochgeladen, {current} von {max} fertig ({percentage}%)...' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/cs.js0000644000201500020150000000075014517055560024635 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'cs', { abort: 'Nahrávání zrušeno uživatelem.', doneOne: 'Soubor úspěšně nahrán.', doneMany: 'Úspěšně nahráno %1 souborů.', uploadOne: 'Nahrávání souboru ({percentage}%)...', uploadMany: 'Nahrávání souborů, {current} z {max} hotovo ({percentage}%)...' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/tr.js0000644000201500020150000000103414517055560024651 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'tr', { abort: 'Gönderme işlemi kullanıcı tarafından durduruldu.', doneOne: 'Gönderim işlemi başarılı şekilde tamamlandı.', doneMany: '%1 dosya başarılı şekilde gönderildi.', uploadOne: 'Dosyanın ({percentage}%) gönderildi...', uploadMany: 'Toplam {current} / {max} dosyanın ({percentage}%) gönderildi...' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/en.js0000644000201500020150000000072214517055560024631 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'en', { abort: 'Upload aborted by the user.', doneOne: 'File successfully uploaded.', doneMany: 'Successfully uploaded %1 files.', uploadOne: 'Uploading file ({percentage}%)...', uploadMany: 'Uploading files, {current} of {max} done ({percentage}%)...' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/fr.js0000644000201500020150000000104614517055560024636 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'fr', { abort: 'Téléversement interrompu par l\'utilisateur.', doneOne: 'Fichier téléversé avec succès.', doneMany: '%1 fichiers téléversés avec succès.', uploadOne: 'Téléversement du fichier en cours ({percentage}%)...', uploadMany: 'Téléversement des fichiers en cours, {current} sur {max} effectués ({percentage}%)...' } ); rt-4.4.7/devel/third-party/ckeditor-src/plugins/uploadwidget/lang/hu.js0000644000201500020150000000075514517055560024651 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'uploadwidget', 'hu', { abort: 'A feltöltést a felhasználó megszakította.', doneOne: 'A fájl sikeresen feltöltve.', doneMany: '%1 fájl sikeresen feltöltve.', uploadOne: 'Fájl feltöltése ({percentage}%)...', uploadMany: 'Fájlok feltöltése, {current}/{max} kész ({percentage}%)...' } ); rt-4.4.7/devel/third-party/ckeditor-src/.editorconfig0000644000201500020150000000033314517055557021260 0ustar puckpuck# Configurations to normalize the IDE behavior. # http://editorconfig.org/ root = true [*] indent_style = tab tab_width = 4 charset = utf-8 end_of_line = lf trim_trailing_whitespace = true insert_final_newline = true rt-4.4.7/devel/third-party/ckeditor-src/.gitignore0000644000201500020150000000077414517055557020604 0ustar puckpuck# These files will be ignored by Git and by our linting tools: # grunt jshint # grunt jscs # # Be sure to append /** to folders to have everything inside them ignored. # All "dot directories". .*/** node_modules/** build/** dev/builder/release/** dev/builder/ckbuilder/** dev/langtool/po/** dev/langtool/cklangtool/** samples/toolbarconfigurator/.bender/** samples/toolbarconfigurator/node_modules/** samples/toolbarconfigurator/docs/** tests/plugins/mathjax/_assets/mathjax/** *.css.map bender-*.log rt-4.4.7/devel/third-party/ckeditor-src/styles.js0000644000201500020150000000671114517055560020464 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ // This file contains style definitions that can be used by CKEditor plugins. // // The most common use for it is the "stylescombo" plugin, which shows a combo // in the editor toolbar, containing all styles. Other plugins instead, like // the div plugin, use a subset of the styles on their feature. // // If you don't have plugins that depend on this file, you can simply ignore it. // Otherwise it is strongly recommended to customize this file to match your // website requirements and design properly. CKEDITOR.stylesSet.add( 'default', [ /* Block Styles */ // These styles are already available in the "Format" combo ("format" plugin), // 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: 'Italic Title', element: 'h2', styles: { 'font-style': 'italic' } }, { name: 'Subtitle', element: 'h3', styles: { 'color': '#aaa', 'font-style': 'italic' } }, { name: 'Special Container', element: 'div', styles: { padding: '5px 10px', background: '#eee', border: '1px solid #ccc' } }, /* 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. // (This requires the "stylescombo" plugin) /* { 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', element: 'span', attributes: { 'class': 'marker' } }, { 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: 'Styled image (left)', element: 'img', attributes: { 'class': 'left' } }, { name: 'Styled image (right)', element: 'img', attributes: { 'class': 'right' } }, { name: 'Compact table', element: 'table', attributes: { cellpadding: '5', cellspacing: '0', border: '1', bordercolor: '#ccc' }, styles: { 'border-collapse': 'collapse' } }, { name: 'Borderless Table', element: 'table', styles: { 'border-style': 'hidden', 'background-color': '#E6E6FA' } }, { name: 'Square Bulleted List', element: 'ul', styles: { 'list-style-type': 'square' } } ] ); // %LEAVE_UNMINIFIED% %REMOVE_LINE% rt-4.4.7/devel/third-party/eyedropper.svg0000644000201500020150000000243514514267702017110 0ustar puckpuck rt-4.4.7/devel/third-party/jquery-ui-1.11.4.custom/0000755000201500020150000000000014514267702020170 5ustar puckpuckrt-4.4.7/devel/third-party/jquery-ui-1.11.4.custom/index.html0000644000201500020150000006367014514267702022201 0ustar puckpuck jQuery UI Example Page

    Welcome to jQuery UI!

    This page demonstrates the widgets and theme you selected in Download Builder. Please make sure you are using them with a compatible jQuery version.

    YOUR COMPONENTS:

    Accordion

    First

    Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.

    Second

    Phasellus mattis tincidunt nibh.

    Third

    Nam dui erat, auctor a, dignissim quis.

    Autocomplete

    Tabs

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
    Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.
    Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.

    Framework Icons (content color preview)

    Slider

    Datepicker

    Menu

    Highlight / Error

    Hey! Sample ui-state-highlight style.


    Alert: Sample ui-state-error style.

    rt-4.4.7/devel/third-party/jquery-ui-1.11.4.custom/jquery-ui.structure.css0000644000201500020150000002055114514267702024676 0ustar puckpuck/*! * jQuery UI CSS Framework 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/category/theming/ */ /* Layout helpers ----------------------------------*/ .ui-helper-hidden { display: none; } .ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } .ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; border-collapse: collapse; } .ui-helper-clearfix:after { clear: both; } .ui-helper-clearfix { min-height: 0; /* support: IE7 */ } .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); /* support: IE8 */ } .ui-front { z-index: 100; } /* Interaction Cues ----------------------------------*/ .ui-state-disabled { cursor: default !important; } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } /* Misc visuals ----------------------------------*/ /* Overlays */ .ui-widget-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; } .ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin: 2px 0 0 0; padding: .5em .5em .5em .7em; min-height: 0; /* support: IE7 */ font-size: 100%; } .ui-accordion .ui-accordion-icons { padding-left: 2.2em; } .ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; } .ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; } .ui-autocomplete { position: absolute; top: 0; left: 0; cursor: default; } .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } .ui-datepicker .ui-datepicker-header { position: relative; padding: .2em 0; } .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position: absolute; top: 2px; width: 1.8em; height: 1.8em; } .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } .ui-datepicker .ui-datepicker-prev { left: 2px; } .ui-datepicker .ui-datepicker-next { right: 2px; } .ui-datepicker .ui-datepicker-prev-hover { left: 1px; } .ui-datepicker .ui-datepicker-next-hover { right: 1px; } .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } .ui-datepicker .ui-datepicker-title select { font-size: 1em; margin: 1px 0; } .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { width: 45%; } .ui-datepicker table { width: 100%; font-size: .9em; border-collapse: collapse; margin: 0 0 .4em; } .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } .ui-datepicker td { border: 0; padding: 1px; } .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding: 0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width: auto; overflow: visible; } .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float: left; } /* with multiple calendars */ .ui-datepicker.ui-datepicker-multi { width: auto; } .ui-datepicker-multi .ui-datepicker-group { float: left; } .ui-datepicker-multi .ui-datepicker-group table { width: 95%; margin: 0 auto .4em; } .ui-datepicker-multi-2 .ui-datepicker-group { width: 50%; } .ui-datepicker-multi-3 .ui-datepicker-group { width: 33.3%; } .ui-datepicker-multi-4 .ui-datepicker-group { width: 25%; } .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width: 0; } .ui-datepicker-multi .ui-datepicker-buttonpane { clear: left; } .ui-datepicker-row-break { clear: both; width: 100%; font-size: 0; } /* RTL support */ .ui-datepicker-rtl { direction: rtl; } .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } .ui-datepicker-rtl .ui-datepicker-buttonpane { clear: right; } .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, .ui-datepicker-rtl .ui-datepicker-group { float: right; } .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width: 0; border-left-width: 1px; } .ui-menu { list-style: none; padding: 0; margin: 0; display: block; outline: none; } .ui-menu .ui-menu { position: absolute; } .ui-menu .ui-menu-item { position: relative; margin: 0; padding: 3px 1em 3px .4em; cursor: pointer; min-height: 0; /* support: IE7 */ /* support: IE10, see #8844 */ list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); } .ui-menu .ui-menu-divider { margin: 5px 0; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; } .ui-menu .ui-state-focus, .ui-menu .ui-state-active { margin: -1px; } /* icon support */ .ui-menu-icons { position: relative; } .ui-menu-icons .ui-menu-item { padding-left: 2em; } /* left-aligned */ .ui-menu .ui-icon { position: absolute; top: 0; bottom: 0; left: .2em; margin: auto 0; } /* right-aligned */ .ui-menu .ui-menu-icon { left: auto; right: 0; } .ui-slider { position: relative; text-align: left; } .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; -ms-touch-action: none; touch-action: none; } .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } /* support: IE8 - See #6727 */ .ui-slider.ui-state-disabled .ui-slider-handle, .ui-slider.ui-state-disabled .ui-slider-range { filter: inherit; } .ui-slider-horizontal { height: .8em; } .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } .ui-slider-horizontal .ui-slider-range-min { left: 0; } .ui-slider-horizontal .ui-slider-range-max { right: 0; } .ui-slider-vertical { width: .8em; height: 100px; } .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } .ui-slider-vertical .ui-slider-range-min { bottom: 0; } .ui-slider-vertical .ui-slider-range-max { top: 0; } .ui-tabs { position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ padding: .2em; } .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom-width: 0; padding: 0; white-space: nowrap; } .ui-tabs .ui-tabs-nav .ui-tabs-anchor { float: left; padding: .5em 1em; text-decoration: none; } .ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; } .ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, .ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, .ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { cursor: text; } .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { cursor: pointer; } .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } rt-4.4.7/devel/third-party/jquery-ui-1.11.4.custom/jquery-ui.js0000644000201500020150000063517714514267702022503 0ustar puckpuck/*! jQuery UI - v1.11.4 - 2015-10-30 * http://jqueryui.com * Includes: core.js, widget.js, mouse.js, position.js, accordion.js, autocomplete.js, datepicker.js, menu.js, slider.js, tabs.js * Copyright jQuery Foundation and other contributors; Licensed MIT */ (function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define([ "jquery" ], factory ); } else { // Browser globals factory( jQuery ); } }(function( $ ) { /*! * jQuery UI Core 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/category/ui-core/ */ // $.ui might exist from components with no dependencies, e.g., $.ui.position $.ui = $.ui || {}; $.extend( $.ui, { version: "1.11.4", keyCode: { BACKSPACE: 8, COMMA: 188, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, LEFT: 37, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SPACE: 32, TAB: 9, UP: 38 } }); // plugins $.fn.extend({ scrollParent: function( includeHidden ) { var position = this.css( "position" ), excludeStaticParent = position === "absolute", overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/, scrollParent = this.parents().filter( function() { var parent = $( this ); if ( excludeStaticParent && parent.css( "position" ) === "static" ) { return false; } return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + parent.css( "overflow-x" ) ); }).eq( 0 ); return position === "fixed" || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent; }, uniqueId: (function() { var uuid = 0; return function() { return this.each(function() { if ( !this.id ) { this.id = "ui-id-" + ( ++uuid ); } }); }; })(), removeUniqueId: function() { return this.each(function() { if ( /^ui-id-\d+$/.test( this.id ) ) { $( this ).removeAttr( "id" ); } }); } }); // selectors function focusable( element, isTabIndexNotNaN ) { var map, mapName, img, nodeName = element.nodeName.toLowerCase(); if ( "area" === nodeName ) { map = element.parentNode; mapName = map.name; if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { return false; } img = $( "img[usemap='#" + mapName + "']" )[ 0 ]; return !!img && visible( img ); } return ( /^(input|select|textarea|button|object)$/.test( nodeName ) ? !element.disabled : "a" === nodeName ? element.href || isTabIndexNotNaN : isTabIndexNotNaN) && // the element and all of its ancestors must be visible visible( element ); } function visible( element ) { return $.expr.filters.visible( element ) && !$( element ).parents().addBack().filter(function() { return $.css( this, "visibility" ) === "hidden"; }).length; } $.extend( $.expr[ ":" ], { data: $.expr.createPseudo ? $.expr.createPseudo(function( dataName ) { return function( elem ) { return !!$.data( elem, dataName ); }; }) : // support: jQuery <1.8 function( elem, i, match ) { return !!$.data( elem, match[ 3 ] ); }, focusable: function( element ) { return focusable( element, !isNaN( $.attr( element, "tabindex" ) ) ); }, tabbable: function( element ) { var tabIndex = $.attr( element, "tabindex" ), isTabIndexNaN = isNaN( tabIndex ); return ( isTabIndexNaN || tabIndex >= 0 ) && focusable( element, !isTabIndexNaN ); } }); // support: jQuery <1.8 if ( !$( "" ).outerWidth( 1 ).jquery ) { $.each( [ "Width", "Height" ], function( i, name ) { var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ], type = name.toLowerCase(), orig = { innerWidth: $.fn.innerWidth, innerHeight: $.fn.innerHeight, outerWidth: $.fn.outerWidth, outerHeight: $.fn.outerHeight }; function reduce( elem, size, border, margin ) { $.each( side, function() { size -= parseFloat( $.css( elem, "padding" + this ) ) || 0; if ( border ) { size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0; } if ( margin ) { size -= parseFloat( $.css( elem, "margin" + this ) ) || 0; } }); return size; } $.fn[ "inner" + name ] = function( size ) { if ( size === undefined ) { return orig[ "inner" + name ].call( this ); } return this.each(function() { $( this ).css( type, reduce( this, size ) + "px" ); }); }; $.fn[ "outer" + name] = function( size, margin ) { if ( typeof size !== "number" ) { return orig[ "outer" + name ].call( this, size ); } return this.each(function() { $( this).css( type, reduce( this, size, true, margin ) + "px" ); }); }; }); } // support: jQuery <1.8 if ( !$.fn.addBack ) { $.fn.addBack = function( selector ) { return this.add( selector == null ? this.prevObject : this.prevObject.filter( selector ) ); }; } // support: jQuery 1.6.1, 1.6.2 (http://bugs.jquery.com/ticket/9413) if ( $( "" ).data( "a-b", "a" ).removeData( "a-b" ).data( "a-b" ) ) { $.fn.removeData = (function( removeData ) { return function( key ) { if ( arguments.length ) { return removeData.call( this, $.camelCase( key ) ); } else { return removeData.call( this ); } }; })( $.fn.removeData ); } // deprecated $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); $.fn.extend({ focus: (function( orig ) { return function( delay, fn ) { return typeof delay === "number" ? this.each(function() { var elem = this; setTimeout(function() { $( elem ).focus(); if ( fn ) { fn.call( elem ); } }, delay ); }) : orig.apply( this, arguments ); }; })( $.fn.focus ), disableSelection: (function() { var eventType = "onselectstart" in document.createElement( "div" ) ? "selectstart" : "mousedown"; return function() { return this.bind( eventType + ".ui-disableSelection", function( event ) { event.preventDefault(); }); }; })(), enableSelection: function() { return this.unbind( ".ui-disableSelection" ); }, zIndex: function( zIndex ) { if ( zIndex !== undefined ) { return this.css( "zIndex", zIndex ); } if ( this.length ) { var elem = $( this[ 0 ] ), position, value; while ( elem.length && elem[ 0 ] !== document ) { // Ignore z-index if position is set to a value where z-index is ignored by the browser // This makes behavior of this function consistent across browsers // WebKit always returns auto if the element is positioned position = elem.css( "position" ); if ( position === "absolute" || position === "relative" || position === "fixed" ) { // IE returns 0 when zIndex is not specified // other browsers return a string // we ignore the case of nested elements with an explicit value of 0 //
    value = parseInt( elem.css( "zIndex" ), 10 ); if ( !isNaN( value ) && value !== 0 ) { return value; } } elem = elem.parent(); } } return 0; } }); // $.ui.plugin is deprecated. Use $.widget() extensions instead. $.ui.plugin = { add: function( module, option, set ) { var i, proto = $.ui[ module ].prototype; for ( i in set ) { proto.plugins[ i ] = proto.plugins[ i ] || []; proto.plugins[ i ].push( [ option, set[ i ] ] ); } }, call: function( instance, name, args, allowDisconnected ) { var i, set = instance.plugins[ name ]; if ( !set ) { return; } if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode || instance.element[ 0 ].parentNode.nodeType === 11 ) ) { return; } for ( i = 0; i < set.length; i++ ) { if ( instance.options[ set[ i ][ 0 ] ] ) { set[ i ][ 1 ].apply( instance.element, args ); } } } }; /*! * jQuery UI Widget 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/jQuery.widget/ */ var widget_uuid = 0, widget_slice = Array.prototype.slice; $.cleanData = (function( orig ) { return function( elems ) { var events, elem, i; for ( i = 0; (elem = elems[i]) != null; i++ ) { try { // Only trigger remove when necessary to save time events = $._data( elem, "events" ); if ( events && events.remove ) { $( elem ).triggerHandler( "remove" ); } // http://bugs.jquery.com/ticket/8235 } catch ( e ) {} } orig( elems ); }; })( $.cleanData ); $.widget = function( name, base, prototype ) { var fullName, existingConstructor, constructor, basePrototype, // proxiedPrototype allows the provided prototype to remain unmodified // so that it can be used as a mixin for multiple widgets (#8876) proxiedPrototype = {}, namespace = name.split( "." )[ 0 ]; name = name.split( "." )[ 1 ]; fullName = namespace + "-" + name; if ( !prototype ) { prototype = base; base = $.Widget; } // create selector for plugin $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { return !!$.data( elem, fullName ); }; $[ namespace ] = $[ namespace ] || {}; existingConstructor = $[ namespace ][ name ]; constructor = $[ namespace ][ name ] = function( options, element ) { // allow instantiation without "new" keyword if ( !this._createWidget ) { return new constructor( options, element ); } // allow instantiation without initializing for simple inheritance // must use "new" keyword (the code above always passes args) if ( arguments.length ) { this._createWidget( options, element ); } }; // extend with the existing constructor to carry over any static properties $.extend( constructor, existingConstructor, { version: prototype.version, // copy the object used to create the prototype in case we need to // redefine the widget later _proto: $.extend( {}, prototype ), // track widgets that inherit from this widget in case this widget is // redefined after a widget inherits from it _childConstructors: [] }); basePrototype = new base(); // we need to make the options hash a property directly on the new instance // otherwise we'll modify the options hash on the prototype that we're // inheriting from basePrototype.options = $.widget.extend( {}, basePrototype.options ); $.each( prototype, function( prop, value ) { if ( !$.isFunction( value ) ) { proxiedPrototype[ prop ] = value; return; } proxiedPrototype[ prop ] = (function() { var _super = function() { return base.prototype[ prop ].apply( this, arguments ); }, _superApply = function( args ) { return base.prototype[ prop ].apply( this, args ); }; return function() { var __super = this._super, __superApply = this._superApply, returnValue; this._super = _super; this._superApply = _superApply; returnValue = value.apply( this, arguments ); this._super = __super; this._superApply = __superApply; return returnValue; }; })(); }); constructor.prototype = $.widget.extend( basePrototype, { // TODO: remove support for widgetEventPrefix // always use the name + a colon as the prefix, e.g., draggable:start // don't prefix for widgets that aren't DOM-based widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name }, proxiedPrototype, { constructor: constructor, namespace: namespace, widgetName: name, widgetFullName: fullName }); // If this widget is being redefined then we need to find all widgets that // are inheriting from it and redefine all of them so that they inherit from // the new version of this widget. We're essentially trying to replace one // level in the prototype chain. if ( existingConstructor ) { $.each( existingConstructor._childConstructors, function( i, child ) { var childPrototype = child.prototype; // redefine the child widget using the same prototype that was // originally used, but inherit from the new version of the base $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto ); }); // remove the list of existing child constructors from the old constructor // so the old child constructors can be garbage collected delete existingConstructor._childConstructors; } else { base._childConstructors.push( constructor ); } $.widget.bridge( name, constructor ); return constructor; }; $.widget.extend = function( target ) { var input = widget_slice.call( arguments, 1 ), inputIndex = 0, inputLength = input.length, key, value; for ( ; inputIndex < inputLength; inputIndex++ ) { for ( key in input[ inputIndex ] ) { value = input[ inputIndex ][ key ]; if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { // Clone objects if ( $.isPlainObject( value ) ) { target[ key ] = $.isPlainObject( target[ key ] ) ? $.widget.extend( {}, target[ key ], value ) : // Don't extend strings, arrays, etc. with objects $.widget.extend( {}, value ); // Copy everything else by reference } else { target[ key ] = value; } } } } return target; }; $.widget.bridge = function( name, object ) { var fullName = object.prototype.widgetFullName || name; $.fn[ name ] = function( options ) { var isMethodCall = typeof options === "string", args = widget_slice.call( arguments, 1 ), returnValue = this; if ( isMethodCall ) { this.each(function() { var methodValue, instance = $.data( this, fullName ); if ( options === "instance" ) { returnValue = instance; return false; } if ( !instance ) { return $.error( "cannot call methods on " + name + " prior to initialization; " + "attempted to call method '" + options + "'" ); } if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) { return $.error( "no such method '" + options + "' for " + name + " widget instance" ); } methodValue = instance[ options ].apply( instance, args ); if ( methodValue !== instance && methodValue !== undefined ) { returnValue = methodValue && methodValue.jquery ? returnValue.pushStack( methodValue.get() ) : methodValue; return false; } }); } else { // Allow multiple hashes to be passed on init if ( args.length ) { options = $.widget.extend.apply( null, [ options ].concat(args) ); } this.each(function() { var instance = $.data( this, fullName ); if ( instance ) { instance.option( options || {} ); if ( instance._init ) { instance._init(); } } else { $.data( this, fullName, new object( options, this ) ); } }); } return returnValue; }; }; $.Widget = function( /* options, element */ ) {}; $.Widget._childConstructors = []; $.Widget.prototype = { widgetName: "widget", widgetEventPrefix: "", defaultElement: "
    ", options: { disabled: false, // callbacks create: null }, _createWidget: function( options, element ) { element = $( element || this.defaultElement || this )[ 0 ]; this.element = $( element ); this.uuid = widget_uuid++; this.eventNamespace = "." + this.widgetName + this.uuid; this.bindings = $(); this.hoverable = $(); this.focusable = $(); if ( element !== this ) { $.data( element, this.widgetFullName, this ); this._on( true, this.element, { remove: function( event ) { if ( event.target === element ) { this.destroy(); } } }); this.document = $( element.style ? // element within the document element.ownerDocument : // element is window or document element.document || element ); this.window = $( this.document[0].defaultView || this.document[0].parentWindow ); } this.options = $.widget.extend( {}, this.options, this._getCreateOptions(), options ); this._create(); this._trigger( "create", null, this._getCreateEventData() ); this._init(); }, _getCreateOptions: $.noop, _getCreateEventData: $.noop, _create: $.noop, _init: $.noop, destroy: function() { this._destroy(); // we can probably remove the unbind calls in 2.0 // all event bindings should go through this._on() this.element .unbind( this.eventNamespace ) .removeData( this.widgetFullName ) // support: jquery <1.6.3 // http://bugs.jquery.com/ticket/9413 .removeData( $.camelCase( this.widgetFullName ) ); this.widget() .unbind( this.eventNamespace ) .removeAttr( "aria-disabled" ) .removeClass( this.widgetFullName + "-disabled " + "ui-state-disabled" ); // clean up events and states this.bindings.unbind( this.eventNamespace ); this.hoverable.removeClass( "ui-state-hover" ); this.focusable.removeClass( "ui-state-focus" ); }, _destroy: $.noop, widget: function() { return this.element; }, option: function( key, value ) { var options = key, parts, curOption, i; if ( arguments.length === 0 ) { // don't return a reference to the internal hash return $.widget.extend( {}, this.options ); } if ( typeof key === "string" ) { // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } options = {}; parts = key.split( "." ); key = parts.shift(); if ( parts.length ) { curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); for ( i = 0; i < parts.length - 1; i++ ) { curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; curOption = curOption[ parts[ i ] ]; } key = parts.pop(); if ( arguments.length === 1 ) { return curOption[ key ] === undefined ? null : curOption[ key ]; } curOption[ key ] = value; } else { if ( arguments.length === 1 ) { return this.options[ key ] === undefined ? null : this.options[ key ]; } options[ key ] = value; } } this._setOptions( options ); return this; }, _setOptions: function( options ) { var key; for ( key in options ) { this._setOption( key, options[ key ] ); } return this; }, _setOption: function( key, value ) { this.options[ key ] = value; if ( key === "disabled" ) { this.widget() .toggleClass( this.widgetFullName + "-disabled", !!value ); // If the widget is becoming disabled, then nothing is interactive if ( value ) { this.hoverable.removeClass( "ui-state-hover" ); this.focusable.removeClass( "ui-state-focus" ); } } return this; }, enable: function() { return this._setOptions({ disabled: false }); }, disable: function() { return this._setOptions({ disabled: true }); }, _on: function( suppressDisabledCheck, element, handlers ) { var delegateElement, instance = this; // no suppressDisabledCheck flag, shuffle arguments if ( typeof suppressDisabledCheck !== "boolean" ) { handlers = element; element = suppressDisabledCheck; suppressDisabledCheck = false; } // no element argument, shuffle and use this.element if ( !handlers ) { handlers = element; element = this.element; delegateElement = this.widget(); } else { element = delegateElement = $( element ); this.bindings = this.bindings.add( element ); } $.each( handlers, function( event, handler ) { function handlerProxy() { // allow widgets to customize the disabled handling // - disabled as an array instead of boolean // - disabled class as method for disabling individual parts if ( !suppressDisabledCheck && ( instance.options.disabled === true || $( this ).hasClass( "ui-state-disabled" ) ) ) { return; } return ( typeof handler === "string" ? instance[ handler ] : handler ) .apply( instance, arguments ); } // copy the guid so direct unbinding works if ( typeof handler !== "string" ) { handlerProxy.guid = handler.guid = handler.guid || handlerProxy.guid || $.guid++; } var match = event.match( /^([\w:-]*)\s*(.*)$/ ), eventName = match[1] + instance.eventNamespace, selector = match[2]; if ( selector ) { delegateElement.delegate( selector, eventName, handlerProxy ); } else { element.bind( eventName, handlerProxy ); } }); }, _off: function( element, eventName ) { eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace; element.unbind( eventName ).undelegate( eventName ); // Clear the stack to avoid memory leaks (#10056) this.bindings = $( this.bindings.not( element ).get() ); this.focusable = $( this.focusable.not( element ).get() ); this.hoverable = $( this.hoverable.not( element ).get() ); }, _delay: function( handler, delay ) { function handlerProxy() { return ( typeof handler === "string" ? instance[ handler ] : handler ) .apply( instance, arguments ); } var instance = this; return setTimeout( handlerProxy, delay || 0 ); }, _hoverable: function( element ) { this.hoverable = this.hoverable.add( element ); this._on( element, { mouseenter: function( event ) { $( event.currentTarget ).addClass( "ui-state-hover" ); }, mouseleave: function( event ) { $( event.currentTarget ).removeClass( "ui-state-hover" ); } }); }, _focusable: function( element ) { this.focusable = this.focusable.add( element ); this._on( element, { focusin: function( event ) { $( event.currentTarget ).addClass( "ui-state-focus" ); }, focusout: function( event ) { $( event.currentTarget ).removeClass( "ui-state-focus" ); } }); }, _trigger: function( type, event, data ) { var prop, orig, callback = this.options[ type ]; data = data || {}; event = $.Event( event ); event.type = ( type === this.widgetEventPrefix ? type : this.widgetEventPrefix + type ).toLowerCase(); // the original event may come from any element // so we need to reset the target on the new event event.target = this.element[ 0 ]; // copy original event properties over to the new event orig = event.originalEvent; if ( orig ) { for ( prop in orig ) { if ( !( prop in event ) ) { event[ prop ] = orig[ prop ]; } } } this.element.trigger( event, data ); return !( $.isFunction( callback ) && callback.apply( this.element[0], [ event ].concat( data ) ) === false || event.isDefaultPrevented() ); } }; $.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { if ( typeof options === "string" ) { options = { effect: options }; } var hasOptions, effectName = !options ? method : options === true || typeof options === "number" ? defaultEffect : options.effect || defaultEffect; options = options || {}; if ( typeof options === "number" ) { options = { duration: options }; } hasOptions = !$.isEmptyObject( options ); options.complete = callback; if ( options.delay ) { element.delay( options.delay ); } if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { element[ method ]( options ); } else if ( effectName !== method && element[ effectName ] ) { element[ effectName ]( options.duration, options.easing, callback ); } else { element.queue(function( next ) { $( this )[ method ](); if ( callback ) { callback.call( element[ 0 ] ); } next(); }); } }; }); var widget = $.widget; /*! * jQuery UI Mouse 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/mouse/ */ var mouseHandled = false; $( document ).mouseup( function() { mouseHandled = false; }); var mouse = $.widget("ui.mouse", { version: "1.11.4", options: { cancel: "input,textarea,button,select,option", distance: 1, delay: 0 }, _mouseInit: function() { var that = this; this.element .bind("mousedown." + this.widgetName, function(event) { return that._mouseDown(event); }) .bind("click." + this.widgetName, function(event) { if (true === $.data(event.target, that.widgetName + ".preventClickEvent")) { $.removeData(event.target, that.widgetName + ".preventClickEvent"); event.stopImmediatePropagation(); return false; } }); this.started = false; }, // TODO: make sure destroying one instance of mouse doesn't mess with // other instances of mouse _mouseDestroy: function() { this.element.unbind("." + this.widgetName); if ( this._mouseMoveDelegate ) { this.document .unbind("mousemove." + this.widgetName, this._mouseMoveDelegate) .unbind("mouseup." + this.widgetName, this._mouseUpDelegate); } }, _mouseDown: function(event) { // don't let more than one widget handle mouseStart if ( mouseHandled ) { return; } this._mouseMoved = false; // we may have missed mouseup (out of window) (this._mouseStarted && this._mouseUp(event)); this._mouseDownEvent = event; var that = this, btnIsLeft = (event.which === 1), // event.target.nodeName works around a bug in IE 8 with // disabled inputs (#7620) elIsCancel = (typeof this.options.cancel === "string" && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : false); if (!btnIsLeft || elIsCancel || !this._mouseCapture(event)) { return true; } this.mouseDelayMet = !this.options.delay; if (!this.mouseDelayMet) { this._mouseDelayTimer = setTimeout(function() { that.mouseDelayMet = true; }, this.options.delay); } if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { this._mouseStarted = (this._mouseStart(event) !== false); if (!this._mouseStarted) { event.preventDefault(); return true; } } // Click event may never have fired (Gecko & Opera) if (true === $.data(event.target, this.widgetName + ".preventClickEvent")) { $.removeData(event.target, this.widgetName + ".preventClickEvent"); } // these delegates are required to keep context this._mouseMoveDelegate = function(event) { return that._mouseMove(event); }; this._mouseUpDelegate = function(event) { return that._mouseUp(event); }; this.document .bind( "mousemove." + this.widgetName, this._mouseMoveDelegate ) .bind( "mouseup." + this.widgetName, this._mouseUpDelegate ); event.preventDefault(); mouseHandled = true; return true; }, _mouseMove: function(event) { // Only check for mouseups outside the document if you've moved inside the document // at least once. This prevents the firing of mouseup in the case of IE<9, which will // fire a mousemove event if content is placed under the cursor. See #7778 // Support: IE <9 if ( this._mouseMoved ) { // IE mouseup check - mouseup happened when mouse was out of window if ($.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && !event.button) { return this._mouseUp(event); // Iframe mouseup check - mouseup occurred in another document } else if ( !event.which ) { return this._mouseUp( event ); } } if ( event.which || event.button ) { this._mouseMoved = true; } if (this._mouseStarted) { this._mouseDrag(event); return event.preventDefault(); } if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) { this._mouseStarted = (this._mouseStart(this._mouseDownEvent, event) !== false); (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)); } return !this._mouseStarted; }, _mouseUp: function(event) { this.document .unbind( "mousemove." + this.widgetName, this._mouseMoveDelegate ) .unbind( "mouseup." + this.widgetName, this._mouseUpDelegate ); if (this._mouseStarted) { this._mouseStarted = false; if (event.target === this._mouseDownEvent.target) { $.data(event.target, this.widgetName + ".preventClickEvent", true); } this._mouseStop(event); } mouseHandled = false; return false; }, _mouseDistanceMet: function(event) { return (Math.max( Math.abs(this._mouseDownEvent.pageX - event.pageX), Math.abs(this._mouseDownEvent.pageY - event.pageY) ) >= this.options.distance ); }, _mouseDelayMet: function(/* event */) { return this.mouseDelayMet; }, // These are placeholder methods, to be overriden by extending plugin _mouseStart: function(/* event */) {}, _mouseDrag: function(/* event */) {}, _mouseStop: function(/* event */) {}, _mouseCapture: function(/* event */) { return true; } }); /*! * jQuery UI Position 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/position/ */ (function() { $.ui = $.ui || {}; var cachedScrollbarWidth, supportsOffsetFractions, max = Math.max, abs = Math.abs, round = Math.round, rhorizontal = /left|center|right/, rvertical = /top|center|bottom/, roffset = /[\+\-]\d+(\.[\d]+)?%?/, rposition = /^\w+/, rpercent = /%$/, _position = $.fn.position; function getOffsets( offsets, width, height ) { return [ parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) ]; } function parseCss( element, property ) { return parseInt( $.css( element, property ), 10 ) || 0; } function getDimensions( elem ) { var raw = elem[0]; if ( raw.nodeType === 9 ) { return { width: elem.width(), height: elem.height(), offset: { top: 0, left: 0 } }; } if ( $.isWindow( raw ) ) { return { width: elem.width(), height: elem.height(), offset: { top: elem.scrollTop(), left: elem.scrollLeft() } }; } if ( raw.preventDefault ) { return { width: 0, height: 0, offset: { top: raw.pageY, left: raw.pageX } }; } return { width: elem.outerWidth(), height: elem.outerHeight(), offset: elem.offset() }; } $.position = { scrollbarWidth: function() { if ( cachedScrollbarWidth !== undefined ) { return cachedScrollbarWidth; } var w1, w2, div = $( "
    " ), innerDiv = div.children()[0]; $( "body" ).append( div ); w1 = innerDiv.offsetWidth; div.css( "overflow", "scroll" ); w2 = innerDiv.offsetWidth; if ( w1 === w2 ) { w2 = div[0].clientWidth; } div.remove(); return (cachedScrollbarWidth = w1 - w2); }, getScrollInfo: function( within ) { var overflowX = within.isWindow || within.isDocument ? "" : within.element.css( "overflow-x" ), overflowY = within.isWindow || within.isDocument ? "" : within.element.css( "overflow-y" ), hasOverflowX = overflowX === "scroll" || ( overflowX === "auto" && within.width < within.element[0].scrollWidth ), hasOverflowY = overflowY === "scroll" || ( overflowY === "auto" && within.height < within.element[0].scrollHeight ); return { width: hasOverflowY ? $.position.scrollbarWidth() : 0, height: hasOverflowX ? $.position.scrollbarWidth() : 0 }; }, getWithinInfo: function( element ) { var withinElement = $( element || window ), isWindow = $.isWindow( withinElement[0] ), isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9; return { element: withinElement, isWindow: isWindow, isDocument: isDocument, offset: withinElement.offset() || { left: 0, top: 0 }, scrollLeft: withinElement.scrollLeft(), scrollTop: withinElement.scrollTop(), // support: jQuery 1.6.x // jQuery 1.6 doesn't support .outerWidth/Height() on documents or windows width: isWindow || isDocument ? withinElement.width() : withinElement.outerWidth(), height: isWindow || isDocument ? withinElement.height() : withinElement.outerHeight() }; } }; $.fn.position = function( options ) { if ( !options || !options.of ) { return _position.apply( this, arguments ); } // make a copy, we don't want to modify arguments options = $.extend( {}, options ); var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, target = $( options.of ), within = $.position.getWithinInfo( options.within ), scrollInfo = $.position.getScrollInfo( within ), collision = ( options.collision || "flip" ).split( " " ), offsets = {}; dimensions = getDimensions( target ); if ( target[0].preventDefault ) { // force left top to allow flipping options.at = "left top"; } targetWidth = dimensions.width; targetHeight = dimensions.height; targetOffset = dimensions.offset; // clone to reuse original targetOffset later basePosition = $.extend( {}, targetOffset ); // force my and at to have valid horizontal and vertical positions // if a value is missing or invalid, it will be converted to center $.each( [ "my", "at" ], function() { var pos = ( options[ this ] || "" ).split( " " ), horizontalOffset, verticalOffset; if ( pos.length === 1) { pos = rhorizontal.test( pos[ 0 ] ) ? pos.concat( [ "center" ] ) : rvertical.test( pos[ 0 ] ) ? [ "center" ].concat( pos ) : [ "center", "center" ]; } pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; // calculate offsets horizontalOffset = roffset.exec( pos[ 0 ] ); verticalOffset = roffset.exec( pos[ 1 ] ); offsets[ this ] = [ horizontalOffset ? horizontalOffset[ 0 ] : 0, verticalOffset ? verticalOffset[ 0 ] : 0 ]; // reduce to just the positions without the offsets options[ this ] = [ rposition.exec( pos[ 0 ] )[ 0 ], rposition.exec( pos[ 1 ] )[ 0 ] ]; }); // normalize collision option if ( collision.length === 1 ) { collision[ 1 ] = collision[ 0 ]; } if ( options.at[ 0 ] === "right" ) { basePosition.left += targetWidth; } else if ( options.at[ 0 ] === "center" ) { basePosition.left += targetWidth / 2; } if ( options.at[ 1 ] === "bottom" ) { basePosition.top += targetHeight; } else if ( options.at[ 1 ] === "center" ) { basePosition.top += targetHeight / 2; } atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); basePosition.left += atOffset[ 0 ]; basePosition.top += atOffset[ 1 ]; return this.each(function() { var collisionPosition, using, elem = $( this ), elemWidth = elem.outerWidth(), elemHeight = elem.outerHeight(), marginLeft = parseCss( this, "marginLeft" ), marginTop = parseCss( this, "marginTop" ), collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width, collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height, position = $.extend( {}, basePosition ), myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); if ( options.my[ 0 ] === "right" ) { position.left -= elemWidth; } else if ( options.my[ 0 ] === "center" ) { position.left -= elemWidth / 2; } if ( options.my[ 1 ] === "bottom" ) { position.top -= elemHeight; } else if ( options.my[ 1 ] === "center" ) { position.top -= elemHeight / 2; } position.left += myOffset[ 0 ]; position.top += myOffset[ 1 ]; // if the browser doesn't support fractions, then round for consistent results if ( !supportsOffsetFractions ) { position.left = round( position.left ); position.top = round( position.top ); } collisionPosition = { marginLeft: marginLeft, marginTop: marginTop }; $.each( [ "left", "top" ], function( i, dir ) { if ( $.ui.position[ collision[ i ] ] ) { $.ui.position[ collision[ i ] ][ dir ]( position, { targetWidth: targetWidth, targetHeight: targetHeight, elemWidth: elemWidth, elemHeight: elemHeight, collisionPosition: collisionPosition, collisionWidth: collisionWidth, collisionHeight: collisionHeight, offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], my: options.my, at: options.at, within: within, elem: elem }); } }); if ( options.using ) { // adds feedback as second argument to using callback, if present using = function( props ) { var left = targetOffset.left - position.left, right = left + targetWidth - elemWidth, top = targetOffset.top - position.top, bottom = top + targetHeight - elemHeight, feedback = { target: { element: target, left: targetOffset.left, top: targetOffset.top, width: targetWidth, height: targetHeight }, element: { element: elem, left: position.left, top: position.top, width: elemWidth, height: elemHeight }, horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" }; if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { feedback.horizontal = "center"; } if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { feedback.vertical = "middle"; } if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { feedback.important = "horizontal"; } else { feedback.important = "vertical"; } options.using.call( this, props, feedback ); }; } elem.offset( $.extend( position, { using: using } ) ); }); }; $.ui.position = { fit: { left: function( position, data ) { var within = data.within, withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, outerWidth = within.width, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = withinOffset - collisionPosLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, newOverRight; // element is wider than within if ( data.collisionWidth > outerWidth ) { // element is initially over the left side of within if ( overLeft > 0 && overRight <= 0 ) { newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset; position.left += overLeft - newOverRight; // element is initially over right side of within } else if ( overRight > 0 && overLeft <= 0 ) { position.left = withinOffset; // element is initially over both left and right sides of within } else { if ( overLeft > overRight ) { position.left = withinOffset + outerWidth - data.collisionWidth; } else { position.left = withinOffset; } } // too far left -> align with left edge } else if ( overLeft > 0 ) { position.left += overLeft; // too far right -> align with right edge } else if ( overRight > 0 ) { position.left -= overRight; // adjust based on position and margin } else { position.left = max( position.left - collisionPosLeft, position.left ); } }, top: function( position, data ) { var within = data.within, withinOffset = within.isWindow ? within.scrollTop : within.offset.top, outerHeight = data.within.height, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = withinOffset - collisionPosTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, newOverBottom; // element is taller than within if ( data.collisionHeight > outerHeight ) { // element is initially over the top of within if ( overTop > 0 && overBottom <= 0 ) { newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset; position.top += overTop - newOverBottom; // element is initially over bottom of within } else if ( overBottom > 0 && overTop <= 0 ) { position.top = withinOffset; // element is initially over both top and bottom of within } else { if ( overTop > overBottom ) { position.top = withinOffset + outerHeight - data.collisionHeight; } else { position.top = withinOffset; } } // too far up -> align with top } else if ( overTop > 0 ) { position.top += overTop; // too far down -> align with bottom edge } else if ( overBottom > 0 ) { position.top -= overBottom; // adjust based on position and margin } else { position.top = max( position.top - collisionPosTop, position.top ); } } }, flip: { left: function( position, data ) { var within = data.within, withinOffset = within.offset.left + within.scrollLeft, outerWidth = within.width, offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = collisionPosLeft - offsetLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, myOffset = data.my[ 0 ] === "left" ? -data.elemWidth : data.my[ 0 ] === "right" ? data.elemWidth : 0, atOffset = data.at[ 0 ] === "left" ? data.targetWidth : data.at[ 0 ] === "right" ? -data.targetWidth : 0, offset = -2 * data.offset[ 0 ], newOverRight, newOverLeft; if ( overLeft < 0 ) { newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset; if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { position.left += myOffset + atOffset + offset; } } else if ( overRight > 0 ) { newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { position.left += myOffset + atOffset + offset; } } }, top: function( position, data ) { var within = data.within, withinOffset = within.offset.top + within.scrollTop, outerHeight = within.height, offsetTop = within.isWindow ? within.scrollTop : within.offset.top, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = collisionPosTop - offsetTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, top = data.my[ 1 ] === "top", myOffset = top ? -data.elemHeight : data.my[ 1 ] === "bottom" ? data.elemHeight : 0, atOffset = data.at[ 1 ] === "top" ? data.targetHeight : data.at[ 1 ] === "bottom" ? -data.targetHeight : 0, offset = -2 * data.offset[ 1 ], newOverTop, newOverBottom; if ( overTop < 0 ) { newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset; if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) { position.top += myOffset + atOffset + offset; } } else if ( overBottom > 0 ) { newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop; if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) { position.top += myOffset + atOffset + offset; } } } }, flipfit: { left: function() { $.ui.position.flip.left.apply( this, arguments ); $.ui.position.fit.left.apply( this, arguments ); }, top: function() { $.ui.position.flip.top.apply( this, arguments ); $.ui.position.fit.top.apply( this, arguments ); } } }; // fraction support test (function() { var testElement, testElementParent, testElementStyle, offsetLeft, i, body = document.getElementsByTagName( "body" )[ 0 ], div = document.createElement( "div" ); //Create a "fake body" for testing based on method used in jQuery.support testElement = document.createElement( body ? "div" : "body" ); testElementStyle = { visibility: "hidden", width: 0, height: 0, border: 0, margin: 0, background: "none" }; if ( body ) { $.extend( testElementStyle, { position: "absolute", left: "-1000px", top: "-1000px" }); } for ( i in testElementStyle ) { testElement.style[ i ] = testElementStyle[ i ]; } testElement.appendChild( div ); testElementParent = body || document.documentElement; testElementParent.insertBefore( testElement, testElementParent.firstChild ); div.style.cssText = "position: absolute; left: 10.7432222px;"; offsetLeft = $( div ).offset().left; supportsOffsetFractions = offsetLeft > 10 && offsetLeft < 11; testElement.innerHTML = ""; testElementParent.removeChild( testElement ); })(); })(); var position = $.ui.position; /*! * jQuery UI Accordion 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/accordion/ */ var accordion = $.widget( "ui.accordion", { version: "1.11.4", options: { active: 0, animate: {}, collapsible: false, event: "click", header: "> li > :first-child,> :not(li):even", heightStyle: "auto", icons: { activeHeader: "ui-icon-triangle-1-s", header: "ui-icon-triangle-1-e" }, // callbacks activate: null, beforeActivate: null }, hideProps: { borderTopWidth: "hide", borderBottomWidth: "hide", paddingTop: "hide", paddingBottom: "hide", height: "hide" }, showProps: { borderTopWidth: "show", borderBottomWidth: "show", paddingTop: "show", paddingBottom: "show", height: "show" }, _create: function() { var options = this.options; this.prevShow = this.prevHide = $(); this.element.addClass( "ui-accordion ui-widget ui-helper-reset" ) // ARIA .attr( "role", "tablist" ); // don't allow collapsible: false and active: false / null if ( !options.collapsible && (options.active === false || options.active == null) ) { options.active = 0; } this._processPanels(); // handle negative values if ( options.active < 0 ) { options.active += this.headers.length; } this._refresh(); }, _getCreateEventData: function() { return { header: this.active, panel: !this.active.length ? $() : this.active.next() }; }, _createIcons: function() { var icons = this.options.icons; if ( icons ) { $( "" ) .addClass( "ui-accordion-header-icon ui-icon " + icons.header ) .prependTo( this.headers ); this.active.children( ".ui-accordion-header-icon" ) .removeClass( icons.header ) .addClass( icons.activeHeader ); this.headers.addClass( "ui-accordion-icons" ); } }, _destroyIcons: function() { this.headers .removeClass( "ui-accordion-icons" ) .children( ".ui-accordion-header-icon" ) .remove(); }, _destroy: function() { var contents; // clean up main element this.element .removeClass( "ui-accordion ui-widget ui-helper-reset" ) .removeAttr( "role" ); // clean up headers this.headers .removeClass( "ui-accordion-header ui-accordion-header-active ui-state-default " + "ui-corner-all ui-state-active ui-state-disabled ui-corner-top" ) .removeAttr( "role" ) .removeAttr( "aria-expanded" ) .removeAttr( "aria-selected" ) .removeAttr( "aria-controls" ) .removeAttr( "tabIndex" ) .removeUniqueId(); this._destroyIcons(); // clean up content panels contents = this.headers.next() .removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom " + "ui-accordion-content ui-accordion-content-active ui-state-disabled" ) .css( "display", "" ) .removeAttr( "role" ) .removeAttr( "aria-hidden" ) .removeAttr( "aria-labelledby" ) .removeUniqueId(); if ( this.options.heightStyle !== "content" ) { contents.css( "height", "" ); } }, _setOption: function( key, value ) { if ( key === "active" ) { // _activate() will handle invalid values and update this.options this._activate( value ); return; } if ( key === "event" ) { if ( this.options.event ) { this._off( this.headers, this.options.event ); } this._setupEvents( value ); } this._super( key, value ); // setting collapsible: false while collapsed; open first panel if ( key === "collapsible" && !value && this.options.active === false ) { this._activate( 0 ); } if ( key === "icons" ) { this._destroyIcons(); if ( value ) { this._createIcons(); } } // #5332 - opacity doesn't cascade to positioned elements in IE // so we need to add the disabled class to the headers and panels if ( key === "disabled" ) { this.element .toggleClass( "ui-state-disabled", !!value ) .attr( "aria-disabled", value ); this.headers.add( this.headers.next() ) .toggleClass( "ui-state-disabled", !!value ); } }, _keydown: function( event ) { if ( event.altKey || event.ctrlKey ) { return; } var keyCode = $.ui.keyCode, length = this.headers.length, currentIndex = this.headers.index( event.target ), toFocus = false; switch ( event.keyCode ) { case keyCode.RIGHT: case keyCode.DOWN: toFocus = this.headers[ ( currentIndex + 1 ) % length ]; break; case keyCode.LEFT: case keyCode.UP: toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; break; case keyCode.SPACE: case keyCode.ENTER: this._eventHandler( event ); break; case keyCode.HOME: toFocus = this.headers[ 0 ]; break; case keyCode.END: toFocus = this.headers[ length - 1 ]; break; } if ( toFocus ) { $( event.target ).attr( "tabIndex", -1 ); $( toFocus ).attr( "tabIndex", 0 ); toFocus.focus(); event.preventDefault(); } }, _panelKeyDown: function( event ) { if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { $( event.currentTarget ).prev().focus(); } }, refresh: function() { var options = this.options; this._processPanels(); // was collapsed or no panel if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) { options.active = false; this.active = $(); // active false only when collapsible is true } else if ( options.active === false ) { this._activate( 0 ); // was active, but active panel is gone } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { // all remaining panel are disabled if ( this.headers.length === this.headers.find(".ui-state-disabled").length ) { options.active = false; this.active = $(); // activate previous panel } else { this._activate( Math.max( 0, options.active - 1 ) ); } // was active, active panel still exists } else { // make sure active index is correct options.active = this.headers.index( this.active ); } this._destroyIcons(); this._refresh(); }, _processPanels: function() { var prevHeaders = this.headers, prevPanels = this.panels; this.headers = this.element.find( this.options.header ) .addClass( "ui-accordion-header ui-state-default ui-corner-all" ); this.panels = this.headers.next() .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" ) .filter( ":not(.ui-accordion-content-active)" ) .hide(); // Avoid memory leaks (#10056) if ( prevPanels ) { this._off( prevHeaders.not( this.headers ) ); this._off( prevPanels.not( this.panels ) ); } }, _refresh: function() { var maxHeight, options = this.options, heightStyle = options.heightStyle, parent = this.element.parent(); this.active = this._findActive( options.active ) .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" ) .removeClass( "ui-corner-all" ); this.active.next() .addClass( "ui-accordion-content-active" ) .show(); this.headers .attr( "role", "tab" ) .each(function() { var header = $( this ), headerId = header.uniqueId().attr( "id" ), panel = header.next(), panelId = panel.uniqueId().attr( "id" ); header.attr( "aria-controls", panelId ); panel.attr( "aria-labelledby", headerId ); }) .next() .attr( "role", "tabpanel" ); this.headers .not( this.active ) .attr({ "aria-selected": "false", "aria-expanded": "false", tabIndex: -1 }) .next() .attr({ "aria-hidden": "true" }) .hide(); // make sure at least one header is in the tab order if ( !this.active.length ) { this.headers.eq( 0 ).attr( "tabIndex", 0 ); } else { this.active.attr({ "aria-selected": "true", "aria-expanded": "true", tabIndex: 0 }) .next() .attr({ "aria-hidden": "false" }); } this._createIcons(); this._setupEvents( options.event ); if ( heightStyle === "fill" ) { maxHeight = parent.height(); this.element.siblings( ":visible" ).each(function() { var elem = $( this ), position = elem.css( "position" ); if ( position === "absolute" || position === "fixed" ) { return; } maxHeight -= elem.outerHeight( true ); }); this.headers.each(function() { maxHeight -= $( this ).outerHeight( true ); }); this.headers.next() .each(function() { $( this ).height( Math.max( 0, maxHeight - $( this ).innerHeight() + $( this ).height() ) ); }) .css( "overflow", "auto" ); } else if ( heightStyle === "auto" ) { maxHeight = 0; this.headers.next() .each(function() { maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); }) .height( maxHeight ); } }, _activate: function( index ) { var active = this._findActive( index )[ 0 ]; // trying to activate the already active panel if ( active === this.active[ 0 ] ) { return; } // trying to collapse, simulate a click on the currently active header active = active || this.active[ 0 ]; this._eventHandler({ target: active, currentTarget: active, preventDefault: $.noop }); }, _findActive: function( selector ) { return typeof selector === "number" ? this.headers.eq( selector ) : $(); }, _setupEvents: function( event ) { var events = { keydown: "_keydown" }; if ( event ) { $.each( event.split( " " ), function( index, eventName ) { events[ eventName ] = "_eventHandler"; }); } this._off( this.headers.add( this.headers.next() ) ); this._on( this.headers, events ); this._on( this.headers.next(), { keydown: "_panelKeyDown" }); this._hoverable( this.headers ); this._focusable( this.headers ); }, _eventHandler: function( event ) { var options = this.options, active = this.active, clicked = $( event.currentTarget ), clickedIsActive = clicked[ 0 ] === active[ 0 ], collapsing = clickedIsActive && options.collapsible, toShow = collapsing ? $() : clicked.next(), toHide = active.next(), eventData = { oldHeader: active, oldPanel: toHide, newHeader: collapsing ? $() : clicked, newPanel: toShow }; event.preventDefault(); if ( // click on active header, but not collapsible ( clickedIsActive && !options.collapsible ) || // allow canceling activation ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { return; } options.active = collapsing ? false : this.headers.index( clicked ); // when the call to ._toggle() comes after the class changes // it causes a very odd bug in IE 8 (see #6720) this.active = clickedIsActive ? $() : clicked; this._toggle( eventData ); // switch classes // corner classes on the previously active header stay after the animation active.removeClass( "ui-accordion-header-active ui-state-active" ); if ( options.icons ) { active.children( ".ui-accordion-header-icon" ) .removeClass( options.icons.activeHeader ) .addClass( options.icons.header ); } if ( !clickedIsActive ) { clicked .removeClass( "ui-corner-all" ) .addClass( "ui-accordion-header-active ui-state-active ui-corner-top" ); if ( options.icons ) { clicked.children( ".ui-accordion-header-icon" ) .removeClass( options.icons.header ) .addClass( options.icons.activeHeader ); } clicked .next() .addClass( "ui-accordion-content-active" ); } }, _toggle: function( data ) { var toShow = data.newPanel, toHide = this.prevShow.length ? this.prevShow : data.oldPanel; // handle activating a panel during the animation for another activation this.prevShow.add( this.prevHide ).stop( true, true ); this.prevShow = toShow; this.prevHide = toHide; if ( this.options.animate ) { this._animate( toShow, toHide, data ); } else { toHide.hide(); toShow.show(); this._toggleComplete( data ); } toHide.attr({ "aria-hidden": "true" }); toHide.prev().attr({ "aria-selected": "false", "aria-expanded": "false" }); // if we're switching panels, remove the old header from the tab order // if we're opening from collapsed state, remove the previous header from the tab order // if we're collapsing, then keep the collapsing header in the tab order if ( toShow.length && toHide.length ) { toHide.prev().attr({ "tabIndex": -1, "aria-expanded": "false" }); } else if ( toShow.length ) { this.headers.filter(function() { return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0; }) .attr( "tabIndex", -1 ); } toShow .attr( "aria-hidden", "false" ) .prev() .attr({ "aria-selected": "true", "aria-expanded": "true", tabIndex: 0 }); }, _animate: function( toShow, toHide, data ) { var total, easing, duration, that = this, adjust = 0, boxSizing = toShow.css( "box-sizing" ), down = toShow.length && ( !toHide.length || ( toShow.index() < toHide.index() ) ), animate = this.options.animate || {}, options = down && animate.down || animate, complete = function() { that._toggleComplete( data ); }; if ( typeof options === "number" ) { duration = options; } if ( typeof options === "string" ) { easing = options; } // fall back from options to animation in case of partial down settings easing = easing || options.easing || animate.easing; duration = duration || options.duration || animate.duration; if ( !toHide.length ) { return toShow.animate( this.showProps, duration, easing, complete ); } if ( !toShow.length ) { return toHide.animate( this.hideProps, duration, easing, complete ); } total = toShow.show().outerHeight(); toHide.animate( this.hideProps, { duration: duration, easing: easing, step: function( now, fx ) { fx.now = Math.round( now ); } }); toShow .hide() .animate( this.showProps, { duration: duration, easing: easing, complete: complete, step: function( now, fx ) { fx.now = Math.round( now ); if ( fx.prop !== "height" ) { if ( boxSizing === "content-box" ) { adjust += fx.now; } } else if ( that.options.heightStyle !== "content" ) { fx.now = Math.round( total - toHide.outerHeight() - adjust ); adjust = 0; } } }); }, _toggleComplete: function( data ) { var toHide = data.oldPanel; toHide .removeClass( "ui-accordion-content-active" ) .prev() .removeClass( "ui-corner-top" ) .addClass( "ui-corner-all" ); // Work around for rendering bug in IE (#5421) if ( toHide.length ) { toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className; } this._trigger( "activate", null, data ); } }); /*! * jQuery UI Menu 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/menu/ */ var menu = $.widget( "ui.menu", { version: "1.11.4", defaultElement: "
      ", delay: 300, options: { icons: { submenu: "ui-icon-carat-1-e" }, items: "> *", menus: "ul", position: { my: "left-1 top", at: "right top" }, role: "menu", // callbacks blur: null, focus: null, select: null }, _create: function() { this.activeMenu = this.element; // Flag used to prevent firing of the click handler // as the event bubbles up through nested menus this.mouseHandled = false; this.element .uniqueId() .addClass( "ui-menu ui-widget ui-widget-content" ) .toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length ) .attr({ role: this.options.role, tabIndex: 0 }); if ( this.options.disabled ) { this.element .addClass( "ui-state-disabled" ) .attr( "aria-disabled", "true" ); } this._on({ // Prevent focus from sticking to links inside menu after clicking // them (focus should always stay on UL during navigation). "mousedown .ui-menu-item": function( event ) { event.preventDefault(); }, "click .ui-menu-item": function( event ) { var target = $( event.target ); if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) { this.select( event ); // Only set the mouseHandled flag if the event will bubble, see #9469. if ( !event.isPropagationStopped() ) { this.mouseHandled = true; } // Open submenu on click if ( target.has( ".ui-menu" ).length ) { this.expand( event ); } else if ( !this.element.is( ":focus" ) && $( this.document[ 0 ].activeElement ).closest( ".ui-menu" ).length ) { // Redirect focus to the menu this.element.trigger( "focus", [ true ] ); // If the active item is on the top level, let it stay active. // Otherwise, blur the active item since it is no longer visible. if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) { clearTimeout( this.timer ); } } } }, "mouseenter .ui-menu-item": function( event ) { // Ignore mouse events while typeahead is active, see #10458. // Prevents focusing the wrong item when typeahead causes a scroll while the mouse // is over an item in the menu if ( this.previousFilter ) { return; } var target = $( event.currentTarget ); // Remove ui-state-active class from siblings of the newly focused menu item // to avoid a jump caused by adjacent elements both having a class with a border target.siblings( ".ui-state-active" ).removeClass( "ui-state-active" ); this.focus( event, target ); }, mouseleave: "collapseAll", "mouseleave .ui-menu": "collapseAll", focus: function( event, keepActiveItem ) { // If there's already an active item, keep it active // If not, activate the first item var item = this.active || this.element.find( this.options.items ).eq( 0 ); if ( !keepActiveItem ) { this.focus( event, item ); } }, blur: function( event ) { this._delay(function() { if ( !$.contains( this.element[0], this.document[0].activeElement ) ) { this.collapseAll( event ); } }); }, keydown: "_keydown" }); this.refresh(); // Clicks outside of a menu collapse any open menus this._on( this.document, { click: function( event ) { if ( this._closeOnDocumentClick( event ) ) { this.collapseAll( event ); } // Reset the mouseHandled flag this.mouseHandled = false; } }); }, _destroy: function() { // Destroy (sub)menus this.element .removeAttr( "aria-activedescendant" ) .find( ".ui-menu" ).addBack() .removeClass( "ui-menu ui-widget ui-widget-content ui-menu-icons ui-front" ) .removeAttr( "role" ) .removeAttr( "tabIndex" ) .removeAttr( "aria-labelledby" ) .removeAttr( "aria-expanded" ) .removeAttr( "aria-hidden" ) .removeAttr( "aria-disabled" ) .removeUniqueId() .show(); // Destroy menu items this.element.find( ".ui-menu-item" ) .removeClass( "ui-menu-item" ) .removeAttr( "role" ) .removeAttr( "aria-disabled" ) .removeUniqueId() .removeClass( "ui-state-hover" ) .removeAttr( "tabIndex" ) .removeAttr( "role" ) .removeAttr( "aria-haspopup" ) .children().each( function() { var elem = $( this ); if ( elem.data( "ui-menu-submenu-carat" ) ) { elem.remove(); } }); // Destroy menu dividers this.element.find( ".ui-menu-divider" ).removeClass( "ui-menu-divider ui-widget-content" ); }, _keydown: function( event ) { var match, prev, character, skip, preventDefault = true; switch ( event.keyCode ) { case $.ui.keyCode.PAGE_UP: this.previousPage( event ); break; case $.ui.keyCode.PAGE_DOWN: this.nextPage( event ); break; case $.ui.keyCode.HOME: this._move( "first", "first", event ); break; case $.ui.keyCode.END: this._move( "last", "last", event ); break; case $.ui.keyCode.UP: this.previous( event ); break; case $.ui.keyCode.DOWN: this.next( event ); break; case $.ui.keyCode.LEFT: this.collapse( event ); break; case $.ui.keyCode.RIGHT: if ( this.active && !this.active.is( ".ui-state-disabled" ) ) { this.expand( event ); } break; case $.ui.keyCode.ENTER: case $.ui.keyCode.SPACE: this._activate( event ); break; case $.ui.keyCode.ESCAPE: this.collapse( event ); break; default: preventDefault = false; prev = this.previousFilter || ""; character = String.fromCharCode( event.keyCode ); skip = false; clearTimeout( this.filterTimer ); if ( character === prev ) { skip = true; } else { character = prev + character; } match = this._filterMenuItems( character ); match = skip && match.index( this.active.next() ) !== -1 ? this.active.nextAll( ".ui-menu-item" ) : match; // If no matches on the current filter, reset to the last character pressed // to move down the menu to the first item that starts with that character if ( !match.length ) { character = String.fromCharCode( event.keyCode ); match = this._filterMenuItems( character ); } if ( match.length ) { this.focus( event, match ); this.previousFilter = character; this.filterTimer = this._delay(function() { delete this.previousFilter; }, 1000 ); } else { delete this.previousFilter; } } if ( preventDefault ) { event.preventDefault(); } }, _activate: function( event ) { if ( !this.active.is( ".ui-state-disabled" ) ) { if ( this.active.is( "[aria-haspopup='true']" ) ) { this.expand( event ); } else { this.select( event ); } } }, refresh: function() { var menus, items, that = this, icon = this.options.icons.submenu, submenus = this.element.find( this.options.menus ); this.element.toggleClass( "ui-menu-icons", !!this.element.find( ".ui-icon" ).length ); // Initialize nested menus submenus.filter( ":not(.ui-menu)" ) .addClass( "ui-menu ui-widget ui-widget-content ui-front" ) .hide() .attr({ role: this.options.role, "aria-hidden": "true", "aria-expanded": "false" }) .each(function() { var menu = $( this ), item = menu.parent(), submenuCarat = $( "" ) .addClass( "ui-menu-icon ui-icon " + icon ) .data( "ui-menu-submenu-carat", true ); item .attr( "aria-haspopup", "true" ) .prepend( submenuCarat ); menu.attr( "aria-labelledby", item.attr( "id" ) ); }); menus = submenus.add( this.element ); items = menus.find( this.options.items ); // Initialize menu-items containing spaces and/or dashes only as dividers items.not( ".ui-menu-item" ).each(function() { var item = $( this ); if ( that._isDivider( item ) ) { item.addClass( "ui-widget-content ui-menu-divider" ); } }); // Don't refresh list items that are already adapted items.not( ".ui-menu-item, .ui-menu-divider" ) .addClass( "ui-menu-item" ) .uniqueId() .attr({ tabIndex: -1, role: this._itemRole() }); // Add aria-disabled attribute to any disabled menu item items.filter( ".ui-state-disabled" ).attr( "aria-disabled", "true" ); // If the active item has been removed, blur the menu if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { this.blur(); } }, _itemRole: function() { return { menu: "menuitem", listbox: "option" }[ this.options.role ]; }, _setOption: function( key, value ) { if ( key === "icons" ) { this.element.find( ".ui-menu-icon" ) .removeClass( this.options.icons.submenu ) .addClass( value.submenu ); } if ( key === "disabled" ) { this.element .toggleClass( "ui-state-disabled", !!value ) .attr( "aria-disabled", value ); } this._super( key, value ); }, focus: function( event, item ) { var nested, focused; this.blur( event, event && event.type === "focus" ); this._scrollIntoView( item ); this.active = item.first(); focused = this.active.addClass( "ui-state-focus" ).removeClass( "ui-state-active" ); // Only update aria-activedescendant if there's a role // otherwise we assume focus is managed elsewhere if ( this.options.role ) { this.element.attr( "aria-activedescendant", focused.attr( "id" ) ); } // Highlight active parent menu item, if any this.active .parent() .closest( ".ui-menu-item" ) .addClass( "ui-state-active" ); if ( event && event.type === "keydown" ) { this._close(); } else { this.timer = this._delay(function() { this._close(); }, this.delay ); } nested = item.children( ".ui-menu" ); if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) { this._startOpening(nested); } this.activeMenu = item.parent(); this._trigger( "focus", event, { item: item } ); }, _scrollIntoView: function( item ) { var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; if ( this._hasScroll() ) { borderTop = parseFloat( $.css( this.activeMenu[0], "borderTopWidth" ) ) || 0; paddingTop = parseFloat( $.css( this.activeMenu[0], "paddingTop" ) ) || 0; offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; scroll = this.activeMenu.scrollTop(); elementHeight = this.activeMenu.height(); itemHeight = item.outerHeight(); if ( offset < 0 ) { this.activeMenu.scrollTop( scroll + offset ); } else if ( offset + itemHeight > elementHeight ) { this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); } } }, blur: function( event, fromFocus ) { if ( !fromFocus ) { clearTimeout( this.timer ); } if ( !this.active ) { return; } this.active.removeClass( "ui-state-focus" ); this.active = null; this._trigger( "blur", event, { item: this.active } ); }, _startOpening: function( submenu ) { clearTimeout( this.timer ); // Don't open if already open fixes a Firefox bug that caused a .5 pixel // shift in the submenu position when mousing over the carat icon if ( submenu.attr( "aria-hidden" ) !== "true" ) { return; } this.timer = this._delay(function() { this._close(); this._open( submenu ); }, this.delay ); }, _open: function( submenu ) { var position = $.extend({ of: this.active }, this.options.position ); clearTimeout( this.timer ); this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) ) .hide() .attr( "aria-hidden", "true" ); submenu .show() .removeAttr( "aria-hidden" ) .attr( "aria-expanded", "true" ) .position( position ); }, collapseAll: function( event, all ) { clearTimeout( this.timer ); this.timer = this._delay(function() { // If we were passed an event, look for the submenu that contains the event var currentMenu = all ? this.element : $( event && event.target ).closest( this.element.find( ".ui-menu" ) ); // If we found no valid submenu ancestor, use the main menu to close all sub menus anyway if ( !currentMenu.length ) { currentMenu = this.element; } this._close( currentMenu ); this.blur( event ); this.activeMenu = currentMenu; }, this.delay ); }, // With no arguments, closes the currently active menu - if nothing is active // it closes all menus. If passed an argument, it will search for menus BELOW _close: function( startMenu ) { if ( !startMenu ) { startMenu = this.active ? this.active.parent() : this.element; } startMenu .find( ".ui-menu" ) .hide() .attr( "aria-hidden", "true" ) .attr( "aria-expanded", "false" ) .end() .find( ".ui-state-active" ).not( ".ui-state-focus" ) .removeClass( "ui-state-active" ); }, _closeOnDocumentClick: function( event ) { return !$( event.target ).closest( ".ui-menu" ).length; }, _isDivider: function( item ) { // Match hyphen, em dash, en dash return !/[^\-\u2014\u2013\s]/.test( item.text() ); }, collapse: function( event ) { var newItem = this.active && this.active.parent().closest( ".ui-menu-item", this.element ); if ( newItem && newItem.length ) { this._close(); this.focus( event, newItem ); } }, expand: function( event ) { var newItem = this.active && this.active .children( ".ui-menu " ) .find( this.options.items ) .first(); if ( newItem && newItem.length ) { this._open( newItem.parent() ); // Delay so Firefox will not hide activedescendant change in expanding submenu from AT this._delay(function() { this.focus( event, newItem ); }); } }, next: function( event ) { this._move( "next", "first", event ); }, previous: function( event ) { this._move( "prev", "last", event ); }, isFirstItem: function() { return this.active && !this.active.prevAll( ".ui-menu-item" ).length; }, isLastItem: function() { return this.active && !this.active.nextAll( ".ui-menu-item" ).length; }, _move: function( direction, filter, event ) { var next; if ( this.active ) { if ( direction === "first" || direction === "last" ) { next = this.active [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" ) .eq( -1 ); } else { next = this.active [ direction + "All" ]( ".ui-menu-item" ) .eq( 0 ); } } if ( !next || !next.length || !this.active ) { next = this.activeMenu.find( this.options.items )[ filter ](); } this.focus( event, next ); }, nextPage: function( event ) { var item, base, height; if ( !this.active ) { this.next( event ); return; } if ( this.isLastItem() ) { return; } if ( this._hasScroll() ) { base = this.active.offset().top; height = this.element.height(); this.active.nextAll( ".ui-menu-item" ).each(function() { item = $( this ); return item.offset().top - base - height < 0; }); this.focus( event, item ); } else { this.focus( event, this.activeMenu.find( this.options.items ) [ !this.active ? "first" : "last" ]() ); } }, previousPage: function( event ) { var item, base, height; if ( !this.active ) { this.next( event ); return; } if ( this.isFirstItem() ) { return; } if ( this._hasScroll() ) { base = this.active.offset().top; height = this.element.height(); this.active.prevAll( ".ui-menu-item" ).each(function() { item = $( this ); return item.offset().top - base + height > 0; }); this.focus( event, item ); } else { this.focus( event, this.activeMenu.find( this.options.items ).first() ); } }, _hasScroll: function() { return this.element.outerHeight() < this.element.prop( "scrollHeight" ); }, select: function( event ) { // TODO: It should never be possible to not have an active item at this // point, but the tests don't trigger mouseenter before click. this.active = this.active || $( event.target ).closest( ".ui-menu-item" ); var ui = { item: this.active }; if ( !this.active.has( ".ui-menu" ).length ) { this.collapseAll( event, true ); } this._trigger( "select", event, ui ); }, _filterMenuItems: function(character) { var escapedCharacter = character.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ), regex = new RegExp( "^" + escapedCharacter, "i" ); return this.activeMenu .find( this.options.items ) // Only match on items, not dividers or other content (#10571) .filter( ".ui-menu-item" ) .filter(function() { return regex.test( $.trim( $( this ).text() ) ); }); } }); /*! * jQuery UI Autocomplete 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/autocomplete/ */ $.widget( "ui.autocomplete", { version: "1.11.4", defaultElement: "", options: { appendTo: null, autoFocus: false, delay: 300, minLength: 1, position: { my: "left top", at: "left bottom", collision: "none" }, source: null, // callbacks change: null, close: null, focus: null, open: null, response: null, search: null, select: null }, requestIndex: 0, pending: 0, _create: function() { // Some browsers only repeat keydown events, not keypress events, // so we use the suppressKeyPress flag to determine if we've already // handled the keydown event. #7269 // Unfortunately the code for & in keypress is the same as the up arrow, // so we use the suppressKeyPressRepeat flag to avoid handling keypress // events when we know the keydown event was used to modify the // search term. #7799 var suppressKeyPress, suppressKeyPressRepeat, suppressInput, nodeName = this.element[ 0 ].nodeName.toLowerCase(), isTextarea = nodeName === "textarea", isInput = nodeName === "input"; this.isMultiLine = // Textareas are always multi-line isTextarea ? true : // Inputs are always single-line, even if inside a contentEditable element // IE also treats inputs as contentEditable isInput ? false : // All other element types are determined by whether or not they're contentEditable this.element.prop( "isContentEditable" ); this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ]; this.isNewMenu = true; this.element .addClass( "ui-autocomplete-input" ) .attr( "autocomplete", "off" ); this._on( this.element, { keydown: function( event ) { if ( this.element.prop( "readOnly" ) ) { suppressKeyPress = true; suppressInput = true; suppressKeyPressRepeat = true; return; } suppressKeyPress = false; suppressInput = false; suppressKeyPressRepeat = false; var keyCode = $.ui.keyCode; switch ( event.keyCode ) { case keyCode.PAGE_UP: suppressKeyPress = true; this._move( "previousPage", event ); break; case keyCode.PAGE_DOWN: suppressKeyPress = true; this._move( "nextPage", event ); break; case keyCode.UP: suppressKeyPress = true; this._keyEvent( "previous", event ); break; case keyCode.DOWN: suppressKeyPress = true; this._keyEvent( "next", event ); break; case keyCode.ENTER: // when menu is open and has focus if ( this.menu.active ) { // #6055 - Opera still allows the keypress to occur // which causes forms to submit suppressKeyPress = true; event.preventDefault(); this.menu.select( event ); } break; case keyCode.TAB: if ( this.menu.active ) { this.menu.select( event ); } break; case keyCode.ESCAPE: if ( this.menu.element.is( ":visible" ) ) { if ( !this.isMultiLine ) { this._value( this.term ); } this.close( event ); // Different browsers have different default behavior for escape // Single press can mean undo or clear // Double press in IE means clear the whole form event.preventDefault(); } break; default: suppressKeyPressRepeat = true; // search timeout should be triggered before the input value is changed this._searchTimeout( event ); break; } }, keypress: function( event ) { if ( suppressKeyPress ) { suppressKeyPress = false; if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { event.preventDefault(); } return; } if ( suppressKeyPressRepeat ) { return; } // replicate some key handlers to allow them to repeat in Firefox and Opera var keyCode = $.ui.keyCode; switch ( event.keyCode ) { case keyCode.PAGE_UP: this._move( "previousPage", event ); break; case keyCode.PAGE_DOWN: this._move( "nextPage", event ); break; case keyCode.UP: this._keyEvent( "previous", event ); break; case keyCode.DOWN: this._keyEvent( "next", event ); break; } }, input: function( event ) { if ( suppressInput ) { suppressInput = false; event.preventDefault(); return; } this._searchTimeout( event ); }, focus: function() { this.selectedItem = null; this.previous = this._value(); }, blur: function( event ) { if ( this.cancelBlur ) { delete this.cancelBlur; return; } clearTimeout( this.searching ); this.close( event ); this._change( event ); } }); this._initSource(); this.menu = $( "
        " ) .addClass( "ui-autocomplete ui-front" ) .appendTo( this._appendTo() ) .menu({ // disable ARIA support, the live region takes care of that role: null }) .hide() .menu( "instance" ); this._on( this.menu.element, { mousedown: function( event ) { // prevent moving focus out of the text field event.preventDefault(); // IE doesn't prevent moving focus even with event.preventDefault() // so we set a flag to know when we should ignore the blur event this.cancelBlur = true; this._delay(function() { delete this.cancelBlur; }); // clicking on the scrollbar causes focus to shift to the body // but we can't detect a mouseup or a click immediately afterward // so we have to track the next mousedown and close the menu if // the user clicks somewhere outside of the autocomplete var menuElement = this.menu.element[ 0 ]; if ( !$( event.target ).closest( ".ui-menu-item" ).length ) { this._delay(function() { var that = this; this.document.one( "mousedown", function( event ) { if ( event.target !== that.element[ 0 ] && event.target !== menuElement && !$.contains( menuElement, event.target ) ) { that.close(); } }); }); } }, menufocus: function( event, ui ) { var label, item; // support: Firefox // Prevent accidental activation of menu items in Firefox (#7024 #9118) if ( this.isNewMenu ) { this.isNewMenu = false; if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) { this.menu.blur(); this.document.one( "mousemove", function() { $( event.target ).trigger( event.originalEvent ); }); return; } } item = ui.item.data( "ui-autocomplete-item" ); if ( false !== this._trigger( "focus", event, { item: item } ) ) { // use value to match what will end up in the input, if it was a key event if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) { this._value( item.value ); } } // Announce the value in the liveRegion label = ui.item.attr( "aria-label" ) || item.value; if ( label && $.trim( label ).length ) { this.liveRegion.children().hide(); $( "
        " ).text( label ).appendTo( this.liveRegion ); } }, menuselect: function( event, ui ) { var item = ui.item.data( "ui-autocomplete-item" ), previous = this.previous; // only trigger when focus was lost (click on menu) if ( this.element[ 0 ] !== this.document[ 0 ].activeElement ) { this.element.focus(); this.previous = previous; // #6109 - IE triggers two focus events and the second // is asynchronous, so we need to reset the previous // term synchronously and asynchronously :-( this._delay(function() { this.previous = previous; this.selectedItem = item; }); } if ( false !== this._trigger( "select", event, { item: item } ) ) { this._value( item.value ); } // reset the term after the select event // this allows custom select handling to work properly this.term = this._value(); this.close( event ); this.selectedItem = item; } }); this.liveRegion = $( "", { role: "status", "aria-live": "assertive", "aria-relevant": "additions" }) .addClass( "ui-helper-hidden-accessible" ) .appendTo( this.document[ 0 ].body ); // turning off autocomplete prevents the browser from remembering the // value when navigating through history, so we re-enable autocomplete // if the page is unloaded before the widget is destroyed. #7790 this._on( this.window, { beforeunload: function() { this.element.removeAttr( "autocomplete" ); } }); }, _destroy: function() { clearTimeout( this.searching ); this.element .removeClass( "ui-autocomplete-input" ) .removeAttr( "autocomplete" ); this.menu.element.remove(); this.liveRegion.remove(); }, _setOption: function( key, value ) { this._super( key, value ); if ( key === "source" ) { this._initSource(); } if ( key === "appendTo" ) { this.menu.element.appendTo( this._appendTo() ); } if ( key === "disabled" && value && this.xhr ) { this.xhr.abort(); } }, _appendTo: function() { var element = this.options.appendTo; if ( element ) { element = element.jquery || element.nodeType ? $( element ) : this.document.find( element ).eq( 0 ); } if ( !element || !element[ 0 ] ) { element = this.element.closest( ".ui-front" ); } if ( !element.length ) { element = this.document[ 0 ].body; } return element; }, _initSource: function() { var array, url, that = this; if ( $.isArray( this.options.source ) ) { array = this.options.source; this.source = function( request, response ) { response( $.ui.autocomplete.filter( array, request.term ) ); }; } else if ( typeof this.options.source === "string" ) { url = this.options.source; this.source = function( request, response ) { if ( that.xhr ) { that.xhr.abort(); } that.xhr = $.ajax({ url: url, data: request, dataType: "json", success: function( data ) { response( data ); }, error: function() { response([]); } }); }; } else { this.source = this.options.source; } }, _searchTimeout: function( event ) { clearTimeout( this.searching ); this.searching = this._delay(function() { // Search if the value has changed, or if the user retypes the same value (see #7434) var equalValues = this.term === this._value(), menuVisible = this.menu.element.is( ":visible" ), modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey; if ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) { this.selectedItem = null; this.search( null, event ); } }, this.options.delay ); }, search: function( value, event ) { value = value != null ? value : this._value(); // always save the actual value, not the one passed as an argument this.term = this._value(); if ( value.length < this.options.minLength ) { return this.close( event ); } if ( this._trigger( "search", event ) === false ) { return; } return this._search( value ); }, _search: function( value ) { this.pending++; this.element.addClass( "ui-autocomplete-loading" ); this.cancelSearch = false; this.source( { term: value }, this._response() ); }, _response: function() { var index = ++this.requestIndex; return $.proxy(function( content ) { if ( index === this.requestIndex ) { this.__response( content ); } this.pending--; if ( !this.pending ) { this.element.removeClass( "ui-autocomplete-loading" ); } }, this ); }, __response: function( content ) { if ( content ) { content = this._normalize( content ); } this._trigger( "response", null, { content: content } ); if ( !this.options.disabled && content && content.length && !this.cancelSearch ) { this._suggest( content ); this._trigger( "open" ); } else { // use ._close() instead of .close() so we don't cancel future searches this._close(); } }, close: function( event ) { this.cancelSearch = true; this._close( event ); }, _close: function( event ) { if ( this.menu.element.is( ":visible" ) ) { this.menu.element.hide(); this.menu.blur(); this.isNewMenu = true; this._trigger( "close", event ); } }, _change: function( event ) { if ( this.previous !== this._value() ) { this._trigger( "change", event, { item: this.selectedItem } ); } }, _normalize: function( items ) { // assume all items have the right format when the first item is complete if ( items.length && items[ 0 ].label && items[ 0 ].value ) { return items; } return $.map( items, function( item ) { if ( typeof item === "string" ) { return { label: item, value: item }; } return $.extend( {}, item, { label: item.label || item.value, value: item.value || item.label }); }); }, _suggest: function( items ) { var ul = this.menu.element.empty(); this._renderMenu( ul, items ); this.isNewMenu = true; this.menu.refresh(); // size and position menu ul.show(); this._resizeMenu(); ul.position( $.extend({ of: this.element }, this.options.position ) ); if ( this.options.autoFocus ) { this.menu.next(); } }, _resizeMenu: function() { var ul = this.menu.element; ul.outerWidth( Math.max( // Firefox wraps long text (possibly a rounding bug) // so we add 1px to avoid the wrapping (#7513) ul.width( "" ).outerWidth() + 1, this.element.outerWidth() ) ); }, _renderMenu: function( ul, items ) { var that = this; $.each( items, function( index, item ) { that._renderItemData( ul, item ); }); }, _renderItemData: function( ul, item ) { return this._renderItem( ul, item ).data( "ui-autocomplete-item", item ); }, _renderItem: function( ul, item ) { return $( "
      • " ).text( item.label ).appendTo( ul ); }, _move: function( direction, event ) { if ( !this.menu.element.is( ":visible" ) ) { this.search( null, event ); return; } if ( this.menu.isFirstItem() && /^previous/.test( direction ) || this.menu.isLastItem() && /^next/.test( direction ) ) { if ( !this.isMultiLine ) { this._value( this.term ); } this.menu.blur(); return; } this.menu[ direction ]( event ); }, widget: function() { return this.menu.element; }, _value: function() { return this.valueMethod.apply( this.element, arguments ); }, _keyEvent: function( keyEvent, event ) { if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { this._move( keyEvent, event ); // prevents moving cursor to beginning/end of the text field in some browsers event.preventDefault(); } } }); $.extend( $.ui.autocomplete, { escapeRegex: function( value ) { return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ); }, filter: function( array, term ) { var matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), "i" ); return $.grep( array, function( value ) { return matcher.test( value.label || value.value || value ); }); } }); // live region extension, adding a `messages` option // NOTE: This is an experimental API. We are still investigating // a full solution for string manipulation and internationalization. $.widget( "ui.autocomplete", $.ui.autocomplete, { options: { messages: { noResults: "No search results.", results: function( amount ) { return amount + ( amount > 1 ? " results are" : " result is" ) + " available, use up and down arrow keys to navigate."; } } }, __response: function( content ) { var message; this._superApply( arguments ); if ( this.options.disabled || this.cancelSearch ) { return; } if ( content && content.length ) { message = this.options.messages.results( content.length ); } else { message = this.options.messages.noResults; } this.liveRegion.children().hide(); $( "
        " ).text( message ).appendTo( this.liveRegion ); } }); var autocomplete = $.ui.autocomplete; /*! * jQuery UI Datepicker 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/datepicker/ */ $.extend($.ui, { datepicker: { version: "1.11.4" } }); var datepicker_instActive; function datepicker_getZindex( elem ) { var position, value; while ( elem.length && elem[ 0 ] !== document ) { // Ignore z-index if position is set to a value where z-index is ignored by the browser // This makes behavior of this function consistent across browsers // WebKit always returns auto if the element is positioned position = elem.css( "position" ); if ( position === "absolute" || position === "relative" || position === "fixed" ) { // IE returns 0 when zIndex is not specified // other browsers return a string // we ignore the case of nested elements with an explicit value of 0 //
        value = parseInt( elem.css( "zIndex" ), 10 ); if ( !isNaN( value ) && value !== 0 ) { return value; } } elem = elem.parent(); } return 0; } /* Date picker manager. Use the singleton instance of this class, $.datepicker, to interact with the date picker. Settings for (groups of) date pickers are maintained in an instance object, allowing multiple different settings on the same page. */ function Datepicker() { this._curInst = null; // The current instance in use this._keyEvent = false; // If the last event was a key event this._disabledInputs = []; // List of date picker inputs that have been disabled this._datepickerShowing = false; // True if the popup picker is showing , false if not this._inDialog = false; // True if showing within a "dialog", false if not this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class this._appendClass = "ui-datepicker-append"; // The name of the append marker class this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class this.regional = []; // Available regional settings, indexed by language code this.regional[""] = { // Default regional settings closeText: "Done", // Display text for close link prevText: "Prev", // Display text for previous month link nextText: "Next", // Display text for next month link currentText: "Today", // Display text for current month link monthNames: ["January","February","March","April","May","June", "July","August","September","October","November","December"], // Names of months for drop-down and formatting monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], // For formatting dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], // For formatting dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], // For formatting dayNamesMin: ["Su","Mo","Tu","We","Th","Fr","Sa"], // Column headings for days starting at Sunday weekHeader: "Wk", // Column header for week of the year dateFormat: "mm/dd/yy", // See format options on parseDate firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ... isRTL: false, // True if right-to-left language, false if left-to-right showMonthAfterYear: false, // True if the year select precedes month, false for month then year yearSuffix: "" // Additional text to append to the year in the month headers }; this._defaults = { // Global defaults for all the date picker instances showOn: "focus", // "focus" for popup on focus, // "button" for trigger button, or "both" for either showAnim: "fadeIn", // Name of jQuery animation for popup showOptions: {}, // Options for enhanced animations defaultDate: null, // Used when field is blank: actual date, // +/-number for offset from today, null for today appendText: "", // Display text following the input box, e.g. showing the format buttonText: "...", // Text for trigger button buttonImage: "", // URL for trigger button image buttonImageOnly: false, // True if the image appears alone, false if it appears on a button hideIfNoPrevNext: false, // True to hide next/previous month links // if not applicable, false to just disable them navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links gotoCurrent: false, // True if today link goes back to current selection instead changeMonth: false, // True if month can be selected directly, false if only prev/next changeYear: false, // True if year can be selected directly, false if only prev/next yearRange: "c-10:c+10", // Range of years to display in drop-down, // either relative to today's year (-nn:+nn), relative to currently displayed year // (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n) showOtherMonths: false, // True to show dates in other months, false to leave blank selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable showWeek: false, // True to show week of the year, false to not show it calculateWeek: this.iso8601Week, // How to calculate the week of the year, // takes a Date and returns the number of the week for it shortYearCutoff: "+10", // Short year values < this are in the current century, // > this are in the previous century, // string value starting with "+" for current year + value minDate: null, // The earliest selectable date, or null for no limit maxDate: null, // The latest selectable date, or null for no limit duration: "fast", // Duration of display/closure beforeShowDay: null, // Function that takes a date and returns an array with // [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "", // [2] = cell title (optional), e.g. $.datepicker.noWeekends beforeShow: null, // Function that takes an input field and // returns a set of custom settings for the date picker onSelect: null, // Define a callback function when a date is selected onChangeMonthYear: null, // Define a callback function when the month or year is changed onClose: null, // Define a callback function when the datepicker is closed numberOfMonths: 1, // Number of months to show at a time showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0) stepMonths: 1, // Number of months to step back/forward stepBigMonths: 12, // Number of months to step back/forward for the big links altField: "", // Selector for an alternate field to store selected dates into altFormat: "", // The date format to use for the alternate field constrainInput: true, // The input is constrained by the current date format showButtonPanel: false, // True to show button panel, false to not show it autoSize: false, // True to size the input for the date format, false to leave as is disabled: false // The initial disabled state }; $.extend(this._defaults, this.regional[""]); this.regional.en = $.extend( true, {}, this.regional[ "" ]); this.regional[ "en-US" ] = $.extend( true, {}, this.regional.en ); this.dpDiv = datepicker_bindHover($("
        ")); } $.extend(Datepicker.prototype, { /* Class name added to elements to indicate already configured with a date picker. */ markerClassName: "hasDatepicker", //Keep track of the maximum number of rows displayed (see #7043) maxRows: 4, // TODO rename to "widget" when switching to widget factory _widgetDatepicker: function() { return this.dpDiv; }, /* Override the default settings for all instances of the date picker. * @param settings object - the new settings to use as defaults (anonymous object) * @return the manager object */ setDefaults: function(settings) { datepicker_extendRemove(this._defaults, settings || {}); return this; }, /* Attach the date picker to a jQuery selection. * @param target element - the target input field or division or span * @param settings object - the new settings to use for this date picker instance (anonymous) */ _attachDatepicker: function(target, settings) { var nodeName, inline, inst; nodeName = target.nodeName.toLowerCase(); inline = (nodeName === "div" || nodeName === "span"); if (!target.id) { this.uuid += 1; target.id = "dp" + this.uuid; } inst = this._newInst($(target), inline); inst.settings = $.extend({}, settings || {}); if (nodeName === "input") { this._connectDatepicker(target, inst); } else if (inline) { this._inlineDatepicker(target, inst); } }, /* Create a new instance object. */ _newInst: function(target, inline) { var id = target[0].id.replace(/([^A-Za-z0-9_\-])/g, "\\\\$1"); // escape jQuery meta chars return {id: id, input: target, // associated target selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection drawMonth: 0, drawYear: 0, // month being drawn inline: inline, // is datepicker inline or not dpDiv: (!inline ? this.dpDiv : // presentation div datepicker_bindHover($("
        ")))}; }, /* Attach the date picker to an input field. */ _connectDatepicker: function(target, inst) { var input = $(target); inst.append = $([]); inst.trigger = $([]); if (input.hasClass(this.markerClassName)) { return; } this._attachments(input, inst); input.addClass(this.markerClassName).keydown(this._doKeyDown). keypress(this._doKeyPress).keyup(this._doKeyUp); this._autoSize(inst); $.data(target, "datepicker", inst); //If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665) if( inst.settings.disabled ) { this._disableDatepicker( target ); } }, /* Make attachments based on settings. */ _attachments: function(input, inst) { var showOn, buttonText, buttonImage, appendText = this._get(inst, "appendText"), isRTL = this._get(inst, "isRTL"); if (inst.append) { inst.append.remove(); } if (appendText) { inst.append = $("" + appendText + ""); input[isRTL ? "before" : "after"](inst.append); } input.unbind("focus", this._showDatepicker); if (inst.trigger) { inst.trigger.remove(); } showOn = this._get(inst, "showOn"); if (showOn === "focus" || showOn === "both") { // pop-up date picker when in the marked field input.focus(this._showDatepicker); } if (showOn === "button" || showOn === "both") { // pop-up date picker when button clicked buttonText = this._get(inst, "buttonText"); buttonImage = this._get(inst, "buttonImage"); inst.trigger = $(this._get(inst, "buttonImageOnly") ? $("").addClass(this._triggerClass). attr({ src: buttonImage, alt: buttonText, title: buttonText }) : $("").addClass(this._triggerClass). html(!buttonImage ? buttonText : $("").attr( { src:buttonImage, alt:buttonText, title:buttonText }))); input[isRTL ? "before" : "after"](inst.trigger); inst.trigger.click(function() { if ($.datepicker._datepickerShowing && $.datepicker._lastInput === input[0]) { $.datepicker._hideDatepicker(); } else if ($.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0]) { $.datepicker._hideDatepicker(); $.datepicker._showDatepicker(input[0]); } else { $.datepicker._showDatepicker(input[0]); } return false; }); } }, /* Apply the maximum length for the date format. */ _autoSize: function(inst) { if (this._get(inst, "autoSize") && !inst.inline) { var findMax, max, maxI, i, date = new Date(2009, 12 - 1, 20), // Ensure double digits dateFormat = this._get(inst, "dateFormat"); if (dateFormat.match(/[DM]/)) { findMax = function(names) { max = 0; maxI = 0; for (i = 0; i < names.length; i++) { if (names[i].length > max) { max = names[i].length; maxI = i; } } return maxI; }; date.setMonth(findMax(this._get(inst, (dateFormat.match(/MM/) ? "monthNames" : "monthNamesShort")))); date.setDate(findMax(this._get(inst, (dateFormat.match(/DD/) ? "dayNames" : "dayNamesShort"))) + 20 - date.getDay()); } inst.input.attr("size", this._formatDate(inst, date).length); } }, /* Attach an inline date picker to a div. */ _inlineDatepicker: function(target, inst) { var divSpan = $(target); if (divSpan.hasClass(this.markerClassName)) { return; } divSpan.addClass(this.markerClassName).append(inst.dpDiv); $.data(target, "datepicker", inst); this._setDate(inst, this._getDefaultDate(inst), true); this._updateDatepicker(inst); this._updateAlternate(inst); //If disabled option is true, disable the datepicker before showing it (see ticket #5665) if( inst.settings.disabled ) { this._disableDatepicker( target ); } // Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements // http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height inst.dpDiv.css( "display", "block" ); }, /* Pop-up the date picker in a "dialog" box. * @param input element - ignored * @param date string or Date - the initial date to display * @param onSelect function - the function to call when a date is selected * @param settings object - update the dialog date picker instance's settings (anonymous object) * @param pos int[2] - coordinates for the dialog's position within the screen or * event - with x/y coordinates or * leave empty for default (screen centre) * @return the manager object */ _dialogDatepicker: function(input, date, onSelect, settings, pos) { var id, browserWidth, browserHeight, scrollX, scrollY, inst = this._dialogInst; // internal instance if (!inst) { this.uuid += 1; id = "dp" + this.uuid; this._dialogInput = $(""); this._dialogInput.keydown(this._doKeyDown); $("body").append(this._dialogInput); inst = this._dialogInst = this._newInst(this._dialogInput, false); inst.settings = {}; $.data(this._dialogInput[0], "datepicker", inst); } datepicker_extendRemove(inst.settings, settings || {}); date = (date && date.constructor === Date ? this._formatDate(inst, date) : date); this._dialogInput.val(date); this._pos = (pos ? (pos.length ? pos : [pos.pageX, pos.pageY]) : null); if (!this._pos) { browserWidth = document.documentElement.clientWidth; browserHeight = document.documentElement.clientHeight; scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; scrollY = document.documentElement.scrollTop || document.body.scrollTop; this._pos = // should use actual width/height below [(browserWidth / 2) - 100 + scrollX, (browserHeight / 2) - 150 + scrollY]; } // move input on screen for focus, but hidden behind dialog this._dialogInput.css("left", (this._pos[0] + 20) + "px").css("top", this._pos[1] + "px"); inst.settings.onSelect = onSelect; this._inDialog = true; this.dpDiv.addClass(this._dialogClass); this._showDatepicker(this._dialogInput[0]); if ($.blockUI) { $.blockUI(this.dpDiv); } $.data(this._dialogInput[0], "datepicker", inst); return this; }, /* Detach a datepicker from its control. * @param target element - the target input field or division or span */ _destroyDatepicker: function(target) { var nodeName, $target = $(target), inst = $.data(target, "datepicker"); if (!$target.hasClass(this.markerClassName)) { return; } nodeName = target.nodeName.toLowerCase(); $.removeData(target, "datepicker"); if (nodeName === "input") { inst.append.remove(); inst.trigger.remove(); $target.removeClass(this.markerClassName). unbind("focus", this._showDatepicker). unbind("keydown", this._doKeyDown). unbind("keypress", this._doKeyPress). unbind("keyup", this._doKeyUp); } else if (nodeName === "div" || nodeName === "span") { $target.removeClass(this.markerClassName).empty(); } if ( datepicker_instActive === inst ) { datepicker_instActive = null; } }, /* Enable the date picker to a jQuery selection. * @param target element - the target input field or division or span */ _enableDatepicker: function(target) { var nodeName, inline, $target = $(target), inst = $.data(target, "datepicker"); if (!$target.hasClass(this.markerClassName)) { return; } nodeName = target.nodeName.toLowerCase(); if (nodeName === "input") { target.disabled = false; inst.trigger.filter("button"). each(function() { this.disabled = false; }).end(). filter("img").css({opacity: "1.0", cursor: ""}); } else if (nodeName === "div" || nodeName === "span") { inline = $target.children("." + this._inlineClass); inline.children().removeClass("ui-state-disabled"); inline.find("select.ui-datepicker-month, select.ui-datepicker-year"). prop("disabled", false); } this._disabledInputs = $.map(this._disabledInputs, function(value) { return (value === target ? null : value); }); // delete entry }, /* Disable the date picker to a jQuery selection. * @param target element - the target input field or division or span */ _disableDatepicker: function(target) { var nodeName, inline, $target = $(target), inst = $.data(target, "datepicker"); if (!$target.hasClass(this.markerClassName)) { return; } nodeName = target.nodeName.toLowerCase(); if (nodeName === "input") { target.disabled = true; inst.trigger.filter("button"). each(function() { this.disabled = true; }).end(). filter("img").css({opacity: "0.5", cursor: "default"}); } else if (nodeName === "div" || nodeName === "span") { inline = $target.children("." + this._inlineClass); inline.children().addClass("ui-state-disabled"); inline.find("select.ui-datepicker-month, select.ui-datepicker-year"). prop("disabled", true); } this._disabledInputs = $.map(this._disabledInputs, function(value) { return (value === target ? null : value); }); // delete entry this._disabledInputs[this._disabledInputs.length] = target; }, /* Is the first field in a jQuery collection disabled as a datepicker? * @param target element - the target input field or division or span * @return boolean - true if disabled, false if enabled */ _isDisabledDatepicker: function(target) { if (!target) { return false; } for (var i = 0; i < this._disabledInputs.length; i++) { if (this._disabledInputs[i] === target) { return true; } } return false; }, /* Retrieve the instance data for the target control. * @param target element - the target input field or division or span * @return object - the associated instance data * @throws error if a jQuery problem getting data */ _getInst: function(target) { try { return $.data(target, "datepicker"); } catch (err) { throw "Missing instance data for this datepicker"; } }, /* Update or retrieve the settings for a date picker attached to an input field or division. * @param target element - the target input field or division or span * @param name object - the new settings to update or * string - the name of the setting to change or retrieve, * when retrieving also "all" for all instance settings or * "defaults" for all global defaults * @param value any - the new value for the setting * (omit if above is an object or to retrieve a value) */ _optionDatepicker: function(target, name, value) { var settings, date, minDate, maxDate, inst = this._getInst(target); if (arguments.length === 2 && typeof name === "string") { return (name === "defaults" ? $.extend({}, $.datepicker._defaults) : (inst ? (name === "all" ? $.extend({}, inst.settings) : this._get(inst, name)) : null)); } settings = name || {}; if (typeof name === "string") { settings = {}; settings[name] = value; } if (inst) { if (this._curInst === inst) { this._hideDatepicker(); } date = this._getDateDatepicker(target, true); minDate = this._getMinMaxDate(inst, "min"); maxDate = this._getMinMaxDate(inst, "max"); datepicker_extendRemove(inst.settings, settings); // reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided if (minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined) { inst.settings.minDate = this._formatDate(inst, minDate); } if (maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined) { inst.settings.maxDate = this._formatDate(inst, maxDate); } if ( "disabled" in settings ) { if ( settings.disabled ) { this._disableDatepicker(target); } else { this._enableDatepicker(target); } } this._attachments($(target), inst); this._autoSize(inst); this._setDate(inst, date); this._updateAlternate(inst); this._updateDatepicker(inst); } }, // change method deprecated _changeDatepicker: function(target, name, value) { this._optionDatepicker(target, name, value); }, /* Redraw the date picker attached to an input field or division. * @param target element - the target input field or division or span */ _refreshDatepicker: function(target) { var inst = this._getInst(target); if (inst) { this._updateDatepicker(inst); } }, /* Set the dates for a jQuery selection. * @param target element - the target input field or division or span * @param date Date - the new date */ _setDateDatepicker: function(target, date) { var inst = this._getInst(target); if (inst) { this._setDate(inst, date); this._updateDatepicker(inst); this._updateAlternate(inst); } }, /* Get the date(s) for the first entry in a jQuery selection. * @param target element - the target input field or division or span * @param noDefault boolean - true if no default date is to be used * @return Date - the current date */ _getDateDatepicker: function(target, noDefault) { var inst = this._getInst(target); if (inst && !inst.inline) { this._setDateFromField(inst, noDefault); } return (inst ? this._getDate(inst) : null); }, /* Handle keystrokes. */ _doKeyDown: function(event) { var onSelect, dateStr, sel, inst = $.datepicker._getInst(event.target), handled = true, isRTL = inst.dpDiv.is(".ui-datepicker-rtl"); inst._keyEvent = true; if ($.datepicker._datepickerShowing) { switch (event.keyCode) { case 9: $.datepicker._hideDatepicker(); handled = false; break; // hide on tab out case 13: sel = $("td." + $.datepicker._dayOverClass + ":not(." + $.datepicker._currentClass + ")", inst.dpDiv); if (sel[0]) { $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]); } onSelect = $.datepicker._get(inst, "onSelect"); if (onSelect) { dateStr = $.datepicker._formatDate(inst); // trigger custom callback onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); } else { $.datepicker._hideDatepicker(); } return false; // don't submit the form case 27: $.datepicker._hideDatepicker(); break; // hide on escape case 33: $.datepicker._adjustDate(event.target, (event.ctrlKey ? -$.datepicker._get(inst, "stepBigMonths") : -$.datepicker._get(inst, "stepMonths")), "M"); break; // previous month/year on page up/+ ctrl case 34: $.datepicker._adjustDate(event.target, (event.ctrlKey ? +$.datepicker._get(inst, "stepBigMonths") : +$.datepicker._get(inst, "stepMonths")), "M"); break; // next month/year on page down/+ ctrl case 35: if (event.ctrlKey || event.metaKey) { $.datepicker._clearDate(event.target); } handled = event.ctrlKey || event.metaKey; break; // clear on ctrl or command +end case 36: if (event.ctrlKey || event.metaKey) { $.datepicker._gotoToday(event.target); } handled = event.ctrlKey || event.metaKey; break; // current on ctrl or command +home case 37: if (event.ctrlKey || event.metaKey) { $.datepicker._adjustDate(event.target, (isRTL ? +1 : -1), "D"); } handled = event.ctrlKey || event.metaKey; // -1 day on ctrl or command +left if (event.originalEvent.altKey) { $.datepicker._adjustDate(event.target, (event.ctrlKey ? -$.datepicker._get(inst, "stepBigMonths") : -$.datepicker._get(inst, "stepMonths")), "M"); } // next month/year on alt +left on Mac break; case 38: if (event.ctrlKey || event.metaKey) { $.datepicker._adjustDate(event.target, -7, "D"); } handled = event.ctrlKey || event.metaKey; break; // -1 week on ctrl or command +up case 39: if (event.ctrlKey || event.metaKey) { $.datepicker._adjustDate(event.target, (isRTL ? -1 : +1), "D"); } handled = event.ctrlKey || event.metaKey; // +1 day on ctrl or command +right if (event.originalEvent.altKey) { $.datepicker._adjustDate(event.target, (event.ctrlKey ? +$.datepicker._get(inst, "stepBigMonths") : +$.datepicker._get(inst, "stepMonths")), "M"); } // next month/year on alt +right break; case 40: if (event.ctrlKey || event.metaKey) { $.datepicker._adjustDate(event.target, +7, "D"); } handled = event.ctrlKey || event.metaKey; break; // +1 week on ctrl or command +down default: handled = false; } } else if (event.keyCode === 36 && event.ctrlKey) { // display the date picker on ctrl+home $.datepicker._showDatepicker(this); } else { handled = false; } if (handled) { event.preventDefault(); event.stopPropagation(); } }, /* Filter entered characters - based on date format. */ _doKeyPress: function(event) { var chars, chr, inst = $.datepicker._getInst(event.target); if ($.datepicker._get(inst, "constrainInput")) { chars = $.datepicker._possibleChars($.datepicker._get(inst, "dateFormat")); chr = String.fromCharCode(event.charCode == null ? event.keyCode : event.charCode); return event.ctrlKey || event.metaKey || (chr < " " || !chars || chars.indexOf(chr) > -1); } }, /* Synchronise manual entry and field/alternate field. */ _doKeyUp: function(event) { var date, inst = $.datepicker._getInst(event.target); if (inst.input.val() !== inst.lastVal) { try { date = $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"), (inst.input ? inst.input.val() : null), $.datepicker._getFormatConfig(inst)); if (date) { // only if valid $.datepicker._setDateFromField(inst); $.datepicker._updateAlternate(inst); $.datepicker._updateDatepicker(inst); } } catch (err) { } } return true; }, /* Pop-up the date picker for a given input field. * If false returned from beforeShow event handler do not show. * @param input element - the input field attached to the date picker or * event - if triggered by focus */ _showDatepicker: function(input) { input = input.target || input; if (input.nodeName.toLowerCase() !== "input") { // find from button/image trigger input = $("input", input.parentNode)[0]; } if ($.datepicker._isDisabledDatepicker(input) || $.datepicker._lastInput === input) { // already here return; } var inst, beforeShow, beforeShowSettings, isFixed, offset, showAnim, duration; inst = $.datepicker._getInst(input); if ($.datepicker._curInst && $.datepicker._curInst !== inst) { $.datepicker._curInst.dpDiv.stop(true, true); if ( inst && $.datepicker._datepickerShowing ) { $.datepicker._hideDatepicker( $.datepicker._curInst.input[0] ); } } beforeShow = $.datepicker._get(inst, "beforeShow"); beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {}; if(beforeShowSettings === false){ return; } datepicker_extendRemove(inst.settings, beforeShowSettings); inst.lastVal = null; $.datepicker._lastInput = input; $.datepicker._setDateFromField(inst); if ($.datepicker._inDialog) { // hide cursor input.value = ""; } if (!$.datepicker._pos) { // position below input $.datepicker._pos = $.datepicker._findPos(input); $.datepicker._pos[1] += input.offsetHeight; // add the height } isFixed = false; $(input).parents().each(function() { isFixed |= $(this).css("position") === "fixed"; return !isFixed; }); offset = {left: $.datepicker._pos[0], top: $.datepicker._pos[1]}; $.datepicker._pos = null; //to avoid flashes on Firefox inst.dpDiv.empty(); // determine sizing offscreen inst.dpDiv.css({position: "absolute", display: "block", top: "-1000px"}); $.datepicker._updateDatepicker(inst); // fix width for dynamic number of date pickers // and adjust position before showing offset = $.datepicker._checkOffset(inst, offset, isFixed); inst.dpDiv.css({position: ($.datepicker._inDialog && $.blockUI ? "static" : (isFixed ? "fixed" : "absolute")), display: "none", left: offset.left + "px", top: offset.top + "px"}); if (!inst.inline) { showAnim = $.datepicker._get(inst, "showAnim"); duration = $.datepicker._get(inst, "duration"); inst.dpDiv.css( "z-index", datepicker_getZindex( $( input ) ) + 1 ); $.datepicker._datepickerShowing = true; if ( $.effects && $.effects.effect[ showAnim ] ) { inst.dpDiv.show(showAnim, $.datepicker._get(inst, "showOptions"), duration); } else { inst.dpDiv[showAnim || "show"](showAnim ? duration : null); } if ( $.datepicker._shouldFocusInput( inst ) ) { inst.input.focus(); } $.datepicker._curInst = inst; } }, /* Generate the date picker content. */ _updateDatepicker: function(inst) { this.maxRows = 4; //Reset the max number of rows being displayed (see #7043) datepicker_instActive = inst; // for delegate hover events inst.dpDiv.empty().append(this._generateHTML(inst)); this._attachHandlers(inst); var origyearshtml, numMonths = this._getNumberOfMonths(inst), cols = numMonths[1], width = 17, activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" ); if ( activeCell.length > 0 ) { datepicker_handleMouseover.apply( activeCell.get( 0 ) ); } inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""); if (cols > 1) { inst.dpDiv.addClass("ui-datepicker-multi-" + cols).css("width", (width * cols) + "em"); } inst.dpDiv[(numMonths[0] !== 1 || numMonths[1] !== 1 ? "add" : "remove") + "Class"]("ui-datepicker-multi"); inst.dpDiv[(this._get(inst, "isRTL") ? "add" : "remove") + "Class"]("ui-datepicker-rtl"); if (inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) { inst.input.focus(); } // deffered render of the years select (to avoid flashes on Firefox) if( inst.yearshtml ){ origyearshtml = inst.yearshtml; setTimeout(function(){ //assure that inst.yearshtml didn't change. if( origyearshtml === inst.yearshtml && inst.yearshtml ){ inst.dpDiv.find("select.ui-datepicker-year:first").replaceWith(inst.yearshtml); } origyearshtml = inst.yearshtml = null; }, 0); } }, // #6694 - don't focus the input if it's already focused // this breaks the change event in IE // Support: IE and jQuery <1.9 _shouldFocusInput: function( inst ) { return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" ); }, /* Check positioning to remain on screen. */ _checkOffset: function(inst, offset, isFixed) { var dpWidth = inst.dpDiv.outerWidth(), dpHeight = inst.dpDiv.outerHeight(), inputWidth = inst.input ? inst.input.outerWidth() : 0, inputHeight = inst.input ? inst.input.outerHeight() : 0, viewWidth = document.documentElement.clientWidth + (isFixed ? 0 : $(document).scrollLeft()), viewHeight = document.documentElement.clientHeight + (isFixed ? 0 : $(document).scrollTop()); offset.left -= (this._get(inst, "isRTL") ? (dpWidth - inputWidth) : 0); offset.left -= (isFixed && offset.left === inst.input.offset().left) ? $(document).scrollLeft() : 0; offset.top -= (isFixed && offset.top === (inst.input.offset().top + inputHeight)) ? $(document).scrollTop() : 0; // now check if datepicker is showing outside window viewport - move to a better place if so. offset.left -= Math.min(offset.left, (offset.left + dpWidth > viewWidth && viewWidth > dpWidth) ? Math.abs(offset.left + dpWidth - viewWidth) : 0); offset.top -= Math.min(offset.top, (offset.top + dpHeight > viewHeight && viewHeight > dpHeight) ? Math.abs(dpHeight + inputHeight) : 0); return offset; }, /* Find an object's position on the screen. */ _findPos: function(obj) { var position, inst = this._getInst(obj), isRTL = this._get(inst, "isRTL"); while (obj && (obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden(obj))) { obj = obj[isRTL ? "previousSibling" : "nextSibling"]; } position = $(obj).offset(); return [position.left, position.top]; }, /* Hide the date picker from view. * @param input element - the input field attached to the date picker */ _hideDatepicker: function(input) { var showAnim, duration, postProcess, onClose, inst = this._curInst; if (!inst || (input && inst !== $.data(input, "datepicker"))) { return; } if (this._datepickerShowing) { showAnim = this._get(inst, "showAnim"); duration = this._get(inst, "duration"); postProcess = function() { $.datepicker._tidyDialog(inst); }; // DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) { inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess); } else { inst.dpDiv[(showAnim === "slideDown" ? "slideUp" : (showAnim === "fadeIn" ? "fadeOut" : "hide"))]((showAnim ? duration : null), postProcess); } if (!showAnim) { postProcess(); } this._datepickerShowing = false; onClose = this._get(inst, "onClose"); if (onClose) { onClose.apply((inst.input ? inst.input[0] : null), [(inst.input ? inst.input.val() : ""), inst]); } this._lastInput = null; if (this._inDialog) { this._dialogInput.css({ position: "absolute", left: "0", top: "-100px" }); if ($.blockUI) { $.unblockUI(); $("body").append(this.dpDiv); } } this._inDialog = false; } }, /* Tidy up after a dialog display. */ _tidyDialog: function(inst) { inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar"); }, /* Close date picker if clicked elsewhere. */ _checkExternalClick: function(event) { if (!$.datepicker._curInst) { return; } var $target = $(event.target), inst = $.datepicker._getInst($target[0]); if ( ( ( $target[0].id !== $.datepicker._mainDivId && $target.parents("#" + $.datepicker._mainDivId).length === 0 && !$target.hasClass($.datepicker.markerClassName) && !$target.closest("." + $.datepicker._triggerClass).length && $.datepicker._datepickerShowing && !($.datepicker._inDialog && $.blockUI) ) ) || ( $target.hasClass($.datepicker.markerClassName) && $.datepicker._curInst !== inst ) ) { $.datepicker._hideDatepicker(); } }, /* Adjust one of the date sub-fields. */ _adjustDate: function(id, offset, period) { var target = $(id), inst = this._getInst(target[0]); if (this._isDisabledDatepicker(target[0])) { return; } this._adjustInstDate(inst, offset + (period === "M" ? this._get(inst, "showCurrentAtPos") : 0), // undo positioning period); this._updateDatepicker(inst); }, /* Action for current link. */ _gotoToday: function(id) { var date, target = $(id), inst = this._getInst(target[0]); if (this._get(inst, "gotoCurrent") && inst.currentDay) { inst.selectedDay = inst.currentDay; inst.drawMonth = inst.selectedMonth = inst.currentMonth; inst.drawYear = inst.selectedYear = inst.currentYear; } else { date = new Date(); inst.selectedDay = date.getDate(); inst.drawMonth = inst.selectedMonth = date.getMonth(); inst.drawYear = inst.selectedYear = date.getFullYear(); } this._notifyChange(inst); this._adjustDate(target); }, /* Action for selecting a new month/year. */ _selectMonthYear: function(id, select, period) { var target = $(id), inst = this._getInst(target[0]); inst["selected" + (period === "M" ? "Month" : "Year")] = inst["draw" + (period === "M" ? "Month" : "Year")] = parseInt(select.options[select.selectedIndex].value,10); this._notifyChange(inst); this._adjustDate(target); }, /* Action for selecting a day. */ _selectDay: function(id, month, year, td) { var inst, target = $(id); if ($(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0])) { return; } inst = this._getInst(target[0]); inst.selectedDay = inst.currentDay = $("a", td).html(); inst.selectedMonth = inst.currentMonth = month; inst.selectedYear = inst.currentYear = year; this._selectDate(id, this._formatDate(inst, inst.currentDay, inst.currentMonth, inst.currentYear)); }, /* Erase the input field and hide the date picker. */ _clearDate: function(id) { var target = $(id); this._selectDate(target, ""); }, /* Update the input field with the selected date. */ _selectDate: function(id, dateStr) { var onSelect, target = $(id), inst = this._getInst(target[0]); dateStr = (dateStr != null ? dateStr : this._formatDate(inst)); if (inst.input) { inst.input.val(dateStr); } this._updateAlternate(inst); onSelect = this._get(inst, "onSelect"); if (onSelect) { onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); // trigger custom callback } else if (inst.input) { inst.input.trigger("change"); // fire the change event } if (inst.inline){ this._updateDatepicker(inst); } else { this._hideDatepicker(); this._lastInput = inst.input[0]; if (typeof(inst.input[0]) !== "object") { inst.input.focus(); // restore focus } this._lastInput = null; } }, /* Update any alternate field to synchronise with the main field. */ _updateAlternate: function(inst) { var altFormat, date, dateStr, altField = this._get(inst, "altField"); if (altField) { // update alternate field too altFormat = this._get(inst, "altFormat") || this._get(inst, "dateFormat"); date = this._getDate(inst); dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst)); $(altField).each(function() { $(this).val(dateStr); }); } }, /* Set as beforeShowDay function to prevent selection of weekends. * @param date Date - the date to customise * @return [boolean, string] - is this date selectable?, what is its CSS class? */ noWeekends: function(date) { var day = date.getDay(); return [(day > 0 && day < 6), ""]; }, /* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition. * @param date Date - the date to get the week for * @return number - the number of the week within the year that contains this date */ iso8601Week: function(date) { var time, checkDate = new Date(date.getTime()); // Find Thursday of this week starting on Monday checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); time = checkDate.getTime(); checkDate.setMonth(0); // Compare with Jan 1 checkDate.setDate(1); return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1; }, /* Parse a string value into a date object. * See formatDate below for the possible formats. * * @param format string - the expected format of the date * @param value string - the date in the above format * @param settings Object - attributes include: * shortYearCutoff number - the cutoff year for determining the century (optional) * dayNamesShort string[7] - abbreviated names of the days from Sunday (optional) * dayNames string[7] - names of the days from Sunday (optional) * monthNamesShort string[12] - abbreviated names of the months (optional) * monthNames string[12] - names of the months (optional) * @return Date - the extracted date value or null if value is blank */ parseDate: function (format, value, settings) { if (format == null || value == null) { throw "Invalid arguments"; } value = (typeof value === "object" ? value.toString() : value + ""); if (value === "") { return null; } var iFormat, dim, extra, iValue = 0, shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff, shortYearCutoff = (typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp : new Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10)), dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort, dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames, monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort, monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames, year = -1, month = -1, day = -1, doy = -1, literal = false, date, // Check whether a format character is doubled lookAhead = function(match) { var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); if (matches) { iFormat++; } return matches; }, // Extract a number from the string value getNumber = function(match) { var isDoubled = lookAhead(match), size = (match === "@" ? 14 : (match === "!" ? 20 : (match === "y" && isDoubled ? 4 : (match === "o" ? 3 : 2)))), minSize = (match === "y" ? size : 1), digits = new RegExp("^\\d{" + minSize + "," + size + "}"), num = value.substring(iValue).match(digits); if (!num) { throw "Missing number at position " + iValue; } iValue += num[0].length; return parseInt(num[0], 10); }, // Extract a name from the string value and convert to an index getName = function(match, shortNames, longNames) { var index = -1, names = $.map(lookAhead(match) ? longNames : shortNames, function (v, k) { return [ [k, v] ]; }).sort(function (a, b) { return -(a[1].length - b[1].length); }); $.each(names, function (i, pair) { var name = pair[1]; if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) { index = pair[0]; iValue += name.length; return false; } }); if (index !== -1) { return index + 1; } else { throw "Unknown name at position " + iValue; } }, // Confirm that a literal character matches the string value checkLiteral = function() { if (value.charAt(iValue) !== format.charAt(iFormat)) { throw "Unexpected literal at position " + iValue; } iValue++; }; for (iFormat = 0; iFormat < format.length; iFormat++) { if (literal) { if (format.charAt(iFormat) === "'" && !lookAhead("'")) { literal = false; } else { checkLiteral(); } } else { switch (format.charAt(iFormat)) { case "d": day = getNumber("d"); break; case "D": getName("D", dayNamesShort, dayNames); break; case "o": doy = getNumber("o"); break; case "m": month = getNumber("m"); break; case "M": month = getName("M", monthNamesShort, monthNames); break; case "y": year = getNumber("y"); break; case "@": date = new Date(getNumber("@")); year = date.getFullYear(); month = date.getMonth() + 1; day = date.getDate(); break; case "!": date = new Date((getNumber("!") - this._ticksTo1970) / 10000); year = date.getFullYear(); month = date.getMonth() + 1; day = date.getDate(); break; case "'": if (lookAhead("'")){ checkLiteral(); } else { literal = true; } break; default: checkLiteral(); } } } if (iValue < value.length){ extra = value.substr(iValue); if (!/^\s+/.test(extra)) { throw "Extra/unparsed characters found in date: " + extra; } } if (year === -1) { year = new Date().getFullYear(); } else if (year < 100) { year += new Date().getFullYear() - new Date().getFullYear() % 100 + (year <= shortYearCutoff ? 0 : -100); } if (doy > -1) { month = 1; day = doy; do { dim = this._getDaysInMonth(year, month - 1); if (day <= dim) { break; } month++; day -= dim; } while (true); } date = this._daylightSavingAdjust(new Date(year, month - 1, day)); if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) { throw "Invalid date"; // E.g. 31/02/00 } return date; }, /* Standard date formats. */ ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601) COOKIE: "D, dd M yy", ISO_8601: "yy-mm-dd", RFC_822: "D, d M y", RFC_850: "DD, dd-M-y", RFC_1036: "D, d M y", RFC_1123: "D, d M yy", RFC_2822: "D, d M yy", RSS: "D, d M y", // RFC 822 TICKS: "!", TIMESTAMP: "@", W3C: "yy-mm-dd", // ISO 8601 _ticksTo1970: (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000), /* Format a date object into a string value. * The format can be combinations of the following: * d - day of month (no leading zero) * dd - day of month (two digit) * o - day of year (no leading zeros) * oo - day of year (three digit) * D - day name short * DD - day name long * m - month of year (no leading zero) * mm - month of year (two digit) * M - month name short * MM - month name long * y - year (two digit) * yy - year (four digit) * @ - Unix timestamp (ms since 01/01/1970) * ! - Windows ticks (100ns since 01/01/0001) * "..." - literal text * '' - single quote * * @param format string - the desired format of the date * @param date Date - the date value to format * @param settings Object - attributes include: * dayNamesShort string[7] - abbreviated names of the days from Sunday (optional) * dayNames string[7] - names of the days from Sunday (optional) * monthNamesShort string[12] - abbreviated names of the months (optional) * monthNames string[12] - names of the months (optional) * @return string - the date in the above format */ formatDate: function (format, date, settings) { if (!date) { return ""; } var iFormat, dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort, dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames, monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort, monthNames = (settings ? settings.monthNames : null) || this._defaults.monthNames, // Check whether a format character is doubled lookAhead = function(match) { var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); if (matches) { iFormat++; } return matches; }, // Format a number, with leading zero if necessary formatNumber = function(match, value, len) { var num = "" + value; if (lookAhead(match)) { while (num.length < len) { num = "0" + num; } } return num; }, // Format a name, short or long as requested formatName = function(match, value, shortNames, longNames) { return (lookAhead(match) ? longNames[value] : shortNames[value]); }, output = "", literal = false; if (date) { for (iFormat = 0; iFormat < format.length; iFormat++) { if (literal) { if (format.charAt(iFormat) === "'" && !lookAhead("'")) { literal = false; } else { output += format.charAt(iFormat); } } else { switch (format.charAt(iFormat)) { case "d": output += formatNumber("d", date.getDate(), 2); break; case "D": output += formatName("D", date.getDay(), dayNamesShort, dayNames); break; case "o": output += formatNumber("o", Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3); break; case "m": output += formatNumber("m", date.getMonth() + 1, 2); break; case "M": output += formatName("M", date.getMonth(), monthNamesShort, monthNames); break; case "y": output += (lookAhead("y") ? date.getFullYear() : (date.getYear() % 100 < 10 ? "0" : "") + date.getYear() % 100); break; case "@": output += date.getTime(); break; case "!": output += date.getTime() * 10000 + this._ticksTo1970; break; case "'": if (lookAhead("'")) { output += "'"; } else { literal = true; } break; default: output += format.charAt(iFormat); } } } } return output; }, /* Extract all possible characters from the date format. */ _possibleChars: function (format) { var iFormat, chars = "", literal = false, // Check whether a format character is doubled lookAhead = function(match) { var matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match); if (matches) { iFormat++; } return matches; }; for (iFormat = 0; iFormat < format.length; iFormat++) { if (literal) { if (format.charAt(iFormat) === "'" && !lookAhead("'")) { literal = false; } else { chars += format.charAt(iFormat); } } else { switch (format.charAt(iFormat)) { case "d": case "m": case "y": case "@": chars += "0123456789"; break; case "D": case "M": return null; // Accept anything case "'": if (lookAhead("'")) { chars += "'"; } else { literal = true; } break; default: chars += format.charAt(iFormat); } } } return chars; }, /* Get a setting value, defaulting if necessary. */ _get: function(inst, name) { return inst.settings[name] !== undefined ? inst.settings[name] : this._defaults[name]; }, /* Parse existing date and initialise date picker. */ _setDateFromField: function(inst, noDefault) { if (inst.input.val() === inst.lastVal) { return; } var dateFormat = this._get(inst, "dateFormat"), dates = inst.lastVal = inst.input ? inst.input.val() : null, defaultDate = this._getDefaultDate(inst), date = defaultDate, settings = this._getFormatConfig(inst); try { date = this.parseDate(dateFormat, dates, settings) || defaultDate; } catch (event) { dates = (noDefault ? "" : dates); } inst.selectedDay = date.getDate(); inst.drawMonth = inst.selectedMonth = date.getMonth(); inst.drawYear = inst.selectedYear = date.getFullYear(); inst.currentDay = (dates ? date.getDate() : 0); inst.currentMonth = (dates ? date.getMonth() : 0); inst.currentYear = (dates ? date.getFullYear() : 0); this._adjustInstDate(inst); }, /* Retrieve the default date shown on opening. */ _getDefaultDate: function(inst) { return this._restrictMinMax(inst, this._determineDate(inst, this._get(inst, "defaultDate"), new Date())); }, /* A date may be specified as an exact value or a relative one. */ _determineDate: function(inst, date, defaultDate) { var offsetNumeric = function(offset) { var date = new Date(); date.setDate(date.getDate() + offset); return date; }, offsetString = function(offset) { try { return $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"), offset, $.datepicker._getFormatConfig(inst)); } catch (e) { // Ignore } var date = (offset.toLowerCase().match(/^c/) ? $.datepicker._getDate(inst) : null) || new Date(), year = date.getFullYear(), month = date.getMonth(), day = date.getDate(), pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g, matches = pattern.exec(offset); while (matches) { switch (matches[2] || "d") { case "d" : case "D" : day += parseInt(matches[1],10); break; case "w" : case "W" : day += parseInt(matches[1],10) * 7; break; case "m" : case "M" : month += parseInt(matches[1],10); day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); break; case "y": case "Y" : year += parseInt(matches[1],10); day = Math.min(day, $.datepicker._getDaysInMonth(year, month)); break; } matches = pattern.exec(offset); } return new Date(year, month, day); }, newDate = (date == null || date === "" ? defaultDate : (typeof date === "string" ? offsetString(date) : (typeof date === "number" ? (isNaN(date) ? defaultDate : offsetNumeric(date)) : new Date(date.getTime())))); newDate = (newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate); if (newDate) { newDate.setHours(0); newDate.setMinutes(0); newDate.setSeconds(0); newDate.setMilliseconds(0); } return this._daylightSavingAdjust(newDate); }, /* Handle switch to/from daylight saving. * Hours may be non-zero on daylight saving cut-over: * > 12 when midnight changeover, but then cannot generate * midnight datetime, so jump to 1AM, otherwise reset. * @param date (Date) the date to check * @return (Date) the corrected date */ _daylightSavingAdjust: function(date) { if (!date) { return null; } date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); return date; }, /* Set the date(s) directly. */ _setDate: function(inst, date, noChange) { var clear = !date, origMonth = inst.selectedMonth, origYear = inst.selectedYear, newDate = this._restrictMinMax(inst, this._determineDate(inst, date, new Date())); inst.selectedDay = inst.currentDay = newDate.getDate(); inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth(); inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear(); if ((origMonth !== inst.selectedMonth || origYear !== inst.selectedYear) && !noChange) { this._notifyChange(inst); } this._adjustInstDate(inst); if (inst.input) { inst.input.val(clear ? "" : this._formatDate(inst)); } }, /* Retrieve the date(s) directly. */ _getDate: function(inst) { var startDate = (!inst.currentYear || (inst.input && inst.input.val() === "") ? null : this._daylightSavingAdjust(new Date( inst.currentYear, inst.currentMonth, inst.currentDay))); return startDate; }, /* Attach the onxxx handlers. These are declared statically so * they work with static code transformers like Caja. */ _attachHandlers: function(inst) { var stepMonths = this._get(inst, "stepMonths"), id = "#" + inst.id.replace( /\\\\/g, "\\" ); inst.dpDiv.find("[data-handler]").map(function () { var handler = { prev: function () { $.datepicker._adjustDate(id, -stepMonths, "M"); }, next: function () { $.datepicker._adjustDate(id, +stepMonths, "M"); }, hide: function () { $.datepicker._hideDatepicker(); }, today: function () { $.datepicker._gotoToday(id); }, selectDay: function () { $.datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this); return false; }, selectMonth: function () { $.datepicker._selectMonthYear(id, this, "M"); return false; }, selectYear: function () { $.datepicker._selectMonthYear(id, this, "Y"); return false; } }; $(this).bind(this.getAttribute("data-event"), handler[this.getAttribute("data-handler")]); }); }, /* Generate the HTML for the current state of the date picker. */ _generateHTML: function(inst) { var maxDraw, prevText, prev, nextText, next, currentText, gotoDate, controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin, monthNames, monthNamesShort, beforeShowDay, showOtherMonths, selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate, cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows, printDate, dRow, tbody, daySettings, otherMonth, unselectable, tempDate = new Date(), today = this._daylightSavingAdjust( new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate())), // clear time isRTL = this._get(inst, "isRTL"), showButtonPanel = this._get(inst, "showButtonPanel"), hideIfNoPrevNext = this._get(inst, "hideIfNoPrevNext"), navigationAsDateFormat = this._get(inst, "navigationAsDateFormat"), numMonths = this._getNumberOfMonths(inst), showCurrentAtPos = this._get(inst, "showCurrentAtPos"), stepMonths = this._get(inst, "stepMonths"), isMultiMonth = (numMonths[0] !== 1 || numMonths[1] !== 1), currentDate = this._daylightSavingAdjust((!inst.currentDay ? new Date(9999, 9, 9) : new Date(inst.currentYear, inst.currentMonth, inst.currentDay))), minDate = this._getMinMaxDate(inst, "min"), maxDate = this._getMinMaxDate(inst, "max"), drawMonth = inst.drawMonth - showCurrentAtPos, drawYear = inst.drawYear; if (drawMonth < 0) { drawMonth += 12; drawYear--; } if (maxDate) { maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(), maxDate.getMonth() - (numMonths[0] * numMonths[1]) + 1, maxDate.getDate())); maxDraw = (minDate && maxDraw < minDate ? minDate : maxDraw); while (this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw) { drawMonth--; if (drawMonth < 0) { drawMonth = 11; drawYear--; } } } inst.drawMonth = drawMonth; inst.drawYear = drawYear; prevText = this._get(inst, "prevText"); prevText = (!navigationAsDateFormat ? prevText : this.formatDate(prevText, this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)), this._getFormatConfig(inst))); prev = (this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? "
        " + prevText + "" : (hideIfNoPrevNext ? "" : "" + prevText + "")); nextText = this._get(inst, "nextText"); nextText = (!navigationAsDateFormat ? nextText : this.formatDate(nextText, this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)), this._getFormatConfig(inst))); next = (this._canAdjustMonth(inst, +1, drawYear, drawMonth) ? "" + nextText + "" : (hideIfNoPrevNext ? "" : "" + nextText + "")); currentText = this._get(inst, "currentText"); gotoDate = (this._get(inst, "gotoCurrent") && inst.currentDay ? currentDate : today); currentText = (!navigationAsDateFormat ? currentText : this.formatDate(currentText, gotoDate, this._getFormatConfig(inst))); controls = (!inst.inline ? "" : ""); buttonPanel = (showButtonPanel) ? "
        " + (isRTL ? controls : "") + (this._isInRange(inst, gotoDate) ? "" : "") + (isRTL ? "" : controls) + "
        " : ""; firstDay = parseInt(this._get(inst, "firstDay"),10); firstDay = (isNaN(firstDay) ? 0 : firstDay); showWeek = this._get(inst, "showWeek"); dayNames = this._get(inst, "dayNames"); dayNamesMin = this._get(inst, "dayNamesMin"); monthNames = this._get(inst, "monthNames"); monthNamesShort = this._get(inst, "monthNamesShort"); beforeShowDay = this._get(inst, "beforeShowDay"); showOtherMonths = this._get(inst, "showOtherMonths"); selectOtherMonths = this._get(inst, "selectOtherMonths"); defaultDate = this._getDefaultDate(inst); html = ""; dow; for (row = 0; row < numMonths[0]; row++) { group = ""; this.maxRows = 4; for (col = 0; col < numMonths[1]; col++) { selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay)); cornerClass = " ui-corner-all"; calender = ""; if (isMultiMonth) { calender += "
        "; } calender += "
        " + (/all|left/.test(cornerClass) && row === 0 ? (isRTL ? next : prev) : "") + (/all|right/.test(cornerClass) && row === 0 ? (isRTL ? prev : next) : "") + this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate, row > 0 || col > 0, monthNames, monthNamesShort) + // draw month headers "
        " + ""; thead = (showWeek ? "" : ""); for (dow = 0; dow < 7; dow++) { // days of the week day = (dow + firstDay) % 7; thead += ""; } calender += thead + ""; daysInMonth = this._getDaysInMonth(drawYear, drawMonth); if (drawYear === inst.selectedYear && drawMonth === inst.selectedMonth) { inst.selectedDay = Math.min(inst.selectedDay, daysInMonth); } leadDays = (this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7; curRows = Math.ceil((leadDays + daysInMonth) / 7); // calculate the number of rows to generate numRows = (isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows); //If multiple months, use the higher number of rows (see #7043) this.maxRows = numRows; printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays)); for (dRow = 0; dRow < numRows; dRow++) { // create date picker rows calender += ""; tbody = (!showWeek ? "" : ""); for (dow = 0; dow < 7; dow++) { // create date picker days daySettings = (beforeShowDay ? beforeShowDay.apply((inst.input ? inst.input[0] : null), [printDate]) : [true, ""]); otherMonth = (printDate.getMonth() !== drawMonth); unselectable = (otherMonth && !selectOtherMonths) || !daySettings[0] || (minDate && printDate < minDate) || (maxDate && printDate > maxDate); tbody += ""; // display selectable date printDate.setDate(printDate.getDate() + 1); printDate = this._daylightSavingAdjust(printDate); } calender += tbody + ""; } drawMonth++; if (drawMonth > 11) { drawMonth = 0; drawYear++; } calender += "
        " + this._get(inst, "weekHeader") + "= 5 ? " class='ui-datepicker-week-end'" : "") + ">" + "" + dayNamesMin[day] + "
        " + this._get(inst, "calculateWeek")(printDate) + "" + // actions (otherMonth && !showOtherMonths ? " " : // display for other months (unselectable ? "" + printDate.getDate() + "" : "" + printDate.getDate() + "")) + "
        " + (isMultiMonth ? "
        " + ((numMonths[0] > 0 && col === numMonths[1]-1) ? "
        " : "") : ""); group += calender; } html += group; } html += buttonPanel; inst._keyEvent = false; return html; }, /* Generate the month and year header. */ _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate, secondary, monthNames, monthNamesShort) { var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear, changeMonth = this._get(inst, "changeMonth"), changeYear = this._get(inst, "changeYear"), showMonthAfterYear = this._get(inst, "showMonthAfterYear"), html = "
        ", monthHtml = ""; // month selection if (secondary || !changeMonth) { monthHtml += "" + monthNames[drawMonth] + ""; } else { inMinYear = (minDate && minDate.getFullYear() === drawYear); inMaxYear = (maxDate && maxDate.getFullYear() === drawYear); monthHtml += ""; } if (!showMonthAfterYear) { html += monthHtml + (secondary || !(changeMonth && changeYear) ? " " : ""); } // year selection if ( !inst.yearshtml ) { inst.yearshtml = ""; if (secondary || !changeYear) { html += "" + drawYear + ""; } else { // determine range of years to display years = this._get(inst, "yearRange").split(":"); thisYear = new Date().getFullYear(); determineYear = function(value) { var year = (value.match(/c[+\-].*/) ? drawYear + parseInt(value.substring(1), 10) : (value.match(/[+\-].*/) ? thisYear + parseInt(value, 10) : parseInt(value, 10))); return (isNaN(year) ? thisYear : year); }; year = determineYear(years[0]); endYear = Math.max(year, determineYear(years[1] || "")); year = (minDate ? Math.max(year, minDate.getFullYear()) : year); endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); inst.yearshtml += ""; html += inst.yearshtml; inst.yearshtml = null; } } html += this._get(inst, "yearSuffix"); if (showMonthAfterYear) { html += (secondary || !(changeMonth && changeYear) ? " " : "") + monthHtml; } html += "
        "; // Close datepicker_header return html; }, /* Adjust one of the date sub-fields. */ _adjustInstDate: function(inst, offset, period) { var year = inst.drawYear + (period === "Y" ? offset : 0), month = inst.drawMonth + (period === "M" ? offset : 0), day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + (period === "D" ? offset : 0), date = this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day))); inst.selectedDay = date.getDate(); inst.drawMonth = inst.selectedMonth = date.getMonth(); inst.drawYear = inst.selectedYear = date.getFullYear(); if (period === "M" || period === "Y") { this._notifyChange(inst); } }, /* Ensure a date is within any min/max bounds. */ _restrictMinMax: function(inst, date) { var minDate = this._getMinMaxDate(inst, "min"), maxDate = this._getMinMaxDate(inst, "max"), newDate = (minDate && date < minDate ? minDate : date); return (maxDate && newDate > maxDate ? maxDate : newDate); }, /* Notify change of month/year. */ _notifyChange: function(inst) { var onChange = this._get(inst, "onChangeMonthYear"); if (onChange) { onChange.apply((inst.input ? inst.input[0] : null), [inst.selectedYear, inst.selectedMonth + 1, inst]); } }, /* Determine the number of months to show. */ _getNumberOfMonths: function(inst) { var numMonths = this._get(inst, "numberOfMonths"); return (numMonths == null ? [1, 1] : (typeof numMonths === "number" ? [1, numMonths] : numMonths)); }, /* Determine the current maximum date - ensure no time components are set. */ _getMinMaxDate: function(inst, minMax) { return this._determineDate(inst, this._get(inst, minMax + "Date"), null); }, /* Find the number of days in a given month. */ _getDaysInMonth: function(year, month) { return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate(); }, /* Find the day of the week of the first of a month. */ _getFirstDayOfMonth: function(year, month) { return new Date(year, month, 1).getDay(); }, /* Determines if we should allow a "next/prev" month display change. */ _canAdjustMonth: function(inst, offset, curYear, curMonth) { var numMonths = this._getNumberOfMonths(inst), date = this._daylightSavingAdjust(new Date(curYear, curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1)); if (offset < 0) { date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())); } return this._isInRange(inst, date); }, /* Is the given date in the accepted range? */ _isInRange: function(inst, date) { var yearSplit, currentYear, minDate = this._getMinMaxDate(inst, "min"), maxDate = this._getMinMaxDate(inst, "max"), minYear = null, maxYear = null, years = this._get(inst, "yearRange"); if (years){ yearSplit = years.split(":"); currentYear = new Date().getFullYear(); minYear = parseInt(yearSplit[0], 10); maxYear = parseInt(yearSplit[1], 10); if ( yearSplit[0].match(/[+\-].*/) ) { minYear += currentYear; } if ( yearSplit[1].match(/[+\-].*/) ) { maxYear += currentYear; } } return ((!minDate || date.getTime() >= minDate.getTime()) && (!maxDate || date.getTime() <= maxDate.getTime()) && (!minYear || date.getFullYear() >= minYear) && (!maxYear || date.getFullYear() <= maxYear)); }, /* Provide the configuration settings for formatting/parsing. */ _getFormatConfig: function(inst) { var shortYearCutoff = this._get(inst, "shortYearCutoff"); shortYearCutoff = (typeof shortYearCutoff !== "string" ? shortYearCutoff : new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); return {shortYearCutoff: shortYearCutoff, dayNamesShort: this._get(inst, "dayNamesShort"), dayNames: this._get(inst, "dayNames"), monthNamesShort: this._get(inst, "monthNamesShort"), monthNames: this._get(inst, "monthNames")}; }, /* Format the given date for display. */ _formatDate: function(inst, day, month, year) { if (!day) { inst.currentDay = inst.selectedDay; inst.currentMonth = inst.selectedMonth; inst.currentYear = inst.selectedYear; } var date = (day ? (typeof day === "object" ? day : this._daylightSavingAdjust(new Date(year, month, day))) : this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); return this.formatDate(this._get(inst, "dateFormat"), date, this._getFormatConfig(inst)); } }); /* * Bind hover events for datepicker elements. * Done via delegate so the binding only occurs once in the lifetime of the parent div. * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker. */ function datepicker_bindHover(dpDiv) { var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a"; return dpDiv.delegate(selector, "mouseout", function() { $(this).removeClass("ui-state-hover"); if (this.className.indexOf("ui-datepicker-prev") !== -1) { $(this).removeClass("ui-datepicker-prev-hover"); } if (this.className.indexOf("ui-datepicker-next") !== -1) { $(this).removeClass("ui-datepicker-next-hover"); } }) .delegate( selector, "mouseover", datepicker_handleMouseover ); } function datepicker_handleMouseover() { if (!$.datepicker._isDisabledDatepicker( datepicker_instActive.inline? datepicker_instActive.dpDiv.parent()[0] : datepicker_instActive.input[0])) { $(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"); $(this).addClass("ui-state-hover"); if (this.className.indexOf("ui-datepicker-prev") !== -1) { $(this).addClass("ui-datepicker-prev-hover"); } if (this.className.indexOf("ui-datepicker-next") !== -1) { $(this).addClass("ui-datepicker-next-hover"); } } } /* jQuery extend now ignores nulls! */ function datepicker_extendRemove(target, props) { $.extend(target, props); for (var name in props) { if (props[name] == null) { target[name] = props[name]; } } return target; } /* Invoke the datepicker functionality. @param options string - a command, optionally followed by additional parameters or Object - settings for attaching new datepicker functionality @return jQuery object */ $.fn.datepicker = function(options){ /* Verify an empty collection wasn't passed - Fixes #6976 */ if ( !this.length ) { return this; } /* Initialise the date picker. */ if (!$.datepicker.initialized) { $(document).mousedown($.datepicker._checkExternalClick); $.datepicker.initialized = true; } /* Append datepicker main container to body if not exist. */ if ($("#"+$.datepicker._mainDivId).length === 0) { $("body").append($.datepicker.dpDiv); } var otherArgs = Array.prototype.slice.call(arguments, 1); if (typeof options === "string" && (options === "isDisabled" || options === "getDate" || options === "widget")) { return $.datepicker["_" + options + "Datepicker"]. apply($.datepicker, [this[0]].concat(otherArgs)); } if (options === "option" && arguments.length === 2 && typeof arguments[1] === "string") { return $.datepicker["_" + options + "Datepicker"]. apply($.datepicker, [this[0]].concat(otherArgs)); } return this.each(function() { typeof options === "string" ? $.datepicker["_" + options + "Datepicker"]. apply($.datepicker, [this].concat(otherArgs)) : $.datepicker._attachDatepicker(this, options); }); }; $.datepicker = new Datepicker(); // singleton instance $.datepicker.initialized = false; $.datepicker.uuid = new Date().getTime(); $.datepicker.version = "1.11.4"; var datepicker = $.datepicker; /*! * jQuery UI Slider 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/slider/ */ var slider = $.widget( "ui.slider", $.ui.mouse, { version: "1.11.4", widgetEventPrefix: "slide", options: { animate: false, distance: 0, max: 100, min: 0, orientation: "horizontal", range: false, step: 1, value: 0, values: null, // callbacks change: null, slide: null, start: null, stop: null }, // number of pages in a slider // (how many times can you page up/down to go through the whole range) numPages: 5, _create: function() { this._keySliding = false; this._mouseSliding = false; this._animateOff = true; this._handleIndex = null; this._detectOrientation(); this._mouseInit(); this._calculateNewMax(); this.element .addClass( "ui-slider" + " ui-slider-" + this.orientation + " ui-widget" + " ui-widget-content" + " ui-corner-all"); this._refresh(); this._setOption( "disabled", this.options.disabled ); this._animateOff = false; }, _refresh: function() { this._createRange(); this._createHandles(); this._setupEvents(); this._refreshValue(); }, _createHandles: function() { var i, handleCount, options = this.options, existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ), handle = "", handles = []; handleCount = ( options.values && options.values.length ) || 1; if ( existingHandles.length > handleCount ) { existingHandles.slice( handleCount ).remove(); existingHandles = existingHandles.slice( 0, handleCount ); } for ( i = existingHandles.length; i < handleCount; i++ ) { handles.push( handle ); } this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) ); this.handle = this.handles.eq( 0 ); this.handles.each(function( i ) { $( this ).data( "ui-slider-handle-index", i ); }); }, _createRange: function() { var options = this.options, classes = ""; if ( options.range ) { if ( options.range === true ) { if ( !options.values ) { options.values = [ this._valueMin(), this._valueMin() ]; } else if ( options.values.length && options.values.length !== 2 ) { options.values = [ options.values[0], options.values[0] ]; } else if ( $.isArray( options.values ) ) { options.values = options.values.slice(0); } } if ( !this.range || !this.range.length ) { this.range = $( "
        " ) .appendTo( this.element ); classes = "ui-slider-range" + // note: this isn't the most fittingly semantic framework class for this element, // but worked best visually with a variety of themes " ui-widget-header ui-corner-all"; } else { this.range.removeClass( "ui-slider-range-min ui-slider-range-max" ) // Handle range switching from true to min/max .css({ "left": "", "bottom": "" }); } this.range.addClass( classes + ( ( options.range === "min" || options.range === "max" ) ? " ui-slider-range-" + options.range : "" ) ); } else { if ( this.range ) { this.range.remove(); } this.range = null; } }, _setupEvents: function() { this._off( this.handles ); this._on( this.handles, this._handleEvents ); this._hoverable( this.handles ); this._focusable( this.handles ); }, _destroy: function() { this.handles.remove(); if ( this.range ) { this.range.remove(); } this.element .removeClass( "ui-slider" + " ui-slider-horizontal" + " ui-slider-vertical" + " ui-widget" + " ui-widget-content" + " ui-corner-all" ); this._mouseDestroy(); }, _mouseCapture: function( event ) { var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle, that = this, o = this.options; if ( o.disabled ) { return false; } this.elementSize = { width: this.element.outerWidth(), height: this.element.outerHeight() }; this.elementOffset = this.element.offset(); position = { x: event.pageX, y: event.pageY }; normValue = this._normValueFromMouse( position ); distance = this._valueMax() - this._valueMin() + 1; this.handles.each(function( i ) { var thisDistance = Math.abs( normValue - that.values(i) ); if (( distance > thisDistance ) || ( distance === thisDistance && (i === that._lastChangedValue || that.values(i) === o.min ))) { distance = thisDistance; closestHandle = $( this ); index = i; } }); allowed = this._start( event, index ); if ( allowed === false ) { return false; } this._mouseSliding = true; this._handleIndex = index; closestHandle .addClass( "ui-state-active" ) .focus(); offset = closestHandle.offset(); mouseOverHandle = !$( event.target ).parents().addBack().is( ".ui-slider-handle" ); this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : { left: event.pageX - offset.left - ( closestHandle.width() / 2 ), top: event.pageY - offset.top - ( closestHandle.height() / 2 ) - ( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 ) - ( parseInt( closestHandle.css("borderBottomWidth"), 10 ) || 0) + ( parseInt( closestHandle.css("marginTop"), 10 ) || 0) }; if ( !this.handles.hasClass( "ui-state-hover" ) ) { this._slide( event, index, normValue ); } this._animateOff = true; return true; }, _mouseStart: function() { return true; }, _mouseDrag: function( event ) { var position = { x: event.pageX, y: event.pageY }, normValue = this._normValueFromMouse( position ); this._slide( event, this._handleIndex, normValue ); return false; }, _mouseStop: function( event ) { this.handles.removeClass( "ui-state-active" ); this._mouseSliding = false; this._stop( event, this._handleIndex ); this._change( event, this._handleIndex ); this._handleIndex = null; this._clickOffset = null; this._animateOff = false; return false; }, _detectOrientation: function() { this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal"; }, _normValueFromMouse: function( position ) { var pixelTotal, pixelMouse, percentMouse, valueTotal, valueMouse; if ( this.orientation === "horizontal" ) { pixelTotal = this.elementSize.width; pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 ); } else { pixelTotal = this.elementSize.height; pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 ); } percentMouse = ( pixelMouse / pixelTotal ); if ( percentMouse > 1 ) { percentMouse = 1; } if ( percentMouse < 0 ) { percentMouse = 0; } if ( this.orientation === "vertical" ) { percentMouse = 1 - percentMouse; } valueTotal = this._valueMax() - this._valueMin(); valueMouse = this._valueMin() + percentMouse * valueTotal; return this._trimAlignValue( valueMouse ); }, _start: function( event, index ) { var uiHash = { handle: this.handles[ index ], value: this.value() }; if ( this.options.values && this.options.values.length ) { uiHash.value = this.values( index ); uiHash.values = this.values(); } return this._trigger( "start", event, uiHash ); }, _slide: function( event, index, newVal ) { var otherVal, newValues, allowed; if ( this.options.values && this.options.values.length ) { otherVal = this.values( index ? 0 : 1 ); if ( ( this.options.values.length === 2 && this.options.range === true ) && ( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) ) ) { newVal = otherVal; } if ( newVal !== this.values( index ) ) { newValues = this.values(); newValues[ index ] = newVal; // A slide can be canceled by returning false from the slide callback allowed = this._trigger( "slide", event, { handle: this.handles[ index ], value: newVal, values: newValues } ); otherVal = this.values( index ? 0 : 1 ); if ( allowed !== false ) { this.values( index, newVal ); } } } else { if ( newVal !== this.value() ) { // A slide can be canceled by returning false from the slide callback allowed = this._trigger( "slide", event, { handle: this.handles[ index ], value: newVal } ); if ( allowed !== false ) { this.value( newVal ); } } } }, _stop: function( event, index ) { var uiHash = { handle: this.handles[ index ], value: this.value() }; if ( this.options.values && this.options.values.length ) { uiHash.value = this.values( index ); uiHash.values = this.values(); } this._trigger( "stop", event, uiHash ); }, _change: function( event, index ) { if ( !this._keySliding && !this._mouseSliding ) { var uiHash = { handle: this.handles[ index ], value: this.value() }; if ( this.options.values && this.options.values.length ) { uiHash.value = this.values( index ); uiHash.values = this.values(); } //store the last changed value index for reference when handles overlap this._lastChangedValue = index; this._trigger( "change", event, uiHash ); } }, value: function( newValue ) { if ( arguments.length ) { this.options.value = this._trimAlignValue( newValue ); this._refreshValue(); this._change( null, 0 ); return; } return this._value(); }, values: function( index, newValue ) { var vals, newValues, i; if ( arguments.length > 1 ) { this.options.values[ index ] = this._trimAlignValue( newValue ); this._refreshValue(); this._change( null, index ); return; } if ( arguments.length ) { if ( $.isArray( arguments[ 0 ] ) ) { vals = this.options.values; newValues = arguments[ 0 ]; for ( i = 0; i < vals.length; i += 1 ) { vals[ i ] = this._trimAlignValue( newValues[ i ] ); this._change( null, i ); } this._refreshValue(); } else { if ( this.options.values && this.options.values.length ) { return this._values( index ); } else { return this.value(); } } } else { return this._values(); } }, _setOption: function( key, value ) { var i, valsLength = 0; if ( key === "range" && this.options.range === true ) { if ( value === "min" ) { this.options.value = this._values( 0 ); this.options.values = null; } else if ( value === "max" ) { this.options.value = this._values( this.options.values.length - 1 ); this.options.values = null; } } if ( $.isArray( this.options.values ) ) { valsLength = this.options.values.length; } if ( key === "disabled" ) { this.element.toggleClass( "ui-state-disabled", !!value ); } this._super( key, value ); switch ( key ) { case "orientation": this._detectOrientation(); this.element .removeClass( "ui-slider-horizontal ui-slider-vertical" ) .addClass( "ui-slider-" + this.orientation ); this._refreshValue(); // Reset positioning from previous orientation this.handles.css( value === "horizontal" ? "bottom" : "left", "" ); break; case "value": this._animateOff = true; this._refreshValue(); this._change( null, 0 ); this._animateOff = false; break; case "values": this._animateOff = true; this._refreshValue(); for ( i = 0; i < valsLength; i += 1 ) { this._change( null, i ); } this._animateOff = false; break; case "step": case "min": case "max": this._animateOff = true; this._calculateNewMax(); this._refreshValue(); this._animateOff = false; break; case "range": this._animateOff = true; this._refresh(); this._animateOff = false; break; } }, //internal value getter // _value() returns value trimmed by min and max, aligned by step _value: function() { var val = this.options.value; val = this._trimAlignValue( val ); return val; }, //internal values getter // _values() returns array of values trimmed by min and max, aligned by step // _values( index ) returns single value trimmed by min and max, aligned by step _values: function( index ) { var val, vals, i; if ( arguments.length ) { val = this.options.values[ index ]; val = this._trimAlignValue( val ); return val; } else if ( this.options.values && this.options.values.length ) { // .slice() creates a copy of the array // this copy gets trimmed by min and max and then returned vals = this.options.values.slice(); for ( i = 0; i < vals.length; i += 1) { vals[ i ] = this._trimAlignValue( vals[ i ] ); } return vals; } else { return []; } }, // returns the step-aligned value that val is closest to, between (inclusive) min and max _trimAlignValue: function( val ) { if ( val <= this._valueMin() ) { return this._valueMin(); } if ( val >= this._valueMax() ) { return this._valueMax(); } var step = ( this.options.step > 0 ) ? this.options.step : 1, valModStep = (val - this._valueMin()) % step, alignValue = val - valModStep; if ( Math.abs(valModStep) * 2 >= step ) { alignValue += ( valModStep > 0 ) ? step : ( -step ); } // Since JavaScript has problems with large floats, round // the final value to 5 digits after the decimal point (see #4124) return parseFloat( alignValue.toFixed(5) ); }, _calculateNewMax: function() { var max = this.options.max, min = this._valueMin(), step = this.options.step, aboveMin = Math.floor( ( +( max - min ).toFixed( this._precision() ) ) / step ) * step; max = aboveMin + min; this.max = parseFloat( max.toFixed( this._precision() ) ); }, _precision: function() { var precision = this._precisionOf( this.options.step ); if ( this.options.min !== null ) { precision = Math.max( precision, this._precisionOf( this.options.min ) ); } return precision; }, _precisionOf: function( num ) { var str = num.toString(), decimal = str.indexOf( "." ); return decimal === -1 ? 0 : str.length - decimal - 1; }, _valueMin: function() { return this.options.min; }, _valueMax: function() { return this.max; }, _refreshValue: function() { var lastValPercent, valPercent, value, valueMin, valueMax, oRange = this.options.range, o = this.options, that = this, animate = ( !this._animateOff ) ? o.animate : false, _set = {}; if ( this.options.values && this.options.values.length ) { this.handles.each(function( i ) { valPercent = ( that.values(i) - that._valueMin() ) / ( that._valueMax() - that._valueMin() ) * 100; _set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; $( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); if ( that.options.range === true ) { if ( that.orientation === "horizontal" ) { if ( i === 0 ) { that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate ); } if ( i === 1 ) { that.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); } } else { if ( i === 0 ) { that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate ); } if ( i === 1 ) { that.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); } } } lastValPercent = valPercent; }); } else { value = this.value(); valueMin = this._valueMin(); valueMax = this._valueMax(); valPercent = ( valueMax !== valueMin ) ? ( value - valueMin ) / ( valueMax - valueMin ) * 100 : 0; _set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); if ( oRange === "min" && this.orientation === "horizontal" ) { this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate ); } if ( oRange === "max" && this.orientation === "horizontal" ) { this.range[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); } if ( oRange === "min" && this.orientation === "vertical" ) { this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate ); } if ( oRange === "max" && this.orientation === "vertical" ) { this.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); } } }, _handleEvents: { keydown: function( event ) { var allowed, curVal, newVal, step, index = $( event.target ).data( "ui-slider-handle-index" ); switch ( event.keyCode ) { case $.ui.keyCode.HOME: case $.ui.keyCode.END: case $.ui.keyCode.PAGE_UP: case $.ui.keyCode.PAGE_DOWN: case $.ui.keyCode.UP: case $.ui.keyCode.RIGHT: case $.ui.keyCode.DOWN: case $.ui.keyCode.LEFT: event.preventDefault(); if ( !this._keySliding ) { this._keySliding = true; $( event.target ).addClass( "ui-state-active" ); allowed = this._start( event, index ); if ( allowed === false ) { return; } } break; } step = this.options.step; if ( this.options.values && this.options.values.length ) { curVal = newVal = this.values( index ); } else { curVal = newVal = this.value(); } switch ( event.keyCode ) { case $.ui.keyCode.HOME: newVal = this._valueMin(); break; case $.ui.keyCode.END: newVal = this._valueMax(); break; case $.ui.keyCode.PAGE_UP: newVal = this._trimAlignValue( curVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages ) ); break; case $.ui.keyCode.PAGE_DOWN: newVal = this._trimAlignValue( curVal - ( (this._valueMax() - this._valueMin()) / this.numPages ) ); break; case $.ui.keyCode.UP: case $.ui.keyCode.RIGHT: if ( curVal === this._valueMax() ) { return; } newVal = this._trimAlignValue( curVal + step ); break; case $.ui.keyCode.DOWN: case $.ui.keyCode.LEFT: if ( curVal === this._valueMin() ) { return; } newVal = this._trimAlignValue( curVal - step ); break; } this._slide( event, index, newVal ); }, keyup: function( event ) { var index = $( event.target ).data( "ui-slider-handle-index" ); if ( this._keySliding ) { this._keySliding = false; this._stop( event, index ); this._change( event, index ); $( event.target ).removeClass( "ui-state-active" ); } } } }); /*! * jQuery UI Tabs 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/tabs/ */ var tabs = $.widget( "ui.tabs", { version: "1.11.4", delay: 300, options: { active: null, collapsible: false, event: "click", heightStyle: "content", hide: null, show: null, // callbacks activate: null, beforeActivate: null, beforeLoad: null, load: null }, _isLocal: (function() { var rhash = /#.*$/; return function( anchor ) { var anchorUrl, locationUrl; // support: IE7 // IE7 doesn't normalize the href property when set via script (#9317) anchor = anchor.cloneNode( false ); anchorUrl = anchor.href.replace( rhash, "" ); locationUrl = location.href.replace( rhash, "" ); // decoding may throw an error if the URL isn't UTF-8 (#9518) try { anchorUrl = decodeURIComponent( anchorUrl ); } catch ( error ) {} try { locationUrl = decodeURIComponent( locationUrl ); } catch ( error ) {} return anchor.hash.length > 1 && anchorUrl === locationUrl; }; })(), _create: function() { var that = this, options = this.options; this.running = false; this.element .addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" ) .toggleClass( "ui-tabs-collapsible", options.collapsible ); this._processTabs(); options.active = this._initialActive(); // Take disabling tabs via class attribute from HTML // into account and update option properly. if ( $.isArray( options.disabled ) ) { options.disabled = $.unique( options.disabled.concat( $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) { return that.tabs.index( li ); }) ) ).sort(); } // check for length avoids error when initializing empty list if ( this.options.active !== false && this.anchors.length ) { this.active = this._findActive( options.active ); } else { this.active = $(); } this._refresh(); if ( this.active.length ) { this.load( options.active ); } }, _initialActive: function() { var active = this.options.active, collapsible = this.options.collapsible, locationHash = location.hash.substring( 1 ); if ( active === null ) { // check the fragment identifier in the URL if ( locationHash ) { this.tabs.each(function( i, tab ) { if ( $( tab ).attr( "aria-controls" ) === locationHash ) { active = i; return false; } }); } // check for a tab marked active via a class if ( active === null ) { active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) ); } // no active tab, set to false if ( active === null || active === -1 ) { active = this.tabs.length ? 0 : false; } } // handle numbers: negative, out of range if ( active !== false ) { active = this.tabs.index( this.tabs.eq( active ) ); if ( active === -1 ) { active = collapsible ? false : 0; } } // don't allow collapsible: false and active: false if ( !collapsible && active === false && this.anchors.length ) { active = 0; } return active; }, _getCreateEventData: function() { return { tab: this.active, panel: !this.active.length ? $() : this._getPanelForTab( this.active ) }; }, _tabKeydown: function( event ) { var focusedTab = $( this.document[0].activeElement ).closest( "li" ), selectedIndex = this.tabs.index( focusedTab ), goingForward = true; if ( this._handlePageNav( event ) ) { return; } switch ( event.keyCode ) { case $.ui.keyCode.RIGHT: case $.ui.keyCode.DOWN: selectedIndex++; break; case $.ui.keyCode.UP: case $.ui.keyCode.LEFT: goingForward = false; selectedIndex--; break; case $.ui.keyCode.END: selectedIndex = this.anchors.length - 1; break; case $.ui.keyCode.HOME: selectedIndex = 0; break; case $.ui.keyCode.SPACE: // Activate only, no collapsing event.preventDefault(); clearTimeout( this.activating ); this._activate( selectedIndex ); return; case $.ui.keyCode.ENTER: // Toggle (cancel delayed activation, allow collapsing) event.preventDefault(); clearTimeout( this.activating ); // Determine if we should collapse or activate this._activate( selectedIndex === this.options.active ? false : selectedIndex ); return; default: return; } // Focus the appropriate tab, based on which key was pressed event.preventDefault(); clearTimeout( this.activating ); selectedIndex = this._focusNextTab( selectedIndex, goingForward ); // Navigating with control/command key will prevent automatic activation if ( !event.ctrlKey && !event.metaKey ) { // Update aria-selected immediately so that AT think the tab is already selected. // Otherwise AT may confuse the user by stating that they need to activate the tab, // but the tab will already be activated by the time the announcement finishes. focusedTab.attr( "aria-selected", "false" ); this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" ); this.activating = this._delay(function() { this.option( "active", selectedIndex ); }, this.delay ); } }, _panelKeydown: function( event ) { if ( this._handlePageNav( event ) ) { return; } // Ctrl+up moves focus to the current tab if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) { event.preventDefault(); this.active.focus(); } }, // Alt+page up/down moves focus to the previous/next tab (and activates) _handlePageNav: function( event ) { if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) { this._activate( this._focusNextTab( this.options.active - 1, false ) ); return true; } if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) { this._activate( this._focusNextTab( this.options.active + 1, true ) ); return true; } }, _findNextTab: function( index, goingForward ) { var lastTabIndex = this.tabs.length - 1; function constrain() { if ( index > lastTabIndex ) { index = 0; } if ( index < 0 ) { index = lastTabIndex; } return index; } while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) { index = goingForward ? index + 1 : index - 1; } return index; }, _focusNextTab: function( index, goingForward ) { index = this._findNextTab( index, goingForward ); this.tabs.eq( index ).focus(); return index; }, _setOption: function( key, value ) { if ( key === "active" ) { // _activate() will handle invalid values and update this.options this._activate( value ); return; } if ( key === "disabled" ) { // don't use the widget factory's disabled handling this._setupDisabled( value ); return; } this._super( key, value); if ( key === "collapsible" ) { this.element.toggleClass( "ui-tabs-collapsible", value ); // Setting collapsible: false while collapsed; open first panel if ( !value && this.options.active === false ) { this._activate( 0 ); } } if ( key === "event" ) { this._setupEvents( value ); } if ( key === "heightStyle" ) { this._setupHeightStyle( value ); } }, _sanitizeSelector: function( hash ) { return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : ""; }, refresh: function() { var options = this.options, lis = this.tablist.children( ":has(a[href])" ); // get disabled tabs from class attribute from HTML // this will get converted to a boolean if needed in _refresh() options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) { return lis.index( tab ); }); this._processTabs(); // was collapsed or no tabs if ( options.active === false || !this.anchors.length ) { options.active = false; this.active = $(); // was active, but active tab is gone } else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) { // all remaining tabs are disabled if ( this.tabs.length === options.disabled.length ) { options.active = false; this.active = $(); // activate previous tab } else { this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) ); } // was active, active tab still exists } else { // make sure active index is correct options.active = this.tabs.index( this.active ); } this._refresh(); }, _refresh: function() { this._setupDisabled( this.options.disabled ); this._setupEvents( this.options.event ); this._setupHeightStyle( this.options.heightStyle ); this.tabs.not( this.active ).attr({ "aria-selected": "false", "aria-expanded": "false", tabIndex: -1 }); this.panels.not( this._getPanelForTab( this.active ) ) .hide() .attr({ "aria-hidden": "true" }); // Make sure one tab is in the tab order if ( !this.active.length ) { this.tabs.eq( 0 ).attr( "tabIndex", 0 ); } else { this.active .addClass( "ui-tabs-active ui-state-active" ) .attr({ "aria-selected": "true", "aria-expanded": "true", tabIndex: 0 }); this._getPanelForTab( this.active ) .show() .attr({ "aria-hidden": "false" }); } }, _processTabs: function() { var that = this, prevTabs = this.tabs, prevAnchors = this.anchors, prevPanels = this.panels; this.tablist = this._getList() .addClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" ) .attr( "role", "tablist" ) // Prevent users from focusing disabled tabs via click .delegate( "> li", "mousedown" + this.eventNamespace, function( event ) { if ( $( this ).is( ".ui-state-disabled" ) ) { event.preventDefault(); } }) // support: IE <9 // Preventing the default action in mousedown doesn't prevent IE // from focusing the element, so if the anchor gets focused, blur. // We don't have to worry about focusing the previously focused // element since clicking on a non-focusable element should focus // the body anyway. .delegate( ".ui-tabs-anchor", "focus" + this.eventNamespace, function() { if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) { this.blur(); } }); this.tabs = this.tablist.find( "> li:has(a[href])" ) .addClass( "ui-state-default ui-corner-top" ) .attr({ role: "tab", tabIndex: -1 }); this.anchors = this.tabs.map(function() { return $( "a", this )[ 0 ]; }) .addClass( "ui-tabs-anchor" ) .attr({ role: "presentation", tabIndex: -1 }); this.panels = $(); this.anchors.each(function( i, anchor ) { var selector, panel, panelId, anchorId = $( anchor ).uniqueId().attr( "id" ), tab = $( anchor ).closest( "li" ), originalAriaControls = tab.attr( "aria-controls" ); // inline tab if ( that._isLocal( anchor ) ) { selector = anchor.hash; panelId = selector.substring( 1 ); panel = that.element.find( that._sanitizeSelector( selector ) ); // remote tab } else { // If the tab doesn't already have aria-controls, // generate an id by using a throw-away element panelId = tab.attr( "aria-controls" ) || $( {} ).uniqueId()[ 0 ].id; selector = "#" + panelId; panel = that.element.find( selector ); if ( !panel.length ) { panel = that._createPanel( panelId ); panel.insertAfter( that.panels[ i - 1 ] || that.tablist ); } panel.attr( "aria-live", "polite" ); } if ( panel.length) { that.panels = that.panels.add( panel ); } if ( originalAriaControls ) { tab.data( "ui-tabs-aria-controls", originalAriaControls ); } tab.attr({ "aria-controls": panelId, "aria-labelledby": anchorId }); panel.attr( "aria-labelledby", anchorId ); }); this.panels .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) .attr( "role", "tabpanel" ); // Avoid memory leaks (#10056) if ( prevTabs ) { this._off( prevTabs.not( this.tabs ) ); this._off( prevAnchors.not( this.anchors ) ); this._off( prevPanels.not( this.panels ) ); } }, // allow overriding how to find the list for rare usage scenarios (#7715) _getList: function() { return this.tablist || this.element.find( "ol,ul" ).eq( 0 ); }, _createPanel: function( id ) { return $( "
        " ) .attr( "id", id ) .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) .data( "ui-tabs-destroy", true ); }, _setupDisabled: function( disabled ) { if ( $.isArray( disabled ) ) { if ( !disabled.length ) { disabled = false; } else if ( disabled.length === this.anchors.length ) { disabled = true; } } // disable tabs for ( var i = 0, li; ( li = this.tabs[ i ] ); i++ ) { if ( disabled === true || $.inArray( i, disabled ) !== -1 ) { $( li ) .addClass( "ui-state-disabled" ) .attr( "aria-disabled", "true" ); } else { $( li ) .removeClass( "ui-state-disabled" ) .removeAttr( "aria-disabled" ); } } this.options.disabled = disabled; }, _setupEvents: function( event ) { var events = {}; if ( event ) { $.each( event.split(" "), function( index, eventName ) { events[ eventName ] = "_eventHandler"; }); } this._off( this.anchors.add( this.tabs ).add( this.panels ) ); // Always prevent the default action, even when disabled this._on( true, this.anchors, { click: function( event ) { event.preventDefault(); } }); this._on( this.anchors, events ); this._on( this.tabs, { keydown: "_tabKeydown" } ); this._on( this.panels, { keydown: "_panelKeydown" } ); this._focusable( this.tabs ); this._hoverable( this.tabs ); }, _setupHeightStyle: function( heightStyle ) { var maxHeight, parent = this.element.parent(); if ( heightStyle === "fill" ) { maxHeight = parent.height(); maxHeight -= this.element.outerHeight() - this.element.height(); this.element.siblings( ":visible" ).each(function() { var elem = $( this ), position = elem.css( "position" ); if ( position === "absolute" || position === "fixed" ) { return; } maxHeight -= elem.outerHeight( true ); }); this.element.children().not( this.panels ).each(function() { maxHeight -= $( this ).outerHeight( true ); }); this.panels.each(function() { $( this ).height( Math.max( 0, maxHeight - $( this ).innerHeight() + $( this ).height() ) ); }) .css( "overflow", "auto" ); } else if ( heightStyle === "auto" ) { maxHeight = 0; this.panels.each(function() { maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() ); }).height( maxHeight ); } }, _eventHandler: function( event ) { var options = this.options, active = this.active, anchor = $( event.currentTarget ), tab = anchor.closest( "li" ), clickedIsActive = tab[ 0 ] === active[ 0 ], collapsing = clickedIsActive && options.collapsible, toShow = collapsing ? $() : this._getPanelForTab( tab ), toHide = !active.length ? $() : this._getPanelForTab( active ), eventData = { oldTab: active, oldPanel: toHide, newTab: collapsing ? $() : tab, newPanel: toShow }; event.preventDefault(); if ( tab.hasClass( "ui-state-disabled" ) || // tab is already loading tab.hasClass( "ui-tabs-loading" ) || // can't switch durning an animation this.running || // click on active header, but not collapsible ( clickedIsActive && !options.collapsible ) || // allow canceling activation ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { return; } options.active = collapsing ? false : this.tabs.index( tab ); this.active = clickedIsActive ? $() : tab; if ( this.xhr ) { this.xhr.abort(); } if ( !toHide.length && !toShow.length ) { $.error( "jQuery UI Tabs: Mismatching fragment identifier." ); } if ( toShow.length ) { this.load( this.tabs.index( tab ), event ); } this._toggle( event, eventData ); }, // handles show/hide for selecting tabs _toggle: function( event, eventData ) { var that = this, toShow = eventData.newPanel, toHide = eventData.oldPanel; this.running = true; function complete() { that.running = false; that._trigger( "activate", event, eventData ); } function show() { eventData.newTab.closest( "li" ).addClass( "ui-tabs-active ui-state-active" ); if ( toShow.length && that.options.show ) { that._show( toShow, that.options.show, complete ); } else { toShow.show(); complete(); } } // start out by hiding, then showing, then completing if ( toHide.length && this.options.hide ) { this._hide( toHide, this.options.hide, function() { eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" ); show(); }); } else { eventData.oldTab.closest( "li" ).removeClass( "ui-tabs-active ui-state-active" ); toHide.hide(); show(); } toHide.attr( "aria-hidden", "true" ); eventData.oldTab.attr({ "aria-selected": "false", "aria-expanded": "false" }); // If we're switching tabs, remove the old tab from the tab order. // If we're opening from collapsed state, remove the previous tab from the tab order. // If we're collapsing, then keep the collapsing tab in the tab order. if ( toShow.length && toHide.length ) { eventData.oldTab.attr( "tabIndex", -1 ); } else if ( toShow.length ) { this.tabs.filter(function() { return $( this ).attr( "tabIndex" ) === 0; }) .attr( "tabIndex", -1 ); } toShow.attr( "aria-hidden", "false" ); eventData.newTab.attr({ "aria-selected": "true", "aria-expanded": "true", tabIndex: 0 }); }, _activate: function( index ) { var anchor, active = this._findActive( index ); // trying to activate the already active panel if ( active[ 0 ] === this.active[ 0 ] ) { return; } // trying to collapse, simulate a click on the current active header if ( !active.length ) { active = this.active; } anchor = active.find( ".ui-tabs-anchor" )[ 0 ]; this._eventHandler({ target: anchor, currentTarget: anchor, preventDefault: $.noop }); }, _findActive: function( index ) { return index === false ? $() : this.tabs.eq( index ); }, _getIndex: function( index ) { // meta-function to give users option to provide a href string instead of a numerical index. if ( typeof index === "string" ) { index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) ); } return index; }, _destroy: function() { if ( this.xhr ) { this.xhr.abort(); } this.element.removeClass( "ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible" ); this.tablist .removeClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" ) .removeAttr( "role" ); this.anchors .removeClass( "ui-tabs-anchor" ) .removeAttr( "role" ) .removeAttr( "tabIndex" ) .removeUniqueId(); this.tablist.unbind( this.eventNamespace ); this.tabs.add( this.panels ).each(function() { if ( $.data( this, "ui-tabs-destroy" ) ) { $( this ).remove(); } else { $( this ) .removeClass( "ui-state-default ui-state-active ui-state-disabled " + "ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel" ) .removeAttr( "tabIndex" ) .removeAttr( "aria-live" ) .removeAttr( "aria-busy" ) .removeAttr( "aria-selected" ) .removeAttr( "aria-labelledby" ) .removeAttr( "aria-hidden" ) .removeAttr( "aria-expanded" ) .removeAttr( "role" ); } }); this.tabs.each(function() { var li = $( this ), prev = li.data( "ui-tabs-aria-controls" ); if ( prev ) { li .attr( "aria-controls", prev ) .removeData( "ui-tabs-aria-controls" ); } else { li.removeAttr( "aria-controls" ); } }); this.panels.show(); if ( this.options.heightStyle !== "content" ) { this.panels.css( "height", "" ); } }, enable: function( index ) { var disabled = this.options.disabled; if ( disabled === false ) { return; } if ( index === undefined ) { disabled = false; } else { index = this._getIndex( index ); if ( $.isArray( disabled ) ) { disabled = $.map( disabled, function( num ) { return num !== index ? num : null; }); } else { disabled = $.map( this.tabs, function( li, num ) { return num !== index ? num : null; }); } } this._setupDisabled( disabled ); }, disable: function( index ) { var disabled = this.options.disabled; if ( disabled === true ) { return; } if ( index === undefined ) { disabled = true; } else { index = this._getIndex( index ); if ( $.inArray( index, disabled ) !== -1 ) { return; } if ( $.isArray( disabled ) ) { disabled = $.merge( [ index ], disabled ).sort(); } else { disabled = [ index ]; } } this._setupDisabled( disabled ); }, load: function( index, event ) { index = this._getIndex( index ); var that = this, tab = this.tabs.eq( index ), anchor = tab.find( ".ui-tabs-anchor" ), panel = this._getPanelForTab( tab ), eventData = { tab: tab, panel: panel }, complete = function( jqXHR, status ) { if ( status === "abort" ) { that.panels.stop( false, true ); } tab.removeClass( "ui-tabs-loading" ); panel.removeAttr( "aria-busy" ); if ( jqXHR === that.xhr ) { delete that.xhr; } }; // not remote if ( this._isLocal( anchor[ 0 ] ) ) { return; } this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) ); // support: jQuery <1.8 // jQuery <1.8 returns false if the request is canceled in beforeSend, // but as of 1.8, $.ajax() always returns a jqXHR object. if ( this.xhr && this.xhr.statusText !== "canceled" ) { tab.addClass( "ui-tabs-loading" ); panel.attr( "aria-busy", "true" ); this.xhr .done(function( response, status, jqXHR ) { // support: jQuery <1.8 // http://bugs.jquery.com/ticket/11778 setTimeout(function() { panel.html( response ); that._trigger( "load", event, eventData ); complete( jqXHR, status ); }, 1 ); }) .fail(function( jqXHR, status ) { // support: jQuery <1.8 // http://bugs.jquery.com/ticket/11778 setTimeout(function() { complete( jqXHR, status ); }, 1 ); }); } }, _ajaxSettings: function( anchor, event, eventData ) { var that = this; return { url: anchor.attr( "href" ), beforeSend: function( jqXHR, settings ) { return that._trigger( "beforeLoad", event, $.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) ); } }; }, _getPanelForTab: function( tab ) { var id = $( tab ).attr( "aria-controls" ); return this.element.find( this._sanitizeSelector( "#" + id ) ); } }); }));rt-4.4.7/devel/third-party/jquery-ui-1.11.4.custom/jquery-ui.theme.css0000644000201500020150000004132014514267702023735 0ustar puckpuck/*! * jQuery UI CSS Framework 1.11.4 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/category/theming/ * * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fwDefault=normal&fsDefault=1em&cornerRadius=0.3em&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px */ /* Component containers ----------------------------------*/ .ui-widget { font-family: Arial,Helvetica,sans-serif; font-size: 1em; } .ui-widget .ui-widget { font-size: 1em; } .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Arial,Helvetica,sans-serif; font-size: 1em; } .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff; color: #222222; } .ui-widget-content a { color: #222222; } .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x; color: #222222; font-weight: bold; } .ui-widget-header a { color: #222222; } /* Interaction states ----------------------------------*/ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x; font-weight: normal; color: #555555; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; } .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x; font-weight: normal; color: #212121; } .ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited, .ui-state-focus a, .ui-state-focus a:hover, .ui-state-focus a:link, .ui-state-focus a:visited { color: #212121; text-decoration: none; } .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x; font-weight: normal; color: #212121; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } /* Interaction Cues ----------------------------------*/ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { border: 1px solid #fcefa1; background: #fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x; color: #363636; } .ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a { color: #363636; } .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { border: 1px solid #cd0a0a; background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x; color: #cd0a0a; } .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); /* support: IE8 */ font-weight: normal; } .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); /* support: IE8 */ background-image: none; } .ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { width: 16px; height: 16px; } .ui-icon, .ui-widget-content .ui-icon { background-image: url("images/ui-icons_222222_256x240.png"); } .ui-widget-header .ui-icon { background-image: url("images/ui-icons_222222_256x240.png"); } .ui-state-default .ui-icon { background-image: url("images/ui-icons_888888_256x240.png"); } .ui-state-hover .ui-icon, .ui-state-focus .ui-icon { background-image: url("images/ui-icons_454545_256x240.png"); } .ui-state-active .ui-icon { background-image: url("images/ui-icons_454545_256x240.png"); } .ui-state-highlight .ui-icon { background-image: url("images/ui-icons_2e83ff_256x240.png"); } .ui-state-error .ui-icon, .ui-state-error-text .ui-icon { background-image: url("images/ui-icons_cd0a0a_256x240.png"); } /* positioning */ .ui-icon-blank { background-position: 16px 16px; } .ui-icon-carat-1-n { background-position: 0 0; } .ui-icon-carat-1-ne { background-position: -16px 0; } .ui-icon-carat-1-e { background-position: -32px 0; } .ui-icon-carat-1-se { background-position: -48px 0; } .ui-icon-carat-1-s { background-position: -64px 0; } .ui-icon-carat-1-sw { background-position: -80px 0; } .ui-icon-carat-1-w { background-position: -96px 0; } .ui-icon-carat-1-nw { background-position: -112px 0; } .ui-icon-carat-2-n-s { background-position: -128px 0; } .ui-icon-carat-2-e-w { background-position: -144px 0; } .ui-icon-triangle-1-n { background-position: 0 -16px; } .ui-icon-triangle-1-ne { background-position: -16px -16px; } .ui-icon-triangle-1-e { background-position: -32px -16px; } .ui-icon-triangle-1-se { background-position: -48px -16px; } .ui-icon-triangle-1-s { background-position: -64px -16px; } .ui-icon-triangle-1-sw { background-position: -80px -16px; } .ui-icon-triangle-1-w { background-position: -96px -16px; } .ui-icon-triangle-1-nw { background-position: -112px -16px; } .ui-icon-triangle-2-n-s { background-position: -128px -16px; } .ui-icon-triangle-2-e-w { background-position: -144px -16px; } .ui-icon-arrow-1-n { background-position: 0 -32px; } .ui-icon-arrow-1-ne { background-position: -16px -32px; } .ui-icon-arrow-1-e { background-position: -32px -32px; } .ui-icon-arrow-1-se { background-position: -48px -32px; } .ui-icon-arrow-1-s { background-position: -64px -32px; } .ui-icon-arrow-1-sw { background-position: -80px -32px; } .ui-icon-arrow-1-w { background-position: -96px -32px; } .ui-icon-arrow-1-nw { background-position: -112px -32px; } .ui-icon-arrow-2-n-s { background-position: -128px -32px; } .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } .ui-icon-arrow-2-e-w { background-position: -160px -32px; } .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } .ui-icon-arrowstop-1-n { background-position: -192px -32px; } .ui-icon-arrowstop-1-e { background-position: -208px -32px; } .ui-icon-arrowstop-1-s { background-position: -224px -32px; } .ui-icon-arrowstop-1-w { background-position: -240px -32px; } .ui-icon-arrowthick-1-n { background-position: 0 -48px; } .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } .ui-icon-arrowthick-1-e { background-position: -32px -48px; } .ui-icon-arrowthick-1-se { background-position: -48px -48px; } .ui-icon-arrowthick-1-s { background-position: -64px -48px; } .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } .ui-icon-arrowthick-1-w { background-position: -96px -48px; } .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } .ui-icon-arrow-4 { background-position: 0 -80px; } .ui-icon-arrow-4-diag { background-position: -16px -80px; } .ui-icon-extlink { background-position: -32px -80px; } .ui-icon-newwin { background-position: -48px -80px; } .ui-icon-refresh { background-position: -64px -80px; } .ui-icon-shuffle { background-position: -80px -80px; } .ui-icon-transfer-e-w { background-position: -96px -80px; } .ui-icon-transferthick-e-w { background-position: -112px -80px; } .ui-icon-folder-collapsed { background-position: 0 -96px; } .ui-icon-folder-open { background-position: -16px -96px; } .ui-icon-document { background-position: -32px -96px; } .ui-icon-document-b { background-position: -48px -96px; } .ui-icon-note { background-position: -64px -96px; } .ui-icon-mail-closed { background-position: -80px -96px; } .ui-icon-mail-open { background-position: -96px -96px; } .ui-icon-suitcase { background-position: -112px -96px; } .ui-icon-comment { background-position: -128px -96px; } .ui-icon-person { background-position: -144px -96px; } .ui-icon-print { background-position: -160px -96px; } .ui-icon-trash { background-position: -176px -96px; } .ui-icon-locked { background-position: -192px -96px; } .ui-icon-unlocked { background-position: -208px -96px; } .ui-icon-bookmark { background-position: -224px -96px; } .ui-icon-tag { background-position: -240px -96px; } .ui-icon-home { background-position: 0 -112px; } .ui-icon-flag { background-position: -16px -112px; } .ui-icon-calendar { background-position: -32px -112px; } .ui-icon-cart { background-position: -48px -112px; } .ui-icon-pencil { background-position: -64px -112px; } .ui-icon-clock { background-position: -80px -112px; } .ui-icon-disk { background-position: -96px -112px; } .ui-icon-calculator { background-position: -112px -112px; } .ui-icon-zoomin { background-position: -128px -112px; } .ui-icon-zoomout { background-position: -144px -112px; } .ui-icon-search { background-position: -160px -112px; } .ui-icon-wrench { background-position: -176px -112px; } .ui-icon-gear { background-position: -192px -112px; } .ui-icon-heart { background-position: -208px -112px; } .ui-icon-star { background-position: -224px -112px; } .ui-icon-link { background-position: -240px -112px; } .ui-icon-cancel { background-position: 0 -128px; } .ui-icon-plus { background-position: -16px -128px; } .ui-icon-plusthick { background-position: -32px -128px; } .ui-icon-minus { background-position: -48px -128px; } .ui-icon-minusthick { background-position: -64px -128px; } .ui-icon-close { background-position: -80px -128px; } .ui-icon-closethick { background-position: -96px -128px; } .ui-icon-key { background-position: -112px -128px; } .ui-icon-lightbulb { background-position: -128px -128px; } .ui-icon-scissors { background-position: -144px -128px; } .ui-icon-clipboard { background-position: -160px -128px; } .ui-icon-copy { background-position: -176px -128px; } .ui-icon-contact { background-position: -192px -128px; } .ui-icon-image { background-position: -208px -128px; } .ui-icon-video { background-position: -224px -128px; } .ui-icon-script { background-position: -240px -128px; } .ui-icon-alert { background-position: 0 -144px; } .ui-icon-info { background-position: -16px -144px; } .ui-icon-notice { background-position: -32px -144px; } .ui-icon-help { background-position: -48px -144px; } .ui-icon-check { background-position: -64px -144px; } .ui-icon-bullet { background-position: -80px -144px; } .ui-icon-radio-on { background-position: -96px -144px; } .ui-icon-radio-off { background-position: -112px -144px; } .ui-icon-pin-w { background-position: -128px -144px; } .ui-icon-pin-s { background-position: -144px -144px; } .ui-icon-play { background-position: 0 -160px; } .ui-icon-pause { background-position: -16px -160px; } .ui-icon-seek-next { background-position: -32px -160px; } .ui-icon-seek-prev { background-position: -48px -160px; } .ui-icon-seek-end { background-position: -64px -160px; } .ui-icon-seek-start { background-position: -80px -160px; } /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ .ui-icon-seek-first { background-position: -80px -160px; } .ui-icon-stop { background-position: -96px -160px; } .ui-icon-eject { background-position: -112px -160px; } .ui-icon-volume-off { background-position: -128px -160px; } .ui-icon-volume-on { background-position: -144px -160px; } .ui-icon-power { background-position: 0 -176px; } .ui-icon-signal-diag { background-position: -16px -176px; } .ui-icon-signal { background-position: -32px -176px; } .ui-icon-battery-0 { background-position: -48px -176px; } .ui-icon-battery-1 { background-position: -64px -176px; } .ui-icon-battery-2 { background-position: -80px -176px; } .ui-icon-battery-3 { background-position: -96px -176px; } .ui-icon-circle-plus { background-position: 0 -192px; } .ui-icon-circle-minus { background-position: -16px -192px; } .ui-icon-circle-close { background-position: -32px -192px; } .ui-icon-circle-triangle-e { background-position: -48px -192px; } .ui-icon-circle-triangle-s { background-position: -64px -192px; } .ui-icon-circle-triangle-w { background-position: -80px -192px; } .ui-icon-circle-triangle-n { background-position: -96px -192px; } .ui-icon-circle-arrow-e { background-position: -112px -192px; } .ui-icon-circle-arrow-s { background-position: -128px -192px; } .ui-icon-circle-arrow-w { background-position: -144px -192px; } .ui-icon-circle-arrow-n { background-position: -160px -192px; } .ui-icon-circle-zoomin { background-position: -176px -192px; } .ui-icon-circle-zoomout { background-position: -192px -192px; } .ui-icon-circle-check { background-position: -208px -192px; } .ui-icon-circlesmall-plus { background-position: 0 -208px; } .ui-icon-circlesmall-minus { background-position: -16px -208px; } .ui-icon-circlesmall-close { background-position: -32px -208px; } .ui-icon-squaresmall-plus { background-position: -48px -208px; } .ui-icon-squaresmall-minus { background-position: -64px -208px; } .ui-icon-squaresmall-close { background-position: -80px -208px; } .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } .ui-icon-grip-solid-vertical { background-position: -32px -224px; } .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } .ui-icon-grip-diagonal-se { background-position: -80px -224px; } /* Misc visuals ----------------------------------*/ /* Corner radius */ .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { border-top-left-radius: 0.3em; } .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { border-top-right-radius: 0.3em; } .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { border-bottom-left-radius: 0.3em; } .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { border-bottom-right-radius: 0.3em; } /* Overlays */ .ui-widget-overlay { background: #aaaaaa; opacity: .3; filter: Alpha(Opacity=30); /* support: IE8 */ } .ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa; opacity: .3; filter: Alpha(Opacity=30); /* support: IE8 */ border-radius: 8px; } rt-4.4.7/devel/third-party/jquery-ui-1.11.4.custom/jquery-ui.theme.min.css0000644000201500020150000003245114514267702024524 0ustar puckpuck/*! jQuery UI - v1.11.4 - 2015-10-30 * http://jqueryui.com * Copyright jQuery Foundation and other contributors; Licensed MIT */ .ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_888888_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:0.3em}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:0.3em}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:0.3em}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:0.3em}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}rt-4.4.7/devel/third-party/jquery-ui-1.11.4.custom/jquery-ui.structure.min.css0000644000201500020150000001520014514267702025453 0ustar puckpuck/*! jQuery UI - v1.11.4 - 2015-10-30 * http://jqueryui.com * Copyright jQuery Foundation and other contributors; Licensed MIT */ .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}rt-4.4.7/devel/third-party/jquery-ui-1.11.4.custom/jquery-ui.min.css0000644000201500020150000005232614514267702023426 0ustar puckpuck/*! jQuery UI - v1.11.4 - 2015-10-30 * http://jqueryui.com * Includes: core.css, accordion.css, autocomplete.css, datepicker.css, menu.css, slider.css, tabs.css, theme.css * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fwDefault=normal&fsDefault=1em&cornerRadius=0.3em&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px * Copyright jQuery Foundation and other contributors; Licensed MIT */ .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_888888_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:0.3em}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:0.3em}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:0.3em}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:0.3em}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}rt-4.4.7/devel/third-party/wsc-src/0000755000201500020150000000000014517055705015567 5ustar puckpuckrt-4.4.7/devel/third-party/wsc-src/package.json0000644000201500020150000000144114101750613020042 0ustar puckpuck{ "name": "ckeditor-plugin-wsc", "version": "5.7.0", "description": "WebSpellChecker Dialog plugin for CKEditor 4", "repository": { "type": "git", "url": "https://github.com/WebSpellChecker/ckeditor-plugin-wsc.git" }, "author": "WebSpellChecker (https://webspellchecker.com/)", "bugs": { "url": "https://github.com/WebSpellChecker/ckeditor-plugin-wsc/issues" }, "homepage": "https://github.com/WebSpellChecker/ckeditor-plugin-wsc#readme", "license": "(GPL-2.0-or-later OR LGPL-2.1 OR MPL-1.1)", "keywords": [ "spelling checking", "grammar checking", "spellcheck", "spelling checker for ckeditor 4", "grammar checker for ckeditor 4", "text proofreading in CKEditor 4", "webspellchecker", "ckeditor 4", "WebSpellChecker Dialog" ] }rt-4.4.7/devel/third-party/wsc-src/README.md0000644000201500020150000001066014101750613017036 0ustar puckpuckImprortant! ------------ WebSpellChecker Dialog plugin for CKEditor 4 is appoaching its end-of-life (EOL) in 2021. Find out more in our [blog post](https://webspellchecker.com/blog/2020/12/02/end-of-life-for-spell-checker-dialog-plugin-for-ckeditor-4/) about its termination schedule. WebSpellChecker Dialog plugin for CKEditor 4 =============================== WebSpellChecker Dialog (WSC Dialog) provides distraction-free proofreading, checking the whole text’s spelling and grammar on-click in a separate pop-up window. ![WSC Dialog Plugin for CKEditor 4 View](https://webspellchecker.com/app/images/wsc_dialog_plugin_for_ckeditor4.png) This plugin brings the multi-language WSC Dialog functionality into CKEditor 4. It is integrated by default starting with [Standard Package of CKEditor 4](https://ckeditor.com/ckeditor-4/download/). You can find it on the CKEditor 4 toolbar panel under the ABC button (Check Spelling). If your version of CKEditor doesn’t have WSC Dialog built-in, you can easily add it by following the steps outlined in the Get Started section. The default version of WSC Dialog plugin for CKEditor 4 is using the free services of WebSpellChecker. It is provided with a banner ad and has some [limitations](https://docs.webspellchecker.net/display/WebSpellCheckerCloud/Free+and+Paid+WebSpellChecker+Cloud+Services+Comparison+for+CKEditor). To lift the limitations and get rid of the banner, [obtain a license](https://webspellchecker.com/wsc-dialog-ckeditor4/#pricing). Depending on your needs, you can choose a Cloud-based or Server (self-hosted) solution. Demo ------------ WSC Dialog plugin for CKEditor 4: https://webspellchecker.com/wsc-dialog-ckeditor4/ Supported languages ------------ The WSC Dialog plugin for CKEditor as a part of the free services supports the next languages for check spelling: American English, British English, Canadian English, Canadian French, Danish, Dutch, Finnish, French, German, Greek, Italian, Norwegian Bokmal, Spanish, Swedish. There are also additional languages and specialized dictionaries available for a commercial license, you can check the full list [here](https://webspellchecker.com/additional-dictionaries/). Get started ------------ 1. Clone/copy this repository contents in a new "plugins/wsc" folder in your CKEditor installation. 2. Enable the "wsc" plugin in the CKEditor configuration file (config.js): config.extraPlugins = 'wsc'; That's all. WSC Dialog will appear on the editor toolbar under the ABC button and will be ready to use. Supported browsers ------- This is the list of officially supported browsers for the WSC Dialog plugin for CKEditor 4. WSC Dialog may also work in other browsers and environments but we unable to check all of them and guarantee proper work. * Chrome (the latest) * Firefox (the latest) * Safari (the latest) * MS Edge (the latest) * Internet Explorer 8.0 (limited support) * Internet Explorer 9.0+ (close to full support) Note: All browsers are to be supported for web pages that work in Standards Mode. Resources ------- * Demo: https://webspellchecker.com/wsc-dialog-ckeditor4/ * Documentation: https://docs.webspellchecker.net/ * YouTube video: https://youtu.be/bkVPZ-5T22Q * Term of Service: https://webspellchecker.com/terms-of-service/ Technical support or questions ------- In cooperation with the CKEditor team, during the past 10 years we have simplified the installation and built the extensive amount of documentation devoted to WSC Dialog plugin for CKEditor 4 and less. If you are experiencing any difficulties with the setup of the plugin, please check the links provided in the Resources section. Holders of an active subscription to the services or a commercial license have access to professional technical assistance directly from the WebSpellChecker team. [Contact us here](https://webspellchecker.com/contact-us/)! Reporting issues ------- Please use the [WSC Dialog plugin for CKEditor 4 GitHub issue page](https://github.com/WebSpellChecker/ckeditor-plugin-wsc/issues) to report bugs and feature requests. We will do our best to reply at our earliest convenience. License ------- This plugin is licensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html). See LICENSE.md for more information. Developed by [WebSpellChecker](https://webspellchecker.com/) in cooperation with CKSource. rt-4.4.7/devel/third-party/wsc-src/plugin.js0000644000201500020150000001566514101750613017425 0ustar puckpuck// Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. // For licensing, see LICENSE.md or http://ckeditor.com/license CKEDITOR.plugins.add( 'wsc', { requires: 'dialog', lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en-au,en-ca,en-gb,en,eo,es,et,eu,fa,fi,fo,fr-ca,fr,gl,gu,he,hi,hr,hu,is,it,ja,ka,km,ko,lt,lv,mk,mn,ms,nb,nl,no,pl,pt-br,pt,ro,ru,sk,sl,sr-latn,sr,sv,th,tr,ug,uk,vi,zh-cn,zh', // %REMOVE_LINE_CORE% icons: 'spellchecker', // %REMOVE_LINE_CORE% hidpi: true, // %REMOVE_LINE_CORE% parseApi: function(editor) { editor.config.wsc_onFinish = (typeof editor.config.wsc_onFinish === 'function') ? editor.config.wsc_onFinish : function() {}; editor.config.wsc_onClose = (typeof editor.config.wsc_onClose === 'function') ? editor.config.wsc_onClose : function() {}; }, parseConfig: function(editor) { editor.config.wsc_customerId = editor.config.wsc_customerId || CKEDITOR.config.wsc_customerId || '1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk'; editor.config.wsc_customDictionaryIds = editor.config.wsc_customDictionaryIds || CKEDITOR.config.wsc_customDictionaryIds || ''; editor.config.wsc_userDictionaryName = editor.config.wsc_userDictionaryName || CKEDITOR.config.wsc_userDictionaryName || ''; editor.config.wsc_customLoaderScript = editor.config.wsc_customLoaderScript || CKEDITOR.config.wsc_customLoaderScript; editor.config.wsc_interfaceLang = editor.config.wsc_interfaceLang; //option to customize the interface language 12/28/2015 CKEDITOR.config.wsc_cmd = editor.config.wsc_cmd || CKEDITOR.config.wsc_cmd || 'spell'; // spell, thes or grammar. default tab CKEDITOR.config.wsc_version="v4.3.0-master-d769233"; CKEDITOR.config.wsc_removeGlobalVariable = true; }, onLoad: function(editor){ // Append skin specific stylesheet fo moono-lisa skin. if ( ( CKEDITOR.skinName || editor.config.skin ) == 'moono-lisa' ) { CKEDITOR.document.appendStyleSheet( CKEDITOR.getUrl(this.path + 'skins/' + CKEDITOR.skin.name + '/wsc.css') ); } }, init: function( editor ) { var commandName = 'checkspell'; var strNormalDialog = 'dialogs/wsc.js', strIeDialog = 'dialogs/wsc_ie.js', strDialog, self = this, env = CKEDITOR.env; self.parseConfig(editor); self.parseApi(editor); var command = editor.addCommand( commandName, new CKEDITOR.dialogCommand( commandName ) ); // SpellChecker doesn't work in Opera, with custom domain, IE Compatibility Mode and IE (8 & 9) Quirks Mode command.modes = { wysiwyg: ( !CKEDITOR.env.opera && !CKEDITOR.env.air && document.domain == window.location.hostname && !( env.ie && ( env.version < 8 || env.quirks ) ) ) }; if(typeof editor.plugins.scayt == 'undefined'){ editor.ui.addButton && editor.ui.addButton( 'SpellChecker', { label: editor.lang.wsc.toolbar, click: function(editor) { var inlineMode = (editor.elementMode == CKEDITOR.ELEMENT_MODE_INLINE), text = inlineMode ? editor.container.getText() : editor.document.getBody().getText(); text = text.replace(/\s/g, ''); if(text) { editor.execCommand('checkspell'); } else { alert('Nothing to check!'); } }, toolbar: 'spellchecker,10' }); } if ( CKEDITOR.env.ie && CKEDITOR.env.version <= 7 ){ strDialog = strIeDialog; } else { if (!window.postMessage) { strDialog = strIeDialog; } else { strDialog = strNormalDialog; } } CKEDITOR.dialog.add( commandName, this.path + strDialog ); } }); /** * The parameter sets the customer ID for WSC. It is used for hosted users only. It is required for migration from free * to trial or paid versions. * * config.wsc_customerId = 'encrypted-customer-id'; * * @skipsource * @cfg {String} [wsc_customerId='1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk'] * @member CKEDITOR.config */ /** * It links WSC to custom dictionaries. It should be a string with dictionary IDs * separated by commas (`','`). Available only for the licensed version. * * Further details at [http://wiki.webspellchecker.net/doku.php?id=installationandconfiguration:customdictionaries:licensed](http://wiki.webspellchecker.net/doku.php?id=installationandconfiguration:customdictionaries:licensed) * * config.wsc_customDictionaryIds = '1,3001'; * * @skipsource * @cfg {String} [wsc_customDictionaryIds=''] * @member CKEDITOR.config */ /** * It activates a user dictionary for WSC. The user dictionary name should be used. Available only for the licensed version. * * config.wsc_userDictionaryName = 'MyUserDictionaryName'; * * @skipsource * @cfg {String} [wsc_userDictionaryName=''] * @member CKEDITOR.config */ /** * The parameter sets the URL to WSC file. It is required to the licensed version of WSC application. * * Further details available at [http://wiki.webspellchecker.net/doku.php?id=migration:hosredfreetolicensedck](http://wiki.webspellchecker.net/doku.php?id=migration:hosredfreetolicensedck) * * config.wsc_customLoaderScript = "http://my-host/spellcheck/lf/22/js/wsc_fck2plugin.js"; * * @skipsource * @cfg {String} [wsc_customLoaderScript=''] * @member CKEDITOR.config */ /** * The parameter sets the default spellchecking language for WSC. Possible values are: * `'da_DK'`, `'de_DE'`, `'el_GR'`, `'en_CA'`, * `'en_GB'`, `'en_US'`, `'es_ES'`, `'fi_FI'`, * `'fr_CA'`, `'fr_FR'`, `'it_IT'`, `'nb_NO'` * `'nl_NL'`, `'sv_SE'`. * * Customers with dedicated WebSpellChecker license may also set `'pt_BR'` and `'pt_PT'`. * * Further details available at [http://wiki.webspellchecker.net/doku.php?id=installationandconfiguration:supportedlanguages](http://wiki.webspellchecker.net/doku.php?id=installationandconfiguration:supportedlanguages) * * config.wsc_lang = 'de_DE'; * * @skipsource * @cfg {String} [wsc_lang='en_US'] * @member CKEDITOR.config */ /** * The parameter sets the active tab, when the WSC dialog is opened. * Possible values are: * `'spell'`, `'thes'`, `'grammar'`. * * // Sets active tab thesaurus. * config.wsc_cmd = 'thes'; * * @skipsource * @cfg {String} [wsc_cmd='spell'] * @member CKEDITOR.config */ /** * The parameter sets width of the WSC pop-up window. Specified in pixels. * * // Set the pop-up width. * config.wsc_width = 800; * * @skipsource * @cfg {String} [wsc_width=580] * @member CKEDITOR.config */ /** * The parameter sets height of the WSC pop-up window. Specified in pixels. * * // Set the pop-up height. * config.wsc_height = 800; * * @skipsource * @cfg {String} [wsc_height = Content based.] * @member CKEDITOR.config */ /** * The parameter sets left margin of the WSC pop-up window. Specified in pixels. * * // Set left margin. * config.wsc_left = 0; * * @skipsource * @cfg {String} [wsc_left = In the middle of the screen.] * @member CKEDITOR.config */ /** * The parameter sets top margin of the WSC pop-up window. Specified in pixels. * * // Sets top margin. * config.wsc_top = 0; * * @skipsource * @cfg {String} [wsc_top = In the middle of the screen.] * @member CKEDITOR.config */rt-4.4.7/devel/third-party/wsc-src/skins/0000755000201500020150000000000014101750613016703 5ustar puckpuckrt-4.4.7/devel/third-party/wsc-src/skins/moono-lisa/0000755000201500020150000000000014101750613020760 5ustar puckpuckrt-4.4.7/devel/third-party/wsc-src/skins/moono-lisa/wsc.css0000644000201500020150000000235614101750613022274 0ustar puckpuck.cke_dialog_body #overlayBlock, .cke_dialog_body #no_check_over { top: 39px !important; } div[name=SpellTab] .wsc-spelltab-bottom .cke_dialog_ui_vbox td > .cke_dialog_ui_button:first-child { margin-top: 4px; } div[name=SpellTab] .wsc-spelltab-bottom .cke_dialog_ui_hbox_first .cke_dialog_ui_select > label { margin-left: 0; } div[name=SpellTab] .wsc-spelltab-bottom .cke_dialog_ui_hbox_first .cke_dialog_ui_select div.cke_dialog_ui_input_select { width: 140px !important; } div[name=SpellTab] .wsc-spelltab-bottom .cke_dialog_ui_hbox_first .cke_dialog_ui_select select.cke_dialog_ui_input_select, div[name=Thesaurus] div.cke_dialog_ui_input_select select.cke_dialog_ui_input_select { margin-top: 1px; } div[name=SpellTab] .wsc-spelltab-bottom .cke_dialog_ui_hbox_first .cke_dialog_ui_select select.cke_dialog_ui_input_select:focus, div[name=Thesaurus] div.cke_dialog_ui_input_select select.cke_dialog_ui_input_select:focus { margin-top: 0; } div[name=GrammTab] .cke_dialog_ui_vbox tbody > tr:first-child .cke_dialog_ui_button, div[name=Thesaurus] .cke_dialog_ui_vbox tbody > tr:first-child .cke_dialog_ui_button { margin-top: 4px !important; } div[name=Thesaurus] div.cke_dialog_ui_input_select { width: 180px !important; }rt-4.4.7/devel/third-party/wsc-src/lang/0000755000201500020150000000000014101750613016475 5ustar puckpuckrt-4.4.7/devel/third-party/wsc-src/lang/zh.js0000644000201500020150000000162414101750613017457 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'zh', { btnIgnore: '忽略', btnIgnoreAll: '全部忽略', btnReplace: '取代', btnReplaceAll: '全部取代', btnUndo: '復原', changeTo: '更改為', errorLoading: '無法聯系侍服器: %s.', ieSpellDownload: '尚未安裝拼字檢查元件。您是否想要現在下載?', manyChanges: '拼字檢查完成:更改了 %1 個單字', noChanges: '拼字檢查完成:未更改任何單字', noMispell: '拼字檢查完成:未發現拼字錯誤', noSuggestions: '- 無建議值 -', notAvailable: '抱歉,服務目前暫不可用', notInDic: '不在字典中', oneChange: '拼字檢查完成:更改了 1 個單字', progress: '進行拼字檢查中…', title: '拼字檢查', toolbar: '拼字檢查' }); rt-4.4.7/devel/third-party/wsc-src/lang/nb.js0000644000201500020150000000166614101750613017443 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'nb', { btnIgnore: 'Ignorer', btnIgnoreAll: 'Ignorer alle', btnReplace: 'Erstatt', btnReplaceAll: 'Erstatt alle', btnUndo: 'Angre', changeTo: 'Endre til', errorLoading: 'Feil under lasting av applikasjonstjenestetjener: %s.', ieSpellDownload: 'Stavekontroll er ikke installert. Vil du laste den ned nå?', manyChanges: 'Stavekontroll fullført: %1 ord endret', noChanges: 'Stavekontroll fullført: ingen ord endret', noMispell: 'Stavekontroll fullført: ingen feilstavinger funnet', noSuggestions: '- Ingen forslag -', notAvailable: 'Beklager, tjenesten er utilgjenglig nå.', notInDic: 'Ikke i ordboken', oneChange: 'Stavekontroll fullført: Ett ord endret', progress: 'Stavekontroll pågår...', title: 'Stavekontroll', toolbar: 'Stavekontroll' }); rt-4.4.7/devel/third-party/wsc-src/lang/eo.js0000644000201500020150000000200614101750613017434 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'eo', { btnIgnore: 'Ignori', btnIgnoreAll: 'Ignori Ĉion', btnReplace: 'Anstataŭigi', btnReplaceAll: 'Anstataŭigi Ĉion', btnUndo: 'Malfari', changeTo: 'Ŝanĝi al', errorLoading: 'Eraro en la servoelŝuto el la gastiga komputiko: %s.', ieSpellDownload: 'Ortografikontrolilo ne instalita. Ĉu vi volas elŝuti ĝin nun?', manyChanges: 'Ortografikontrolado finita: %1 vortoj korektitaj', noChanges: 'Ortografikontrolado finita: neniu vorto korektita', noMispell: 'Ortografikontrolado finita: neniu eraro trovita', noSuggestions: '- Neniu propono -', notAvailable: 'Bedaŭrinde la servo ne funkcias nuntempe.', notInDic: 'Ne trovita en la vortaro', oneChange: 'Ortografikontrolado finita: unu vorto korektita', progress: 'La ortografio estas kontrolata...', title: 'Kontroli la ortografion', toolbar: 'Kontroli la ortografion' }); rt-4.4.7/devel/third-party/wsc-src/lang/es.js0000644000201500020150000000202314101750613017437 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'es', { btnIgnore: 'Ignorar', btnIgnoreAll: 'Ignorar Todo', btnReplace: 'Reemplazar', btnReplaceAll: 'Reemplazar Todo', btnUndo: 'Deshacer', changeTo: 'Cambiar a', errorLoading: 'Error cargando la aplicación del servidor: %s.', ieSpellDownload: 'Módulo de Control de Ortografía no instalado.\r\n¿Desea descargarlo ahora?', manyChanges: 'Control finalizado: se ha cambiado %1 palabras', noChanges: 'Control finalizado: no se ha cambiado ninguna palabra', noMispell: 'Control finalizado: no se encontraron errores', noSuggestions: '- No hay sugerencias -', notAvailable: 'Lo sentimos pero el servicio no está disponible.', notInDic: 'No se encuentra en el Diccionario', oneChange: 'Control finalizado: se ha cambiado una palabra', progress: 'Control de Ortografía en progreso...', title: 'Comprobar ortografía', toolbar: 'Ortografía' }); rt-4.4.7/devel/third-party/wsc-src/lang/ro.js0000644000201500020150000000213514101750613017454 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'ro', { btnIgnore: 'Ignoră', btnIgnoreAll: 'Ignoră toate', btnReplace: 'Înlocuieşte', btnReplaceAll: 'Înlocuieşte tot', btnUndo: 'Starea anterioară (undo)', changeTo: 'Schimbă în', errorLoading: 'Eroare în lansarea aplicației service host %s.', ieSpellDownload: 'Unealta pentru verificat textul (Spell checker) neinstalată. Doriţi să o descărcaţi acum?', manyChanges: 'Verificarea textului terminată: 1% cuvinte modificate', noChanges: 'Verificarea textului terminată: Niciun cuvânt modificat', noMispell: 'Verificarea textului terminată: Nicio greşeală găsită', noSuggestions: '- Fără sugestii -', notAvailable: 'Scuzați, dar serviciul nu este disponibil momentan.', notInDic: 'Nu e în dicţionar', oneChange: 'Verificarea textului terminată: Un cuvânt modificat', progress: 'Verificarea textului în desfăşurare...', title: 'Spell Checker', toolbar: 'Verifică scrierea textului' }); rt-4.4.7/devel/third-party/wsc-src/lang/hr.js0000644000201500020150000000170014101750613017442 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'hr', { btnIgnore: 'Zanemari', btnIgnoreAll: 'Zanemari sve', btnReplace: 'Zamijeni', btnReplaceAll: 'Zamijeni sve', btnUndo: 'Vrati', changeTo: 'Promijeni u', errorLoading: 'Greška učitavanja aplikacije: %s.', ieSpellDownload: 'Provjera pravopisa nije instalirana. Želite li skinuti provjeru pravopisa?', manyChanges: 'Provjera završena: Promijenjeno %1 riječi', noChanges: 'Provjera završena: Nije napravljena promjena', noMispell: 'Provjera završena: Nema grešaka', noSuggestions: '-Nema preporuke-', notAvailable: 'Žao nam je, ali usluga trenutno nije dostupna.', notInDic: 'Nije u rječniku', oneChange: 'Provjera završena: Jedna riječ promjenjena', progress: 'Provjera u tijeku...', title: 'Provjera pravopisa', toolbar: 'Provjeri pravopis' }); rt-4.4.7/devel/third-party/wsc-src/lang/it.js0000644000201500020150000000202514101750613017446 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'it', { btnIgnore: 'Ignora', btnIgnoreAll: 'Ignora tutto', btnReplace: 'Cambia', btnReplaceAll: 'Cambia tutto', btnUndo: 'Annulla', changeTo: 'Cambia in', errorLoading: 'Errore nel caricamento dell\'host col servizio applicativo: %s.', ieSpellDownload: 'Contollo ortografico non installato. Lo vuoi scaricare ora?', manyChanges: 'Controllo ortografico completato: %1 parole cambiate', noChanges: 'Controllo ortografico completato: nessuna parola cambiata', noMispell: 'Controllo ortografico completato: nessun errore trovato', noSuggestions: '- Nessun suggerimento -', notAvailable: 'Il servizio non è momentaneamente disponibile.', notInDic: 'Non nel dizionario', oneChange: 'Controllo ortografico completato: 1 parola cambiata', progress: 'Controllo ortografico in corso', title: 'Controllo ortografico', toolbar: 'Correttore ortografico' }); rt-4.4.7/devel/third-party/wsc-src/lang/sk.js0000644000201500020150000000207114101750613017450 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'sk', { btnIgnore: 'Ignorovať', btnIgnoreAll: 'Ignorovať všetko', btnReplace: 'Prepísat', btnReplaceAll: 'Prepísat všetko', btnUndo: 'Späť', changeTo: 'Zmeniť na', errorLoading: 'Chyba pri načítaní slovníka z adresy: %s.', ieSpellDownload: 'Kontrola pravopisu nie je naištalovaná. Chcete ju teraz stiahnuť?', manyChanges: 'Kontrola pravopisu dokončená: Bolo zmenených %1 slov', noChanges: 'Kontrola pravopisu dokončená: Neboli zmenené žiadne slová', noMispell: 'Kontrola pravopisu dokončená: Neboli nájdené žiadne chyby pravopisu', noSuggestions: '- Žiadny návrh -', notAvailable: 'Prepáčte, ale služba je momentálne nedostupná.', notInDic: 'Nie je v slovníku', oneChange: 'Kontrola pravopisu dokončená: Bolo zmenené jedno slovo', progress: 'Prebieha kontrola pravopisu...', title: 'Skontrolovať pravopis', toolbar: 'Kontrola pravopisu' }); rt-4.4.7/devel/third-party/wsc-src/lang/pt.js0000644000201500020150000000206714101750613017463 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'pt', { btnIgnore: 'Ignorar', btnIgnoreAll: 'Ignorar Tudo', btnReplace: 'Substituir', btnReplaceAll: 'Substituir Tudo', btnUndo: 'Anular', changeTo: 'Mudar para', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: ' Verificação ortográfica não instalada. Quer descarregar agora?', manyChanges: 'Verificação ortográfica completa: %1 palavras alteradas', noChanges: 'Verificação ortográfica completa: não houve alteração de palavras', noMispell: 'Verificação ortográfica completa: não foram encontrados erros', noSuggestions: '- Sem sugestões -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: 'Não está num directório', oneChange: 'Verificação ortográfica completa: uma palavra alterada', progress: 'Verificação ortográfica em progresso…', title: 'Spell Checker', toolbar: 'Verificação Ortográfica' }); rt-4.4.7/devel/third-party/wsc-src/lang/ko.js0000644000201500020150000000203514101750613017444 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'ko', { btnIgnore: '건너뜀', btnIgnoreAll: '모두 건너뜀', btnReplace: '변경', btnReplaceAll: '모두 변경', btnUndo: '취소', changeTo: '변경할 단어', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: '철자 검사기가 철치되지 않았습니다. 지금 다운로드하시겠습니까?', manyChanges: '철자검사 완료: %1 단어가 변경되었습니다.', noChanges: '철자검사 완료: 변경된 단어가 없습니다.', noMispell: '철자검사 완료: 잘못된 철자가 없습니다.', noSuggestions: '- 추천단어 없음 -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: '사전에 없는 단어', oneChange: '철자검사 완료: 단어가 변경되었습니다.', progress: '철자검사를 진행중입니다...', title: 'Spell Check', toolbar: '철자검사' }); rt-4.4.7/devel/third-party/wsc-src/lang/mk.js0000644000201500020150000000164014101750613017443 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'mk', { btnIgnore: 'Ignore', btnIgnoreAll: 'Ignore All', btnReplace: 'Replace', btnReplaceAll: 'Replace All', btnUndo: 'Undo', changeTo: 'Change to', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'Spell checker not installed. Do you want to download it now?', manyChanges: 'Spell check complete: %1 words changed', noChanges: 'Spell check complete: No words changed', noMispell: 'Spell check complete: No misspellings found', noSuggestions: '- No suggestions -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: 'Not in dictionary', oneChange: 'Spell check complete: One word changed', progress: 'Spell check in progress...', title: 'Spell Checker', toolbar: 'Check Spelling' }); rt-4.4.7/devel/third-party/wsc-src/lang/cy.js0000644000201500020150000000174114101750613017451 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'cy', { btnIgnore: 'Anwybyddu Un', btnIgnoreAll: 'Anwybyddu Pob', btnReplace: 'Amnewid Un', btnReplaceAll: 'Amnewid Pob', btnUndo: 'Dadwneud', changeTo: 'Newid i', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'Gwirydd sillafu heb ei arsefydlu. A ydych am ei lawrlwytho nawr?', manyChanges: 'Gwirio sillafu wedi gorffen: Newidiwyd %1 gair', noChanges: 'Gwirio sillafu wedi gorffen: Dim newidiadau', noMispell: 'Gwirio sillafu wedi gorffen: Dim camsillaf.', noSuggestions: '- Dim awgrymiadau -', notAvailable: 'Nid yw\'r gwasanaeth hwn ar gael yn bresennol.', notInDic: 'Nid i\'w gael yn y geiriadur', oneChange: 'Gwirio sillafu wedi gorffen: Newidiwyd 1 gair', progress: 'Gwirio sillafu yn ar y gweill...', title: 'Gwirio Sillafu', toolbar: 'Gwirio Sillafu' }); rt-4.4.7/devel/third-party/wsc-src/lang/uk.js0000644000201500020150000000266614101750613017464 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'uk', { btnIgnore: 'Пропустити', btnIgnoreAll: 'Пропустити все', btnReplace: 'Замінити', btnReplaceAll: 'Замінити все', btnUndo: 'Назад', changeTo: 'Замінити на', errorLoading: 'Помилка завантаження : %s.', ieSpellDownload: 'Модуль перевірки орфографії не встановлено. Бажаєте завантажити його зараз?', manyChanges: 'Перевірку орфографії завершено: 1% слів(ова) змінено', noChanges: 'Перевірку орфографії завершено: жодне слово не змінено', noMispell: 'Перевірку орфографії завершено: помилок не знайдено', noSuggestions: '- немає варіантів -', notAvailable: 'Вибачте, але сервіс наразі недоступний.', notInDic: 'Немає в словнику', oneChange: 'Перевірку орфографії завершено: змінено одне слово', progress: 'Виконується перевірка орфографії...', title: 'Перевірка орфографії', toolbar: 'Перевірити орфографію' }); rt-4.4.7/devel/third-party/wsc-src/lang/zh-cn.js0000644000201500020150000000164714101750613020062 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'zh-cn', { btnIgnore: '忽略', btnIgnoreAll: '全部忽略', btnReplace: '替换', btnReplaceAll: '全部替换', btnUndo: '撤消', changeTo: '更改为', errorLoading: '加载应该服务主机时出错: %s.', ieSpellDownload: '拼写检查插件还没安装, 您是否想现在就下载?', manyChanges: '拼写检查完成: 更改了 %1 个单词', noChanges: '拼写检查完成: 没有更改任何单词', noMispell: '拼写检查完成: 没有发现拼写错误', noSuggestions: '- 没有建议 -', notAvailable: '抱歉, 服务目前暂不可用', notInDic: '没有在字典里', oneChange: '拼写检查完成: 更改了一个单词', progress: '正在进行拼写检查...', title: '拼写检查', toolbar: '拼写检查' }); rt-4.4.7/devel/third-party/wsc-src/lang/sv.js0000644000201500020150000000173214101750613017466 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'sv', { btnIgnore: 'Ignorera', btnIgnoreAll: 'Ignorera alla', btnReplace: 'Ersätt', btnReplaceAll: 'Ersätt alla', btnUndo: 'Ångra', changeTo: 'Ändra till', errorLoading: 'Tjänsten är ej tillgänglig: %s.', ieSpellDownload: 'Stavningskontrollen är ej installerad. Vill du göra det nu?', manyChanges: 'Stavningskontroll slutförd: %1 ord rättades.', noChanges: 'Stavningskontroll slutförd: Inga ord rättades.', noMispell: 'Stavningskontroll slutförd: Inga stavfel påträffades.', noSuggestions: '- Förslag saknas -', notAvailable: 'Tyvärr är tjänsten ej tillgänglig nu', notInDic: 'Saknas i ordlistan', oneChange: 'Stavningskontroll slutförd: Ett ord rättades.', progress: 'Stavningskontroll pågår...', title: 'Kontrollera stavning', toolbar: 'Stavningskontroll' }); rt-4.4.7/devel/third-party/wsc-src/lang/lt.js0000644000201500020150000000177414101750613017463 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'lt', { btnIgnore: 'Ignoruoti', btnIgnoreAll: 'Ignoruoti visus', btnReplace: 'Pakeisti', btnReplaceAll: 'Pakeisti visus', btnUndo: 'Atšaukti', changeTo: 'Pakeisti į', errorLoading: 'Klaida įkraunant servisą: %s.', ieSpellDownload: 'Rašybos tikrinimas neinstaliuotas. Ar Jūs norite jį dabar atsisiųsti?', manyChanges: 'Rašybos tikrinimas baigtas: Pakeista %1 žodžių', noChanges: 'Rašybos tikrinimas baigtas: Nėra pakeistų žodžių', noMispell: 'Rašybos tikrinimas baigtas: Nerasta rašybos klaidų', noSuggestions: '- Nėra pasiūlymų -', notAvailable: 'Atleiskite, šiuo metu servisas neprieinamas.', notInDic: 'Žodyne nerastas', oneChange: 'Rašybos tikrinimas baigtas: Vienas žodis pakeistas', progress: 'Vyksta rašybos tikrinimas...', title: 'Tikrinti klaidas', toolbar: 'Rašybos tikrinimas' }); rt-4.4.7/devel/third-party/wsc-src/lang/is.js0000644000201500020150000000160014101750613017443 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'is', { btnIgnore: 'Hunsa', btnIgnoreAll: 'Hunsa allt', btnReplace: 'Skipta', btnReplaceAll: 'Skipta öllu', btnUndo: 'Til baka', changeTo: 'Tillaga', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'Villuleit ekki sett upp.
        Viltu setja hana upp?', manyChanges: 'Villuleit lokið: %1 orðum breytt', noChanges: 'Villuleit lokið: Engu orði breytt', noMispell: 'Villuleit lokið: Engin villa fannst', noSuggestions: '- engar tillögur -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: 'Ekki í orðabókinni', oneChange: 'Villuleit lokið: Einu orði breytt', progress: 'Villuleit í gangi...', title: 'Spell Checker', toolbar: 'Villuleit' }); rt-4.4.7/devel/third-party/wsc-src/lang/fr-ca.js0000644000201500020150000000206314101750613020024 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'fr-ca', { btnIgnore: 'Ignorer', btnIgnoreAll: 'Ignorer tout', btnReplace: 'Remplacer', btnReplaceAll: 'Remplacer tout', btnUndo: 'Annuler', changeTo: 'Changer en', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'Le Correcteur d\'orthographe n\'est pas installé. Souhaitez-vous le télécharger maintenant?', manyChanges: 'Vérification d\'orthographe terminée: %1 mots modifiés', noChanges: 'Vérification d\'orthographe terminée: Pas de modifications', noMispell: 'Vérification d\'orthographe terminée: pas d\'erreur trouvée', noSuggestions: '- Pas de suggestion -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: 'Pas dans le dictionnaire', oneChange: 'Vérification d\'orthographe terminée: Un mot modifié', progress: 'Vérification d\'orthographe en cours...', title: 'Spell Checker', toolbar: 'Orthographe' }); rt-4.4.7/devel/third-party/wsc-src/lang/et.js0000644000201500020150000000200214101750613017435 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'et', { btnIgnore: 'Ignoreeri', btnIgnoreAll: 'Ignoreeri kõiki', btnReplace: 'Asenda', btnReplaceAll: 'Asenda kõik', btnUndo: 'Võta tagasi', changeTo: 'Muuda', errorLoading: 'Viga rakenduse teenushosti laadimisel: %s.', ieSpellDownload: 'Õigekirja kontrollija ei ole paigaldatud. Soovid sa selle alla laadida?', manyChanges: 'Õigekirja kontroll sooritatud: %1 sõna muudetud', noChanges: 'Õigekirja kontroll sooritatud: ühtegi sõna ei muudetud', noMispell: 'Õigekirja kontroll sooritatud: õigekirjuvigu ei leitud', noSuggestions: '- Soovitused puuduvad -', notAvailable: 'Kahjuks ei ole teenus praegu saadaval.', notInDic: 'Puudub sõnastikust', oneChange: 'Õigekirja kontroll sooritatud: üks sõna muudeti', progress: 'Toimub õigekirja kontroll...', title: 'Õigekirjakontroll', toolbar: 'Õigekirjakontroll' }); rt-4.4.7/devel/third-party/wsc-src/lang/bs.js0000644000201500020150000000164014101750613017440 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'bs', { btnIgnore: 'Ignore', btnIgnoreAll: 'Ignore All', btnReplace: 'Replace', btnReplaceAll: 'Replace All', btnUndo: 'Undo', changeTo: 'Change to', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'Spell checker not installed. Do you want to download it now?', manyChanges: 'Spell check complete: %1 words changed', noChanges: 'Spell check complete: No words changed', noMispell: 'Spell check complete: No misspellings found', noSuggestions: '- No suggestions -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: 'Not in dictionary', oneChange: 'Spell check complete: One word changed', progress: 'Spell check in progress...', title: 'Spell Checker', toolbar: 'Check Spelling' }); rt-4.4.7/devel/third-party/wsc-src/lang/pl.js0000644000201500020150000000175114101750613017452 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'pl', { btnIgnore: 'Ignoruj', btnIgnoreAll: 'Ignoruj wszystkie', btnReplace: 'Zmień', btnReplaceAll: 'Zmień wszystkie', btnUndo: 'Cofnij', changeTo: 'Zmień na', errorLoading: 'Błąd wczytywania hosta aplikacji usługi: %s.', ieSpellDownload: 'Słownik nie jest zainstalowany. Czy chcesz go pobrać?', manyChanges: 'Sprawdzanie zakończone: zmieniono %l słów', noChanges: 'Sprawdzanie zakończone: nie zmieniono żadnego słowa', noMispell: 'Sprawdzanie zakończone: nie znaleziono błędów', noSuggestions: '- Brak sugestii -', notAvailable: 'Przepraszamy, ale usługa jest obecnie niedostępna.', notInDic: 'Słowa nie ma w słowniku', oneChange: 'Sprawdzanie zakończone: zmieniono jedno słowo', progress: 'Trwa sprawdzanie...', title: 'Sprawdź pisownię', toolbar: 'Sprawdź pisownię' }); rt-4.4.7/devel/third-party/wsc-src/lang/bg.js0000644000201500020150000000221514101750613017423 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'bg', { btnIgnore: 'Игнорирай', btnIgnoreAll: 'Игнорирай всичко', btnReplace: 'Препокриване', btnReplaceAll: 'Препокрий всичко', btnUndo: 'Възтанови', changeTo: 'Промени на', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'Spell checker not installed. Do you want to download it now?', manyChanges: 'Spell check complete: %1 words changed', noChanges: 'Spell check complete: No words changed', noMispell: 'Spell check complete: No misspellings found', noSuggestions: '- Няма препоръчани -', notAvailable: 'Съжаляваме, но услугата не е достъпна за момента', notInDic: 'Не е в речника', oneChange: 'Spell check complete: One word changed', progress: 'Проверява се правописа...', title: 'Проверка на правопис', toolbar: 'Проверка на правопис' }); rt-4.4.7/devel/third-party/wsc-src/lang/fa.js0000644000201500020150000000243414101750613017424 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'fa', { btnIgnore: 'چشمپوشی', btnIgnoreAll: 'چشمپوشی همه', btnReplace: 'جایگزینی', btnReplaceAll: 'جایگزینی همه', btnUndo: 'واچینش', changeTo: 'تغییر به', errorLoading: 'خطا در بارگیری برنامه خدمات میزبان: %s.', ieSpellDownload: 'بررسی کنندهٴ املا نصب نشده است. آیا میخواهید آن را هماکنون دریافت کنید؟', manyChanges: 'بررسی املا انجام شد. %1 واژه تغییر یافت', noChanges: 'بررسی املا انجام شد. هیچ واژهای تغییر نیافت', noMispell: 'بررسی املا انجام شد. هیچ غلط املائی یافت نشد', noSuggestions: '- پیشنهادی نیست -', notAvailable: 'با عرض پوزش خدمات الان در دسترس نیستند.', notInDic: 'در واژه~نامه یافت نشد', oneChange: 'بررسی املا انجام شد. یک واژه تغییر یافت', progress: 'بررسی املا در حال انجام...', title: 'بررسی املا', toolbar: 'بررسی املا' }); rt-4.4.7/devel/third-party/wsc-src/lang/ku.js0000644000201500020150000000261514101750613017456 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'ku', { btnIgnore: 'پشتگوێ کردن', btnIgnoreAll: 'پشتگوێکردنی ههمووی', btnReplace: 'لهبریدانن', btnReplaceAll: 'لهبریدانانی ههمووی', btnUndo: 'پووچکردنهوه', changeTo: 'گۆڕینی بۆ', errorLoading: 'ههڵه لههێنانی داخوازینامهی خانهخۆێی ڕاژه: %s.', ieSpellDownload: 'پشکنینی ڕێنووس دانهمزراوه. دهتهوێت ئێستا دایبگریت?', manyChanges: 'پشکنینی ڕێنووس کۆتای هات: لهسهدا %1 ی وشهکان گۆڕدرا', noChanges: 'پشکنینی ڕێنووس کۆتای هات: هیچ وشهیهك نۆگۆڕدرا', noMispell: 'پشکنینی ڕێنووس کۆتای هات: هیچ ههڵهیهکی ڕێنووس نهدۆزراوه', noSuggestions: '- هیچ پێشنیارێك -', notAvailable: 'ببووره، لهمکاتهدا ڕاژهکه لهبهردهستا نیه.', notInDic: 'لهفهرههنگ دانیه', oneChange: 'پشکنینی ڕێنووس کۆتای هات: یهك وشه گۆڕدرا', progress: 'پشکنینی ڕێنووس لهبهردهوامبوون دایه...', title: 'پشکنینی ڕێنووس', toolbar: 'پشکنینی ڕێنووس' }); rt-4.4.7/devel/third-party/wsc-src/lang/bn.js0000644000201500020150000000300214101750613017425 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'bn', { btnIgnore: 'ইগনোর কর', btnIgnoreAll: 'সব ইগনোর কর', btnReplace: 'বদলে দাও', btnReplaceAll: 'সব বদলে দাও', btnUndo: 'আন্ডু', changeTo: 'এতে বদলাও', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'বানান পরীক্ষক ইনস্টল করা নেই। আপনি কি এখনই এটা ডাউনলোড করতে চান?', manyChanges: 'বানান পরীক্ষা শেষ: %1 গুলো শব্দ বদলে গ্যাছে', noChanges: 'বানান পরীক্ষা শেষ: কোন শব্দ পরিবর্তন করা হয়নি', noMispell: 'বানান পরীক্ষা শেষ: কোন ভুল বানান পাওয়া যায়নি', noSuggestions: '- কোন সাজেশন নেই -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: 'শব্দকোষে নেই', oneChange: 'বানান পরীক্ষা শেষ: একটি মাত্র শব্দ পরিবর্তন করা হয়েছে', progress: 'বানান পরীক্ষা চলছে...', title: 'Spell Checker', toolbar: 'বানান চেক' }); rt-4.4.7/devel/third-party/wsc-src/lang/el.js0000644000201500020150000000274314101750613017441 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'el', { btnIgnore: 'Αγνόηση', btnIgnoreAll: 'Αγνόηση όλων', btnReplace: 'Αντικατάσταση', btnReplaceAll: 'Αντικατάσταση όλων', btnUndo: 'Αναίρεση', changeTo: 'Αλλαγή σε', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'Δεν υπάρχει εγκατεστημένος ορθογράφος. Θέλετε να τον κατεβάσετε τώρα;', manyChanges: 'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Άλλαξαν %1 λέξεις', noChanges: 'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν άλλαξαν λέξεις', noMispell: 'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Δεν βρέθηκαν λάθη', noSuggestions: '- Δεν υπάρχουν προτάσεις -', notAvailable: 'Η υπηρεσία δεν είναι διαθέσιμη αυτήν την στιγμή.', notInDic: 'Δεν υπάρχει στο λεξικό', oneChange: 'Ο ορθογραφικός έλεγχος ολοκληρώθηκε: Άλλαξε μια λέξη', progress: 'Γίνεται ορθογραφικός έλεγχος...', title: 'Ορθογραφικός Έλεγχος', toolbar: 'Ορθογραφικός Έλεγχος' }); rt-4.4.7/devel/third-party/wsc-src/lang/fi.js0000644000201500020150000000173514101750613017437 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'fi', { btnIgnore: 'Jätä huomioimatta', btnIgnoreAll: 'Jätä kaikki huomioimatta', btnReplace: 'Korvaa', btnReplaceAll: 'Korvaa kaikki', btnUndo: 'Kumoa', changeTo: 'Vaihda', errorLoading: 'Virhe ladattaessa oikolukupalvelua isännältä: %s.', ieSpellDownload: 'Oikeinkirjoituksen tarkistusta ei ole asennettu. Haluatko ladata sen nyt?', manyChanges: 'Tarkistus valmis: %1 sanaa muutettiin', noChanges: 'Tarkistus valmis: Yhtään sanaa ei muutettu', noMispell: 'Tarkistus valmis: Ei virheitä', noSuggestions: 'Ei ehdotuksia', notAvailable: 'Valitettavasti oikoluku ei ole käytössä tällä hetkellä.', notInDic: 'Ei sanakirjassa', oneChange: 'Tarkistus valmis: Yksi sana muutettiin', progress: 'Tarkistus käynnissä...', title: 'Oikoluku', toolbar: 'Tarkista oikeinkirjoitus' }); rt-4.4.7/devel/third-party/wsc-src/lang/ru.js0000644000201500020150000000276314101750613017471 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'ru', { btnIgnore: 'Пропустить', btnIgnoreAll: 'Пропустить всё', btnReplace: 'Заменить', btnReplaceAll: 'Заменить всё', btnUndo: 'Отменить', changeTo: 'Изменить на', errorLoading: 'Произошла ошибка при подключении к серверу проверки орфографии: %s.', ieSpellDownload: 'Модуль проверки орфографии не установлен. Хотите скачать его?', manyChanges: 'Проверка орфографии завершена. Изменено слов: %1', noChanges: 'Проверка орфографии завершена. Не изменено ни одного слова', noMispell: 'Проверка орфографии завершена. Ошибок не найдено', noSuggestions: '- Варианты отсутствуют -', notAvailable: 'Извините, но в данный момент сервис недоступен.', notInDic: 'Отсутствует в словаре', oneChange: 'Проверка орфографии завершена. Изменено одно слово', progress: 'Орфография проверяется...', title: 'Проверка орфографии', toolbar: 'Проверить орфографию' }); rt-4.4.7/devel/third-party/wsc-src/lang/gl.js0000644000201500020150000000205114101750613017433 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'gl', { btnIgnore: 'Ignorar', btnIgnoreAll: 'Ignorar Todas', btnReplace: 'Substituir', btnReplaceAll: 'Substituir Todas', btnUndo: 'Desfacer', changeTo: 'Cambiar a', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'O corrector ortográfico non está instalado. ¿Quere descargalo agora?', manyChanges: 'Corrección ortográfica rematada: %1 verbas substituidas', noChanges: 'Corrección ortográfica rematada: Non se substituiu nengunha verba', noMispell: 'Corrección ortográfica rematada: Non se atoparon erros', noSuggestions: '- Sen candidatos -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: 'Non está no diccionario', oneChange: 'Corrección ortográfica rematada: Unha verba substituida', progress: 'Corrección ortográfica en progreso...', title: 'Spell Checker', toolbar: 'Corrección Ortográfica' }); rt-4.4.7/devel/third-party/wsc-src/lang/sr-latn.js0000644000201500020150000000177414101750613020424 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'sr-latn', { btnIgnore: 'Ignoriši', btnIgnoreAll: 'Ignoriši sve', btnReplace: 'Zameni', btnReplaceAll: 'Zameni sve', btnUndo: 'Vrati akciju', changeTo: 'Izmeni', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'Provera spelovanja nije instalirana. Da li želite da je skinete sa Interneta?', manyChanges: 'Provera spelovanja završena: %1 reč(i) je izmenjeno', noChanges: 'Provera spelovanja završena: Nije izmenjena nijedna rec', noMispell: 'Provera spelovanja završena: greške nisu pronadene', noSuggestions: '- Bez sugestija -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: 'Nije u rečniku', oneChange: 'Provera spelovanja završena: Izmenjena je jedna reč', progress: 'Provera spelovanja u toku...', title: 'Spell Checker', toolbar: 'Proveri spelovanje' }); rt-4.4.7/devel/third-party/wsc-src/lang/pt-br.js0000644000201500020150000000216514101750613020063 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'pt-br', { btnIgnore: 'Ignorar uma vez', btnIgnoreAll: 'Ignorar Todas', btnReplace: 'Alterar', btnReplaceAll: 'Alterar Todas', btnUndo: 'Desfazer', changeTo: 'Alterar para', errorLoading: 'Erro carregando servidor de aplicação: %s.', ieSpellDownload: 'A verificação ortográfica não foi instalada. Você gostaria de realizar o download agora?', manyChanges: 'Verificação ortográfica encerrada: %1 palavras foram alteradas', noChanges: 'Verificação ortográfica encerrada: Não houve alterações', noMispell: 'Verificação encerrada: Não foram encontrados erros de ortografia', noSuggestions: '-sem sugestões de ortografia-', notAvailable: 'Desculpe, o serviço não está disponível no momento.', notInDic: 'Não encontrada', oneChange: 'Verificação ortográfica encerrada: Uma palavra foi alterada', progress: 'Verificação ortográfica em andamento...', title: 'Corretor Ortográfico', toolbar: 'Verificar Ortografia' }); rt-4.4.7/devel/third-party/wsc-src/lang/fo.js0000644000201500020150000000173514101750613017445 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'fo', { btnIgnore: 'Forfjóna', btnIgnoreAll: 'Forfjóna alt', btnReplace: 'Yvirskriva', btnReplaceAll: 'Yvirskriva alt', btnUndo: 'Angra', changeTo: 'Broyt til', errorLoading: 'Feilur við innlesing av application service host: %s.', ieSpellDownload: 'Rættstavarin er ikki tøkur í tekstviðgeranum. Vilt tú heinta hann nú?', manyChanges: 'Rættstavarin liðugur: %1 orð broytt', noChanges: 'Rættstavarin liðugur: Einki orð varð broytt', noMispell: 'Rættstavarin liðugur: Eingin feilur funnin', noSuggestions: '- Einki uppskot -', notAvailable: 'Tíverri, ikki tøkt í løtuni.', notInDic: 'Finst ikki í orðabókini', oneChange: 'Rættstavarin liðugur: Eitt orð er broytt', progress: 'Rættstavarin arbeiðir...', title: 'Kanna stavseting', toolbar: 'Kanna stavseting' }); rt-4.4.7/devel/third-party/wsc-src/lang/af.js0000644000201500020150000000164314101750613017425 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'af', { btnIgnore: 'Ignoreer', btnIgnoreAll: 'Ignoreer alles', btnReplace: 'Vervang', btnReplaceAll: 'vervang alles', btnUndo: 'Ontdoen', changeTo: 'Verander na', errorLoading: 'Fout by inlaai van diens: %s.', ieSpellDownload: 'Speltoetser is nie geïnstalleer nie. Wil u dit nou aflaai?', manyChanges: 'Klaar met speltoets: %1 woorde verander', noChanges: 'Klaar met speltoets: Geen woorde verander nie', noMispell: 'Klaar met speltoets: Geen foute nie', noSuggestions: '- Geen voorstel -', notAvailable: 'Jammer, hierdie diens is nie nou beskikbaar nie.', notInDic: 'Nie in woordeboek nie', oneChange: 'Klaar met speltoets: Een woord verander', progress: 'Spelling word getoets...', title: 'Speltoetser', toolbar: 'Speltoets' }); rt-4.4.7/devel/third-party/wsc-src/lang/hi.js0000644000201500020150000000304714101750613017437 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'hi', { btnIgnore: 'इग्नोर', btnIgnoreAll: 'सभी इग्नोर करें', btnReplace: 'रिप्लेस', btnReplaceAll: 'सभी रिप्लेस करें', btnUndo: 'अन्डू', changeTo: 'इसमें बदलें', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'स्पॅल-चॅकर इन्स्टाल नहीं किया गया है। क्या आप इसे डाउनलोड करना चाहेंगे?', manyChanges: 'वर्तनी की जाँच : %1 शब्द बदले गये', noChanges: 'वर्तनी की जाँच :कोई शब्द नहीं बदला गया', noMispell: 'वर्तनी की जाँच : कोई गलत वर्तनी (स्पॅलिंग) नहीं पाई गई', noSuggestions: '- कोई सुझाव नहीं -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: 'शब्दकोश में नहीं', oneChange: 'वर्तनी की जाँच : एक शब्द बदला गया', progress: 'वर्तनी की जाँच (स्पॅल-चॅक) जारी है...', title: 'Spell Checker', toolbar: 'वर्तनी (स्पेलिंग) जाँच' }); rt-4.4.7/devel/third-party/wsc-src/lang/km.js0000644000201500020150000000335414101750613017447 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'km', { btnIgnore: 'មិនផ្លាស់ប្តូរ', btnIgnoreAll: 'មិនផ្លាស់ប្តូរ ទាំងអស់', btnReplace: 'ជំនួស', btnReplaceAll: 'ជំនួសទាំងអស់', btnUndo: 'សារឡើងវិញ', changeTo: 'ផ្លាស់ប្តូរទៅ', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'ពុំមានកម្មវិធីពិនិត្យអក្ខរាវិរុទ្ធ ។ តើចង់ទាញយកពីណា?', manyChanges: 'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: %1 ពាក្យបានផ្លាស់ប្តូរ', noChanges: 'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពុំមានផ្លាស់ប្តូរ', noMispell: 'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: គ្មានកំហុស', noSuggestions: '- គ្មានសំណើរ -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: 'គ្មានក្នុងវចនានុក្រម', oneChange: 'ការពិនិត្យអក្ខរាវិរុទ្ធបានចប់: ពាក្យមួយត្រូចបានផ្លាស់ប្តូរ', progress: 'កំពុងពិនិត្យអក្ខរាវិរុទ្ធ...', title: 'Spell Checker', toolbar: 'ពិនិត្យអក្ខរាវិរុទ្ធ' }); rt-4.4.7/devel/third-party/wsc-src/lang/nl.js0000644000201500020150000000202714101750613017445 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'nl', { btnIgnore: 'Negeren', btnIgnoreAll: 'Alles negeren', btnReplace: 'Vervangen', btnReplaceAll: 'Alles vervangen', btnUndo: 'Ongedaan maken', changeTo: 'Wijzig in', errorLoading: 'Er is een fout opgetreden bij het laden van de dienst: %s.', ieSpellDownload: 'De spellingscontrole is niet geïnstalleerd. Wilt u deze nu downloaden?', manyChanges: 'Klaar met spellingscontrole: %1 woorden aangepast', noChanges: 'Klaar met spellingscontrole: geen woorden aangepast', noMispell: 'Klaar met spellingscontrole: geen fouten gevonden', noSuggestions: '- Geen suggesties -', notAvailable: 'Excuses, deze dienst is momenteel niet beschikbaar.', notInDic: 'Niet in het woordenboek', oneChange: 'Klaar met spellingscontrole: één woord aangepast', progress: 'Bezig met spellingscontrole...', title: 'Spellingscontrole', toolbar: 'Spellingscontrole' }); rt-4.4.7/devel/third-party/wsc-src/lang/ka.js0000644000201500020150000000334714101750613017435 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'ka', { btnIgnore: 'უგულებელყოფა', btnIgnoreAll: 'ყველას უგულებელყოფა', btnReplace: 'შეცვლა', btnReplaceAll: 'ყველას შეცვლა', btnUndo: 'გაუქმება', changeTo: 'შეცვლელი', errorLoading: 'სერვისის გამოძახების შეცდომა: %s.', ieSpellDownload: 'მართლწერის შემოწმება არაა დაინსტალირებული. ჩამოვქაჩოთ ინტერნეტიდან?', manyChanges: 'მართლწერის შემოწმება: %1 სიტყვა შეიცვალა', noChanges: 'მართლწერის შემოწმება: არაფერი შეცვლილა', noMispell: 'მართლწერის შემოწმება: შეცდომა არ მოიძებნა', noSuggestions: '- არაა შემოთავაზება -', notAvailable: 'უკაცრავად, ეს სერვისი ამჟამად მიუწვდომელია.', notInDic: 'არაა ლექსიკონში', oneChange: 'მართლწერის შემოწმება: ერთი სიტყვა შეიცვალა', progress: 'მიმდინარეობს მართლწერის შემოწმება...', title: 'მართლწერა', toolbar: 'მართლწერა' }); rt-4.4.7/devel/third-party/wsc-src/lang/mn.js0000644000201500020150000000232714101750613017451 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'mn', { btnIgnore: 'Зөвшөөрөх', btnIgnoreAll: 'Бүгдийг зөвшөөрөх', btnReplace: 'Солих', btnReplaceAll: 'Бүгдийг Дарж бичих', btnUndo: 'Буцаах', changeTo: 'Өөрчлөх', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'Дүрэм шалгагч суугаагүй байна. Татаж авахыг хүсч байна уу?', manyChanges: 'Дүрэм шалгаад дууссан: %1 үг өөрчлөгдсөн', noChanges: 'Дүрэм шалгаад дууссан: үг өөрчлөгдөөгүй', noMispell: 'Дүрэм шалгаад дууссан: Алдаа олдсонгүй', noSuggestions: '- Тайлбаргүй -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: 'Толь бичиггүй', oneChange: 'Дүрэм шалгаад дууссан: 1 үг өөрчлөгдсөн', progress: 'Дүрэм шалгаж байгаа үйл явц...', title: 'Spell Checker', toolbar: 'Үгийн дүрэх шалгах' }); rt-4.4.7/devel/third-party/wsc-src/lang/da.js0000644000201500020150000000161714101750613017424 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'da', { btnIgnore: 'Ignorér', btnIgnoreAll: 'Ignorér alle', btnReplace: 'Erstat', btnReplaceAll: 'Erstat alle', btnUndo: 'Tilbage', changeTo: 'Forslag', errorLoading: 'Fejl ved indlæsning af host: %s.', ieSpellDownload: 'Stavekontrol ikke installeret. Vil du installere den nu?', manyChanges: 'Stavekontrol færdig: %1 ord ændret', noChanges: 'Stavekontrol færdig: Ingen ord ændret', noMispell: 'Stavekontrol færdig: Ingen fejl fundet', noSuggestions: '(ingen forslag)', notAvailable: 'Stavekontrol er desværre ikke tilgængelig.', notInDic: 'Ikke i ordbogen', oneChange: 'Stavekontrol færdig: Et ord ændret', progress: 'Stavekontrollen arbejder...', title: 'Stavekontrol', toolbar: 'Stavekontrol' }); rt-4.4.7/devel/third-party/wsc-src/lang/he.js0000644000201500020150000000213214101750613017425 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'he', { btnIgnore: 'התעלמות', btnIgnoreAll: 'התעלמות מהכל', btnReplace: 'החלפה', btnReplaceAll: 'החלפת הכל', btnUndo: 'החזרה', changeTo: 'שינוי ל', errorLoading: 'שגיאה בהעלאת השירות: %s.', ieSpellDownload: 'בודק האיות לא מותקן, האם להורידו?', manyChanges: 'בדיקות איות הסתיימה: %1 מילים שונו', noChanges: 'בדיקות איות הסתיימה: לא שונתה אף מילה', noMispell: 'בדיקות איות הסתיימה: לא נמצאו שגיאות כתיב', noSuggestions: '- אין הצעות -', notAvailable: 'לא נמצא שירות זמין.', notInDic: 'לא נמצא במילון', oneChange: 'בדיקות איות הסתיימה: שונתה מילה אחת', progress: 'בודק האיות בתהליך בדיקה....', title: 'בדיקת איות', toolbar: 'בדיקת איות' }); rt-4.4.7/devel/third-party/wsc-src/lang/ca.js0000644000201500020150000000201514101750613017414 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'ca', { btnIgnore: 'Ignora', btnIgnoreAll: 'Ignora-les totes', btnReplace: 'Canvia', btnReplaceAll: 'Canvia-les totes', btnUndo: 'Desfés', changeTo: 'Reemplaça amb', errorLoading: 'Error carregant el servidor: %s.', ieSpellDownload: 'Verificació ortogràfica no instal·lada. Voleu descarregar-ho ara?', manyChanges: 'Verificació ortogràfica: s\'han canviat %1 paraules', noChanges: 'Verificació ortogràfica: no s\'ha canviat cap paraula', noMispell: 'Verificació ortogràfica acabada: no hi ha cap paraula mal escrita', noSuggestions: 'Cap suggeriment', notAvailable: 'El servei no es troba disponible ara.', notInDic: 'No és al diccionari', oneChange: 'Verificació ortogràfica: s\'ha canviat una paraula', progress: 'Verificació ortogràfica en curs...', title: 'Comprova l\'ortografia', toolbar: 'Revisa l\'ortografia' }); rt-4.4.7/devel/third-party/wsc-src/lang/gu.js0000644000201500020150000000330214101750613017444 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'gu', { btnIgnore: 'ઇગ્નોર/અવગણના કરવી', btnIgnoreAll: 'બધાની ઇગ્નોર/અવગણના કરવી', btnReplace: 'બદલવું', btnReplaceAll: 'બધા બદલી કરો', btnUndo: 'અન્ડૂ', changeTo: 'આનાથી બદલવું', errorLoading: 'સર્વિસ એપ્લીકેશન લોડ નથી થ: %s.', ieSpellDownload: 'સ્પેલ-ચેકર ઇન્સ્ટોલ નથી. શું તમે ડાઉનલોડ કરવા માંગો છો?', manyChanges: 'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: %1 શબ્દ બદલયા છે', noChanges: 'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એકપણ શબ્દ બદલયો નથી', noMispell: 'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: ખોટી જોડણી મળી નથી', noSuggestions: '- કઇ સજેશન નથી -', notAvailable: 'માફ કરશો, આ સુવિધા ઉપલબ્ધ નથી', notInDic: 'શબ્દકોશમાં નથી', oneChange: 'શબ્દની જોડણી/સ્પેલ ચેક પૂર્ણ: એક શબ્દ બદલયો છે', progress: 'શબ્દની જોડણી/સ્પેલ ચેક ચાલુ છે...', title: 'સ્પેલ ', toolbar: 'જોડણી (સ્પેલિંગ) તપાસવી' }); rt-4.4.7/devel/third-party/wsc-src/lang/ms.js0000644000201500020150000000173714101750613017462 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'ms', { btnIgnore: 'Biar', btnIgnoreAll: 'Biarkan semua', btnReplace: 'Ganti', btnReplaceAll: 'Gantikan Semua', btnUndo: 'Batalkan', changeTo: 'Tukarkan kepada', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'Pemeriksa ejaan tidak dipasang. Adakah anda mahu muat turun sekarang?', manyChanges: 'Pemeriksaan ejaan siap: %1 perkataan diubah', noChanges: 'Pemeriksaan ejaan siap: Tiada perkataan diubah', noMispell: 'Pemeriksaan ejaan siap: Tiada salah ejaan', noSuggestions: '- Tiada cadangan -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: 'Tidak terdapat didalam kamus', oneChange: 'Pemeriksaan ejaan siap: Satu perkataan telah diubah', progress: 'Pemeriksaan ejaan sedang diproses...', title: 'Spell Checker', toolbar: 'Semak Ejaan' }); rt-4.4.7/devel/third-party/wsc-src/lang/th.js0000644000201500020150000000274614101750613017457 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'th', { btnIgnore: 'ยกเว้น', btnIgnoreAll: 'ยกเว้นทั้งหมด', btnReplace: 'แทนที่', btnReplaceAll: 'แทนที่ทั้งหมด', btnUndo: 'ยกเลิก', changeTo: 'แก้ไขเป็น', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'ไม่ได้ติดตั้งระบบตรวจสอบคำสะกด. ต้องการติดตั้งไหมครับ?', manyChanges: 'ตรวจสอบคำสะกดเสร็จสิ้น:: แก้ไข %1 คำ', noChanges: 'ตรวจสอบคำสะกดเสร็จสิ้น: ไม่มีการแก้คำใดๆ', noMispell: 'ตรวจสอบคำสะกดเสร็จสิ้น: ไม่พบคำสะกดผิด', noSuggestions: '- ไม่มีคำแนะนำใดๆ -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: 'ไม่พบในดิกชันนารี', oneChange: 'ตรวจสอบคำสะกดเสร็จสิ้น: แก้ไข1คำ', progress: 'กำลังตรวจสอบคำสะกด...', title: 'Spell Checker', toolbar: 'ตรวจการสะกดคำ' }); rt-4.4.7/devel/third-party/wsc-src/lang/de.js0000644000201500020150000000210714101750613017423 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'de', { btnIgnore: 'Ignorieren', btnIgnoreAll: 'Alle Ignorieren', btnReplace: 'Ersetzen', btnReplaceAll: 'Alle Ersetzen', btnUndo: 'Rückgängig', changeTo: 'Ändern in', errorLoading: 'Fehler beim laden des Dienstanbieters: %s.', ieSpellDownload: 'Rechtschreibprüfung nicht installiert. Möchten Sie sie jetzt herunterladen?', manyChanges: 'Rechtschreibprüfung abgeschlossen - %1 Wörter geändert', noChanges: 'Rechtschreibprüfung abgeschlossen - keine Worte geändert', noMispell: 'Rechtschreibprüfung abgeschlossen - keine Fehler gefunden', noSuggestions: ' - keine Vorschläge - ', notAvailable: 'Entschuldigung, aber dieser Dienst steht im Moment nicht zur Verfügung.', notInDic: 'Nicht im Wörterbuch', oneChange: 'Rechtschreibprüfung abgeschlossen - ein Wort geändert', progress: 'Rechtschreibprüfung läuft...', title: 'Rechtschreibprüfung', toolbar: 'Rechtschreibprüfung' }); rt-4.4.7/devel/third-party/wsc-src/lang/en-ca.js0000644000201500020150000000164314101750613020022 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'en-ca', { btnIgnore: 'Ignore', btnIgnoreAll: 'Ignore All', btnReplace: 'Replace', btnReplaceAll: 'Replace All', btnUndo: 'Undo', changeTo: 'Change to', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'Spell checker not installed. Do you want to download it now?', manyChanges: 'Spell check complete: %1 words changed', noChanges: 'Spell check complete: No words changed', noMispell: 'Spell check complete: No misspellings found', noSuggestions: '- No suggestions -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: 'Not in dictionary', oneChange: 'Spell check complete: One word changed', progress: 'Spell check in progress...', title: 'Spell Checker', toolbar: 'Check Spelling' }); rt-4.4.7/devel/third-party/wsc-src/lang/vi.js0000644000201500020150000000232214101750613017450 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'vi', { btnIgnore: 'Bỏ qua', btnIgnoreAll: 'Bỏ qua tất cả', btnReplace: 'Thay thế', btnReplaceAll: 'Thay thế tất cả', btnUndo: 'Phục hồi lại', changeTo: 'Chuyển thành', errorLoading: 'Lỗi khi đang nạp dịch vụ ứng dụng: %s.', ieSpellDownload: 'Chức năng kiểm tra chính tả chưa được cài đặt. Bạn có muốn tải về ngay bây giờ?', manyChanges: 'Hoàn tất kiểm tra chính tả: %1 từ đã được thay đổi', noChanges: 'Hoàn tất kiểm tra chính tả: Không có từ nào được thay đổi', noMispell: 'Hoàn tất kiểm tra chính tả: Không có lỗi chính tả', noSuggestions: '- Không đưa ra gợi ý về từ -', notAvailable: 'Xin lỗi, dịch vụ này hiện tại không có.', notInDic: 'Không có trong từ điển', oneChange: 'Hoàn tất kiểm tra chính tả: Một từ đã được thay đổi', progress: 'Đang tiến hành kiểm tra chính tả...', title: 'Kiểm tra chính tả', toolbar: 'Kiểm tra chính tả' }); rt-4.4.7/devel/third-party/wsc-src/lang/cs.js0000644000201500020150000000201514101750613017436 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'cs', { btnIgnore: 'Přeskočit', btnIgnoreAll: 'Přeskakovat vše', btnReplace: 'Zaměnit', btnReplaceAll: 'Zaměňovat vše', btnUndo: 'Zpět', changeTo: 'Změnit na', errorLoading: 'Chyba nahrávání služby aplikace z: %s.', ieSpellDownload: 'Kontrola pravopisu není nainstalována. Chcete ji nyní stáhnout?', manyChanges: 'Kontrola pravopisu dokončena: %1 slov změněno', noChanges: 'Kontrola pravopisu dokončena: Beze změn', noMispell: 'Kontrola pravopisu dokončena: Žádné pravopisné chyby nenalezeny', noSuggestions: '- žádné návrhy -', notAvailable: 'Omlouváme se, ale služba nyní není dostupná.', notInDic: 'Není ve slovníku', oneChange: 'Kontrola pravopisu dokončena: Jedno slovo změněno', progress: 'Probíhá kontrola pravopisu...', title: 'Kontrola pravopisu', toolbar: 'Zkontrolovat pravopis' }); rt-4.4.7/devel/third-party/wsc-src/lang/tr.js0000644000201500020150000000201214101750613017453 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'tr', { btnIgnore: 'Yoksay', btnIgnoreAll: 'Tümünü Yoksay', btnReplace: 'Değiştir', btnReplaceAll: 'Tümünü Değiştir', btnUndo: 'Geri Al', changeTo: 'Şuna değiştir:', errorLoading: 'Uygulamada yüklerken hata oluştu: %s.', ieSpellDownload: 'Yazım denetimi yüklenmemiş. Şimdi yüklemek ister misiniz?', manyChanges: 'Yazım denetimi tamamlandı: %1 kelime değiştirildi', noChanges: 'Yazım denetimi tamamlandı: Hiçbir kelime değiştirilmedi', noMispell: 'Yazım denetimi tamamlandı: Yanlış yazıma rastlanmadı', noSuggestions: '- Öneri Yok -', notAvailable: 'Üzügünüz, bu servis şuanda hizmet dışıdır.', notInDic: 'Sözlükte Yok', oneChange: 'Yazım denetimi tamamlandı: Bir kelime değiştirildi', progress: 'Yazım denetimi işlemde...', title: 'Yazımı Denetle', toolbar: 'Yazım Denetimi' }); rt-4.4.7/devel/third-party/wsc-src/lang/ja.js0000644000201500020150000000224714101750613017432 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'ja', { btnIgnore: '無視', btnIgnoreAll: 'すべて無視', btnReplace: '置換', btnReplaceAll: 'すべて置換', btnUndo: 'やり直し', changeTo: '変更', errorLoading: 'アプリケーションサービスホスト読込みエラー: %s.', ieSpellDownload: 'スペルチェッカーがインストールされていません。今すぐダウンロードしますか?', manyChanges: 'スペルチェック完了: %1 語句変更されました', noChanges: 'スペルチェック完了: 語句は変更されませんでした', noMispell: 'スペルチェック完了: スペルの誤りはありませんでした', noSuggestions: '- 該当なし -', notAvailable: '申し訳ありません、現在サービスを利用することができません', notInDic: '辞書にありません', oneChange: 'スペルチェック完了: 1語句変更されました', progress: 'スペルチェック処理中...', title: 'スペルチェック', toolbar: 'スペルチェック' }); rt-4.4.7/devel/third-party/wsc-src/lang/sl.js0000644000201500020150000000174314101750613017456 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'sl', { btnIgnore: 'Prezri', btnIgnoreAll: 'Prezri vse', btnReplace: 'Zamenjaj', btnReplaceAll: 'Zamenjaj vse', btnUndo: 'Razveljavi', changeTo: 'Spremeni v', errorLoading: 'Napaka pri nalaganju storitve programa na naslovu %s.', ieSpellDownload: 'Črkovalnik ni nameščen. Ali ga želite prenesti sedaj?', manyChanges: 'Črkovanje je končano: Spremenjenih je bilo %1 besed', noChanges: 'Črkovanje je končano: Nobena beseda ni bila spremenjena', noMispell: 'Črkovanje je končano: Brez napak', noSuggestions: '- Ni predlogov -', notAvailable: 'Oprostite, storitev trenutno ni dosegljiva.', notInDic: 'Ni v slovarju', oneChange: 'Črkovanje je končano: Spremenjena je bila ena beseda', progress: 'Preverjanje črkovanja se izvaja...', title: 'Črkovalnik', toolbar: 'Preveri črkovanje' }); rt-4.4.7/devel/third-party/wsc-src/lang/lv.js0000644000201500020150000000211614101750613017454 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'lv', { btnIgnore: 'Ignorēt', btnIgnoreAll: 'Ignorēt visu', btnReplace: 'Aizvietot', btnReplaceAll: 'Aizvietot visu', btnUndo: 'Atcelt', changeTo: 'Nomainīt uz', errorLoading: 'Kļūda ielādējot aplikācijas servisa adresi: %s.', ieSpellDownload: 'Pareizrakstības pārbaudītājs nav pievienots. Vai vēlaties to lejupielādēt tagad?', manyChanges: 'Pareizrakstības pārbaude pabeigta: %1 vārdi tika mainīti', noChanges: 'Pareizrakstības pārbaude pabeigta: nekas netika labots', noMispell: 'Pareizrakstības pārbaude pabeigta: kļūdas netika atrastas', noSuggestions: '- Nav ieteikumu -', notAvailable: 'Atvainojiet, bet serviss šobrīd nav pieejams.', notInDic: 'Netika atrasts vārdnīcā', oneChange: 'Pareizrakstības pārbaude pabeigta: 1 vārds izmainīts', progress: 'Notiek pareizrakstības pārbaude...', title: 'Pārbaudīt gramatiku', toolbar: 'Pareizrakstības pārbaude' }); rt-4.4.7/devel/third-party/wsc-src/lang/en-au.js0000644000201500020150000000164314101750613020044 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'en-au', { btnIgnore: 'Ignore', btnIgnoreAll: 'Ignore All', btnReplace: 'Replace', btnReplaceAll: 'Replace All', btnUndo: 'Undo', changeTo: 'Change to', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'Spell checker not installed. Do you want to download it now?', manyChanges: 'Spell check complete: %1 words changed', noChanges: 'Spell check complete: No words changed', noMispell: 'Spell check complete: No misspellings found', noSuggestions: '- No suggestions -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: 'Not in dictionary', oneChange: 'Spell check complete: One word changed', progress: 'Spell check in progress...', title: 'Spell Checker', toolbar: 'Check Spelling' }); rt-4.4.7/devel/third-party/wsc-src/lang/en.js0000644000201500020150000000164014101750613017436 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'en', { btnIgnore: 'Ignore', btnIgnoreAll: 'Ignore All', btnReplace: 'Replace', btnReplaceAll: 'Replace All', btnUndo: 'Undo', changeTo: 'Change to', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'Spell checker not installed. Do you want to download it now?', manyChanges: 'Spell check complete: %1 words changed', noChanges: 'Spell check complete: No words changed', noMispell: 'Spell check complete: No misspellings found', noSuggestions: '- No suggestions -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: 'Not in dictionary', oneChange: 'Spell check complete: One word changed', progress: 'Spell check in progress...', title: 'Spell Checker', toolbar: 'Check Spelling' }); rt-4.4.7/devel/third-party/wsc-src/lang/no.js0000644000201500020150000000166614101750613017460 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'no', { btnIgnore: 'Ignorer', btnIgnoreAll: 'Ignorer alle', btnReplace: 'Erstatt', btnReplaceAll: 'Erstatt alle', btnUndo: 'Angre', changeTo: 'Endre til', errorLoading: 'Feil under lasting av applikasjonstjenestetjener: %s.', ieSpellDownload: 'Stavekontroll er ikke installert. Vil du laste den ned nå?', manyChanges: 'Stavekontroll fullført: %1 ord endret', noChanges: 'Stavekontroll fullført: ingen ord endret', noMispell: 'Stavekontroll fullført: ingen feilstavinger funnet', noSuggestions: '- Ingen forslag -', notAvailable: 'Beklager, tjenesten er utilgjenglig nå.', notInDic: 'Ikke i ordboken', oneChange: 'Stavekontroll fullført: Ett ord endret', progress: 'Stavekontroll pågår...', title: 'Stavekontroll', toolbar: 'Stavekontroll' }); rt-4.4.7/devel/third-party/wsc-src/lang/fr.js0000644000201500020150000000221014101750613017435 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'fr', { btnIgnore: 'Ignorer', btnIgnoreAll: 'Ignorer tout', btnReplace: 'Remplacer', btnReplaceAll: 'Remplacer tout', btnUndo: 'Annuler', changeTo: 'Modifier pour', errorLoading: 'Erreur du chargement du service depuis l\'hôte : %s.', ieSpellDownload: 'La vérification d\'orthographe n\'est pas installée. Voulez-vous la télécharger maintenant?', manyChanges: 'Vérification de l\'orthographe terminée : %1 mots corrigés.', noChanges: 'Vérification de l\'orthographe terminée : Aucun mot corrigé.', noMispell: 'Vérification de l\'orthographe terminée : aucune erreur trouvée.', noSuggestions: '- Aucune suggestion -', notAvailable: 'Désolé, le service est indisponible actuellement.', notInDic: 'N\'existe pas dans le dictionnaire.', oneChange: 'Vérification de l\'orthographe terminée : Un seul mot corrigé.', progress: 'Vérification de l\'orthographe en cours...', title: 'Vérifier l\'orthographe', toolbar: 'Vérifier l\'orthographe' }); rt-4.4.7/devel/third-party/wsc-src/lang/ug.js0000644000201500020150000000260114101750613017445 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'ug', { btnIgnore: 'پەرۋا قىلما', btnIgnoreAll: 'ھەممىگە پەرۋا قىلما', btnReplace: 'ئالماشتۇر', btnReplaceAll: 'ھەممىنى ئالماشتۇر', btnUndo: 'يېنىۋال', changeTo: 'ئۆزگەرت', errorLoading: 'لازىملىق مۇلازىمېتىرنى يۈكلىگەندە خاتالىق كۆرۈلدى: %s.', ieSpellDownload: 'ئىملا تەكشۈرۈش قىستۇرمىسى تېخى ئورنىتىلمىغان، ھازىرلا چۈشۈرەمسىز؟', manyChanges: 'ئىملا تەكشۈرۈش تامام: %1 سۆزنى ئۆزگەرتتى', noChanges: 'ئىملا تەكشۈرۈش تامام: ھېچقانداق سۆزنى ئۆزگەرتمىدى', noMispell: 'ئىملا تەكشۈرۈش تامام: ئىملا خاتالىقى بايقالمىدى', noSuggestions: '-تەكلىپ يوق-', notAvailable: 'كەچۈرۈڭ، مۇلازىمېتىرنى ۋاقتىنچە ئىشلەتكىلى بولمايدۇ', notInDic: 'لۇغەتتە يوق', oneChange: 'ئىملا تەكشۈرۈش تامام: بىر سۆزنى ئۆزگەرتتى', progress: 'ئىملا تەكشۈرۈۋاتىدۇ…', title: 'ئىملا تەكشۈر', toolbar: 'ئىملا تەكشۈر' }); rt-4.4.7/devel/third-party/wsc-src/lang/ar.js0000644000201500020150000000244414101750613017441 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'ar', { btnIgnore: 'تجاهل', btnIgnoreAll: 'تجاهل الكل', btnReplace: 'تغيير', btnReplaceAll: 'تغيير الكل', btnUndo: 'تراجع', changeTo: 'التغيير إلى', errorLoading: 'خطأ في تحميل تطبيق خدمة الاستضافة: %s.', ieSpellDownload: 'المدقق الإملائي (الإنجليزي) غير مثبّت. هل تود تحميله الآن؟', manyChanges: 'تم إكمال التدقيق الإملائي: تم تغيير %1 من كلمات', noChanges: 'تم التدقيق الإملائي: لم يتم تغيير أي كلمة', noMispell: 'تم التدقيق الإملائي: لم يتم العثور على أي أخطاء إملائية', noSuggestions: '- لا توجد إقتراحات -', notAvailable: 'عفواً، ولكن هذه الخدمة غير متاحة الان', notInDic: 'ليست في القاموس', oneChange: 'تم التدقيق الإملائي: تم تغيير كلمة واحدة فقط', progress: 'جاري التدقيق الاملائى', title: 'التدقيق الإملائي', toolbar: 'تدقيق إملائي' }); rt-4.4.7/devel/third-party/wsc-src/lang/sr.js0000644000201500020150000000247314101750613017465 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'sr', { btnIgnore: 'Игнориши', btnIgnoreAll: 'Игнориши све', btnReplace: 'Замени', btnReplaceAll: 'Замени све', btnUndo: 'Врати акцију', changeTo: 'Измени', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'Провера спеловања није инсталирана. Да ли желите да је скинете са Интернета?', manyChanges: 'Провера спеловања завршена: %1 реч(и) је измењено', noChanges: 'Провера спеловања завршена: Није измењена ниједна реч', noMispell: 'Провера спеловања завршена: грешке нису пронађене', noSuggestions: '- Без сугестија -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: 'Није у речнику', oneChange: 'Провера спеловања завршена: Измењена је једна реч', progress: 'Провера спеловања у току...', title: 'Spell Checker', toolbar: 'Провери спеловање' }); rt-4.4.7/devel/third-party/wsc-src/lang/eu.js0000644000201500020150000000202414101750613017442 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'eu', { btnIgnore: 'Ezikusi', btnIgnoreAll: 'Denak Ezikusi', btnReplace: 'Ordezkatu', btnReplaceAll: 'Denak Ordezkatu', btnUndo: 'Desegin', changeTo: 'Honekin ordezkatu', errorLoading: 'Errorea gertatu da aplikazioa zerbitzaritik kargatzean: %s.', ieSpellDownload: 'Zuzentzaile ortografikoa ez dago instalatuta. Deskargatu nahi duzu?', manyChanges: 'Zuzenketa ortografikoa bukatuta: %1 hitz aldatu dira', noChanges: 'Zuzenketa ortografikoa bukatuta: Ez da ezer aldatu', noMispell: 'Zuzenketa ortografikoa bukatuta: Akatsik ez', noSuggestions: '- Iradokizunik ez -', notAvailable: 'Barkatu baina momentu honetan zerbitzua ez dago erabilgarri.', notInDic: 'Ez dago hiztegian', oneChange: 'Zuzenketa ortografikoa bukatuta: Hitz bat aldatu da', progress: 'Zuzenketa ortografikoa martxan...', title: 'Ortografia zuzenketa', toolbar: 'Ortografia' }); rt-4.4.7/devel/third-party/wsc-src/lang/en-gb.js0000644000201500020150000000164314101750613020027 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'en-gb', { btnIgnore: 'Ignore', btnIgnoreAll: 'Ignore All', btnReplace: 'Replace', btnReplaceAll: 'Replace All', btnUndo: 'Undo', changeTo: 'Change to', errorLoading: 'Error loading application service host: %s.', ieSpellDownload: 'Spell checker not installed. Do you want to download it now?', manyChanges: 'Spell check complete: %1 words changed', noChanges: 'Spell check complete: No words changed', noMispell: 'Spell check complete: No misspellings found', noSuggestions: '- No suggestions -', notAvailable: 'Sorry, but service is unavailable now.', notInDic: 'Not in dictionary', oneChange: 'Spell check complete: One word changed', progress: 'Spell check in progress...', title: 'Spell Checker', toolbar: 'Check Spelling' }); rt-4.4.7/devel/third-party/wsc-src/lang/hu.js0000644000201500020150000000206114101750613017446 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.plugins.setLang( 'wsc', 'hu', { btnIgnore: 'Kihagyja', btnIgnoreAll: 'Mindet kihagyja', btnReplace: 'Csere', btnReplaceAll: 'Összes cseréje', btnUndo: 'Visszavonás', changeTo: 'Módosítás', errorLoading: 'Hiba a szolgáltatás host betöltése közben: %s.', ieSpellDownload: 'A helyesírás-ellenőrző nincs telepítve. Szeretné letölteni most?', manyChanges: 'Helyesírás-ellenőrzés kész: %1 szó cserélve', noChanges: 'Helyesírás-ellenőrzés kész: Nincs változtatott szó', noMispell: 'Helyesírás-ellenőrzés kész: Nem találtam hibát', noSuggestions: 'Nincs javaslat', notAvailable: 'Sajnálom, de a szolgáltatás jelenleg nem elérhető.', notInDic: 'Nincs a szótárban', oneChange: 'Helyesírás-ellenőrzés kész: Egy szó cserélve', progress: 'Helyesírás-ellenőrzés folyamatban...', title: 'Helyesírás ellenörző', toolbar: 'Helyesírás-ellenőrzés' }); rt-4.4.7/devel/third-party/wsc-src/dialogs/0000755000201500020150000000000014101750613017176 5ustar puckpuckrt-4.4.7/devel/third-party/wsc-src/dialogs/wsc_ie.js0000644000201500020150000001267014101750613021013 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.dialog.add( 'checkspell', function( editor ) { var number = CKEDITOR.tools.getNextNumber(), iframeId = 'cke_frame_' + number, textareaId = 'cke_data_' + number, errorBoxId = 'cke_error_' + number, interval, protocol = document.location.protocol || 'http:', errorMsg = editor.lang.wsc.notAvailable; var pasteArea = '
        ' + ''; var wscCoreUrl = editor.config.wsc_customLoaderScript || ( protocol + '//loader.webspellchecker.net/sproxy_fck/sproxy.php' + '?plugin=fck2' + '&customerid=' + editor.config.wsc_customerId + '&cmd=script&doc=wsc&schema=22' ); if ( editor.config.wsc_customLoaderScript ) { errorMsg += '

        ' + editor.lang.wsc.errorLoading.replace( /%s/g, editor.config.wsc_customLoaderScript ) + '

        '; } function burnSpelling( dialog, errorMsg ) { var i = 0; return function() { if ( typeof( window.doSpell ) == 'function' ) { //Call from window.setInteval expected at once. if ( typeof( interval ) != 'undefined' ) window.clearInterval( interval ); initAndSpell( dialog ); } else if ( i++ == 180 ) // Timeout: 180 * 250ms = 45s. window._cancelOnError( errorMsg ); }; } window._cancelOnError = function( m ) { if ( typeof( window.WSC_Error ) == 'undefined' ) { CKEDITOR.document.getById( iframeId ).setStyle( 'display', 'none' ); var errorBox = CKEDITOR.document.getById( errorBoxId ); errorBox.setStyle( 'display', 'block' ); errorBox.setHtml( m || editor.lang.wsc.notAvailable ); } }; function initAndSpell( dialog ) { var LangComparer = new window._SP_FCK_LangCompare(), // Language abbr standarts comparer. pluginPath = CKEDITOR.getUrl( editor.plugins.wsc.path + 'dialogs/' ), // Service paths corecting/preparing. framesetPath = pluginPath + 'tmpFrameset.html'; // global var is used in FCK specific core // change on equal var used in fckplugin.js window.gFCKPluginName = 'wsc'; LangComparer.setDefaulLangCode( editor.config.defaultLanguage ); window.doSpell({ ctrl: textareaId, lang: editor.config.wsc_lang || LangComparer.getSPLangCode( editor.langCode ), intLang: editor.config.wsc_uiLang || LangComparer.getSPLangCode( editor.langCode ), winType: iframeId, // If not defined app will run on winpopup. // Callback binding section. onCancel: function() { dialog.hide(); }, onFinish: function( dT ) { editor.focus(); dialog.getParentEditor().setData( dT.value ); dialog.hide(); }, // Some manipulations with client static pages. staticFrame: framesetPath, framesetPath: framesetPath, iframePath: pluginPath + 'ciframe.html', // Styles defining. schemaURI: pluginPath + 'wsc.css', userDictionaryName: editor.config.wsc_userDictionaryName, customDictionaryName: editor.config.wsc_customDictionaryIds && editor.config.wsc_customDictionaryIds.split( "," ), domainName: editor.config.wsc_domainName }); // Hide user message console (if application was loaded more then after timeout). CKEDITOR.document.getById( errorBoxId ).setStyle( 'display', 'none' ); CKEDITOR.document.getById( iframeId ).setStyle( 'display', 'block' ); } return { title: editor.config.wsc_dialogTitle || editor.lang.wsc.title, minWidth: 485, minHeight: 380, buttons: [ CKEDITOR.dialog.cancelButton ], onShow: function() { var contentArea = this.getContentElement( 'general', 'content' ).getElement(); contentArea.setHtml( pasteArea ); contentArea.getChild( 2 ).setStyle( 'height', this._.contentSize.height + 'px' ); if ( typeof( window.doSpell ) != 'function' ) { // Load script. CKEDITOR.document.getHead().append( CKEDITOR.document.createElement( 'script', { attributes: { type: 'text/javascript', src: wscCoreUrl } })); } var sData = editor.getData(); // Get the data to be checked. CKEDITOR.document.getById( textareaId ).setValue( sData ); interval = window.setInterval( burnSpelling( this, errorMsg ), 250 ); }, onHide: function() { window.ooo = undefined; window.int_framsetLoaded = undefined; window.framesetLoaded = undefined; window.is_window_opened = false; }, contents: [ { id: 'general', label: editor.config.wsc_dialogTitle || editor.lang.wsc.title, padding: 0, elements: [ { type: 'html', id: 'content', html: '' } ] } ] }; }); // Expand the spell-check frame when dialog resized. (#6829) CKEDITOR.dialog.on( 'resize', function( evt ) { var data = evt.data, dialog = data.dialog; if ( dialog._.name == 'checkspell' ) { var content = dialog.getContentElement( 'general', 'content' ).getElement(), iframe = content && content.getChild( 2 ); iframe && iframe.setSize( 'height', data.height ); iframe && iframe.setSize( 'width', data.width ); } }); rt-4.4.7/devel/third-party/wsc-src/dialogs/wsc.js0000644000201500020150000025405414101750613020342 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.html or http://ckeditor.com/license */ (function() { // Create support tools var appTools = (function(){ var inited = {}; var _init = function(handler) { if (window.addEventListener) { window.addEventListener('message', handler, false); } else { window.attachEvent("onmessage", handler); } }; var unbindHandler = function(handler) { if (window.removeEventListener) { window.removeEventListener('message', handler, false); } else { window.detachEvent('onmessage', handler); } }; var _sendCmd = function(o) { var str, type = Object.prototype.toString, objObject = "[object Object]", fn = o.fn || null, id = o.id || '', target = o.target || window, message = o.message || { 'id': id }; if (o.message && type.call(o.message) == objObject) { (o.message.id) ? o.message.id : o.message.id = id; message = o.message; } str = window.JSON.stringify(message, fn); target.postMessage(str, '*'); }; var _hashCreate = function(o, fn) { fn = fn || null; var str = window.JSON.stringify(o, fn); return str; }; var _hashParse = function(str, fn) { fn = fn || null; return window.JSON.parse(str, fn); }; var setCookie = function(name, value, options) { options = options || {}; var expires = options.expires; if (typeof expires == "number" && expires) { var d = new Date(); d.setTime(d.getTime() + expires*1000); expires = options.expires = d; } if (expires && expires.toUTCString) { options.expires = expires.toUTCString(); } value = encodeURIComponent(value); var updatedCookie = name + "=" + value; for(var propName in options) { var propValue = options[propName]; updatedCookie += "; " + propName; if (propValue !== true) { updatedCookie += "=" + propValue; } } document.cookie = updatedCookie; }; var getCookie = function(name) { var matches = document.cookie.match(new RegExp( "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : undefined; }; var deleteCookie = function(name) { setCookie(name, "", { expires: -1 }); }; var findFocusable = function(ckEl) { var result = null, focusableSelectors = 'a[href], area[href], input, select, textarea, button, *[tabindex], *[contenteditable]'; if(ckEl) { result = ckEl.find(focusableSelectors); } return result; }; var getStyle = function(el, prop) { if(document.defaultView && document.defaultView.getComputedStyle) { return document.defaultView.getComputedStyle(el, null)[prop]; } else if(el.currentStyle) { return el.currentStyle[prop]; } else { return el.style[prop]; } }; var isHidden = function(el) { return el.offsetWidth === 0 || el.offsetHeight == 0 || getStyle(el, 'display') === 'none'; }; var isVisible = function(el) { return !isHidden(el); }; var hasClass = function (obj, cname) { return !!(obj.className ? obj.className.match(new RegExp('(\\s|^)'+cname+'(\\s|$)')) : false); }; return { postMessage: { init: _init, send: _sendCmd, unbindHandler: unbindHandler }, hash: { create: function() { }, parse: function() { } }, cookie: { set: setCookie, get: getCookie, remove: deleteCookie }, misc: { findFocusable: findFocusable, isVisible: isVisible, hasClass: hasClass } }; })(); var NS = NS || {}; NS.TextAreaNumber = null; NS.load = true; NS.cmd = { "SpellTab": 'spell', "Thesaurus": 'thes', "GrammTab": 'grammar' }; NS.dialog = null; NS.optionNode = null; NS.selectNode = null; NS.grammerSuggest = null; NS.textNode = {}; NS.iframeMain = null; NS.dataTemp = ''; NS.div_overlay = null; NS.textNodeInfo = {}; NS.selectNode = {}; NS.selectNodeResponce = {}; NS.langList = null; NS.langSelectbox = null; NS.banner = ''; NS.show_grammar = null; NS.div_overlay_no_check = null; NS.targetFromFrame = {}; NS.onLoadOverlay = null; NS.LocalizationComing = {}; NS.OverlayPlace = null; NS.sessionid = ''; NS.LocalizationButton = { 'ChangeTo_button': { 'instance' : null, 'text' : 'Change to', 'localizationID': 'ChangeTo' }, 'ChangeAll': { 'instance' : null, 'text' : 'Change All' }, 'IgnoreWord': { 'instance' : null, 'text' : 'Ignore word' }, 'IgnoreAllWords': { 'instance' : null, 'text' : 'Ignore all words' }, 'Options': { 'instance' : null, 'text' : 'Options', 'optionsDialog': { 'instance' : null } }, 'AddWord': { 'instance' : null, 'text' : 'Add word' }, 'FinishChecking_button': { 'instance' : null, 'text' : 'Finish Checking', 'localizationID': 'FinishChecking' }, 'Option_button': { 'instance' : null, 'text' : 'Options', 'localizationID': 'Options' }, 'FinishChecking_button_block': { 'instance' : null, 'text' : 'Finish Checking', 'localizationID': 'FinishChecking' } }; NS.LocalizationLabel = { 'ChangeTo_label': { 'instance' : null, 'text' : 'Change to', 'localizationID': 'ChangeTo' }, 'Suggestions': { 'instance' : null, 'text' : 'Suggestions' }, 'Categories': { 'instance' : null, 'text' : 'Categories' }, 'Synonyms': { 'instance' : null, 'text' : 'Synonyms' } }; var SetLocalizationButton = function(obj) { var el, localizationID; for(var i in obj) { el = NS.dialog.getContentElement(NS.dialog._.currentTabId, i); if(el) { el = el.getElement(); } else if(obj[i].instance){ el = obj[i].instance.getElement().getFirst() || obj[i].instance.getElement(); } else{ continue; } localizationID = obj[i].localizationID || i; el.setText(NS.LocalizationComing[localizationID]); } }; var SetLocalizationLabel = function(obj) { var el, localizationID; for(var i in obj) { el = NS.dialog.getContentElement(NS.dialog._.currentTabId, i); if(!el) { el = obj[i].instance; } if(el.setLabel) { localizationID = obj[i].localizationID || i; el.setLabel(NS.LocalizationComing[localizationID] + ':'); } } }; var OptionsConfirm = function(state) { if (state) { nameNode.setValue(''); } }; var iframeOnload = false; var nameNode, selectNode, frameId; NS.framesetHtml = function(tab) { var str = ''; return str; }; NS.setIframe = function(that, nameTab) { var iframe, str = NS.framesetHtml(nameTab), iframeId = NS.iframeNumber + '_' + nameTab, // tmp.html from wsc/dialogs iframeInnerHtml = '' + '' + '' + '' + 'iframe' + '' + '' + '' + '
        ' + '' + '' + '' + '' + '' + '' + ''; that.getElement().setHtml(str); iframe = document.getElementById(iframeId); iframe = (iframe.contentWindow) ? iframe.contentWindow : (iframe.contentDocument.document) ? iframe.contentDocument.document : iframe.contentDocument; iframe.document.open(); iframe.document.write(iframeInnerHtml); iframe.document.close(); NS.div_overlay.setEnable(); iframeOnload = true; }; NS.setCurrentIframe = function(currentTab) { var that = NS.dialog._.contents[currentTab].Content, tabID, iframe; NS.setIframe(that, currentTab); }; NS.setHeightBannerFrame = function() { var height = "90px", bannerPlaceSpellTab = NS.dialog.getContentElement('SpellTab', 'banner').getElement(), bannerPlaceGrammTab = NS.dialog.getContentElement('GrammTab', 'banner').getElement(), bannerPlaceThesaurus = NS.dialog.getContentElement('Thesaurus', 'banner').getElement(); bannerPlaceSpellTab.setStyle('height', height); bannerPlaceGrammTab.setStyle('height', height); bannerPlaceThesaurus.setStyle('height', height); }; NS.setHeightFrame = function() { var currentTab = NS.dialog._.currentTabId, tabID = NS.iframeNumber + '_' + currentTab, iframe = document.getElementById(tabID); iframe.style.height = '240px'; }; NS.sendData = function(scope) { var currentTab = scope._.currentTabId, that = scope._.contents[currentTab].Content, tabID, iframe; NS.previousTab = currentTab; NS.setIframe(that, currentTab); var loadNewTab = function(event) { currentTab = scope._.currentTabId; event = event || window.event; if (!event.data.getTarget().is('a')) { return; } if(currentTab === NS.previousTab) return; NS.previousTab = currentTab; that = scope._.contents[currentTab].Content; tabID = NS.iframeNumber + '_' + currentTab; NS.div_overlay.setEnable(); if (!that.getElement().getChildCount()) { NS.setIframe(that, currentTab); iframe = document.getElementById(tabID); NS.targetFromFrame[tabID] = iframe.contentWindow; } else { sendData(NS.targetFromFrame[tabID], NS.cmd[currentTab]); } }; scope.parts.tabs.removeListener('click', loadNewTab); scope.parts.tabs.on('click', loadNewTab); }; NS.buildSelectLang = function(aId) { var divContainer = new CKEDITOR.dom.element('div'), selectContainer = new CKEDITOR.dom.element('select'), id = "wscLang" + aId; divContainer.addClass("cke_dialog_ui_input_select"); divContainer.setAttribute("role", "presentation"); divContainer.setStyles({ 'height': 'auto', 'position': 'absolute', 'right': '0', 'top': '-1px', 'width': '160px', 'white-space': 'normal' }); selectContainer.setAttribute('id', id); selectContainer.addClass("cke_dialog_ui_input_select"); selectContainer.setStyles({ 'width': '160px' }); var currentTabId = NS.dialog._.currentTabId, frameId = NS.iframeNumber + '_' + currentTabId; divContainer.append(selectContainer); return divContainer; }; NS.buildOptionLang = function(key, aId) { var id = "wscLang" + aId; var select = document.getElementById(id), fragment = document.createDocumentFragment(), create_option, txt_option, sort = []; if(select.options.length === 0) { for (var lang in key) { sort.push([lang, key[lang]]); } sort.sort(); for (var i = 0; i < sort.length; i++) { create_option=document.createElement("option"); create_option.setAttribute("value", sort[i][1]); txt_option = document.createTextNode(sort[i][0]); create_option.appendChild(txt_option); fragment.appendChild(create_option); } select.appendChild(fragment); } // make appropriate option selected according to current selected language for (var j = 0; j < select.options.length; j++) { if (select.options[j].value == NS.selectingLang) { select.options[j].selected = "selected"; } } }; NS.buildOptionSynonyms = function(key) { var syn = NS.selectNodeResponce[key]; var select = getSelect( NS.selectNode['Synonyms'] ); NS.selectNode['Synonyms'].clear(); for (var i = 0; i < syn.length; i++) { var option = document.createElement('option'); option.text = syn[i]; option.value = syn[i]; select.$.add(option, i); } NS.selectNode['Synonyms'].getInputElement().$.firstChild.selected = true; NS.textNode['Thesaurus'].setValue(NS.selectNode['Synonyms'].getInputElement().getValue()); }; var setBannerInPlace = function(htmlBanner) { var findBannerPlace = NS.dialog.getContentElement(NS.dialog._.currentTabId, 'banner').getElement(); findBannerPlace.setHtml(htmlBanner); }; var overlayBlock = function overlayBlock(opt) { var progress = opt.progress || "", doc = document, target = opt.target || doc.body, overlayId = opt.id || "overlayBlock", opacity = opt.opacity || "0.9", background = opt.background || "#f1f1f1", getOverlay = doc.getElementById(overlayId), thisOverlay = getOverlay || doc.createElement("div"); thisOverlay.style.cssText = "position: absolute;" + "top:30px;" + "bottom:41px;" + "left:1px;" + "right:1px;" + "z-index: 10020;" + "padding:0;" + "margin:0;" + "background:" + background + ";" + "opacity: " + opacity + ";" + "filter: alpha(opacity=" + opacity * 100 + ");" + "display: none;"; thisOverlay.id = overlayId; if (!getOverlay) { target.appendChild(thisOverlay); } return { setDisable: function() { thisOverlay.style.display = "none"; }, setEnable: function() { thisOverlay.style.display = "block"; } }; }; var buildRadioInputs = function(key, value, check) { var divContainer = new CKEDITOR.dom.element('div'), radioButton = new CKEDITOR.dom.element('input'), radioLabel = new CKEDITOR.dom.element('label'), id = "wscGrammerSuggest" + key + "_" + value; divContainer.addClass("cke_dialog_ui_input_radio"); divContainer.setAttribute("role", "presentation"); divContainer.setStyles({ width: "97%", padding: "5px", 'white-space': 'normal' }); radioButton.setAttributes({ type: "radio", value: value, name: 'wscGrammerSuggest', id: id }); radioButton.setStyles({ "float":"left" }); radioButton.on("click", function(data) { NS.textNode['GrammTab'].setValue(data.sender.getValue()); }); (check) ? radioButton.setAttribute("checked", true) : false; radioButton.addClass("cke_dialog_ui_radio_input"); radioLabel.appendText(key); radioLabel.setAttribute("for", id); radioLabel.setStyles({ 'display': "block", 'line-height': '16px', 'margin-left': '18px', 'white-space': 'normal' }); divContainer.append(radioButton); divContainer.append(radioLabel); return divContainer; }; var statusGrammarTab = function(aState) { //#19221 aState = aState || 'true'; if(aState !== null && aState == 'false'){ hideGrammTab(); } }; var langConstructor = function(lang) { var langSelectBox = new __constructLangSelectbox(lang), selectId = "wscLang" + NS.dialog.getParentEditor().name, selectContainer = document.getElementById(selectId), currentTabId = NS.dialog._.currentTabId, langGroup, frameId = NS.iframeNumber + '_' + currentTabId; NS.buildOptionLang(langSelectBox.setLangList, NS.dialog.getParentEditor().name); langGroup = langSelectBox.getCurrentLangGroup(NS.selectingLang); if(langGroup) { tabView[langGroup].onShow(); } statusGrammarTab(NS.show_grammar); selectContainer.onchange = function(e) { var langGroup = langSelectBox.getCurrentLangGroup(this.value), currentTabId = NS.dialog._.currentTabId, cmd; e = e || window.event; tabView[langGroup].onShow(); statusGrammarTab(NS.show_grammar); NS.div_overlay.setEnable(); NS.selectingLang = this.value; // get command for current opened tan cmd = NS.cmd[currentTabId]; // check whether current tab can be opened after language switching if(!langGroup || !tabView[langGroup] || !tabView[langGroup].allowedTabCommands[cmd]) { // if not so - set default tab to open after reload cmd = tabView[langGroup].defaultTabCommand; } for(var key in NS.cmd) { if(NS.cmd[key] == cmd) { NS.previousTab = key; break; } } appTools.postMessage.send({ 'message': { 'changeLang': NS.selectingLang, 'interfaceLang' : NS.interfaceLang, 'text': NS.dataTemp, 'cmd': cmd }, 'target': NS.targetFromFrame[frameId], 'id': 'selectionLang_outer__page' }); }; }; var disableButtonSuggest = function(word) { var changeToButton, changeAllButton, styleDisable = function(instanceButton) { var button = NS.dialog.getContentElement(NS.dialog._.currentTabId, instanceButton) || NS.LocalizationButton[instanceButton].instance; button.getElement().hasClass('cke_disabled') ? button.getElement().setStyle('color', '#a0a0a0') : button.disable(); }, styleEnable = function(instanceButton) { var button = NS.dialog.getContentElement(NS.dialog._.currentTabId, instanceButton) || NS.LocalizationButton[instanceButton].instance; button.enable(); button.getElement().setStyle('color', '#333'); }; if (word == 'no_any_suggestions') { word = 'No suggestions'; changeToButton = NS.dialog.getContentElement(NS.dialog._.currentTabId, 'ChangeTo_button') || NS.LocalizationButton['ChangeTo_button'].instance; changeToButton.disable(); changeAllButton = NS.dialog.getContentElement(NS.dialog._.currentTabId, 'ChangeAll') || NS.LocalizationButton['ChangeAll'].instance; changeAllButton.disable(); styleDisable('ChangeTo_button'); styleDisable('ChangeAll'); return word; } else { styleEnable('ChangeTo_button'); styleEnable('ChangeAll'); return word; } }; function getSelect( obj ) { if ( obj && obj.domId && obj.getInputElement().$ ) return obj.getInputElement(); else if ( obj && obj.$ ) return obj; return false; } var handlerId = { iframeOnload: function(response) { var currentTab = NS.dialog._.currentTabId, tabId = NS.iframeNumber + '_' + currentTab; sendData(NS.targetFromFrame[tabId], NS.cmd[currentTab]); }, suggestlist: function(response) { delete response.id; NS.div_overlay_no_check.setDisable(); hideCurrentFinishChecking(); langConstructor(NS.langList); var word = disableButtonSuggest(response.word), suggestionsList = ''; if (word instanceof Array) { word = response.word[0]; } word = word.split(','); suggestionsList = word; NS.textNode['SpellTab'].setValue(suggestionsList[0]); var select = getSelect( selectNode ); selectNode.clear(); for (var i = 0; i < suggestionsList.length; i++) { var option = document.createElement('option'); option.text = suggestionsList[i]; option.value = suggestionsList[i]; select.$.add(option, i); } showCurrentTabs(); NS.div_overlay.setDisable(); }, grammerSuggest: function(response) { delete response.id; delete response.mocklangs; hideCurrentFinishChecking(); langConstructor(NS.langList); // Show select language for this command CKEDITOR.config.wsc_cmd var firstSuggestValue = response.grammSuggest[0];// ? firstSuggestValue = response.grammSuggest[0] : firstSuggestValue = 'No suggestion for this words'; NS.grammerSuggest.getElement().setHtml(''); NS.textNode['GrammTab'].reset(); NS.textNode['GrammTab'].setValue(firstSuggestValue); NS.textNodeInfo['GrammTab'].getElement().setHtml(''); NS.textNodeInfo['GrammTab'].getElement().setText(response.info); var arr = response.grammSuggest, len = arr.length, check = true; for (var i = 0; i < len; i++) { NS.grammerSuggest.getElement().append(buildRadioInputs(arr[i], arr[i], check)); check = false; } showCurrentTabs(); NS.div_overlay.setDisable(); }, thesaurusSuggest: function(response) { delete response.id; delete response.mocklangs; hideCurrentFinishChecking(); langConstructor(NS.langList); // Show select language for this command CKEDITOR.config.wsc_cmd NS.selectNodeResponce = response; NS.textNode['Thesaurus'].reset(); var select = getSelect( NS.selectNode['Categories'] ), count = 0; NS.selectNode['Categories'].clear(); for (var i in response) { var option = document.createElement('option'); option.text = i; option.value = i; select.$.add(option, count); count++ } var synKey = NS.selectNode['Categories'].getInputElement().getChildren().$[0].value; NS.selectNode['Categories'].getInputElement().getChildren().$[0].selected = true; NS.buildOptionSynonyms(synKey); showCurrentTabs(); NS.div_overlay.setDisable(); count = 0; }, finish: function(response) { delete response.id; hideCurrentTabs(); showCurrentFinishChecking(); NS.div_overlay.setDisable(); }, settext: function(response) { delete response.id; function setData() { try { editor.focus(); } catch(e) {} editor.setData(response.text, function(){ NS.dataTemp = ''; editor.unlockSelection(); editor.fire('saveSnapshot'); NS.dialog.hide(); }); } var command = NS.dialog.getParentEditor().getCommand( 'checkspell' ), editor = NS.dialog.getParentEditor(), scaytPlugin = CKEDITOR.plugins.scayt, scaytInstance = editor.scayt; //scayt on wsc UserDictionary and UserDictionaryName synchronization if (scaytPlugin && editor.wsc) { var wscUDN = editor.wsc.udn, wscUD = editor.wsc.ud, wscUDarray, i; if (scaytInstance) { // if SCAYT active function udActionCallback() { if (wscUD) { wscUDarray = wscUD.split(','); for (i = 0; i < wscUDarray.length; i += 1) { scaytInstance.addWordToUserDictionary(wscUDarray[i]); } }else { editor.wsc.DataStorage.setData('scayt_user_dictionary', []); } setData(); } if(scaytPlugin.state.scayt[editor.name]) { scaytInstance.setMarkupPaused(false); } if (!wscUDN) { editor.wsc.DataStorage.setData('scayt_user_dictionary_name', ''); scaytInstance.removeUserDictionary(undefined, udActionCallback, udActionCallback); } else { editor.wsc.DataStorage.setData('scayt_user_dictionary_name', wscUDN); scaytInstance.restoreUserDictionary(wscUDN, udActionCallback, udActionCallback); } } else { //if SCAYT not active if (!wscUDN) { editor.wsc.DataStorage.setData('scayt_user_dictionary_name', ''); } else { editor.wsc.DataStorage.setData('scayt_user_dictionary_name', wscUDN); } if (wscUD) { wscUDarray = wscUD.split(','); editor.wsc.DataStorage.setData('scayt_user_dictionary', wscUDarray); } setData(); } } else { setData(); } }, ReplaceText: function(response) { delete response.id; NS.div_overlay.setEnable(); NS.dataTemp = response.text; NS.selectingLang = response.currentLang; if (response.cmd = 'spell' && response.len !== '0' && response.len) { NS.div_overlay.setDisable(); } else { window.setTimeout(function() { try { NS.div_overlay.setDisable(); } catch(e) {} }, 500); } SetLocalizationButton(NS.LocalizationButton); SetLocalizationLabel(NS.LocalizationLabel); }, options_checkbox_send: function(response) { delete response.id; var obj = { 'osp': appTools.cookie.get('osp'), 'udn': appTools.cookie.get('udn'), 'cust_dic_ids': NS.cust_dic_ids }; var currentTabId = NS.dialog._.currentTabId, frameId = NS.iframeNumber + '_' + currentTabId; appTools.postMessage.send({ 'message': obj, 'target': NS.targetFromFrame[frameId], 'id': 'options_outer__page' }); }, getOptions: function(response) { var udn = response.DefOptions.udn; NS.LocalizationComing = response.DefOptions.localizationButtonsAndText; NS.show_grammar = response.show_grammar; NS.langList = response.lang; NS.bnr = response.bannerId; NS.sessionid = response.sessionid; if (response.bannerId) { NS.setHeightBannerFrame(); setBannerInPlace(response.banner); } else { NS.setHeightFrame(); } if (udn == 'undefined') { if (NS.userDictionaryName) { udn = NS.userDictionaryName; var obj = { 'osp': appTools.cookie.get('osp'), 'udn': NS.userDictionaryName, 'cust_dic_ids': NS.cust_dic_ids, 'id': 'options_dic_send', 'udnCmd': 'create' }; appTools.postMessage.send({ 'message': obj, 'target': NS.targetFromFrame[frameId] }); } else{ udn = ''; } } appTools.cookie.set('osp', response.DefOptions.osp); appTools.cookie.set('udn', udn); appTools.cookie.set('cust_dic_ids', response.DefOptions.cust_dic_ids); appTools.postMessage.send({ 'id': 'giveOptions' }); }, options_dic_send: function(response) { var obj = { 'osp': appTools.cookie.get('osp'), 'udn': appTools.cookie.get('udn'), 'cust_dic_ids': NS.cust_dic_ids, 'id': 'options_dic_send', 'udnCmd': appTools.cookie.get('udnCmd') }; var currentTabId = NS.dialog._.currentTabId, frameId = NS.iframeNumber + '_' + currentTabId; appTools.postMessage.send({ 'message': obj, 'target': NS.targetFromFrame[frameId] }); }, data: function(response) { delete response.id; }, giveOptions: function() { }, setOptionsConfirmF:function() { OptionsConfirm(false); }, setOptionsConfirmT:function() { OptionsConfirm(true); }, clickBusy: function() { NS.div_overlay.setEnable(); }, suggestAllCame: function() { NS.div_overlay.setDisable(); NS.div_overlay_no_check.setDisable(); }, TextCorrect: function() { langConstructor(NS.langList); } }; var handlerIncomingData = function(event) { event = event || window.event; var response; try { response = window.JSON.parse(event.data); } catch (e) {} if(response && response.id) { handlerId[response.id](response); } }; var handlerButtonOptions = function(event) { event = event || window.event; var currentTabId = NS.dialog._.currentTabId, frameId = NS.iframeNumber + '_' + currentTabId; appTools.postMessage.send({ 'message': { 'cmd': 'Options' }, 'target': NS.targetFromFrame[frameId], 'id': 'cmd' }); }; var sendData = function(frameTarget, cmd, sendText, reset_suggest) { cmd = cmd || CKEDITOR.config.wsc_cmd; reset_suggest = reset_suggest || false; sendText = sendText || NS.dataTemp; appTools.postMessage.send({ 'message': { 'customerId': NS.wsc_customerId, 'text': sendText, 'txt_ctrl': NS.TextAreaNumber, 'cmd': cmd, 'cust_dic_ids': NS.cust_dic_ids, 'udn': NS.userDictionaryName, 'slang': NS.selectingLang, 'interfaceLang' : NS.interfaceLang, 'reset_suggest': reset_suggest, 'sessionid': NS.sessionid }, 'target': frameTarget, 'id': 'data_outer__page' }); NS.div_overlay.setEnable(); }; var tabView = { "superset": { onShow: function() { showThesaurusTab(); showGrammTab(); showSpellTab(); }, allowedTabCommands: { "spell": true, "grammar": true, "thes": true }, defaultTabCommand: "spell" }, "usual": { onShow: function() { hideThesaurusTab(); hideGrammTab(); showSpellTab(); }, allowedTabCommands: { "spell": true }, defaultTabCommand: "spell" }, "rtl": { onShow: function() { hideThesaurusTab(); hideGrammTab(); showSpellTab(); }, allowedTabCommands: { "spell": true }, defaultTabCommand: "spell" }, "spellgrammar": { onShow: function() { hideThesaurusTab(); showGrammTab(); showSpellTab(); }, allowedTabCommands: { "spell": true, "grammar": true }, defaultTabCommand: "spell" }, "spellthes": { onShow: function() { showThesaurusTab(); hideGrammTab(); showSpellTab(); }, allowedTabCommands: { "spell": true, "thes": true }, defaultTabCommand: "spell" } }; var showFirstTab = function(scope) { var cmdManger = function(cmdView) { var obj = {}; var _getCmd = function(cmd) { for (var tabId in cmdView) { obj[cmdView[tabId]] = tabId; } return obj[cmd]; }; return { getCmdByTab: _getCmd }; }; var cmdM = new cmdManger(NS.cmd), tabToOpen = cmdM.getCmdByTab(CKEDITOR.config.wsc_cmd); showCurrentTabs(); scope.selectPage(tabToOpen); NS.sendData(scope); }; var showThesaurusTab = function() { NS.dialog.showPage('Thesaurus'); }; var hideThesaurusTab = function() { NS.dialog.hidePage('Thesaurus'); }; var showGrammTab = function() { NS.dialog.showPage('GrammTab'); }; var hideGrammTab = function() { NS.dialog.hidePage('GrammTab'); }; var showSpellTab = function() { NS.dialog.showPage('SpellTab'); }; var hideSpellTab = function() { NS.dialog.hidePage('SpellTab'); }; var showCurrentTabs = function() { var target = NS.dialog.getContentElement(NS.dialog._.currentTabId, 'bottomGroup').getElement(); target.removeStyle('display'); target.removeStyle('position'); target.removeStyle('left'); target.show(); }; var hideCurrentTabs = function() { var target = NS.dialog.getContentElement(NS.dialog._.currentTabId, 'bottomGroup').getElement(), activeElement = document.activeElement, focusableElements; target.setStyles({ display: 'block', position: 'absolute', left: '-9999px' }); setTimeout(function() { target.removeStyle('display'); target.removeStyle('position'); target.removeStyle('left'); target.hide(); NS.dialog._.editor.focusManager.currentActive.focusNext(); focusableElements = appTools.misc.findFocusable(NS.dialog.parts.contents); if(!appTools.misc.hasClass(activeElement, 'cke_dialog_tab') && !appTools.misc.hasClass(activeElement, 'cke_dialog_contents_body') && appTools.misc.isVisible(activeElement)) { try { activeElement.focus(); } catch(e) {} } else { for(var i = 0, tmpCkEl; i < focusableElements.count(); i++) { tmpCkEl = focusableElements.getItem(i); if(appTools.misc.isVisible(tmpCkEl.$)) { try { tmpCkEl.$.focus(); } catch(e) {} break; } } } }, 0); }; var showCurrentFinishChecking = function() { var target = NS.dialog.getContentElement(NS.dialog._.currentTabId, 'BlockFinishChecking').getElement(); target.removeStyle('display'); target.removeStyle('position'); target.removeStyle('left'); target.show(); }; var hideCurrentFinishChecking = function() { var target = NS.dialog.getContentElement(NS.dialog._.currentTabId, 'BlockFinishChecking').getElement(), activeElement = document.activeElement, focusableElements; target.setStyles({ display: 'block', position: 'absolute', left: '-9999px' }); setTimeout(function() { target.removeStyle('display'); target.removeStyle('position'); target.removeStyle('left'); target.hide(); NS.dialog._.editor.focusManager.currentActive.focusNext(); focusableElements = appTools.misc.findFocusable(NS.dialog.parts.contents); if(!appTools.misc.hasClass(activeElement, 'cke_dialog_tab') && !appTools.misc.hasClass(activeElement, 'cke_dialog_contents_body') && appTools.misc.isVisible(activeElement)) { try { activeElement.focus(); } catch(e) {} } else { for(var i = 0, tmpCkEl; i < focusableElements.count(); i++) { tmpCkEl = focusableElements.getItem(i); if(appTools.misc.isVisible(tmpCkEl.$)) { try { tmpCkEl.$.focus(); } catch(e) {} break; } } } }, 0); }; function __constructLangSelectbox(languageGroup) { if( !languageGroup ) { throw "Languages-by-groups list are required for construct selectbox"; } var that = this, o_arr = [], priorLang ="en_US", priorLangTitle = "", currLang = NS.selectingLang; for ( var group in languageGroup){ for ( var langCode in languageGroup[group]){ var langName = languageGroup[group][langCode]; if ( langName == priorLang ) { priorLangTitle = langName; } else { o_arr.push( langName ); } } } o_arr.sort(); if(priorLangTitle) { o_arr.unshift( priorLangTitle ); } var searchGroup = function ( code ){ for ( var group in languageGroup){ for ( var langCode in languageGroup[group]){ if ( langCode.toUpperCase() === code.toUpperCase() ) { return group; } } } return ""; }; var _setLangList = function() { var langList = {}, langArray = []; for (var group in languageGroup) { for ( var langCode in languageGroup[group]){ langList[languageGroup[group][langCode]] = langCode; } } return langList; }; var _return = { getCurrentLangGroup: function(code) { return searchGroup(code); }, setLangList: _setLangList() }; return _return; } CKEDITOR.dialog.add('checkspell', function(editor) { var handlerButtons = function(event) { event = event || window.event; // because in chrome and safary document.activeElement returns tag. We need to signal that clicked element is active this.getElement().focus(); NS.div_overlay.setEnable(); var currentTabId = NS.dialog._.currentTabId, frameId = NS.iframeNumber + '_' + currentTabId, new_word = NS.textNode[currentTabId].getValue(), cmd = this.getElement().getAttribute("title-cmd"); appTools.postMessage.send({ 'message': { 'cmd': cmd, 'tabId': currentTabId, 'new_word': new_word }, 'target': NS.targetFromFrame[frameId], 'id': 'cmd_outer__page' }); if (cmd == 'ChangeTo' || cmd == 'ChangeAll') { editor.fire('saveSnapshot'); } if (cmd == 'FinishChecking') { editor.config.wsc_onFinish.call(CKEDITOR.document.getWindow().getFrame()); } }, constraints = { minWidth: 560, minHeight: 444 }; function initView(dialog) { var newViewSettings = { left: parseInt(editor.config.wsc_left, 10), top: parseInt(editor.config.wsc_top, 10), width: parseInt(editor.config.wsc_width, 10), height: parseInt(editor.config.wsc_height, 10) }, viewSize = CKEDITOR.document.getWindow().getViewPaneSize(), currentPosition = dialog.getPosition(), currentSize = dialog.getSize(), savePosition = 0; if(!dialog._.resized) { var wrapperHeight = currentSize.height - dialog.parts.contents.getSize('height', !(CKEDITOR.env.gecko || CKEDITOR.env.opera || CKEDITOR.env.ie && CKEDITOR.env.quirks)), wrapperWidth = currentSize.width - dialog.parts.contents.getSize('width', 1); if(newViewSettings.width < constraints.minWidth || isNaN(newViewSettings.width)) { newViewSettings.width = constraints.minWidth; } if(newViewSettings.width > viewSize.width - wrapperWidth) { newViewSettings.width = viewSize.width - wrapperWidth; } if(newViewSettings.height < constraints.minHeight || isNaN(newViewSettings.height)) { newViewSettings.height = constraints.minHeight; } if(newViewSettings.height > viewSize.height - wrapperHeight) { newViewSettings.height = viewSize.height - wrapperHeight; } currentSize.width = newViewSettings.width + wrapperWidth; currentSize.height = newViewSettings.height + wrapperHeight; dialog._.fromResizeEvent = false; dialog.resize(newViewSettings.width, newViewSettings.height); setTimeout(function() { dialog._.fromResizeEvent = false; CKEDITOR.dialog.fire('resize', { dialog: dialog, width: newViewSettings.width, height: newViewSettings.height }, editor); }, 300); } if(!dialog._.moved) { savePosition = isNaN(newViewSettings.left) && isNaN(newViewSettings.top) ? 0 : 1; if(isNaN(newViewSettings.left)) { newViewSettings.left = (viewSize.width - currentSize.width) / 2; } if(newViewSettings.left < 0) { newViewSettings.left = 0; } if(newViewSettings.left > viewSize.width - currentSize.width) { newViewSettings.left = viewSize.width - currentSize.width; } if(isNaN(newViewSettings.top)) { newViewSettings.top = (viewSize.height - currentSize.height) / 2; } if(newViewSettings.top < 0) { newViewSettings.top = 0; } if(newViewSettings.top > viewSize.height - currentSize.height) { newViewSettings.top = viewSize.height - currentSize.height; } dialog.move(newViewSettings.left, newViewSettings.top, savePosition); } } function createWscObjectForUdAndUdnSyncrhonization() { editor.wsc = {}; //DataStorage object for cookies and localStorage manipulation (function( object ) { 'use strict'; var DataTypeManager = { separator: '<$>', getDataType: function(value) { var type; if(typeof value === 'undefined') { type = 'undefined'; } else if(value === null) { type = 'null'; } else { type = Object.prototype.toString.call(value).slice(8, -1); } return type; }, convertDataToString: function(value) { var str, type = this.getDataType(value).toLowerCase(); str = type + this.separator + value; return str; }, // get value type and convert value due to type, since all stored values are String restoreDataFromString: function(str) { var value = str, type, separatorStartIndex; // @TODO: remove this line much later. Support of old format for options str = this.backCompatibility(str); if(typeof str === 'string') { separatorStartIndex = str.indexOf(this.separator); type = str.substring(0, separatorStartIndex); value = str.substring(separatorStartIndex + this.separator.length); switch(type) { case 'boolean': value = value === 'true'; break; case 'number': value = parseFloat(value); break; // we assume that we will store string values only, due to performance case 'array': value = value === '' ? [] : value.split(','); break; case 'null': value = null; break; case 'undefined': value = undefined; break; } } return value; }, // old data type support // here we trying to convert data from old format into new // @TODO: remove this function much later backCompatibility: function(str) { var convertedStr = str, value, separatorStartIndex; if(typeof str === 'string') { separatorStartIndex = str.indexOf(this.separator); // is it old format? if(separatorStartIndex < 0) { // try to get number from string value = parseFloat(str); // is it not a number? if(isNaN(value)) { // yes, this is not a number. Lets check is this is an array "[comma,separated,values]" if((str[0] === '[') && (str[str.length - 1] === ']')) { // this is an array. Lets remove brackets symbols and extract the words str = str.replace('[', ''); str = str.replace(']', ''); if(str === '') { value = []; } else { value = str.split(','); } // value = str === '[]' ? [] : str.split(','); } else if(str === 'true' || str === 'false') { // this is boolean value value = str === 'true'; } else { // this is string value = str; } } convertedStr = this.convertDataToString(value); } } return convertedStr; } }; var LocalStorage = { get: function( key ) { var value = DataTypeManager.restoreDataFromString( window.localStorage.getItem(key) ); return value; }, set: function( key, value ) { var _value = DataTypeManager.convertDataToString( value ); window.localStorage.setItem( key, _value ); }, del: function( key ) { window.localStorage.removeItem( key ); }, clear: function() { window.localStorage.clear(); } }; var CookiesStorage = { expiration: (function() { return 60 * 60 * 24 * 366; }()), get: function(key) { var value = DataTypeManager.restoreDataFromString(this.getCookie(key)); return value; }, set: function(key, value) { var _value = DataTypeManager.convertDataToString(value); this.setCookie(key, _value, {expires: this.expiration}); }, del: function(key) { this.deleteCookie(key); }, getCookie: function(name) { var matches = document.cookie.match(new RegExp("(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)")); return matches ? decodeURIComponent(matches[1]) : undefined; }, setCookie: function(name, value, props) { props = props || {}; var exp = props.expires; if (typeof exp === "number" && exp) { var d = new Date(); d.setTime(d.getTime() + exp * 1000); exp = props.expires = d; } if(exp && exp.toUTCString) { props.expires = exp.toUTCString(); } value = encodeURIComponent(value); var updatedCookie = name + "=" + value; for(var propName in props) { var propValue = props[propName]; updatedCookie += "; " + propName; if(propValue !== true) { updatedCookie += "=" + propValue; } } document.cookie = updatedCookie; }, deleteCookie: function(name) { this.setCookie(name, null, {expires: -1}); }, // delete all cookies clear: function() { var cookies = document.cookie.split(";"); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i]; var eqPos = cookie.indexOf("="); var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie; this.deleteCookie(name); } } }; var strategy = window.localStorage ? LocalStorage : CookiesStorage; var DataStorage = { // Get data within storage for key getData: function( key ) { return strategy.get( key ); }, // Set data within storage setData: function( key, value ) { strategy.set( key, value ); }, // Delete data within storage for key deleteData: function( key ) { strategy.del( key ); }, // Clear storage clear: function() { strategy.clear(); } }; // Static Module of Storage Data in the localStorage. object.DataStorage = DataStorage; }( editor.wsc )); editor.wsc.operationWithUDN = function(command, UDName) { var obj = { 'udn': UDName, 'id': 'operationWithUDN', 'udnCmd': command }; var currentTabId = NS.dialog._.currentTabId, frameId = NS.iframeNumber + '_' + currentTabId; appTools.postMessage.send({ 'message': obj, 'target': NS.targetFromFrame[frameId] }); }; editor.wsc.getLocalStorageUDN = function() { var udn = editor.wsc.DataStorage.getData('scayt_user_dictionary_name'); if (!udn) { return; } return udn; }; editor.wsc.getLocalStorageUD = function() { var ud = editor.wsc.DataStorage.getData('scayt_user_dictionary'); if (!ud) { return; } return ud; }; editor.wsc.addWords = function(words, callback) { var url = editor.config.wsc.DefaultParams.serviceHost + editor.config.wsc.DefaultParams.ssrvHost + '?cmd=dictionary&format=json&' + 'customerid=1%3AncttD3-fIoSf2-huzwE4-Y5muI2-mD0Tt-kG9Wz-UEDFC-tYu243-1Uq474-d9Z2l3&' + 'action=addword&word='+ words + '&callback=toString&synchronization=true', script = document.createElement('script'); script['type'] = 'text/javascript'; script['src'] = url; document.getElementsByTagName("head")[0].appendChild(script); //chrome, firefox, safari script.onload = callback; //IE script.onreadystatechange = function() { if (this.readyState === 'loaded') { callback(); } }; }; editor.wsc.cgiOrigin = function() { var wscServiceHostString = editor.config.wsc.DefaultParams.serviceHost, wscServiceHostArray = wscServiceHostString.split('/'), cgiOrigin = wscServiceHostArray[0] + '//' + wscServiceHostArray[2]; return cgiOrigin; }; editor.wsc.isSsrvSame = false; } return { title: editor.config.wsc_dialogTitle || editor.lang.wsc.title, minWidth: constraints.minWidth, minHeight: constraints.minHeight, buttons: [CKEDITOR.dialog.cancelButton], onLoad: function() { NS.dialog = this; hideThesaurusTab(); hideGrammTab(); showSpellTab(); //creating wsc object for UD synchronization between wsc and scayt if (editor.plugins.scayt) { createWscObjectForUdAndUdnSyncrhonization(); } }, onShow: function() { NS.dialog = this; editor.lockSelection(editor.getSelection()); NS.TextAreaNumber = 'cke_textarea_' + editor.name; appTools.postMessage.init(handlerIncomingData); NS.dataTemp = editor.getData(); //NS.div_overlay.setDisable(); NS.OverlayPlace = NS.dialog.parts.tabs.getParent().$; if(CKEDITOR && CKEDITOR.config){ NS.wsc_customerId = editor.config.wsc_customerId; NS.cust_dic_ids = editor.config.wsc_customDictionaryIds; NS.userDictionaryName = editor.config.wsc_userDictionaryName; NS.defaultLanguage = CKEDITOR.config.defaultLanguage; var protocol = document.location.protocol == "file:" ? "http:" : document.location.protocol; var wscCoreUrl = editor.config.wsc_customLoaderScript || ( protocol + '//www.webspellchecker.net/spellcheck31/lf/22/js/wsc_fck2plugin.js'); } else { NS.dialog.hide(); return; } initView(this); CKEDITOR.scriptLoader.load(wscCoreUrl, function(success) { if(CKEDITOR.config && CKEDITOR.config.wsc && CKEDITOR.config.wsc.DefaultParams){ NS.serverLocationHash = CKEDITOR.config.wsc.DefaultParams.serviceHost; NS.logotype = CKEDITOR.config.wsc.DefaultParams.logoPath; NS.loadIcon = CKEDITOR.config.wsc.DefaultParams.iconPath; NS.loadIconEmptyEditor = CKEDITOR.config.wsc.DefaultParams.iconPathEmptyEditor; NS.LangComparer = new CKEDITOR.config.wsc.DefaultParams._SP_FCK_LangCompare(); }else{ NS.serverLocationHash = DefaultParams.serviceHost; NS.logotype = DefaultParams.logoPath; NS.loadIcon = DefaultParams.iconPath; NS.loadIconEmptyEditor = DefaultParams.iconPathEmptyEditor; NS.LangComparer = new _SP_FCK_LangCompare(); } NS.pluginPath = CKEDITOR.getUrl(editor.plugins.wsc.path); NS.iframeNumber = NS.TextAreaNumber; NS.templatePath = NS.pluginPath + 'dialogs/tmp.html'; NS.LangComparer.setDefaulLangCode( NS.defaultLanguage ); NS.currentLang = editor.config.wsc_lang || NS.LangComparer.getSPLangCode( editor.langCode ) || 'en_US'; NS.interfaceLang = editor.config.wsc_interfaceLang; //option to customize the interface language 12/28/2015 NS.selectingLang = NS.currentLang; NS.div_overlay = new overlayBlock({ opacity: "1", background: "#fff url(" + NS.loadIcon + ") no-repeat 50% 50%", target: NS.OverlayPlace }); var number_ck = NS.dialog.parts.tabs.getId(), dialogPartsTab = CKEDITOR.document.getById(number_ck); dialogPartsTab.setStyle('width', '97%'); if (!dialogPartsTab.getElementsByTag('DIV').count()){ dialogPartsTab.append(NS.buildSelectLang(NS.dialog.getParentEditor().name)); } NS.div_overlay_no_check = new overlayBlock({ opacity: "1", id: 'no_check_over', background: "#fff url(" + NS.loadIconEmptyEditor + ") no-repeat 50% 50%", target: NS.OverlayPlace }); if (success) { showFirstTab(NS.dialog); NS.dialog.setupContent(NS.dialog); } if (editor.plugins.scayt) { //is ssrv.cgi path for WSC and scayt same editor.wsc.isSsrvSame = (function() { var wscSsrvWholePath, wscServiceHost = CKEDITOR.config.wsc.DefaultParams.serviceHost.replace('lf/22/js/../../../', '').split('//')[1], wscSsrvHost = CKEDITOR.config.wsc.DefaultParams.ssrvHost, scaytSsrvWholePath, scaytSsrvProtocol, scaytSsrvHost, scaytSsrvPath, scaytSrcUrl = editor.config.scayt_srcUrl, scaytSsrvSrcUrlSsrvProtocol, scaytSsrvSrcUrlSsrvHost, scaytSsrvSrcUrlSsrvPath, scaytBasePath, scaytBasePathSsrvProtocol, scaytBasePathSsrvHost, scaytBasePathSsrvPath; if (window.SCAYT && window.SCAYT.CKSCAYT) { scaytBasePath = SCAYT.CKSCAYT.prototype.basePath; scaytBasePathSsrvProtocol = scaytBasePath.split('//')[0]; scaytBasePathSsrvHost = scaytBasePath.split('//')[1].split('/')[0]; scaytBasePathSsrvPath = scaytBasePath.split(scaytBasePathSsrvHost + '/')[1].replace('/lf/scayt3/ckscayt/', '') + '/script/ssrv.cgi'; } if (scaytSrcUrl && !scaytBasePath && !editor.config.scayt_servicePath) { scaytSsrvSrcUrlSsrvProtocol = scaytSrcUrl.split('//')[0]; scaytSsrvSrcUrlSsrvHost = scaytSrcUrl.split('//')[1].split('/')[0]; scaytSsrvSrcUrlSsrvPath = scaytSrcUrl.split(scaytSsrvSrcUrlSsrvHost + '/')[1].replace('/lf/scayt3/ckscayt/ckscayt.js', '') + '/script/ssrv.cgi'; } scaytSsrvProtocol = editor.config.scayt_serviceProtocol || scaytBasePathSsrvProtocol || scaytSsrvSrcUrlSsrvProtocol; scaytSsrvHost = editor.config.scayt_serviceHost || scaytBasePathSsrvHost || scaytSsrvSrcUrlSsrvHost; scaytSsrvPath = editor.config.scayt_servicePath || scaytBasePathSsrvPath || scaytSsrvSrcUrlSsrvPath; wscSsrvWholePath = '//' + wscServiceHost + wscSsrvHost; scaytSsrvWholePath = '//' + scaytSsrvHost + '/' + scaytSsrvPath; return wscSsrvWholePath === scaytSsrvWholePath; })(); } //wsc on scayt UserDictionary and UserDictionaryName synchronization if (window.SCAYT && editor.wsc) { var cgiOrigin = editor.wsc.cgiOrigin(); editor.wsc.syncIsDone = false; var getUdOrUdn = function (e) { if (e.origin === cgiOrigin) { var data = JSON.parse(e.data); if (data.ud && data.ud !== 'undefined') { editor.wsc.ud = data.ud; } else if (data.ud === 'undefined') { editor.wsc.ud = undefined; } if (data.udn && data.udn !== 'undefined') { editor.wsc.udn = data.udn; } else if (data.udn === 'undefined') { editor.wsc.udn = undefined; } if (!editor.wsc.syncIsDone) { udSynchronization(editor.wsc.ud); editor.wsc.syncIsDone = true; } } }; var udSynchronization = function(cookieUd) { var localStorageUdArray = editor.wsc.getLocalStorageUD(), newUd; if (localStorageUdArray instanceof Array) { newUd = localStorageUdArray.toString(); } if (newUd !== undefined && newUd !== '') { setTimeout(function() { editor.wsc.addWords(newUd, function() { showFirstTab(NS.dialog); NS.dialog.setupContent(NS.dialog); }); }, 400); } }; if (window.addEventListener){ addEventListener("message", getUdOrUdn, false); } else { window.attachEvent("onmessage", getUdOrUdn); } //wsc on scayt UserDictionaryName synchronization setTimeout( function() { var udn = editor.wsc.getLocalStorageUDN(); if (udn !== undefined) { editor.wsc.operationWithUDN('restore', udn); } }, 500); //need to wait spell.js file to load } }); }, onHide: function() { editor.unlockSelection(); NS.dataTemp = ''; NS.sessionid = ''; appTools.postMessage.unbindHandler(handlerIncomingData); }, contents: [ { id: 'SpellTab', label: 'SpellChecker', accessKey: 'S', elements: [ { type: 'html', id: 'banner', label: 'banner', style: '', //TODO html: '
        ' }, { type: 'html', id: 'Content', label: 'spellContent', html: '', setup: function(dialog) { var tabId = NS.iframeNumber + '_' + dialog._.currentTabId; var iframe = document.getElementById(tabId); NS.targetFromFrame[tabId] = iframe.contentWindow; } }, { type: 'hbox', id: 'bottomGroup', style: 'width:560px; margin: 0 auto;', widths: ['50%', '50%'], className: 'wsc-spelltab-bottom', children: [ { type: 'hbox', id: 'leftCol', align: 'left', width: '50%', children: [ { type: 'vbox', id: 'rightCol1', widths: ['50%', '50%'], children: [ { type: 'text', id: 'ChangeTo_label', label: NS.LocalizationLabel['ChangeTo_label'].text + ':', labelLayout: 'horizontal', labelStyle: 'font: 12px/25px arial, sans-serif;', width: '140px', 'default': '', onShow: function() { NS.textNode['SpellTab'] = this; NS.LocalizationLabel['ChangeTo_label'].instance = this; }, onHide: function() { this.reset(); } }, { type: 'hbox', id: 'rightCol', align: 'right', width: '30%', children: [ { type: 'vbox', id: 'rightCol_col__left', children: [ { type: 'text', id: 'labelSuggestions', label: NS.LocalizationLabel['Suggestions'].text + ':', onShow: function() { NS.LocalizationLabel['Suggestions'].instance = this; this.getInputElement().setStyles({ display: 'none' }); } }, { type: 'html', id: 'logo', html: '', setup: function(dialog) { this.getElement().$.src = NS.logotype; this.getElement().getParent().setStyles({ "text-align": "left" }); } } ] }, { type: 'select', id: 'list_of_suggestions', labelStyle: 'font: 12px/25px arial, sans-serif;', size: '6', inputStyle: 'width: 140px; height: auto;', items: [['loading...']], onShow: function() { selectNode = this; }, onChange: function() { NS.textNode['SpellTab'].setValue(this.getValue()); } } ] } ] } ] }, { type: 'hbox', id: 'rightCol', align: 'right', width: '50%', children: [ { type: 'vbox', id: 'rightCol_col__left', widths: ['50%', '50%', '50%', '50%'], children: [ { type: 'button', id: 'ChangeTo_button', label: NS.LocalizationButton['ChangeTo_button'].text, title: 'Change to', style: 'width: 100%;', onLoad: function() { this.getElement().setAttribute("title-cmd", 'ChangeTo'); NS.LocalizationButton['ChangeTo_button'].instance = this; }, onClick: handlerButtons }, { type: 'button', id: 'ChangeAll', label: NS.LocalizationButton['ChangeAll'].text, title: 'Change All', style: 'width: 100%;', onLoad: function() { this.getElement().setAttribute("title-cmd", this.id); NS.LocalizationButton['ChangeAll'].instance = this; }, onClick: handlerButtons }, { type: 'button', id: 'AddWord', label: NS.LocalizationButton['AddWord'].text, title: 'Add word', style: 'width: 100%;', onLoad: function() { this.getElement().setAttribute("title-cmd", this.id); NS.LocalizationButton['AddWord'].instance = this; }, onClick: handlerButtons }, { type: 'button', id: 'FinishChecking_button', label: NS.LocalizationButton['FinishChecking_button'].text, title: 'Finish Checking', style: 'width: 100%;margin-top: 9px;', onLoad: function() { this.getElement().setAttribute("title-cmd", 'FinishChecking'); NS.LocalizationButton['FinishChecking_button'].instance = this; }, onClick: handlerButtons } ] }, { type: 'vbox', id: 'rightCol_col__right', widths: ['50%', '50%', '50%'], children: [ { type: 'button', id: 'IgnoreWord', label: NS.LocalizationButton['IgnoreWord'].text, title: 'Ignore word', style: 'width: 100%;', onLoad: function() { this.getElement().setAttribute("title-cmd", this.id); NS.LocalizationButton['IgnoreWord'].instance = this; }, onClick: handlerButtons }, { type: 'button', id: 'IgnoreAllWords', label: NS.LocalizationButton['IgnoreAllWords'].text, title: 'Ignore all words', style: 'width: 100%;', onLoad: function() { this.getElement().setAttribute("title-cmd", this.id); NS.LocalizationButton['IgnoreAllWords'].instance = this; }, onClick: handlerButtons }, { type: 'button', id: 'Options', label: NS.LocalizationButton['Options'].text, title: 'Option', style: 'width: 100%;', onLoad: function() { NS.LocalizationButton['Options'].instance = this; if (document.location.protocol == "file:") { this.disable(); } }, onClick: function() { // because in chrome and safary document.activeElement returns tag. We need to signal that clicked element is active this.getElement().focus(); if (document.location.protocol == "file:") { alert('WSC: Options functionality is disabled when runing from file system'); } else { activeElement = document.activeElement; editor.openDialog('options'); } } } ] } ] } ] }, { type: 'hbox', id: 'BlockFinishChecking', style: 'width:560px; margin: 0 auto;', widths: ['70%', '30%'], onShow: function() { this.getElement().setStyles({ display: 'block', position: 'absolute', left: '-9999px' }); }, onHide: showCurrentTabs, children: [ { type: 'hbox', id: 'leftCol', align: 'left', width: '70%', children: [ { type: 'vbox', id: 'rightCol1', setup: function() { this.getChild()[0].getElement().$.src = NS.logotype; this.getChild()[0].getElement().getParent().setStyles({ "text-align": "center" }); }, children: [ { type: 'html', id: 'logo', html: '' } ] } ] }, { type: 'hbox', id: 'rightCol', align: 'right', width: '30%', children: [ { type: 'vbox', id: 'rightCol_col__left', children: [ { type: 'button', id: 'Option_button', label: NS.LocalizationButton['Options'].text, title: 'Option', style: 'width: 100%;', onLoad: function() { this.getElement().setAttribute("title-cmd", this.id); if (document.location.protocol == "file:") { this.disable(); } }, onClick: function() { // because in chrome and safary document.activeElement returns tag. We need to signal that clicked element is active this.getElement().focus(); if (document.location.protocol == "file:") { alert('WSC: Options functionality is disabled when runing from file system'); } else { activeElement = document.activeElement; editor.openDialog('options'); } } }, { type: 'button', id: 'FinishChecking_button_block', label: NS.LocalizationButton['FinishChecking_button_block'].text, title: 'Finish Checking', style: 'width: 100%;', onLoad: function() { this.getElement().setAttribute("title-cmd", 'FinishChecking'); }, onClick: handlerButtons } ] } ] } ] } ] }, { id: 'GrammTab', label: 'Grammar', accessKey: 'G', elements: [ { type: 'html', id: 'banner', label: 'banner', style: '', //TODO html: '
        ' }, { type: 'html', id: 'Content', label: 'GrammarContent', html: '', setup: function() { var tabId = NS.iframeNumber + '_' + NS.dialog._.currentTabId; var iframe = document.getElementById(tabId); NS.targetFromFrame[tabId] = iframe.contentWindow; } }, { type: 'vbox', id: 'bottomGroup', style: 'width:560px; margin: 0 auto;', children: [ { type: 'hbox', id: 'leftCol', widths: ['66%', '34%'], children: [ { type: 'vbox', children: [ { type: 'text', id: 'text', label: "Change to:", labelLayout: 'horizontal', labelStyle: 'font: 12px/25px arial, sans-serif;', inputStyle: 'float: right; width: 200px;', 'default': '', onShow: function() { NS.textNode['GrammTab'] = this; }, onHide: function() { this.reset(); } }, { type: 'html', id: 'html_text', html: "
        ", onShow: function(e) { NS.textNodeInfo['GrammTab'] = this; } }, { type: 'html', id: 'radio', html: "", onShow: function() { NS.grammerSuggest = this; } } ] }, { type: 'vbox', children: [ { type: 'button', id: 'ChangeTo_button', label: 'Change to', title: 'Change to', style: 'width: 133px; float: right;', onLoad: function() { this.getElement().setAttribute("title-cmd", 'ChangeTo'); }, onClick: handlerButtons }, { type: 'button', id: 'IgnoreWord', label: 'Ignore word', title: 'Ignore word', style: 'width: 133px; float: right;', onLoad: function() { this.getElement().setAttribute("title-cmd", this.id); }, onClick: handlerButtons }, { type: 'button', id: 'IgnoreAllWords', label: 'Ignore Problem', title: 'Ignore Problem', style: 'width: 133px; float: right;', onLoad: function() { this.getElement().setAttribute("title-cmd", this.id); }, onClick: handlerButtons }, { type: 'button', id: 'FinishChecking_button', label: NS.LocalizationButton['FinishChecking_button'].text, title: 'Finish Checking', style: 'width: 133px; float: right; margin-top: 9px;', onLoad: function() { this.getElement().setAttribute("title-cmd", 'FinishChecking'); }, onClick: handlerButtons } ] } ] } ] }, { type: 'hbox', id: 'BlockFinishChecking', style: 'width:560px; margin: 0 auto;', widths: ['70%', '30%'], onShow: function() { this.getElement().setStyles({ display: 'block', position: 'absolute', left: '-9999px' }); }, onHide: showCurrentTabs, children: [ { type: 'hbox', id: 'leftCol', align: 'left', width: '70%', children: [ { type: 'vbox', id: 'rightCol1', children: [ { type: 'html', id: 'logo', html: '', setup: function() { this.getElement().$.src = NS.logotype; this.getElement().getParent().setStyles({ "text-align": "center" }); } } ] } ] }, { type: 'hbox', id: 'rightCol', align: 'right', width: '30%', children: [ { type: 'vbox', id: 'rightCol_col__left', children: [ { type: 'button', id: 'FinishChecking_button_block', label: NS.LocalizationButton['FinishChecking_button_block'].text, title: 'Finish Checking', style: 'width: 100%;', onLoad: function() { this.getElement().setAttribute("title-cmd", 'FinishChecking'); }, onClick: handlerButtons } ] } ] } ] } ] }, { id: 'Thesaurus', label: 'Thesaurus', accessKey: 'T', elements: [ { type: 'html', id: 'banner', label: 'banner', style: '', //TODO html: '
        ' }, { type: 'html', id: 'Content', label: 'spellContent', html: '', setup: function() { var tabId = NS.iframeNumber + '_' + NS.dialog._.currentTabId; var iframe = document.getElementById(tabId); NS.targetFromFrame[tabId] = iframe.contentWindow; } }, { type: 'vbox', id: 'bottomGroup', style: 'width:560px; margin: -10px auto; overflow: hidden;', children: [ { type: 'hbox', widths: ['75%', '25%'], children: [ { type: 'vbox', children: [ { type: 'hbox', widths: ['65%', '35%'], children: [ { type: 'text', id: 'ChangeTo_label', label: NS.LocalizationLabel['ChangeTo_label'].text + ':', labelLayout: 'horizontal', inputStyle: 'width: 160px;', labelStyle: 'font: 12px/25px arial, sans-serif;', 'default': '', onShow: function(e) { NS.textNode['Thesaurus'] = this; NS.LocalizationLabel['ChangeTo_label'].instance = this; }, onHide: function() { this.reset(); } }, { type: 'button', id: 'ChangeTo_button', label: NS.LocalizationButton['ChangeTo_button'].text, title: 'Change to', style: 'width: 121px; margin-top: 1px;', onLoad: function() { this.getElement().setAttribute("title-cmd", 'ChangeTo'); NS.LocalizationButton['ChangeTo_button'].instance = this; }, onClick: handlerButtons } ] }, { type: 'hbox', children: [ { type: 'select', id: 'Categories', label: NS.LocalizationLabel['Categories'].text + ':', labelStyle: 'font: 12px/25px arial, sans-serif;', size: '5', inputStyle: 'width: 180px; height: auto;', items: [], onShow: function() { NS.selectNode['Categories'] = this; NS.LocalizationLabel['Categories'].instance = this; }, onChange: function() { NS.buildOptionSynonyms(this.getValue()); } }, { type: 'select', id: 'Synonyms', label: NS.LocalizationLabel['Synonyms'].text + ':', labelStyle: 'font: 12px/25px arial, sans-serif;', size: '5', inputStyle: 'width: 180px; height: auto;', items: [], onShow: function() { NS.selectNode['Synonyms'] = this; NS.textNode['Thesaurus'].setValue(this.getValue()); NS.LocalizationLabel['Synonyms'].instance = this; }, onChange: function(e) { NS.textNode['Thesaurus'].setValue(this.getValue()); } } ] } ] }, { type: 'vbox', width: '120px', style: "margin-top:46px;", children: [ { type: 'html', id: 'logotype', label: 'WebSpellChecker.net', html: '', setup: function() { this.getElement().$.src = NS.logotype; this.getElement().getParent().setStyles({ "text-align": "center" }); } }, { type: 'button', id: 'FinishChecking_button', label: NS.LocalizationButton['FinishChecking_button'].text, title: 'Finish Checking', style: 'width: 100%; float: right; margin-top: 9px;', onLoad: function() { this.getElement().setAttribute("title-cmd", 'FinishChecking'); }, onClick: handlerButtons } ] } ] } ] }, { type: 'hbox', id: 'BlockFinishChecking', style: 'width:560px; margin: 0 auto;', widths: ['70%', '30%'], onShow: function() { this.getElement().setStyles({ display: 'block', position: 'absolute', left: '-9999px' }); }, children: [ { type: 'hbox', id: 'leftCol', align: 'left', width: '70%', children: [ { type: 'vbox', id: 'rightCol1', children: [ { type: 'html', id: 'logo', html: '', setup: function() { this.getElement().$.src = NS.logotype; this.getElement().getParent().setStyles({ "text-align": "center" }); } } ] } ] }, { type: 'hbox', id: 'rightCol', align: 'right', width: '30%', children: [ { type: 'vbox', id: 'rightCol_col__left', children: [ { type: 'button', id: 'FinishChecking_button_block', label: NS.LocalizationButton['FinishChecking_button_block'].text, title: 'Finish Checking', style: 'width: 100%;', onLoad: function() { this.getElement().setAttribute("title-cmd", 'FinishChecking'); }, onClick: handlerButtons } ] } ] } ] } ] } ] }; }); var activeElement = null; // Options dialog CKEDITOR.dialog.add('options', function(editor) { var dialog = null; var linkOnCheckbox = {}; var checkboxState = {}; var ospString = null; var OptionsTextError = null; var cmd = null; var set_osp = []; var dictionaryState = { 'udn': appTools.cookie.get('udn'), 'osp': appTools.cookie.get('osp') }; var setHandlerOptions = function() { var osp = appTools.cookie.get('osp'), strToArr = osp.split(""); checkboxState['IgnoreAllCapsWords'] = strToArr[0]; checkboxState['IgnoreWordsNumbers'] = strToArr[1]; checkboxState['IgnoreMixedCaseWords'] = strToArr[2]; checkboxState['IgnoreDomainNames'] = strToArr[3]; }; var sendDicOptions = function(event) { event = event || window.event; cmd = this.getElement().getAttribute("title-cmd"); var osp = []; osp[0] = checkboxState['IgnoreAllCapsWords']; osp[1] = checkboxState['IgnoreWordsNumbers']; osp[2] = checkboxState['IgnoreMixedCaseWords']; osp[3] = checkboxState['IgnoreDomainNames']; osp = osp.toString().replace(/,/g, ""); appTools.cookie.set('osp', osp); appTools.cookie.set('udnCmd', cmd ? cmd : 'ignore'); if (cmd == "delete") { appTools.postMessage.send({ 'id': 'options_dic_send' }); } else { var udn = ''; if(nameNode.getValue() !== ''){ udn = nameNode.getValue(); } appTools.cookie.set('udn', udn); appTools.postMessage.send({ 'id': 'options_dic_send' }); } }; var sendAllOptions = function() { var osp = []; osp[0] = checkboxState['IgnoreAllCapsWords']; osp[1] = checkboxState['IgnoreWordsNumbers']; osp[2] = checkboxState['IgnoreMixedCaseWords']; osp[3] = checkboxState['IgnoreDomainNames']; osp = osp.toString().replace(/,/g, ""); appTools.cookie.set('osp', osp); appTools.postMessage.send({ 'id': 'options_checkbox_send' }); }; var cameOptions = function() { OptionsTextError.getElement().setHtml(NS.LocalizationComing['error']); OptionsTextError.getElement().show(); }; return { title: NS.LocalizationComing['Options'], minWidth: 430, minHeight: 130, resizable: CKEDITOR.DIALOG_RESIZE_NONE, contents: [ { id: 'OptionsTab', label: 'Options', accessKey: 'O', elements: [ { type: 'hbox', id: 'options_error', children: [ { type: 'html', style: "display: block;text-align: center;white-space: normal!important; font-size: 12px;color:red", html: '
        ', onShow: function() { OptionsTextError = this; } } ] }, { type: 'vbox', id: 'Options_content', children: [ { type: 'hbox', id: 'Options_manager', widths: ['52%', '48%'], children: [ { type: 'fieldset', label: 'Spell Checking Options', style: 'border: none;margin-top: 13px;padding: 10px 0 10px 10px', onShow: function() { this.getInputElement().$.children[0].innerHTML = NS.LocalizationComing['SpellCheckingOptions']; }, children: [ { type: 'vbox', id: 'Options_checkbox', children: [ { type: 'checkbox', id: 'IgnoreAllCapsWords', label: 'Ignore All-Caps Words', labelStyle: 'margin-left: 5px; font: 12px/16px arial, sans-serif;display: inline-block;white-space: normal;', style: "float:left; min-height: 16px;", 'default': '', onClick: function() { checkboxState[this.id] = (!this.getValue()) ? 0 : 1; } }, { type: 'checkbox', id: 'IgnoreWordsNumbers', label: 'Ignore Words with Numbers', labelStyle: 'margin-left: 5px; font: 12px/16px arial, sans-serif;display: inline-block;white-space: normal;', style: "float:left; min-height: 16px;", 'default': '', onClick: function() { checkboxState[this.id] = (!this.getValue()) ? 0 : 1; } }, { type: 'checkbox', id: 'IgnoreMixedCaseWords', label: 'Ignore Mixed-Case Words', labelStyle: 'margin-left: 5px; font: 12px/16px arial, sans-serif;display: inline-block;white-space: normal;', style: "float:left; min-height: 16px;", 'default': '', onClick: function() { checkboxState[this.id] = (!this.getValue()) ? 0 : 1; } }, { type: 'checkbox', id: 'IgnoreDomainNames', label: 'Ignore Domain Names', labelStyle: 'margin-left: 5px; font: 12px/16px arial, sans-serif;display: inline-block;white-space: normal;', style: "float:left; min-height: 16px;", 'default': '', onClick: function() { checkboxState[this.id] = (!this.getValue()) ? 0 : 1; } } ] } ] }, { type: 'vbox', id: 'Options_DictionaryName', children: [ { type: 'text', id: 'DictionaryName', style: 'margin-bottom: 10px', label: 'Dictionary Name:', labelLayout: 'vertical', labelStyle: 'font: 12px/25px arial, sans-serif;', 'default': '', onLoad: function() { nameNode = this; var udn = NS.userDictionaryName ? NS.userDictionaryName : appTools.cookie.get('udn') && undefined ? ' ' : this.getValue(); this.setValue(udn); }, onShow: function() { nameNode = this; var udn = !appTools.cookie.get('udn') ? this.getValue() : appTools.cookie.get('udn'); this.setValue(udn); this.setLabel(NS.LocalizationComing['DictionaryName']); }, onHide: function() { this.reset(); } }, { type: 'hbox', id: 'Options_buttons', children: [ { type: 'vbox', id: 'Options_leftCol_col', widths: ['50%', '50%'], children: [ { type: 'button', id: 'create', label: 'Create', title: 'Create', style: 'width: 100%;', onLoad: function() { this.getElement().setAttribute("title-cmd", this.id); }, onShow: function() { var el = this.getElement().getFirst() || this.getElement(); el.setText(NS.LocalizationComing['Create']); }, onClick: sendDicOptions }, { type: 'button', id: 'restore', label: 'Restore', title: 'Restore', style: 'width: 100%;', onLoad: function() { this.getElement().setAttribute("title-cmd", this.id); }, onShow: function() { var el = this.getElement().getFirst() || this.getElement(); el.setText(NS.LocalizationComing['Restore']); }, onClick: sendDicOptions } ] }, { type: 'vbox', id: 'Options_rightCol_col', widths: ['50%', '50%'], children: [ { type: 'button', id: 'rename', label: 'Rename', title: 'Rename', style: 'width: 100%;', onLoad: function() { this.getElement().setAttribute("title-cmd", this.id); }, onShow: function() { var el = this.getElement().getFirst() || this.getElement(); el.setText(NS.LocalizationComing['Rename']); }, onClick: sendDicOptions }, { type: 'button', id: 'delete', label: 'Remove', title: 'Remove', style: 'width: 100%;', onLoad: function() { this.getElement().setAttribute("title-cmd", this.id); }, onShow: function() { var el = this.getElement().getFirst() || this.getElement(); el.setText(NS.LocalizationComing['Remove']); }, onClick: sendDicOptions } ] } ] } ] } ] }, { type: 'hbox', id: 'Options_text', children: [ { type: 'html', style: "text-align: justify;margin-top: 15px;white-space: normal!important; font-size: 12px;color:#777;", html: "
        " + NS.LocalizationComing['OptionsTextIntro'] + "
        ", onShow: function() { this.getElement().setText(NS.LocalizationComing['OptionsTextIntro']); } } ] } ] } ] } ], buttons: [CKEDITOR.dialog.okButton, CKEDITOR.dialog.cancelButton], onOk: function() { sendAllOptions(); OptionsTextError.getElement().hide(); OptionsTextError.getElement().setHtml(' '); }, onLoad: function() { dialog = this; // appTools.postMessage.init(cameOptions); linkOnCheckbox['IgnoreAllCapsWords'] = dialog.getContentElement('OptionsTab', 'IgnoreAllCapsWords'); linkOnCheckbox['IgnoreWordsNumbers'] = dialog.getContentElement('OptionsTab', 'IgnoreWordsNumbers'); linkOnCheckbox['IgnoreMixedCaseWords'] = dialog.getContentElement('OptionsTab', 'IgnoreMixedCaseWords'); linkOnCheckbox['IgnoreDomainNames'] = dialog.getContentElement('OptionsTab', 'IgnoreDomainNames'); }, onShow: function() { appTools.postMessage.init(cameOptions); setHandlerOptions(); (!parseInt(checkboxState['IgnoreAllCapsWords'], 10)) ? linkOnCheckbox['IgnoreAllCapsWords'].setValue('', false) : linkOnCheckbox['IgnoreAllCapsWords'].setValue('checked', false); (!parseInt(checkboxState['IgnoreWordsNumbers'], 10)) ? linkOnCheckbox['IgnoreWordsNumbers'].setValue('', false) : linkOnCheckbox['IgnoreWordsNumbers'].setValue('checked', false); (!parseInt(checkboxState['IgnoreMixedCaseWords'], 10)) ? linkOnCheckbox['IgnoreMixedCaseWords'].setValue('', false) : linkOnCheckbox['IgnoreMixedCaseWords'].setValue('checked', false); (!parseInt(checkboxState['IgnoreDomainNames'], 10)) ? linkOnCheckbox['IgnoreDomainNames'].setValue('', false) : linkOnCheckbox['IgnoreDomainNames'].setValue('checked', false); checkboxState['IgnoreAllCapsWords'] = (!linkOnCheckbox['IgnoreAllCapsWords'].getValue()) ? 0 : 1; checkboxState['IgnoreWordsNumbers'] = (!linkOnCheckbox['IgnoreWordsNumbers'].getValue()) ? 0 : 1; checkboxState['IgnoreMixedCaseWords'] = (!linkOnCheckbox['IgnoreMixedCaseWords'].getValue()) ? 0 : 1; checkboxState['IgnoreDomainNames'] = (!linkOnCheckbox['IgnoreDomainNames'].getValue()) ? 0 : 1; linkOnCheckbox['IgnoreAllCapsWords'].getElement().$.lastChild.innerHTML = NS.LocalizationComing['IgnoreAllCapsWords']; linkOnCheckbox['IgnoreWordsNumbers'].getElement().$.lastChild.innerHTML = NS.LocalizationComing['IgnoreWordsWithNumbers']; linkOnCheckbox['IgnoreMixedCaseWords'].getElement().$.lastChild.innerHTML = NS.LocalizationComing['IgnoreMixedCaseWords']; linkOnCheckbox['IgnoreDomainNames'].getElement().$.lastChild.innerHTML = NS.LocalizationComing['IgnoreDomainNames']; }, onHide: function() { appTools.postMessage.unbindHandler(cameOptions); if(activeElement) { try { activeElement.focus(); } catch(e) {} } } }; }); // Expand the spell-check frame when dialog resized. (#6829) CKEDITOR.dialog.on( 'resize', function( evt ) { var data = evt.data, dialog = data.dialog, currentTabId = dialog._.currentTabId, tabID = NS.iframeNumber + '_' + currentTabId, iframe = CKEDITOR.document.getById(tabID); if ( dialog._.name == 'checkspell' ) { if (NS.bnr) { iframe && iframe.setSize( 'height', data.height - '310' ); } else { iframe && iframe.setSize( 'height', data.height - '220' ); } // add flag that indicate whether dialog has been resized by user if(dialog._.fromResizeEvent && !dialog._.resized) { dialog._.resized = true; } dialog._.fromResizeEvent = true; } }); CKEDITOR.on('dialogDefinition', function(dialogDefinitionEvent) { if(dialogDefinitionEvent.data.name === 'checkspell') { var dialogDefinition = dialogDefinitionEvent.data.definition; NS.onLoadOverlay = new overlayBlock({ opacity: "1", background: "#fff", target: dialogDefinition.dialog.parts.tabs.getParent().$ }); NS.onLoadOverlay.setEnable(); dialogDefinition.dialog.on('cancel', function(cancelEvent) { dialogDefinition.dialog.getParentEditor().config.wsc_onClose.call(this.document.getWindow().getFrame()); NS.div_overlay.setDisable(); NS.onLoadOverlay.setDisable(); return false; }, this, null, -1); } }); })(); rt-4.4.7/devel/third-party/wsc-src/dialogs/ciframe.html0000644000201500020150000000313014101750613021467 0ustar puckpuck

        rt-4.4.7/devel/third-party/wsc-src/dialogs/tmpFrameset.html0000644000201500020150000000356614101750613022365 0ustar puckpuck rt-4.4.7/devel/third-party/wsc-src/dialogs/wsc.css0000644000201500020150000000217614101750613020512 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ html, body { background-color: transparent; margin: 0px; padding: 0px; } body { padding: 10px; } body, td, input, select, textarea { font-size: 11px; font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana; } .midtext { padding:0px; margin:10px; } .midtext p { padding:0px; margin:10px; } .Button { border: #737357 1px solid; color: #3b3b1f; background-color: #c7c78f; } .PopupTabArea { color: #737357; background-color: #e3e3c7; } .PopupTitleBorder { border-bottom: #d5d59d 1px solid; } .PopupTabEmptyArea { padding-left: 10px; border-bottom: #d5d59d 1px solid; } .PopupTab, .PopupTabSelected { border-right: #d5d59d 1px solid; border-top: #d5d59d 1px solid; border-left: #d5d59d 1px solid; padding: 3px 5px 3px 5px; color: #737357; } .PopupTab { margin-top: 1px; border-bottom: #d5d59d 1px solid; cursor: pointer; } .PopupTabSelected { font-weight: bold; cursor: default; padding-top: 4px; border-bottom: #f1f1e3 1px solid; background-color: #f1f1e3; } rt-4.4.7/devel/third-party/wsc-src/LICENSE.md0000644000201500020150000000264614101750613017170 0ustar puckpuckSoftware License Agreement ========================== **CKEditor WSC Plugin** Copyright © 2012, [CKSource](http://cksource.com) - Frederico Knabben. All rights reserved. Licensed under the terms of any of the following licenses at your choice: * GNU General Public License Version 2 or later (the "GPL"): http://www.gnu.org/licenses/gpl.html * GNU Lesser General Public License Version 2.1 or later (the "LGPL"): http://www.gnu.org/licenses/lgpl.html * Mozilla Public License Version 1.1 or later (the "MPL"): http://www.mozilla.org/MPL/MPL-1.1.html You are not required to, but if you want to explicitly declare the license you have chosen to be bound to when using, reproducing, modifying and distributing this software, just include a text file titled "legal.txt" in your version of this software, indicating your license choice. Sources of Intellectual Property Included in this plugin -------------------------------------------------------- Where not otherwise indicated, all plugin content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, the plugin will incorporate work done by developers outside of CKSource with their express permission. Trademarks ---------- CKEditor is a trademark of CKSource - Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders. rt-4.4.7/devel/third-party/wsc-src/icons/0000755000201500020150000000000014101750613016667 5ustar puckpuckrt-4.4.7/devel/third-party/wsc-src/icons/hidpi/0000755000201500020150000000000014101750613017764 5ustar puckpuckrt-4.4.7/devel/third-party/wsc-src/icons/hidpi/spellchecker.png0000644000201500020150000000540014101750613023135 0ustar puckpuckPNG  IHDR szzbKGD pHYs B(x IDATXŗmlTי{ggg1'bJ%M[ڤIW,aiBUEڍ*mjw+ڠFj5$VBnM /@0k f{~1ZH=<9qA?p"o\C)%Rʛ?iF+H!BmDRQU u92!0*@ (P7 H) XR\ife҆y\e_UUR @AI)2N ) ϛGh͚7oR?秏vuQZo~ BSKόmקNBkMcm-b``cSkܵ|yiYօ ~筷~O4s2QImY+̛GuUU}ʀmCJP iֶ9wo%K,YuHӝkSJ!a+r8qB>_ObJ_t*UYu՚h]>mSaH|^߷oY*\c"=1474l&>àas9cE{^ĵk}ۿű̌ذq?DB2)χe^h #:@+y$'&Ɓ_) s9>.rײe}|^|dڅdw7_|Y| ) KjkjB ^$Ӟ'-냕Xёr=@KT9Co"qY\CHZ?<<Ǝj| K/M?#NOO#g\idmr4qd%KBXEX&XdB޽l6<<!2>~ծFVUVb}gons]Z[[/J)KWu B0JG٤h4bk_yO7_)oiAiM5&VUa4>iS*H0oY,RK&aǓO.ho_0=3~a~2C'T a ij6Mϻ.555߿4\yW߽q:\C E"CnDdժxPj5Vx-PώTݷZ[{r ^ b۶m_S>آʯ]իU>/RdY^&\g^Q,N:u\BLL066/3JG.=c?BY30p+۲N}P yܹl٢_.K%8 vxuIkj?ݼkZe9Wkqq漟ZTk u2K/ܶ|Ŋ]w+~Ck}lݯ {x&_*m^tI)ܲ%t&3YzzG|ɷam5~!eSSS'6n쟵SO}ɬ@>DWm]*)8p\1 P0Hc4]?khh\Wr94==z rf0#*jit@:D"xEɉT,5zDwwsHs4z*"V$I2قP%z0 .( 8q @eU1Zqfffzף*WUVj&)dI 777pvvfQ#M:noowU5<>>404Ey_:h4[[[f&FQaHBD>fD%}]]] v~|{lZk?cRy H}~_?Vx4EU޾>==077W}v"! I'^ݶvA;<<< Qep8d~~;/"`H9d;o5%tEXtdate:create2013-07-16T11:21:31+02:00%tEXtdate:modify2013-07-16T11:21:31+02:00ٓMtEXtSoftwarewww.inkscape.org<IENDB`rt-4.4.7/devel/third-party/wsc-src/.gitattributes0000644000201500020150000000025414101750613020450 0ustar puckpuck* text=auto *.cgi eol=lf *.css text *.htaccess eol=lf *.htm text *.html text *.js text *.php text *.sh eol=lf *.txt text *.png -text *.gif -text *.jpg -text rt-4.4.7/devel/third-party/README0000644000201500020150000000251614514267702015071 0ustar puckpuckThis directory contains the source code for components which are used elsewhere in RT in a minified (or other) format optimized for delivery to users over developer modification. The rest of this file documents the contents of the directory. * chosen-1.4.2 Description: ");return""+encodeURIComponent(a)+""})}function A(a){return a.replace(u,function(a,b){return decodeURIComponent(b)})}function r(a){return a.replace(/<\!--(?!{cke_protected})[\s\S]+?--\>/g, function(a){return"<\!--"+w+"{C}"+encodeURIComponent(a).replace(/--/g,"%2D%2D")+"--\>"})}function y(a){return a.replace(/<\!--\{cke_protected\}\{C\}([\s\S]+?)--\>/g,function(a,b){return decodeURIComponent(b)})}function o(a,b){var c=b._.dataStore;return a.replace(/<\!--\{cke_protected\}([\s\S]+?)--\>/g,function(a,b){return decodeURIComponent(b)}).replace(/\{cke_protected_(\d+)\}/g,function(a,b){return c&&c[b]||""})}function q(a,b){for(var c=[],d=b.config.protectedSource,k=b._.dataStore||(b._.dataStore= {id:1}),e=/<\!--\{cke_temp(comment)?\}(\d*?)--\>/g,d=[/|$)/gi,//gi,//gi].concat(d),a=a.replace(/<\!--[\s\S]*?--\>/g,function(a){return"<\!--{cke_tempcomment}"+(c.push(a)-1)+"--\>"}),f=0;f"});a=a.replace(e,function(a,b,d){return"<\!--"+w+(b?"{C}":"")+encodeURIComponent(c[d]).replace(/--/g, "%2D%2D")+"--\>"});a=a.replace(/<\w+(?:\s+(?:(?:[^\s=>]+\s*=\s*(?:[^'"\s>]+|'[^']*'|"[^"]*"))|[^\s=\/>]+))+\s*\/?>/g,function(a){return a.replace(/<\!--\{cke_protected\}([^>]*)--\>/g,function(a,b){k[k.id]=decodeURIComponent(b);return"{cke_protected_"+k.id++ +"}"})});return a=a.replace(/<(title|iframe|textarea)([^>]*)>([\s\S]*?)<\/\1>/g,function(a,c,d,k){return"<"+c+d+">"+o(y(k),b)+""})}CKEDITOR.htmlDataProcessor=function(b){var c,e,f=this;this.editor=b;this.dataFilter=c=new CKEDITOR.htmlParser.filter; this.htmlFilter=e=new CKEDITOR.htmlParser.filter;this.writer=new CKEDITOR.htmlParser.basicWriter;c.addRules(s);c.addRules(k,{applyToAll:true});c.addRules(a(b,"data"),{applyToAll:true});e.addRules(m);e.addRules(F,{applyToAll:true});e.addRules(a(b,"html"),{applyToAll:true});b.on("toHtml",function(a){var a=a.data,c=a.dataValue,k,c=q(c,b),c=g(c,E),c=n(c),c=g(c,L),c=c.replace(K,"$1cke:$2"),c=c.replace(x,""),c=c.replace(/(]*>)(\r\n|\n)/g,"$1$2$2"),c=c.replace(/([^a-z0-9<\-])(on\w{3,})(?!>)/gi, "$1data-cke-"+CKEDITOR.rnd+"-$2");k=a.context||b.editable().getName();var e;if(CKEDITOR.env.ie&&CKEDITOR.env.version<9&&k=="pre"){k="div";c="
        "+c+"
        ";e=1}k=b.document.createElement(k);k.setHtml("a"+c);c=k.getHtml().substr(1);c=c.replace(RegExp("data-cke-"+CKEDITOR.rnd+"-","ig"),"");e&&(c=c.replace(/^
        |<\/pre>$/gi,""));c=c.replace(C,"$1$2");c=A(c);c=y(c);k=a.fixForBody===false?false:d(a.enterMode,b.config.autoParagraph);c=CKEDITOR.htmlParser.fragment.fromHtml(c,a.context,k);if(k){e=c;
        if(!e.children.length&&CKEDITOR.dtd[e.name][k]){k=new CKEDITOR.htmlParser.element(k);e.add(k)}}a.dataValue=c},null,null,5);b.on("toHtml",function(a){a.data.filter.applyTo(a.data.dataValue,true,a.data.dontFilter,a.data.enterMode)&&b.fire("dataFiltered")},null,null,6);b.on("toHtml",function(a){a.data.dataValue.filterChildren(f.dataFilter,true)},null,null,10);b.on("toHtml",function(a){var a=a.data,b=a.dataValue,c=new CKEDITOR.htmlParser.basicWriter;b.writeChildrenHtml(c);b=c.getHtml(true);a.dataValue=
        r(b)},null,null,15);b.on("toDataFormat",function(a){var c=a.data.dataValue;a.data.enterMode!=CKEDITOR.ENTER_BR&&(c=c.replace(/^
        /i,""));a.data.dataValue=CKEDITOR.htmlParser.fragment.fromHtml(c,a.data.context,d(a.data.enterMode,b.config.autoParagraph))},null,null,5);b.on("toDataFormat",function(a){a.data.dataValue.filterChildren(f.htmlFilter,true)},null,null,10);b.on("toDataFormat",function(a){a.data.filter.applyTo(a.data.dataValue,false,true)},null,null,11);b.on("toDataFormat",function(a){var c= a.data.dataValue,d=f.writer;d.reset();c.writeChildrenHtml(d);c=d.getHtml(true);c=y(c);c=o(c,b);a.data.dataValue=c},null,null,15)};CKEDITOR.htmlDataProcessor.prototype={toHtml:function(a,b,c,d){var k=this.editor,e,f,g,m;if(b&&typeof b=="object"){e=b.context;c=b.fixForBody;d=b.dontFilter;f=b.filter;g=b.enterMode;m=b.protectedWhitespaces}else e=b;!e&&e!==null&&(e=k.editable().getName());return k.fire("toHtml",{dataValue:a,context:e,fixForBody:c,dontFilter:d,filter:f||k.filter,enterMode:g||k.enterMode, protectedWhitespaces:m}).dataValue},toDataFormat:function(a,b){var c,d,k;if(b){c=b.context;d=b.filter;k=b.enterMode}!c&&c!==null&&(c=this.editor.editable().getName());return this.editor.fire("toDataFormat",{dataValue:a,filter:d||this.editor.filter,context:c,enterMode:k||this.editor.enterMode}).dataValue}};var t=/(?: |\xa0)$/,w="{cke_protected}",v=CKEDITOR.dtd,B=["caption","colgroup","col","thead","tfoot","tbody"],l=CKEDITOR.tools.extend({},v.$blockLimit,v.$block),s={elements:{input:i,textarea:i}}, k={attributeNames:[[/^on/,"data-cke-pa-on"],[/^data-cke-expando$/,""]]},m={elements:{embed:function(a){var b=a.parent;if(b&&b.name=="object"){var c=b.attributes.width,b=b.attributes.height;if(c)a.attributes.width=c;if(b)a.attributes.height=b}},a:function(a){if(!a.children.length&&!a.attributes.name&&!a.attributes["data-cke-saved-name"])return false}}},F={elementNames:[[/^cke:/,""],[/^\?xml:namespace$/,""]],attributeNames:[[/^data-cke-(saved|pa)-/,""],[/^data-cke-.*/,""],["hidefocus",""]],elements:{$:function(a){var b= a.attributes;if(b){if(b["data-cke-temp"])return false;for(var c=["name","href","src"],d,k=0;k-1&&d>-1&&c!=d)){c=a.parent?a.getIndex():-1;d=b.parent?b.getIndex():-1}return c>d?1:-1})},param:function(a){a.children=[];a.isEmpty=true;return a}, span:function(a){a.attributes["class"]=="Apple-style-span"&&delete a.name},html:function(a){delete a.attributes.contenteditable;delete a.attributes["class"]},body:function(a){delete a.attributes.spellcheck;delete a.attributes.contenteditable},style:function(a){var b=a.children[0];if(b&&b.value)b.value=CKEDITOR.tools.trim(b.value);if(!a.attributes.type)a.attributes.type="text/css"},title:function(a){var b=a.children[0];!b&&h(a,b=new CKEDITOR.htmlParser.text);b.value=a.attributes["data-cke-title"]|| ""},input:j,textarea:j},attributes:{"class":function(a){return CKEDITOR.tools.ltrim(a.replace(/(?:^|\s+)cke_[^\s]*/g,""))||false}}};if(CKEDITOR.env.ie)F.attributes.style=function(a){return a.replace(/(^|;)([^\:]+)/g,function(a){return a.toLowerCase()})};var p=/<(a|area|img|input|source)\b([^>]*)>/gi,I=/([\w-:]+)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,z=/^(href|src|name)$/i,L=/(?:])[^>]*>[\s\S]*?<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,E=/(])[^>]*>)([\s\S]*?)(?:<\/textarea>)/gi, u=/([^<]*)<\/cke:encoded>/gi,K=/(<\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,C=/(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,x=/]*?)\/?>(?!\s*<\/cke:\1)/gi})();"use strict"; CKEDITOR.htmlParser.element=function(a,d){this.name=a;this.attributes=d||{};this.children=[];var b=a||"",c=b.match(/^cke:(.*)/);c&&(b=c[1]);b=!(!CKEDITOR.dtd.$nonBodyContent[b]&&!CKEDITOR.dtd.$block[b]&&!CKEDITOR.dtd.$listItem[b]&&!CKEDITOR.dtd.$tableContent[b]&&!(CKEDITOR.dtd.$nonEditable[b]||b=="br"));this.isEmpty=!!CKEDITOR.dtd.$empty[a];this.isUnknown=!CKEDITOR.dtd[a];this._={isBlockLike:b,hasInlineStarted:this.isEmpty||!b}}; CKEDITOR.htmlParser.cssStyle=function(a){var d={};((a instanceof CKEDITOR.htmlParser.element?a.attributes.style:a)||"").replace(/"/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(a,c,e){c=="font-family"&&(e=e.replace(/["']/g,""));d[c.toLowerCase()]=e});return{rules:d,populate:function(a){var c=this.toString();if(c)a instanceof CKEDITOR.dom.element?a.setAttribute("style",c):a instanceof CKEDITOR.htmlParser.element?a.attributes.style=c:a.style=c},toString:function(){var a=[],c; for(c in d)d[c]&&a.push(c,":",d[c],";");return a.join("")}}}; (function(){function a(a){return function(b){return b.type==CKEDITOR.NODE_ELEMENT&&(typeof a=="string"?b.name==a:b.name in a)}}var d=function(a,b){a=a[0];b=b[0];return ab?1:0},b=CKEDITOR.htmlParser.fragment.prototype;CKEDITOR.htmlParser.element.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_ELEMENT,add:b.add,clone:function(){return new CKEDITOR.htmlParser.element(this.name,this.attributes)},filter:function(a,b){var d=this,h,i,b=d.getFilterContext(b);if(b.off)return true; if(!d.parent)a.onRoot(b,d);for(;;){h=d.name;if(!(i=a.onElementName(b,h))){this.remove();return false}d.name=i;if(!(d=a.onElement(b,d))){this.remove();return false}if(d!==this){this.replaceWith(d);return false}if(d.name==h)break;if(d.type!=CKEDITOR.NODE_ELEMENT){this.replaceWith(d);return false}if(!d.name){this.replaceWithChildren();return false}}h=d.attributes;var j,n;for(j in h){n=j;for(i=h[j];;)if(n=a.onAttributeName(b,j))if(n!=j){delete h[j];j=n}else break;else{delete h[j];break}n&&((i=a.onAttribute(b, d,n,i))===false?delete h[n]:h[n]=i)}d.isEmpty||this.filterChildren(a,false,b);return true},filterChildren:b.filterChildren,writeHtml:function(a,b){b&&this.filter(b);var f=this.name,h=[],i=this.attributes,j,n;a.openTag(f,i);for(j in i)h.push([j,i[j]]);a.sortAttributes&&h.sort(d);j=0;for(n=h.length;j0)this.children[a-1].next=null;this.parent.add(d,this.getIndex()+1);return d},addClass:function(a){if(!this.hasClass(a)){var b=this.attributes["class"]||"";this.attributes["class"]=b+(b?" ":"")+ a}},removeClass:function(a){var b=this.attributes["class"];if(b)(b=CKEDITOR.tools.trim(b.replace(RegExp("(?:\\s+|^)"+a+"(?:\\s+|$)")," ")))?this.attributes["class"]=b:delete this.attributes["class"]},hasClass:function(a){var b=this.attributes["class"];return!b?false:RegExp("(?:^|\\s)"+a+"(?=\\s|$)").test(b)},getFilterContext:function(a){var b=[];a||(a={off:false,nonEditable:false,nestedEditable:false});!a.off&&this.attributes["data-cke-processor"]=="off"&&b.push("off",true);!a.nonEditable&&this.attributes.contenteditable== "false"?b.push("nonEditable",true):a.nonEditable&&(!a.nestedEditable&&this.attributes.contenteditable=="true")&&b.push("nestedEditable",true);if(b.length)for(var a=CKEDITOR.tools.copy(a),d=0;d'+c.getValue()+"
        ",CKEDITOR.document); a.insertAfter(c);c.hide();c.$.form&&b._attachToForm()}else b.setData(a.getHtml(),null,true);b.on("loaded",function(){b.fire("uiReady");b.editable(a);b.container=a;b.ui.contentsElement=a;b.setData(b.getData(1));b.resetDirty();b.fire("contentDom");b.mode="wysiwyg";b.fire("mode");b.status="ready";b.fireOnce("instanceReady");CKEDITOR.fire("instanceReady",null,b)},null,null,1E4);b.on("destroy",function(){if(c){b.container.clearCustomData();b.container.remove();c.show()}b.element.clearCustomData();delete b.element}); return b};CKEDITOR.inlineAll=function(){var a,d,b;for(b in CKEDITOR.dtd.$editable)for(var c=CKEDITOR.document.getElementsByTag(b),e=0,f=c.count();e"+(a.title?'{voiceLabel}':"")+'<{outerEl} class="cke_inner cke_reset" role="presentation">{topHtml}<{outerEl} id="{contentId}" class="cke_contents cke_reset" role="presentation">{bottomHtml}'), b=CKEDITOR.dom.element.createFromHtml(n.output({id:a.id,name:b,langDir:a.lang.dir,langCode:a.langCode,voiceLabel:a.title,topHtml:i?''+i+"":"",contentId:a.ui.spaceId("contents"),bottomHtml:j?''+j+"":"",outerEl:CKEDITOR.env.ie?"span":"div"}));if(h==CKEDITOR.ELEMENT_MODE_REPLACE){d.hide();b.insertAfter(d)}else d.append(b); a.container=b;a.ui.contentsElement=a.ui.space("contents");i&&a.ui.space("top").unselectable();j&&a.ui.space("bottom").unselectable();d=a.config.width;h=a.config.height;d&&b.setStyle("width",CKEDITOR.tools.cssLength(d));h&&a.ui.space("contents").setStyle("height",CKEDITOR.tools.cssLength(h));b.disableContextMenu();CKEDITOR.env.webkit&&b.on("focus",function(){a.focus()});a.fireOnce("uiReady")}CKEDITOR.replace=function(b,d){return a(b,d,null,CKEDITOR.ELEMENT_MODE_REPLACE)};CKEDITOR.appendTo=function(b, d,f){return a(b,d,f,CKEDITOR.ELEMENT_MODE_APPENDTO)};CKEDITOR.replaceAll=function(){for(var a=document.getElementsByTagName("textarea"),b=0;b'+d+"");c.append(d);a.changeAttr("aria-describedby",e)}}})});CKEDITOR.addCss(".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}");var o=CKEDITOR.dom.walker.whitespaces(true),q=CKEDITOR.dom.walker.bookmark(false,true),t=CKEDITOR.dom.walker.empty(),w=CKEDITOR.dom.walker.bogus(),v=/(^|]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:]*>| |\u00A0| )?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi, B=function(){function a(b){return b.type==CKEDITOR.NODE_ELEMENT}function b(c,d){var e,g,f,u,l=[],p=d.range.startContainer;e=d.range.startPath();for(var p=h[p.getName()],i=0,j=c.getChildren(),s=j.count(),z=-1,K=-1,I=0,F=e.contains(h.$list);i-1)l[z].firstNotAllowed=1;if(K>-1)l[K].lastNotAllowed=1;return l}function c(b,d){var e=[],g=b.getChildren(),f=g.count(),u,l=0,m=h[d],p=!b.is(h.$inline)||b.is("br");for(p&&e.push(" ");l ",x.document);x.insertNode(r);x.setStartAfter(r)}o=new CKEDITOR.dom.elementPath(x.startContainer);l.endPath=E=new CKEDITOR.dom.elementPath(x.endContainer);if(!x.collapsed){var n=E.block||E.blockLimit,y=x.getCommonAncestor();n&&(!n.equals(y)&&!n.contains(y)&&x.checkEndOfBlock())&& l.zombies.push(n);x.deleteContents()}for(;(q=a(x.startContainer)&&x.startContainer.getChild(x.startOffset-1))&&a(q)&&q.isBlockBoundary()&&o.contains(q);)x.moveToPosition(q,CKEDITOR.POSITION_BEFORE_END);e(x,l.blockLimit,o,E);if(r){x.setEndBefore(r);x.collapse();r.remove()}r=x.startPath();if(n=r.contains(d,false,1)){x.splitElement(n);l.inlineStylesRoot=n;l.inlineStylesPeak=r.lastElement}r=x.createBookmark();(n=r.startNode.getPrevious(i))&&a(n)&&d(n)&&G.push(n);(n=r.startNode.getNext(i))&&a(n)&&d(n)&& G.push(n);for(n=r.startNode;(n=n.getParent())&&d(n);)G.push(n);x.moveToBookmark(r);if(r=s){r=l.range;if(l.type=="text"&&l.inlineStylesRoot){q=l.inlineStylesPeak;x=q.getDocument().createText("{cke-peak}");for(G=l.inlineStylesRoot.getParent();!q.equals(G);){x=x.appendTo(q.clone());q=q.getParent()}s=x.getOuterHtml().split("{cke-peak}").join(s)}q=l.blockLimit.getName();if(/^\s+|\s+$/.test(s)&&"span"in CKEDITOR.dtd[q])var v=' ',s=v+s+v;s=l.editor.dataProcessor.toHtml(s, {context:null,fixForBody:false,protectedWhitespaces:!!v,dontFilter:l.dontFilter,filter:l.editor.activeFilter,enterMode:l.editor.activeEnterMode});q=r.document.createElement("body");q.setHtml(s);if(v){q.getFirst().remove();q.getLast().remove()}if((v=r.startPath().block)&&!(v.getChildCount()==1&&v.getBogus()))a:{var t;if(q.getChildCount()==1&&a(t=q.getFirst())&&t.is(u)&&!t.hasAttribute("contenteditable")){v=t.getElementsByTag("*");r=0;for(G=v.count();r0;else{H=t.startPath();if(!E.isBlock&&g(l.editor,H.block,H.blockLimit)&&(B=A(l.editor))){B=r.createElement(B);B.appendBogus();t.insertNode(B);CKEDITOR.env.needsBrFiller&&(J=B.getBogus())&&J.remove();t.moveToPosition(B,CKEDITOR.POSITION_BEFORE_END)}if((H=t.startPath().block)&&!H.equals(w)){if(J=H.getBogus()){J.remove(); v.push(H)}w=H}E.firstNotAllowed&&(n=1);if(n&&E.isElement){H=t.startContainer;for(O=null;H&&!h[H.getName()][E.name];){if(H.equals(q)){H=null;break}O=H;H=H.getParent()}if(H){if(O){V=t.splitElement(O);l.zombies.push(V);l.zombies.push(O)}}else{O=q.getName();W=!G;H=G==x.length-1;O=c(E.node,O);for(var Q=[],S=O.length,R=0,P=void 0,X=0,$=-1;R0;){d=a.getItem(b);if(!CKEDITOR.tools.trim(d.getHtml())){d.appendBogus(); CKEDITOR.env.ie&&(CKEDITOR.env.version<9&&d.getChildCount())&&d.getFirst().remove()}}}return function(d){var e=d.startContainer,g=e.getAscendant("table",1),f=false;c(g.getElementsByTag("td"));c(g.getElementsByTag("th"));g=d.clone();g.setStart(e,0);g=a(g).lastBackward();if(!g){g=d.clone();g.setEndAt(e,CKEDITOR.POSITION_BEFORE_END);g=a(g).lastForward();f=true}g||(g=e);if(g.is("table")){d.setStartAt(g,CKEDITOR.POSITION_BEFORE_START);d.collapse(true);g.remove()}else{g.is({tbody:1,thead:1,tfoot:1})&&(g= b(g,"tr",f));g.is("tr")&&(g=b(g,g.getParent().is("thead")?"th":"td",f));(e=g.getBogus())&&e.remove();d.moveToPosition(g,f?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END)}}}();a={detect:function(a,b){var c=a.range,d=c.clone(),e=c.clone(),g=new CKEDITOR.dom.elementPath(c.startContainer,b),f=new CKEDITOR.dom.elementPath(c.endContainer,b);d.collapse(1);e.collapse();if(g.block&&d.checkBoundaryOfElement(g.block,CKEDITOR.END)){c.setStartAfter(g.block);a.prependEolBr=1}if(f.block&&e.checkBoundaryOfElement(f.block, CKEDITOR.START)){c.setEndBefore(f.block);a.appendEolBr=1}},fix:function(a,b){var c=b.getDocument(),d;if(a.appendEolBr){d=this.createEolBr(c);a.fragment.append(d)}a.prependEolBr&&(!d||d.getPrevious())&&a.fragment.append(this.createEolBr(c),1)},createEolBr:function(a){return a.createElement("br",{attributes:{"data-cke-eol":1}})}};d={exclude:function(a){var b=a.range.getBoundaryNodes(),c=b.startNode;(b=b.endNode)&&(w(b)&&(!c||!c.equals(b)))&&a.range.setEndBefore(b)}};c={rebuild:function(a,b){var c=a.range, d=c.getCommonAncestor(),e=new CKEDITOR.dom.elementPath(d,b),g=new CKEDITOR.dom.elementPath(c.startContainer,b),c=new CKEDITOR.dom.elementPath(c.endContainer,b),f;d.type==CKEDITOR.NODE_TEXT&&(d=d.getParent());if(e.blockLimit.is({tr:1,table:1})){var h=e.contains("table").getParent();f=function(a){return!a.equals(h)}}else if(e.block&&e.block.is(CKEDITOR.dtd.$listItem)){g=g.contains(CKEDITOR.dtd.$list);c=c.contains(CKEDITOR.dtd.$list);if(!g.equals(c)){var l=e.contains(CKEDITOR.dtd.$list).getParent(); f=function(a){return!a.equals(l)}}}f||(f=function(a){return!a.equals(e.block)&&!a.equals(e.blockLimit)});this.rebuildFragment(a,b,d,f)},rebuildFragment:function(a,b,c,d){for(var e;c&&!c.equals(b)&&d(c);){e=c.clone(0,1);a.fragment.appendTo(e);a.fragment=e;c=c.getParent()}}};b={shrink:function(a){var a=a.range,b=a.startContainer,c=a.endContainer,d=a.startOffset,e=a.endOffset;b.type==CKEDITOR.NODE_ELEMENT&&(b.equals(c)&&b.is("tr")&&++d==e)&&a.shrink(CKEDITOR.SHRINK_TEXT)}};var s=function(){function a(b, c){var d=b.getParent();if(d.is(CKEDITOR.dtd.$inline))b[c?"insertBefore":"insertAfter"](d)}function b(c,d,e){a(d);a(e,1);for(var g;g=e.getNext();){g.insertAfter(d);d=g}t(c)&&c.remove()}function c(a,b){var d=new CKEDITOR.dom.range(a);d.setStartAfter(b.startNode);d.setEndBefore(b.endNode);return d}return{list:{detectMerge:function(a,b){var d=c(b,a.bookmark),e=d.startPath(),g=d.endPath(),f=e.contains(CKEDITOR.dtd.$list),h=g.contains(CKEDITOR.dtd.$list);a.mergeList=f&&h&&f.getParent().equals(h.getParent())&& !f.equals(h);a.mergeListItems=e.block&&g.block&&e.block.is(CKEDITOR.dtd.$listItem)&&g.block.is(CKEDITOR.dtd.$listItem);if(a.mergeList||a.mergeListItems){d=d.clone();d.setStartBefore(a.bookmark.startNode);d.setEndAfter(a.bookmark.endNode);a.mergeListBookmark=d.createBookmark()}},merge:function(a,c){if(a.mergeListBookmark){var d=a.mergeListBookmark.startNode,e=a.mergeListBookmark.endNode,g=new CKEDITOR.dom.elementPath(d,c),f=new CKEDITOR.dom.elementPath(e,c);if(a.mergeList){var h=g.contains(CKEDITOR.dtd.$list), k=f.contains(CKEDITOR.dtd.$list);if(!h.equals(k)){k.moveChildren(h);k.remove()}}if(a.mergeListItems){g=g.contains(CKEDITOR.dtd.$listItem);f=f.contains(CKEDITOR.dtd.$listItem);g.equals(f)||b(f,d,e)}d.remove();e.remove()}}},block:{detectMerge:function(a,b){if(!a.tableContentsRanges&&!a.mergeListBookmark){var c=new CKEDITOR.dom.range(b);c.setStartBefore(a.bookmark.startNode);c.setEndAfter(a.bookmark.endNode);a.mergeBlockBookmark=c.createBookmark()}},merge:function(a,c){if(a.mergeBlockBookmark&&!a.purgeTableBookmark){var d= a.mergeBlockBookmark.startNode,e=a.mergeBlockBookmark.endNode,g=new CKEDITOR.dom.elementPath(d,c),f=new CKEDITOR.dom.elementPath(e,c),g=g.block,f=f.block;g&&(f&&!g.equals(f))&&b(f,d,e);d.remove();e.remove()}}},table:function(){function a(c){var e=[],g,f=new CKEDITOR.dom.walker(c),h=c.startPath().contains(d),k=c.endPath().contains(d),l={};f.guard=function(a,f){if(a.type==CKEDITOR.NODE_ELEMENT){var m="visited_"+(f?"out":"in");if(a.getCustomData(m))return;CKEDITOR.dom.element.setMarker(l,a,m,1)}if(f&& h&&a.equals(h)){g=c.clone();g.setEndAt(h,CKEDITOR.POSITION_BEFORE_END);e.push(g)}else if(!f&&k&&a.equals(k)){g=c.clone();g.setStartAt(k,CKEDITOR.POSITION_AFTER_START);e.push(g)}else if(!f&&a.type==CKEDITOR.NODE_ELEMENT&&a.is(d)&&(!h||b(a,h))&&(!k||b(a,k))){g=c.clone();g.selectNodeContents(a);e.push(g)}};f.lastForward();CKEDITOR.dom.element.clearAllMarkers(l);return e}function b(a,c){var d=CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CONTAINED,e=a.getPosition(c);return e===CKEDITOR.POSITION_IDENTICAL? false:(e&d)===0}var d={td:1,th:1,caption:1};return{detectPurge:function(a){var b=a.range,c=b.clone();c.enlarge(CKEDITOR.ENLARGE_ELEMENT);var c=new CKEDITOR.dom.walker(c),e=0;c.evaluator=function(a){a.type==CKEDITOR.NODE_ELEMENT&&a.is(d)&&++e};c.checkForward();if(e>1){var c=b.startPath().contains("table"),g=b.endPath().contains("table");if(c&&g&&b.checkBoundaryOfElement(c,CKEDITOR.START)&&b.checkBoundaryOfElement(g,CKEDITOR.END)){b=a.range.clone();b.setStartBefore(c);b.setEndAfter(g);a.purgeTableBookmark= b.createBookmark()}}},detectRanges:function(e,g){var f=c(g,e.bookmark),h=f.clone(),k,l,m=f.getCommonAncestor();m.is(CKEDITOR.dtd.$tableContent)&&!m.is(d)&&(m=m.getAscendant("table",true));l=m;m=new CKEDITOR.dom.elementPath(f.startContainer,l);l=new CKEDITOR.dom.elementPath(f.endContainer,l);m=m.contains("table");l=l.contains("table");if(m||l){if(m&&l&&b(m,l)){e.tableSurroundingRange=h;h.setStartAt(m,CKEDITOR.POSITION_AFTER_END);h.setEndAt(l,CKEDITOR.POSITION_BEFORE_START);h=f.clone();h.setEndAt(m, CKEDITOR.POSITION_AFTER_END);k=f.clone();k.setStartAt(l,CKEDITOR.POSITION_BEFORE_START);k=a(h).concat(a(k))}else if(m){if(!l){e.tableSurroundingRange=h;h.setStartAt(m,CKEDITOR.POSITION_AFTER_END);f.setEndAt(m,CKEDITOR.POSITION_AFTER_END)}}else{e.tableSurroundingRange=h;h.setEndAt(l,CKEDITOR.POSITION_BEFORE_START);f.setStartAt(l,CKEDITOR.POSITION_AFTER_START)}e.tableContentsRanges=k?k:a(f)}},deleteRanges:function(a){for(var b;b=a.tableContentsRanges.pop();){b.extractContents();t(b.startContainer)&& b.startContainer.appendBogus()}a.tableSurroundingRange&&a.tableSurroundingRange.extractContents()},purge:function(a){if(a.purgeTableBookmark){var b=a.doc,c=a.range.clone(),b=b.createElement("p");b.insertBefore(a.purgeTableBookmark.startNode);c.moveToBookmark(a.purgeTableBookmark);c.deleteContents();a.range.moveToPosition(b,CKEDITOR.POSITION_AFTER_START)}}}}(),detectExtractMerge:function(a){return!(a.range.startPath().contains(CKEDITOR.dtd.$listItem)&&a.range.endPath().contains(CKEDITOR.dtd.$listItem))}, fixUneditableRangePosition:function(a){a.startContainer.getDtd()["#"]||a.moveToClosestEditablePosition(null,true)},autoParagraph:function(a,b){var c=b.startPath(),d;if(g(a,c.block,c.blockLimit)&&(d=A(a))){d=b.document.createElement(d);d.appendBogus();b.insertNode(d);b.moveToPosition(d,CKEDITOR.POSITION_AFTER_START)}}}}()})(); (function(){function a(){var a=this._.fakeSelection,b;if(a){b=this.getSelection(1);if(!b||!b.isHidden()){a.reset();a=0}}if(!a){a=b||this.getSelection(1);if(!a||a.getType()==CKEDITOR.SELECTION_NONE)return}this.fire("selectionCheck",a);b=this.elementPath();if(!b.compare(this._.selectionPreviousPath)){if(CKEDITOR.env.webkit)this._.previousActive=this.document.getActive();this._.selectionPreviousPath=b;this.fire("selectionChange",{selection:a,path:b})}}function d(){o=true;if(!y){b.call(this);y=CKEDITOR.tools.setTimeout(b, 200,this)}}function b(){y=null;if(o){CKEDITOR.tools.setTimeout(a,0,this);o=false}}function c(a){return q(a)||a.type==CKEDITOR.NODE_ELEMENT&&!a.is(CKEDITOR.dtd.$empty)?true:false}function e(a){function b(c,d){return!c||c.type==CKEDITOR.NODE_TEXT?false:a.clone()["moveToElementEdit"+(d?"End":"Start")](c)}if(!(a.root instanceof CKEDITOR.editable))return false;var d=a.startContainer,e=a.getPreviousNode(c,null,d),g=a.getNextNode(c,null,d);return b(e)||b(g,1)||!e&&!g&&!(d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()&& d.getBogus())?true:false}function f(a){return a.getCustomData("cke-fillingChar")}function h(a,b){var c=a&&a.removeCustomData("cke-fillingChar");if(c){if(b!==false){var d,e=a.getDocument().getSelection().getNative(),g=e&&e.type!="None"&&e.getRangeAt(0);if(c.getLength()>1&&g&&g.intersectsNode(c.$)){d=j(e);g=e.focusNode==c.$&&e.focusOffset>0;e.anchorNode==c.$&&e.anchorOffset>0&&d[0].offset--;g&&d[1].offset--}}c.setText(i(c.getText()));d&&n(a.getDocument().$,d)}}function i(a){return a.replace(/\u200B( )?/g, function(a){return a[1]?" ":""})}function j(a){return[{node:a.anchorNode,offset:a.anchorOffset},{node:a.focusNode,offset:a.focusOffset}]}function n(a,b){var c=a.getSelection(),d=a.createRange();d.setStart(b[0].node,b[0].offset);d.collapse(true);c.removeAllRanges();c.addRange(d);c.extend(b[1].node,b[1].offset)}function g(a){var b=CKEDITOR.dom.element.createFromHtml('
         
        ', a.document);a.fire("lockSnapshot");a.editable().append(b);var c=a.getSelection(1),d=a.createRange(),e=c.root.on("selectionchange",function(a){a.cancel()},null,null,0);d.setStartAt(b,CKEDITOR.POSITION_AFTER_START);d.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);c.selectRanges([d]);e.removeListener();a.fire("unlockSnapshot");a._.hiddenSelectionContainer=b}function A(a){var b={37:1,39:1,8:1,46:1};return function(c){var d=c.data.getKeystroke();if(b[d]){var e=a.getSelection().getRanges(),g=e[0];if(e.length== 1&&g.collapsed)if((d=g[d<38?"getPreviousEditableNode":"getNextEditableNode"]())&&d.type==CKEDITOR.NODE_ELEMENT&&d.getAttribute("contenteditable")=="false"){a.getSelection().fake(d);c.data.preventDefault();c.cancel()}}}}function r(a){for(var b=0;b=d.getLength()?h.setStartAfter(d):h.setStartBefore(d));e&&e.type==CKEDITOR.NODE_TEXT&&(f?h.setEndAfter(e):h.setEndBefore(e));d=new CKEDITOR.dom.walker(h);d.evaluator=function(d){if(d.type==CKEDITOR.NODE_ELEMENT&&d.isReadOnly()){var e=c.clone();c.setEndBefore(d);c.collapsed&&a.splice(b--,1);if(!(d.getPosition(h.endContainer)&CKEDITOR.POSITION_CONTAINS)){e.setStartAfter(d); e.collapsed||a.splice(b+1,0,e)}return true}return false};d.next()}}return a}var y,o,q=CKEDITOR.dom.walker.invisible(1),t=function(){function a(b){return function(a){var c=a.editor.createRange();c.moveToClosestEditablePosition(a.selected,b)&&a.editor.getSelection().selectRanges([c]);return false}}function b(a){return function(b){var c=b.editor,d=c.createRange(),e;if(!(e=d.moveToClosestEditablePosition(b.selected,a)))e=d.moveToClosestEditablePosition(b.selected,!a);e&&c.getSelection().selectRanges([d]); c.fire("saveSnapshot");b.selected.remove();if(!e){d.moveToElementEditablePosition(c.editable());c.getSelection().selectRanges([d])}c.fire("saveSnapshot");return false}}var c=a(),d=a(1);return{37:c,38:c,39:d,40:d,8:b(),46:b(1)}}();CKEDITOR.on("instanceCreated",function(b){function c(){var a=e.getSelection();a&&a.removeAllRanges()}var e=b.editor;e.on("contentDom",function(){function b(){C=new CKEDITOR.dom.selection(e.getSelection());C.lock()}function c(){f.removeListener("mouseup",c);j.removeListener("mouseup", c);var a=CKEDITOR.document.$.selection,b=a.createRange();a.type!="None"&&b.parentElement().ownerDocument==g.$&&b.select()}var g=e.document,f=CKEDITOR.document,l=e.editable(),i=g.getBody(),j=g.getDocumentElement(),u=l.isInline(),s,C;CKEDITOR.env.gecko&&l.attachListener(l,"focus",function(a){a.removeListener();if(s!==0)if((a=e.getSelection().getNative())&&a.isCollapsed&&a.anchorNode==l.$){a=e.createRange();a.moveToElementEditStart(l);a.select()}},null,null,-2);l.attachListener(l,CKEDITOR.env.webkit? "DOMFocusIn":"focus",function(){s&&CKEDITOR.env.webkit&&(s=e._.previousActive&&e._.previousActive.equals(g.getActive()));e.unlockSelection(s);s=0},null,null,-1);l.attachListener(l,"mousedown",function(){s=0});if(CKEDITOR.env.ie||u){w?l.attachListener(l,"beforedeactivate",b,null,null,-1):l.attachListener(e,"selectionCheck",b,null,null,-1);l.attachListener(l,CKEDITOR.env.webkit?"DOMFocusOut":"blur",function(){e.lockSelection(C);s=1},null,null,-1);l.attachListener(l,"mousedown",function(){s=0})}if(CKEDITOR.env.ie&& !u){var x;l.attachListener(l,"mousedown",function(a){if(a.data.$.button==2){a=e.document.getSelection();if(!a||a.getType()==CKEDITOR.SELECTION_NONE)x=e.window.getScrollPosition()}});l.attachListener(l,"mouseup",function(a){if(a.data.$.button==2&&x){e.document.$.documentElement.scrollLeft=x.x;e.document.$.documentElement.scrollTop=x.y}x=null});if(g.$.compatMode!="BackCompat"){if(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)j.on("mousedown",function(a){function b(a){a=a.data.$;if(d){var c=i.$.createTextRange(); try{c.moveToPoint(a.clientX,a.clientY)}catch(e){}d.setEndPoint(g.compareEndPoints("StartToStart",c)<0?"EndToEnd":"StartToStart",c);d.select()}}function c(){j.removeListener("mousemove",b);f.removeListener("mouseup",c);j.removeListener("mouseup",c);d.select()}a=a.data;if(a.getTarget().is("html")&&a.$.y7&&CKEDITOR.env.version<11)j.on("mousedown",function(a){if(a.data.getTarget().is("html")){f.on("mouseup",c);j.on("mouseup",c)}})}}l.attachListener(l,"selectionchange",a,e);l.attachListener(l,"keyup",d,e);l.attachListener(l,CKEDITOR.env.webkit?"DOMFocusIn":"focus",function(){e.forceNextSelectionCheck();e.selectionChange(1)});if(u&&(CKEDITOR.env.webkit||CKEDITOR.env.gecko)){var n;l.attachListener(l,"mousedown",function(){n=1});l.attachListener(g.getDocumentElement(),"mouseup", function(){n&&d.call(e);n=0})}else l.attachListener(CKEDITOR.env.ie?l:g.getDocumentElement(),"mouseup",d,e);CKEDITOR.env.webkit&&l.attachListener(g,"keydown",function(a){switch(a.data.getKey()){case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:h(l)}},null,null,-1);l.attachListener(l,"keydown",A(e),null,null,-1)});e.on("setData",function(){e.unlockSelection();CKEDITOR.env.webkit&&c()});e.on("contentDomUnload",function(){e.unlockSelection()});if(CKEDITOR.env.ie9Compat)e.on("beforeDestroy", c,null,null,9);e.on("dataReady",function(){delete e._.fakeSelection;delete e._.hiddenSelectionContainer;e.selectionChange(1)});e.on("loadSnapshot",function(){var a=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT),b=e.editable().getLast(a);if(b&&b.hasAttribute("data-cke-hidden-sel")){b.remove();if(CKEDITOR.env.gecko)(a=e.editable().getFirst(a))&&(a.is("br")&&a.getAttribute("_moz_editor_bogus_node"))&&a.remove()}},null,null,100);e.on("key",function(a){if(e.mode=="wysiwyg"){var b=e.getSelection(); if(b.isFake){var c=t[a.data.keyCode];if(c)return c({editor:e,selected:b.getSelectedElement(),selection:b,keyEvent:a})}}})});CKEDITOR.on("instanceReady",function(a){function b(){var a=d.editable();if(a)if(a=f(a)){var c=d.document.$.getSelection();if(c.type!="None"&&(c.anchorNode==a.$||c.focusNode==a.$))g=j(c);e=a.getText();a.setText(i(e))}}function c(){var a=d.editable();if(a)if(a=f(a)){a.setText(e);if(g){n(d.document.$,g);g=null}}}var d=a.editor,e,g;if(CKEDITOR.env.webkit){d.on("selectionChange", function(){var a=d.editable(),b=f(a);b&&(b.getCustomData("ready")?h(a):b.setCustomData("ready",1))},null,null,-1);d.on("beforeSetMode",function(){h(d.editable())},null,null,-1);d.on("beforeUndoImage",b);d.on("afterUndoImage",c);d.on("beforeGetData",b,null,null,0);d.on("getData",c)}});CKEDITOR.editor.prototype.selectionChange=function(b){(b?a:d).call(this)};CKEDITOR.editor.prototype.getSelection=function(a){if((this._.savedSelection||this._.fakeSelection)&&!a)return this._.savedSelection||this._.fakeSelection; return(a=this.editable())&&this.mode=="wysiwyg"?new CKEDITOR.dom.selection(a):null};CKEDITOR.editor.prototype.lockSelection=function(a){a=a||this.getSelection(1);if(a.getType()!=CKEDITOR.SELECTION_NONE){!a.isLocked&&a.lock();this._.savedSelection=a;return true}return false};CKEDITOR.editor.prototype.unlockSelection=function(a){var b=this._.savedSelection;if(b){b.unlock(a);delete this._.savedSelection;return true}return false};CKEDITOR.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath}; CKEDITOR.dom.document.prototype.getSelection=function(){return new CKEDITOR.dom.selection(this)};CKEDITOR.dom.range.prototype.select=function(){var a=this.root instanceof CKEDITOR.editable?this.root.editor.getSelection():new CKEDITOR.dom.selection(this.root);a.selectRanges([this]);return a};CKEDITOR.SELECTION_NONE=1;CKEDITOR.SELECTION_TEXT=2;CKEDITOR.SELECTION_ELEMENT=3;var w=typeof window.getSelection!="function",v=1;CKEDITOR.dom.selection=function(a){if(a instanceof CKEDITOR.dom.selection)var b= a,a=a.root;var c=a instanceof CKEDITOR.dom.element;this.rev=b?b.rev:v++;this.document=a instanceof CKEDITOR.dom.document?a:a.getDocument();this.root=c?a:this.document.getBody();this.isLocked=0;this._={cache:{}};if(b){CKEDITOR.tools.extend(this._.cache,b._.cache);this.isFake=b.isFake;this.isLocked=b.isLocked;return this}var a=this.getNative(),d,e;if(a)if(a.getRangeAt)d=(e=a.rangeCount&&a.getRangeAt(0))&&new CKEDITOR.dom.node(e.commonAncestorContainer);else{try{e=a.createRange()}catch(g){}d=e&&CKEDITOR.dom.element.get(e.item&& e.item(0)||e.parentElement())}if(!d||!(d.type==CKEDITOR.NODE_ELEMENT||d.type==CKEDITOR.NODE_TEXT)||!this.root.equals(d)&&!this.root.contains(d)){this._.cache.type=CKEDITOR.SELECTION_NONE;this._.cache.startElement=null;this._.cache.selectedElement=null;this._.cache.selectedText="";this._.cache.ranges=new CKEDITOR.dom.rangeList}return this};var B={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,thead:1,tfoot:1};CKEDITOR.dom.selection.prototype= {getNative:function(){return this._.cache.nativeSel!==void 0?this._.cache.nativeSel:this._.cache.nativeSel=w?this.document.$.selection:this.document.getWindow().$.getSelection()},getType:w?function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_NONE;try{var c=this.getNative(),d=c.type;if(d=="Text")b=CKEDITOR.SELECTION_TEXT;if(d=="Control")b=CKEDITOR.SELECTION_ELEMENT;if(c.createRange().parentElement())b=CKEDITOR.SELECTION_TEXT}catch(e){}return a.type=b}:function(){var a=this._.cache; if(a.type)return a.type;var b=CKEDITOR.SELECTION_TEXT,c=this.getNative();if(!c||!c.rangeCount)b=CKEDITOR.SELECTION_NONE;else if(c.rangeCount==1){var c=c.getRangeAt(0),d=c.startContainer;if(d==c.endContainer&&d.nodeType==1&&c.endOffset-c.startOffset==1&&B[d.childNodes[c.startOffset].nodeName.toLowerCase()])b=CKEDITOR.SELECTION_ELEMENT}return a.type=b},getRanges:function(){var a=w?function(){function a(b){return(new CKEDITOR.dom.node(b)).getIndex()}var b=function(b,c){b=b.duplicate();b.collapse(c); var d=b.parentElement();if(!d.hasChildNodes())return{container:d,offset:0};for(var e=d.children,g,f,h=b.duplicate(),l=0,k=e.length-1,i=-1,j,n;l<=k;){i=Math.floor((l+k)/2);g=e[i];h.moveToElementText(g);j=h.compareEndPoints("StartToStart",b);if(j>0)k=i-1;else if(j<0)l=i+1;else return{container:d,offset:a(g)}}if(i==-1||i==e.length-1&&j<0){h.moveToElementText(d);h.setEndPoint("StartToStart",b);h=h.text.replace(/(\r\n|\r)/g,"\n").length;e=d.childNodes;if(!h){g=e[e.length-1];return g.nodeType!=CKEDITOR.NODE_TEXT? {container:d,offset:e.length}:{container:g,offset:g.nodeValue.length}}for(d=e.length;h>0&&d>0;){f=e[--d];if(f.nodeType==CKEDITOR.NODE_TEXT){n=f;h=h-f.nodeValue.length}}return{container:n,offset:-h}}h.collapse(j>0?true:false);h.setEndPoint(j>0?"StartToStart":"EndToStart",b);h=h.text.replace(/(\r\n|\r)/g,"\n").length;if(!h)return{container:d,offset:a(g)+(j>0?0:1)};for(;h>0;)try{f=g[j>0?"previousSibling":"nextSibling"];if(f.nodeType==CKEDITOR.NODE_TEXT){h=h-f.nodeValue.length;n=f}g=f}catch(o){return{container:d, offset:a(g)}}return{container:n,offset:j>0?-h:n.nodeValue.length+h}};return function(){var a=this.getNative(),c=a&&a.createRange(),d=this.getType();if(!a)return[];if(d==CKEDITOR.SELECTION_TEXT){a=new CKEDITOR.dom.range(this.root);d=b(c,true);a.setStart(new CKEDITOR.dom.node(d.container),d.offset);d=b(c);a.setEnd(new CKEDITOR.dom.node(d.container),d.offset);a.endContainer.getPosition(a.startContainer)&CKEDITOR.POSITION_PRECEDING&&a.endOffset<=a.startContainer.getIndex()&&a.collapse();return[a]}if(d== CKEDITOR.SELECTION_ELEMENT){for(var d=[],e=0;e1){f=a[a.length-1];a[0].setEnd(f.endContainer,f.endOffset)}f=a[0];var a=f.collapsed,n,o,u;if((c=f.getEnclosedNode())&&c.type==CKEDITOR.NODE_ELEMENT&&c.getName()in B&&(!c.is("a")||!c.getText()))try{u=c.$.createControlRange(); u.addElement(c.$);u.select();return}catch(K){}if(f.startContainer.type==CKEDITOR.NODE_ELEMENT&&f.startContainer.getName()in b||f.endContainer.type==CKEDITOR.NODE_ELEMENT&&f.endContainer.getName()in b){f.shrink(CKEDITOR.NODE_ELEMENT,true);a=f.collapsed}u=f.createBookmark();b=u.startNode;if(!a)g=u.endNode;u=f.document.$.body.createTextRange();u.moveToElementText(b.$);u.moveStart("character",1);if(g){i=f.document.$.body.createTextRange();i.moveToElementText(g.$);u.setEndPoint("EndToEnd",i);u.moveEnd("character", -1)}else{n=b.getNext(j);o=b.hasAscendant("pre");n=!(n&&n.getText&&n.getText().match(i))&&(o||!b.hasPrevious()||b.getPrevious().is&&b.getPrevious().is("br"));o=f.document.createElement("span");o.setHtml("");o.insertBefore(b);n&&f.document.createText("").insertBefore(b)}f.setStartBefore(b);b.remove();if(a){if(n){u.moveStart("character",-1);u.select();f.document.$.selection.clear()}else u.select();f.moveToPosition(o,CKEDITOR.POSITION_BEFORE_START);o.remove()}else{f.setEndBefore(g);g.remove(); u.select()}}else{g=this.getNative();if(!g)return;this.removeAllRanges();for(u=0;u=0){f.collapse(1);o.setEnd(f.endContainer.$, f.endOffset)}else throw C;}g.addRange(o)}}this.reset();this.root.fire("selectionchange")}}},fake:function(a){var b=this.root.editor;this.reset();g(b);var c=this._.cache,d=new CKEDITOR.dom.range(this.root);d.setStartBefore(a);d.setEndAfter(a);c.ranges=new CKEDITOR.dom.rangeList(d);c.selectedElement=c.startElement=a;c.type=CKEDITOR.SELECTION_ELEMENT;c.selectedText=c.nativeSel=null;this.isFake=1;this.rev=v++;b._.fakeSelection=this;this.root.fire("selectionchange")},isHidden:function(){var a=this.getCommonAncestor(); a&&a.type==CKEDITOR.NODE_TEXT&&(a=a.getParent());return!(!a||!a.data("cke-hidden-sel"))},createBookmarks:function(a){a=this.getRanges().createBookmarks(a);this.isFake&&(a.isFake=1);return a},createBookmarks2:function(a){a=this.getRanges().createBookmarks2(a);this.isFake&&(a.isFake=1);return a},selectBookmarks:function(a){for(var b=[],c,d=0;d]*>)[ \t\r\n]*/gi,"$1");f=f.replace(/([ \t\n\r]+| )/g, " ");f=f.replace(/]*>/gi,"\n");if(CKEDITOR.env.ie){var h=a.getDocument().createElement("div");h.append(e);e.$.outerHTML="
        "+f+"
        ";e.copyAttributes(h.getFirst());e=h.getFirst().remove()}else e.setHtml(f);b=e}else f?b=A(c?[a.getHtml()]:n(a),b):a.moveChildren(b);b.replace(a);if(d){var c=b,i;if((i=c.getPrevious(z))&&i.type==CKEDITOR.NODE_ELEMENT&&i.is("pre")){d=g(i.getHtml(),/\n$/,"")+"\n\n"+g(c.getHtml(),/^\n/,"");CKEDITOR.env.ie?c.$.outerHTML="
        "+d+"
        ":c.setHtml(d);i.remove()}}else c&& q(b)}function n(a){var b=[];g(a.getOuterHtml(),/(\S\s*)\n(?:\s|(]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi,function(a,b,c){return b+""+c+"
        "}).replace(/([\s\S]*?)<\/pre>/gi,function(a,c){b.push(c)});return b}function g(a,b,c){var d="",e="",a=a.replace(/(^]+data-cke-bookmark.*?\/span>)|(]+data-cke-bookmark.*?\/span>$)/gi,function(a,b,c){b&&(d=b);c&&(e=c);return""});return d+a.replace(b,c)+e}function A(a,b){var c;a.length>1&&(c=new CKEDITOR.dom.documentFragment(b.getDocument()));
        for(var d=0;d"),e=e.replace(/[ \t]{2,}/g,function(a){return CKEDITOR.tools.repeat(" ",a.length-1)+" "});if(c){var f=b.clone();f.setHtml(e);c.append(f)}else b.setHtml(e)}return c||b}function r(a,b){var c=this._.definition,
        d=c.attributes,c=c.styles,e=B(this)[a.getName()],g=CKEDITOR.tools.isEmpty(d)&&CKEDITOR.tools.isEmpty(c),f;for(f in d)if(!((f=="class"||this._.definition.fullMatch)&&a.getAttribute(f)!=l(f,d[f]))&&!(b&&f.slice(0,5)=="data-")){g=a.hasAttribute(f);a.removeAttribute(f)}for(var h in c)if(!(this._.definition.fullMatch&&a.getStyle(h)!=l(h,c[h],true))){g=g||!!a.getStyle(h);a.removeStyle(h)}o(a,e,k[a.getName()]);g&&(this._.definition.alwaysRemoveElement?q(a,1):!CKEDITOR.dtd.$block[a.getName()]||this._.enterMode==
        CKEDITOR.ENTER_BR&&!a.hasAttributes()?q(a):a.renameNode(this._.enterMode==CKEDITOR.ENTER_P?"p":"div"))}function y(a){for(var b=B(this),c=a.getElementsByTag(this.element),d,e=c.count();--e>=0;){d=c.getItem(e);d.isReadOnly()||r.call(this,d,true)}for(var g in b)if(g!=this.element){c=a.getElementsByTag(g);for(e=c.count()-1;e>=0;e--){d=c.getItem(e);d.isReadOnly()||o(d,b[g])}}}function o(a,b,c){if(b=b&&b.attributes)for(var d=0;d",a||b.name,"");return c.join("")},getDefinition:function(){return this._.definition}};CKEDITOR.style.getStyleText=function(a){var b=a._ST;if(b)return b;var b=a.styles,c=
        a.attributes&&a.attributes.style||"",d="";c.length&&(c=c.replace(F,";"));for(var e in b){var g=b[e],f=(e+":"+g).replace(F,";");g=="inherit"?d=d+f:c=c+f}c.length&&(c=CKEDITOR.tools.normalizeCssText(c,true));return a._ST=c+d};CKEDITOR.style.customHandlers={};CKEDITOR.style.addCustomHandler=function(a){var b=function(a){this._={definition:a};this.setup&&this.setup(a)};b.prototype=CKEDITOR.tools.extend(CKEDITOR.tools.prototypedCopy(CKEDITOR.style.prototype),{assignedTo:CKEDITOR.STYLE_OBJECT},a,true);
        return this.customHandlers[a.type]=b};var L=CKEDITOR.POSITION_PRECEDING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED,E=CKEDITOR.POSITION_FOLLOWING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED})();CKEDITOR.styleCommand=function(a,d){this.requiredContent=this.allowedContent=this.style=a;CKEDITOR.tools.extend(this,d,true)};
        CKEDITOR.styleCommand.prototype.exec=function(a){a.focus();this.state==CKEDITOR.TRISTATE_OFF?a.applyStyle(this.style):this.state==CKEDITOR.TRISTATE_ON&&a.removeStyle(this.style)};CKEDITOR.stylesSet=new CKEDITOR.resourceManager("","stylesSet");CKEDITOR.addStylesSet=CKEDITOR.tools.bind(CKEDITOR.stylesSet.add,CKEDITOR.stylesSet);CKEDITOR.loadStylesSet=function(a,d,b){CKEDITOR.stylesSet.addExternal(a,d,"");CKEDITOR.stylesSet.load(a,b)};
        CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{attachStyleStateChange:function(a,d){var b=this._.styleStateChangeCallbacks;if(!b){b=this._.styleStateChangeCallbacks=[];this.on("selectionChange",function(a){for(var d=0;d"}});"use strict";
        (function(){var a={},d={},b;for(b in CKEDITOR.dtd.$blockLimit)b in CKEDITOR.dtd.$list||(a[b]=1);for(b in CKEDITOR.dtd.$block)b in CKEDITOR.dtd.$blockLimit||b in CKEDITOR.dtd.$empty||(d[b]=1);CKEDITOR.dom.elementPath=function(b,e){var f=null,h=null,i=[],j=b,n,e=e||b.getDocument().getBody();do if(j.type==CKEDITOR.NODE_ELEMENT){i.push(j);if(!this.lastElement){this.lastElement=j;if(j.is(CKEDITOR.dtd.$object)||j.getAttribute("contenteditable")=="false")continue}if(j.equals(e))break;if(!h){n=j.getName();
        j.getAttribute("contenteditable")=="true"?h=j:!f&&d[n]&&(f=j);if(a[n]){var g;if(g=!f){if(n=n=="div"){a:{n=j.getChildren();g=0;for(var A=n.count();g-1}:typeof a=="function"?c=a:typeof a=="object"&&(c=
        function(b){return b.getName()in a});var e=this.elements,f=e.length;d&&f--;if(b){e=Array.prototype.slice.call(e,0);e.reverse()}for(d=0;d=c){f=e.createText("");f.insertAfter(this)}else{a=e.createText("");a.insertAfter(f);a.remove()}return f},substring:function(a,
        d){return typeof d!="number"?this.$.nodeValue.substr(a):this.$.nodeValue.substring(a,d)}});
        (function(){function a(a,c,d){var f=a.serializable,h=c[d?"endContainer":"startContainer"],i=d?"endOffset":"startOffset",j=f?c.document.getById(a.startNode):a.startNode,a=f?c.document.getById(a.endNode):a.endNode;if(h.equals(j.getPrevious())){c.startOffset=c.startOffset-h.getLength()-a.getPrevious().getLength();h=a.getNext()}else if(h.equals(a.getPrevious())){c.startOffset=c.startOffset-h.getLength();h=a.getNext()}h.equals(j.getParent())&&c[i]++;h.equals(a.getParent())&&c[i]++;c[d?"endContainer":"startContainer"]=
        h;return c}CKEDITOR.dom.rangeList=function(a){if(a instanceof CKEDITOR.dom.rangeList)return a;a?a instanceof CKEDITOR.dom.range&&(a=[a]):a=[];return CKEDITOR.tools.extend(a,d)};var d={createIterator:function(){var a=this,c=CKEDITOR.dom.walker.bookmark(),d=[],f;return{getNextRange:function(h){f=f===void 0?0:f+1;var i=a[f];if(i&&a.length>1){if(!f)for(var j=a.length-1;j>=0;j--)d.unshift(a[j].createBookmark(true));if(h)for(var n=0;a[f+n+1];){for(var g=i.document,h=0,j=g.getById(d[n].endNode),g=g.getById(d[n+
        1].startNode);;){j=j.getNextSourceNode(false);if(g.equals(j))h=1;else if(c(j)||j.type==CKEDITOR.NODE_ELEMENT&&j.isBlockBoundary())continue;break}if(!h)break;n++}for(i.moveToBookmark(d.shift());n--;){j=a[++f];j.moveToBookmark(d.shift());i.setEnd(j.endContainer,j.endOffset)}}return i}}},createBookmarks:function(b){for(var c=[],d,f=0;fb?-1:1}),e=0,f;e
      • ',CKEDITOR.document);a.appendTo(CKEDITOR.document.getHead());try{var d=a.getComputedStyle("border-top-color"),b=a.getComputedStyle("border-right-color");CKEDITOR.env.hc=!!(d&&d==b)}catch(c){CKEDITOR.env.hc=false}a.remove()}if(CKEDITOR.env.hc)CKEDITOR.env.cssClass=CKEDITOR.env.cssClass+" cke_hc"; CKEDITOR.document.appendStyleText(".cke{visibility:hidden;}");CKEDITOR.status="loaded";CKEDITOR.fireOnce("loaded");if(a=CKEDITOR._.pending){delete CKEDITOR._.pending;for(d=0;dc;c++){var f=a,h=c,d;d=parseInt(a[c],16);d=("0"+(0>e?0|d*(1+e):0|d+(255-d)*e).toString(16)).slice(-2);f[h]=d}return"#"+a.join("")}}(),c=function(){var b=new CKEDITOR.template("background:#{to};background-image:-webkit-gradient(linear,lefttop,leftbottom,from({from}),to({to}));background-image:-moz-linear-gradient(top,{from},{to});background-image:-webkit-linear-gradient(top,{from},{to});background-image:-o-linear-gradient(top,{from},{to});background-image:-ms-linear-gradient(top,{from},{to});background-image:linear-gradient(top,{from},{to});filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='{from}',endColorstr='{to}');");return function(c, a){return b.output({from:c,to:a})}}(),f={editor:new CKEDITOR.template("{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ {defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_bottom [{defaultGradient}border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [{defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [{defaultGradient}outline-color:{defaultBorder};border-top-color:{defaultBorder};] {id} .cke_dialog_tab [{lightGradient}border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [{mediumGradient}] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} .cke_toolgroup [{lightGradient}border-color:{defaultBorder};] {id} a.cke_button_off:hover, {id} a.cke_button_off:focus, {id} a.cke_button_off:active [{mediumGradient}] {id} .cke_button_on [{ckeButtonOn}] {id} .cke_toolbar_separator [background-color: {ckeToolbarSeparator};] {id} .cke_combo_button [border-color:{defaultBorder};{lightGradient}] {id} a.cke_combo_button:hover, {id} a.cke_combo_button:focus, {id} .cke_combo_on a.cke_combo_button [border-color:{defaultBorder};{mediumGradient}] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover, {id} a.cke_path_item:focus, {id} a.cke_path_item:active [background-color:{elementsPathBg};] {id}.cke_panel [border-color:{defaultBorder};] "), panel:new CKEDITOR.template(".cke_panel_grouptitle [{lightGradient}border-color:{defaultBorder};] .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [background-color:{menubuttonIconHover};] .cke_menuseparator [background-color:{menubuttonIcon};] a:hover.cke_colorbox, a:focus.cke_colorbox, a:active.cke_colorbox [border-color:{defaultBorder};] a:hover.cke_colorauto, a:hover.cke_colormore, a:focus.cke_colorauto, a:focus.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [background-color:{ckeColorauto};border-color:{defaultBorder};] ")}; return function(g,e){var a=g.uiColor,a={id:"."+g.id,defaultBorder:b(a,-0.1),defaultGradient:c(b(a,0.9),a),lightGradient:c(b(a,1),b(a,0.7)),mediumGradient:c(b(a,0.8),b(a,0.5)),ckeButtonOn:c(b(a,0.6),b(a,0.7)),ckeResizer:b(a,-0.4),ckeToolbarSeparator:b(a,0.5),ckeColorauto:b(a,0.8),dialogBody:b(a,0.7),dialogTabSelected:c("#FFFFFF","#FFFFFF"),dialogTabSelectedBorder:"#FFF",elementsPathColor:b(a,-0.6),elementsPathBg:a,menubuttonIcon:b(a,0.5),menubuttonIconHover:b(a,0.3)};return f[e].output(a).replace(/\[/g, "{").replace(/\]/g,"}")}}();CKEDITOR.plugins.add("dialogui",{onLoad:function(){var h=function(b){this._||(this._={});this._["default"]=this._.initValue=b["default"]||"";this._.required=b.required||!1;for(var a=[this._],d=1;darguments.length)){var c=h.call(this,a);c.labelId=CKEDITOR.tools.getNextId()+ "_label";this._.children=[];var e={role:a.role||"presentation"};a.includeLabel&&(e["aria-labelledby"]=c.labelId);CKEDITOR.ui.dialog.uiElement.call(this,b,a,d,"div",null,e,function(){var e=[],g=a.required?" cke_required":"";if(a.labelLayout!="horizontal")e.push('",'");else{g={type:"hbox",widths:a.widths,padding:0,children:[{type:"html",html:'"},{type:"html",html:'"+f.call(this,b,a)+""}]};CKEDITOR.dialog._.uiElementBuilders.hbox.build(b, g,e)}return e.join("")})}},textInput:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);var f=this._.inputId=CKEDITOR.tools.getNextId()+"_textInput",c={"class":"cke_dialog_ui_input_"+a.type,id:f,type:a.type};a.validate&&(this.validate=a.validate);a.maxLength&&(c.maxlength=a.maxLength);a.size&&(c.size=a.size);a.inputStyle&&(c.style=a.inputStyle);var e=this,k=!1;b.on("load",function(){e.getInputElement().on("keydown",function(a){a.data.getKeystroke()==13&&(k=true)});e.getInputElement().on("keyup", function(a){if(a.data.getKeystroke()==13&&k){b.getButton("ok")&&setTimeout(function(){b.getButton("ok").click()},0);k=false}e.bidi&&s.call(e,a)},null,null,1E3)});CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){var b=['"); return b.join("")})}},textarea:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);var f=this,c=this._.inputId=CKEDITOR.tools.getNextId()+"_textarea",e={};a.validate&&(this.validate=a.validate);e.rows=a.rows||5;e.cols=a.cols||20;e["class"]="cke_dialog_ui_input_textarea "+(a["class"]||"");"undefined"!=typeof a.inputStyle&&(e.style=a.inputStyle);a.dir&&(e.dir=a.dir);if(f.bidi)b.on("load",function(){f.getInputElement().on("keyup",s)},f);CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){e["aria-labelledby"]= this._.labelId;this._.required&&(e["aria-required"]=this._.required);var a=['");return a.join("")})}},checkbox:function(b,a,d){if(!(3>arguments.length)){var f=h.call(this,a,{"default":!!a["default"]});a.validate&&(this.validate=a.validate);CKEDITOR.ui.dialog.uiElement.call(this, b,a,d,"span",null,null,function(){var c=CKEDITOR.tools.extend({},a,{id:a.id?a.id+"_checkbox":CKEDITOR.tools.getNextId()+"_checkbox"},true),e=[],d=CKEDITOR.tools.getNextId()+"_label",g={"class":"cke_dialog_ui_checkbox_input",type:"checkbox","aria-labelledby":d};p(c);if(a["default"])g.checked="checked";if(typeof c.inputStyle!="undefined")c.style=c.inputStyle;f.checkbox=new CKEDITOR.ui.dialog.uiElement(b,c,e,"input",null,g);e.push(' ");return e.join("")})}},radio:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);this._["default"]||(this._["default"]=this._.initValue=a.items[0][1]);a.validate&&(this.validate=a.validate);var f=[],c=this;a.role="radiogroup";a.includeLabel=!0;CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){for(var e=[],d=[],g=(a.id?a.id:CKEDITOR.tools.getNextId())+"_radio",i=0;i'+CKEDITOR.tools.htmlEncode(a.label)+"")}},select:function(b,a,d){if(!(3>arguments.length)){var f=h.call(this,a);a.validate&& (this.validate=a.validate);f.inputId=CKEDITOR.tools.getNextId()+"_select";CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){var c=CKEDITOR.tools.extend({},a,{id:a.id?a.id+"_select":CKEDITOR.tools.getNextId()+"_select"},true),e=[],d=[],g={id:f.inputId,"class":"cke_dialog_ui_input_select","aria-labelledby":this._.labelId};e.push('");return e.join("")})}},file:function(b,a,d){if(!(3>arguments.length)){void 0===a["default"]&&(a["default"]="");var f=CKEDITOR.tools.extend(h.call(this, a),{definition:a,buttons:[]});a.validate&&(this.validate=a.validate);b.on("load",function(){CKEDITOR.document.getById(f.frameId).getParent().addClass("cke_dialog_ui_input_file")});CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){f.frameId=CKEDITOR.tools.getNextId()+"_fileInput";var b=['');return b.join("")})}},fileButton:function(b,a,d){var f=this;if(!(3>arguments.length)){h.call(this,a);a.validate&&(this.validate=a.validate);var c=CKEDITOR.tools.extend({},a),e=c.onClick;c.className=(c.className?c.className+" ":"")+"cke_dialog_ui_button";c.onClick=function(c){var d=a["for"];if(!e||e.call(this,c)!==false){b.getContentElement(d[0],d[1]).submit();this.disable()}};b.on("load",function(){b.getContentElement(a["for"][0], a["for"][1])._.buttons.push(f)});CKEDITOR.ui.dialog.button.call(this,b,c,d)}},html:function(){var b=/^\s*<[\w:]+\s+([^>]*)?>/,a=/^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/,d=/\/$/;return function(f,c,e){if(!(3>arguments.length)){var k=[],g=c.html;"<"!=g.charAt(0)&&(g=""+g+"");var i=c.focus;if(i){var j=this.focus;this.focus=function(){("function"==typeof i?i:j).call(this);this.fire("focus")};c.isFocusable&&(this.isFocusable=this.isFocusable);this.keyboardFocusable=!0}CKEDITOR.ui.dialog.uiElement.call(this, f,c,k,"span",null,null,"");k=k.join("").match(b);g=g.match(a)||["","",""];d.test(g[1])&&(g[1]=g[1].slice(0,-1),g[2]="/"+g[2]);e.push([g[1]," ",k[1]||"",g[2]].join(""))}}}(),fieldset:function(b,a,d,f,c){var e=c.label;this._={children:a};CKEDITOR.ui.dialog.uiElement.call(this,b,c,f,"fieldset",null,null,function(){var a=[];e&&a.push(""+e+"");for(var b=0;ba.getChildCount()?(new CKEDITOR.dom.text(b,CKEDITOR.document)).appendTo(a):a.getChild(0).$.nodeValue=b;return this},getLabel:function(){var b=CKEDITOR.document.getById(this._.labelId);return!b||1>b.getChildCount()?"":b.getChild(0).getText()},eventProcessors:o},!0);CKEDITOR.ui.dialog.button.prototype= CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{click:function(){return!this._.disabled?this.fire("click",{dialog:this._.dialog}):!1},enable:function(){this._.disabled=!1;var b=this.getElement();b&&b.removeClass("cke_disabled")},disable:function(){this._.disabled=!0;this.getElement().addClass("cke_disabled")},isVisible:function(){return this.getElement().getFirst().isVisible()},isEnabled:function(){return!this._.disabled},eventProcessors:CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors, {onClick:function(b,a){this.on("click",function(){a.apply(this,arguments)})}},!0),accessKeyUp:function(){this.click()},accessKeyDown:function(){this.focus()},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.textInput.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return CKEDITOR.document.getById(this._.inputId)},focus:function(){var b=this.selectParentTab();setTimeout(function(){var a=b.getInputElement();a&&a.$.focus()},0)},select:function(){var b=this.selectParentTab(); setTimeout(function(){var a=b.getInputElement();a&&(a.$.focus(),a.$.select())},0)},accessKeyUp:function(){this.select()},setValue:function(b){if(this.bidi){var a=b&&b.charAt(0);(a="‪"==a?"ltr":"‫"==a?"rtl":null)&&(b=b.slice(1));this.setDirectionMarker(a)}b||(b="");return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply(this,arguments)},getValue:function(){var b=CKEDITOR.ui.dialog.uiElement.prototype.getValue.call(this);if(this.bidi&&b){var a=this.getDirectionMarker();a&&(b=("ltr"==a?"‪":"‫")+ b)}return b},setDirectionMarker:function(b){var a=this.getInputElement();b?a.setAttributes({dir:b,"data-cke-dir-marker":b}):this.getDirectionMarker()&&a.removeAttributes(["dir","data-cke-dir-marker"])},getDirectionMarker:function(){return this.getInputElement().data("cke-dir-marker")},keyboardFocusable:!0},n,!0);CKEDITOR.ui.dialog.textarea.prototype=new CKEDITOR.ui.dialog.textInput;CKEDITOR.ui.dialog.select.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return this._.select.getElement()}, add:function(b,a,d){var f=new CKEDITOR.dom.element("option",this.getDialog().getParentEditor().document),c=this.getInputElement().$;f.$.text=b;f.$.value=void 0===a||null===a?b:a;void 0===d||null===d?CKEDITOR.env.ie?c.add(f.$):c.add(f.$,null):c.add(f.$,d);return this},remove:function(b){this.getInputElement().$.remove(b);return this},clear:function(){for(var b=this.getInputElement().$;0', '

        Toolbar Configurator Help

        Select configurator type

        What Am I Doing Here?

        Arrange toolbar groups, toggle button visibility according to your needs and get your toolbar configuration.

        You can replace the content of the config.js file with the generated configuration. If you already set some configuration options you will need to merge both configurations.

        Read more about different ways of setting configuration and do not forget about clearing browser cache.

        Arranging toolbar groups is the recommended way of configuring the toolbar, but if you need more freedom you can use the advanced configurator.

        CKEditor – The text editor for the Internet – http://ckeditor.com

        Copyright © 2003-2015, CKSource – Frederico Knabben. All rights reserved.

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/toolbarconfigurator/lib/0000755000201500020150000000000014514267702024755 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/toolbarconfigurator/lib/codemirror/0000755000201500020150000000000014514267702027122 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/toolbarconfigurator/lib/codemirror/codemirror.js0000644000201500020150000044460314514267702031640 0ustar puckpuck(function(m){if("object"==typeof exports&&"object"==typeof module)module.exports=m();else{if("function"==typeof define&&define.amd)return define([],m);this.CodeMirror=m()}})(function(){function m(a,b){if(!(this instanceof m))return new m(a,b);this.options=b=b?S(b):{};S(jf,b,!1);rc(b);var c=b.value;"string"==typeof c&&(c=new M(c,b.mode));this.doc=c;var d=new m.inputStyles[b.inputStyle](this),d=this.display=new kf(a,c,d);d.wrapper.CodeMirror=this;sd(this);td(this);b.lineWrapping&&(this.display.wrapper.className+= " CodeMirror-wrap");b.autofocus&&!Xa&&d.input.focus();ud(this);this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,draggingText:!1,highlight:new Ya,keySeq:null,specialChars:null};var e=this;y&&11>z&&setTimeout(function(){e.display.input.reset(true)},20);lf(this);vd||(mf(),vd=!0);Fa(this);this.curOp.forceUpdate=!0;wd(this,c);b.autofocus&&!Xa||e.hasFocus()?setTimeout(Za(sc,this),20):$a(this);for(var f in Ga)if(Ga.hasOwnProperty(f))Ga[f](this, b[f],xd);yd(this);b.finishInit&&b.finishInit(this);for(c=0;cz&&(this.gutters.style.zIndex=-1,this.scroller.style.paddingRight= 0);if(!E&&(!sa||!Xa))this.scroller.draggable=!0;a&&(a.appendChild?a.appendChild(this.wrapper):a(this.wrapper));this.reportedViewFrom=this.reportedViewTo=this.viewFrom=this.viewTo=b.first;this.view=[];this.externalMeasured=this.renderedView=null;this.lastWrapHeight=this.lastWrapWidth=this.viewOffset=0;this.updateLineNumbers=null;this.nativeBarWidth=this.barHeight=this.barWidth=0;this.scrollbarsClipped=!1;this.lineNumWidth=this.lineNumInnerWidth=this.lineNumChars=null;this.alignWidgets=!1;this.maxLine= this.cachedCharWidth=this.cachedTextHeight=this.cachedPaddingH=null;this.maxLineLength=0;this.maxLineChanged=!1;this.wheelDX=this.wheelDY=this.wheelStartX=this.wheelStartY=null;this.shift=!1;this.activeTouch=this.selForContextMenu=null;c.init(this)}function uc(a){a.doc.mode=m.getMode(a.options,a.doc.modeOption);ab(a)}function ab(a){a.doc.iter(function(a){a.stateAfter&&(a.stateAfter=null);a.styles&&(a.styles=null)});a.doc.frontier=a.doc.first;bb(a,100);a.state.modeGen++;a.curOp&&N(a)}function Ad(a){var b= ta(a.display),c=a.options.lineWrapping,d=c&&Math.max(5,a.display.scroller.clientWidth/cb(a.display)-3);return function(e){if(ua(a.doc,e))return 0;var f=0;if(e.widgets)for(var g=0;gb.maxLineLength&&(b.maxLineLength=d,b.maxLine=a)})}function rc(a){var b=G(a.gutters,"CodeMirror-linenumbers");-1==b&&a.lineNumbers?a.gutters=a.gutters.concat(["CodeMirror-linenumbers"]): -1z&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")}function Ac(){}function ud(a){a.display.scrollbars&& (a.display.scrollbars.clear(),a.display.scrollbars.addClass&&gb(a.display.wrapper,a.display.scrollbars.addClass));a.display.scrollbars=new m.scrollbarModel[a.options.scrollbarStyle](function(b){a.display.wrapper.insertBefore(b,a.display.scrollbarFiller);p(b,"mousedown",function(){a.state.focused&&setTimeout(function(){a.display.input.focus()},0)});b.setAttribute("cm-not-content","true")},function(b,c){c=="horizontal"?Ia(a,b):hb(a,b)},a);a.display.scrollbars.addClass&&ib(a.display.wrapper,a.display.scrollbars.addClass)} function Ja(a,b){b||(b=fb(a));var c=a.display.barWidth,d=a.display.barHeight;Bd(a,b);for(var e=0;4>e&&c!=a.display.barWidth||d!=a.display.barHeight;e++)c!=a.display.barWidth&&a.options.lineWrapping&&Hb(a),Bd(a,fb(a)),c=a.display.barWidth,d=a.display.barHeight}function Bd(a,b){var c=a.display,d=c.scrollbars.update(b);c.sizer.style.paddingRight=(c.barWidth=d.right)+"px";c.sizer.style.paddingBottom=(c.barHeight=d.bottom)+"px";d.right&&d.bottom?(c.scrollbarFiller.style.display="block",c.scrollbarFiller.style.height= d.bottom+"px",c.scrollbarFiller.style.width=d.right+"px"):c.scrollbarFiller.style.display="";d.bottom&&a.options.coverGutterNextToScrollbar&&a.options.fixedGutter?(c.gutterFiller.style.display="block",c.gutterFiller.style.height=d.bottom+"px",c.gutterFiller.style.width=b.gutterWidth+"px"):c.gutterFiller.style.display=""}function Bc(a,b,c){var d=c&&null!=c.top?Math.max(0,c.top):a.scroller.scrollTop,d=Math.floor(d-a.lineSpace.offsetTop),e=c&&null!=c.bottom?c.bottom:d+a.wrapper.clientHeight,d=xa(b,d), e=xa(b,e);if(c&&c.ensure){var f=c.ensure.from.line,c=c.ensure.to.line;f=e&&(d=xa(b,ga(r(b,c))-a.wrapper.clientHeight),e=c)}return{from:d,to:Math.max(e,d+1)}}function wc(a){var b=a.display,c=b.view;if(b.alignWidgets||b.gutters.firstChild&&a.options.fixedGutter){for(var d=Cc(b)-b.scroller.scrollLeft+a.doc.scrollLeft,e=b.gutters.offsetWidth,f=d+"px",g=0;g=c.viewFrom&&b.visible.to<=c.viewTo&&(null==c.updateLineNumbers||c.updateLineNumbers>=c.viewTo)&&c.renderedView==c.view&&0==Cd(a))return!1;yd(a)&&(ma(a),b.dims=Dc(a));var e=d.first+d.size,f=Math.max(b.visible.from-a.options.viewportMargin,d.first),g=Math.min(e,b.visible.to+a.options.viewportMargin);c.viewFromf-c.viewFrom&&(f=Math.max(d.first, c.viewFrom));c.viewTo>g&&20>c.viewTo-g&&(g=Math.min(e,c.viewTo));na&&(f=Fc(a.doc,f),g=Dd(a.doc,g));d=f!=c.viewFrom||g!=c.viewTo||c.lastWrapHeight!=b.wrapperHeight||c.lastWrapWidth!=b.wrapperWidth;e=a.display;0==e.view.length||f>=e.viewTo||g<=e.viewFrom?(e.view=Jb(a,f,g),e.viewFrom=f):(e.viewFrom>f?e.view=Jb(a,f,e.viewFrom).concat(e.view):e.viewFromg&&(e.view=e.view.slice(0,ya(a,g)));e.viewTo= g;c.viewOffset=ga(r(a.doc,c.viewFrom));a.display.mover.style.top=c.viewOffset+"px";g=Cd(a);if(!d&&0==g&&!b.force&&c.renderedView==c.view&&(null==c.updateLineNumbers||c.updateLineNumbers>=c.viewTo))return!1;f=aa();4=a.display.viewFrom&&b.visible.to<=a.display.viewTo)break;if(!Ec(a,b))break;Hb(a);d=fb(a);jb(a);Hc(a,d);Ja(a,d)}b.signal(a,"update",a);if(a.display.viewFrom!=a.display.reportedViewFrom|| a.display.viewTo!=a.display.reportedViewTo)b.signal(a,"viewportChange",a,a.display.viewFrom,a.display.viewTo),a.display.reportedViewFrom=a.display.viewFrom,a.display.reportedViewTo=a.display.viewTo}function Ic(a,b){var c=new Ib(a,b);if(Ec(a,c)){Hb(a);Ed(a,c);var d=fb(a);jb(a);Hc(a,d);Ja(a,d);c.finish()}}function Hc(a,b){a.display.sizer.style.minHeight=b.docHeight+"px";var c=b.docHeight+a.display.barHeight;a.display.heightForcer.style.top=c+"px";a.display.gutters.style.height=Math.max(c+$(a),b.clientHeight)+ "px"}function Hb(a){for(var a=a.display,b=a.lineDiv.offsetTop,c=0;cz){var f=d.node.offsetTop+d.node.offsetHeight;e=f-b;b=f}else e=d.node.getBoundingClientRect(),e=e.bottom-e.top;f=d.line.height-e;2>e&&(e=ta(a));if(0.001f)if(Z(d.line,e),Fd(d.line),d.rest)for(e=0;ez&&(a.node.style.zIndex=2));return a.node}function Hd(a,b){var c=a.display.externalMeasured;return c&&c.line==b.line?(a.display.externalMeasured=null,b.measure=c.measure,c.built):Kd(a,b)}function Jc(a){var b=a.bgClass?a.bgClass+" "+(a.line.bgClass||""):a.line.bgClass;b&&(b+=" CodeMirror-linebackground"); if(a.background)b?a.background.className=b:(a.background.parentNode.removeChild(a.background),a.background=null);else if(b){var c=Kb(a);a.background=c.insertBefore(q("div",null,b),c.firstChild)}a.line.wrapClass?Kb(a).className=a.line.wrapClass:a.node!=a.text&&(a.node.className="");a.text.className=(a.textClass?a.textClass+" "+(a.line.textClass||""):a.line.textClass)||""}function Id(a,b,c,d){b.gutter&&(b.node.removeChild(b.gutter),b.gutter=null);var e=b.line.gutterMarkers;if(a.options.lineNumbers|| e){var f=Kb(b),g=b.gutter=q("div",null,"CodeMirror-gutter-wrapper","left: "+(a.options.fixedGutter?d.fixedPos:-d.gutterTotalWidth)+"px; width: "+d.gutterTotalWidth+"px");a.display.input.setUneditable(g);f.insertBefore(g,b.text);b.line.gutterClass&&(g.className+=" "+b.line.gutterClass);if(a.options.lineNumbers&&(!e||!e["CodeMirror-linenumbers"]))b.lineNumber=g.appendChild(q("div",""+a.options.lineNumberFormatter(c+a.options.firstLineNumber),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+d.gutterLeft["CodeMirror-linenumbers"]+ "px; width: "+a.display.lineNumInnerWidth+"px"));if(e)for(b=0;bv(a,b)?b:a}function Mb(a,b){return 0>v(a,b)?a:b}function Md(a){a.state.focused||(a.display.input.focus(),sc(a))}function Nb(a){return a.options.readOnly||a.doc.cantEdit}function Kc(a,b,c,d,e){var f=a.doc;a.display.shift=!1;d||(d=f.sel);var g=oa(b),h=null;a.state.pasteIncoming&&1j.head.ch&&(!i||d.ranges[i-1].head.line!=j.head.line)){j=a.getModeAt(j.head);k=pa(k);n=!1;if(j.electricChars)for(var s=0;se?i.map:j[e],g=0;ge?a.line:a.rest[e]);e=f[g]+d;if(0>d||h!=b)e=f[g+(d?1:0)];return o(c,e)}}}var e=a.text.firstChild,f=!1;if(!b||!Oc(e,b))return Na(o(C(a.line),0),!0);if(b==e&&(f=!0,b=e.childNodes[c],c=0,!b))return c=a.rest?x(a.rest):a.line,Na(o(C(c),c.text.length),f);var g=3==b.nodeType?b:null,h=b;!g&&(1==b.childNodes.length&& 3==b.firstChild.nodeType)&&(g=b.firstChild,c&&(c=g.nodeValue.length));for(;h.parentNode!=e;)h=h.parentNode;var i=a.measure,j=i.maps;if(b=d(g,h,c))return Na(b,f);e=h.nextSibling;for(g=g?g.nodeValue.length-c:0;e;e=e.nextSibling){if(b=d(e,e.firstChild,0))return Na(o(b.line,b.ch-g),f);g+=e.textContent.length}h=h.previousSibling;for(g=c;h;h=h.previousSibling){if(b=d(h,h.firstChild,-1))return Na(o(b.line,b.ch+g),f);g+=e.textContent.length}}function qf(a,b,c,d,e){function f(a){return function(b){return b.id== a}}function g(b){if(1==b.nodeType){var c=b.getAttribute("cm-text");if(null!=c)""==c&&(c=b.textContent.replace(/\u200b/g,"")),h+=c;else{var c=b.getAttribute("cm-marker"),n;if(c){if(b=a.findMarks(o(d,0),o(e+1,0),f(+c)),b.length&&(n=b[0].find()))h+=za(a.doc,n.from,n.to).join("\n")}else if("false"!=b.getAttribute("contenteditable")){for(n=0;nc)return o(c,r(a,c).text.length);var c=r(a,b.line).text.length,d=b.ch,c=null==d||d>c?o(b.line,c):0>d?o(b.line,0):b;return c}function mb(a,b){return b>=a.first&&bv(c,a),b!=0>v(d,a)?(a=c,c=d):b!=0>v(c,d)&&(c=d)),new w(a,c)):new w(d||c,c)}function Qb(a,b,c,d){A(a,new ha([nb(a,a.sel.primary(),b,c)],0),d)}function Td(a, b,c){for(var d=[],e=0;ev(b.primary().head,a.sel.primary().head)?-1:1);Wd(a,Xd(a,b,d,!0));!(c&&!1===c.scroll)&&a.cm&&La(a.cm)}function Wd(a,b){b.equals(a.sel)||(a.sel=b,a.cm&&(a.cm.curOp.updateInput=a.cm.curOp.selectionChanged=!0,Yd(a.cm)),H(a,"cursorActivity",a))}function Zd(a){Wd(a,Xd(a,a.sel,null, !1),ca)}function Xd(a,b,c,d){for(var e,f=0;f=f.ch: j.to>f.ch))){if(d&&(F(k,"beforeCursorEnter"),k.explicitlyCleared))if(h.markedSpans){--i;continue}else break;if(k.atomic){i=k.find(0>g?-1:1);if(0==v(i,f)&&(i.ch+=g,0>i.ch?i=i.line>a.first?t(a,o(i.line-1)):null:i.ch>h.text.length&&(i=i.lineb&&(b=0);b=Math.round(b);d=Math.round(d);h.appendChild(q("div",null,"CodeMirror-selected","position: absolute; left: "+a+"px; top: "+b+"px; width: "+(null==c?k-a:c)+"px; height: "+(d-b)+"px"))}function e(b,c,e){var f=r(g,b),h=f.text.length,i,n;tf(V(f), c||0,null==e?h:e,function(g,m,q){var r=Ub(a,o(b,g),"div",f,"left"),p,t;g==m?(p=r,q=t=r.left):(p=Ub(a,o(b,m-1),"div",f,"right"),"rtl"==q&&(q=r,r=p,p=q),q=r.left,t=p.right);null==c&&0==g&&(q=j);3n.bottom||p.bottom==n.bottom&&p.right>n.right)n=p;qa.options.cursorBlinkRate&&(b.cursorDiv.style.visibility="hidden")}}function bb(a,b){a.doc.mode.startState&&a.doc.frontier=a.display.viewTo)){var c=+new Date+ a.options.workTime,d=Oa(b.mode,ob(a,b.frontier)),e=[];b.iter(b.frontier,Math.min(b.first+b.size,a.display.viewTo+500),function(f){if(b.frontier>=a.display.viewFrom){var g=f.styles,h=be(a,f,d,true);f.styles=h.styles;var i=f.styleClasses;if(h=h.classes)f.styleClasses=h;else if(i)f.styleClasses=null;i=!g||g.length!=f.styles.length||i!=h&&(!i||!h||i.bgClass!=h.bgClass||i.textClass!=h.textClass);for(h=0;!i&&hc){bb(a,a.options.workDelay);return true}});e.length&&Q(a,function(){for(var b=0;bg;--b){if(b<=f.first)return f.first;var h=r(f,b-1);if(h.stateAfter&&(!c||b<=f.frontier))return b;h=X(h.text,null,a.options.tabSize);if(null==e||d>h)e=b-1,d=h}return e}function ob(a,b,c){var d=a.doc,e=a.display;if(!d.mode.startState)return!0; var f=vf(a,b,c),g=f>d.first&&r(d,f-1).stateAfter,g=g?Oa(d.mode,g):wf(d.mode);d.iter(f,b,function(c){Rc(a,c.text,g);c.stateAfter=f==b-1||0==f%5||f>=e.viewFrom&&fc)return{map:a.measure.maps[d],cache:a.measure.caches[d],before:!0}} function Nc(a,b){if(b>=a.display.viewFrom&&b=c.lineN&&bk;k++){for(;h&&pb(b.line.text.charAt(i.coverStart+h));)--h;for(;i.coverStart+jz&&0==h&&j==i.coverEnd-i.coverStart)l=d.parentNode.getBoundingClientRect();else if(y&&a.options.lineWrapping){var s=Aa(d,h,j).getClientRects();l=s.length?s["right"==g?s.length-1:0]:Tc}else l=Aa(d,h,j).getBoundingClientRect()||Tc;if(l.left||l.right||0==h)break;j= h;h-=1;c="right"}if(y&&11>z){if(!(s=!window.screen))if(!(s=null==screen.logicalXDPI))if(!(s=screen.logicalXDPI==screen.deviceXDPI))null!=Uc?s=Uc:(k=R(a.display.measure,q("span","x")),s=k.getBoundingClientRect(),k=Aa(k,0,1).getBoundingClientRect(),s=Uc=1z&&!h&&(!l||!l.left&&!l.right))l=(l=d.parentNode.getClientRects()[0])?{left:l.left,right:l.left+cb(a.display),top:l.top,bottom:l.bottom}:Tc;s=l.top-b.rect.top;d=l.bottom-b.rect.top;h=(s+d)/2;g=b.view.measure.heights;for(k=0;kb)f=j-i,e=f-1,b>=j&&(g="right");if(null!=e){d=a[h+2];if(i==j&&c==(d.insertLeft?"left":"right"))g=c;if("left"==c&&0==e)for(;h&&a[h-2]==a[h-3]&&a[h-1].insertLeft;)d=a[(h-=3)+2],g="left";if("right"==c&&e==j-i)for(;h< a.length-3&&a[h+3]==a[h+4]&&!a[h+5].insertLeft;)d=a[(h+=3)+2],g="right";break}}return{node:d,start:e,end:f,collapse:g,coverStart:i,coverEnd:j}}function de(a){if(a.measure&&(a.measure.cache={},a.measure.heights=null,a.rest))for(var b=0;bc.from? g(a-1):g(a,d)}d=d||r(a.doc,b.line);e||(e=Vb(a,d));var i=V(d),b=b.ch;if(!i)return g(b);var j=Ob(i,b),j=h(b,j);null!=rb&&(j.other=h(b,rb));return j}function ge(a,b){var c=0,b=t(a.doc,b);a.options.lineWrapping||(c=cb(a.display)*b.ch);var d=r(a.doc,b.line),e=ga(d)+a.display.lineSpace.offsetTop;return{left:c,right:c,top:e,bottom:e+d.height}}function Wb(a,b,c,d){a=o(a,b);a.xRel=d;c&&(a.outside=!0);return a}function Xc(a,b,c){var d=a.doc,c=c+a.display.viewOffset;if(0>c)return Wb(d.first,0,!0,-1);var e=xa(d, c),f=d.first+d.size-1;if(e>f)return Wb(d.first+d.size-1,r(d,f).text.length,!0,1);0>b&&(b=0);for(d=r(d,e);;)if(e=xf(a,d,e,b,c),f=(d=wa(d,!1))&&d.find(0,!0),d&&(e.ch>f.from.ch||e.ch==f.from.ch&&0d.bottom)return d.left-i;if(gm)return Wb(c,l,q,1);for(;;){if(k?l==e||l==Yc(b,e,1):1>=l-e){k=dd?-1:1d){l=p;m=t;if(q=h)m+=1E3;n=r}else e=p,s=t,I=h,n-=r}}function ta(a){if(null!=a.cachedTextHeight)return a.cachedTextHeight;if(null==Ba){Ba=q("pre");for(var b=0;49>b;++b)Ba.appendChild(document.createTextNode("x")),Ba.appendChild(q("br"));Ba.appendChild(document.createTextNode("x"))}R(a.measure, Ba);b=Ba.offsetHeight/50;3=d.viewTo)|| d.maxLineChanged&&c.options.lineWrapping;e.update=e.mustUpdate&&new Ib(c,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}for(b=0;bj;j++){var k=!1,n=ia(c,h),l=!g||g==h?n:ia(c,g),l=Zb(c,Math.min(n.left,l.left),Math.min(n.top,l.top)-i,Math.max(n.left,l.left),Math.max(n.bottom,l.bottom)+i),s=c.doc.scrollTop,I=c.doc.scrollLeft;null!=l.scrollTop&&(hb(c,l.scrollTop),1g.top+j.top)h=!0;else if(g.bottom+j.top>(window.innerHeight||document.documentElement.clientHeight))h=!1;null!=h&&!zf&&(g=q("div","​",null,"position: absolute; top: "+(g.top-i.viewOffset-c.display.lineSpace.offsetTop)+"px; height: "+(g.bottom-g.top+$(c)+i.barHeight)+"px; left: "+g.left+"px; width: 2px;"),c.display.lineSpace.appendChild(g),g.scrollIntoView(h),c.display.lineSpace.removeChild(g))}}h=e.maybeHiddenMarkers;g=e.maybeUnhiddenMarkers;if(h)for(i=0;ib))e.updateLineNumbers=b;a.curOp.viewChanged=!0;if(b>=e.viewTo)na&&Fc(a.doc,b)e.viewFrom?ma(a):(e.viewFrom+=d,e.viewTo+=d);else if(b<=e.viewFrom&&c>=e.viewTo)ma(a);else if(b<=e.viewFrom){var f=$b(a,c,c+d,1);f?(e.view=e.view.slice(f.index),e.viewFrom=f.lineN,e.viewTo+=d):ma(a)}else if(c>= e.viewTo)(f=$b(a,b,b,-1))?(e.view=e.view.slice(0,f.index),e.viewTo=f.lineN):ma(a);else{var f=$b(a,b,b,-1),g=$b(a,c,c+d,1);f&&g?(e.view=e.view.slice(0,f.index).concat(Jb(a,f.lineN,g.lineN)).concat(e.view.slice(g.index)),e.viewTo+=d):ma(a)}if(a=e.externalMeasured)c=e.lineN&&b=d.viewTo|| (a=d.view[ya(a,b)],null!=a.node&&(a=a.changes||(a.changes=[]),-1==G(a,c)&&a.push(c)))}function ma(a){a.display.viewFrom=a.display.viewTo=a.doc.first;a.display.view=[];a.display.viewOffset=0}function ya(a,b){if(b>=a.display.viewTo)return null;b-=a.display.viewFrom;if(0>b)return null;for(var c=a.display.view,d=0;db)return d}function $b(a,b,c,d){var e=ya(a,b),f=a.display.view;if(!na||c==a.doc.first+a.doc.size)return{index:e,lineN:c};for(var g=0,h=a.display.viewFrom;g< e;g++)h+=f[g].size;if(h!=b){if(0d?0:f.length-1))return null;c+=d*f[e-(0>d?1:0)].size;e+=d}return{index:e,lineN:c}}function Cd(a){for(var a=a.display.view,b=0,c=0;cz?p(d.scroller,"dblclick",B(a,function(b){if(!ea(a,b)){var c=Qa(a,b);c&&(!Zc(a,b,"gutterClick",!0,H)&&!ka(a.display,b))&&(L(b),b=a.findWordAt(c),Qb(a.doc,b.anchor,b.head))}})):p(d.scroller,"dblclick",function(b){ea(a,b)||L(b)});$c||p(d.scroller,"contextmenu",function(b){ie(a,b)});var e,f={end:0};p(d.scroller,"touchstart",function(a){var b;1!=a.touches.length?b=!1:(b=a.touches[0],b=1>=b.radiusX&& 1>=b.radiusY);b||(clearTimeout(e),b=+new Date,d.activeTouch={start:b,moved:!1,prev:300>=b-f.end?f:null},1==a.touches.length&&(d.activeTouch.left=a.touches[0].pageX,d.activeTouch.top=a.touches[0].pageY))});p(d.scroller,"touchmove",function(){d.activeTouch&&(d.activeTouch.moved=!0)});p(d.scroller,"touchend",function(e){var f=d.activeTouch;if(f&&!ka(d,e)&&null!=f.left&&!f.moved&&300>new Date-f.start){var g=a.coordsChar(d.activeTouch,"page"),f=!f.prev||c(f,f.prev)?new w(g,g):!f.prev.prev||c(f,f.prev.prev)? a.findWordAt(g):new w(o(g.line,0),t(a.doc,o(g.line+1,0)));a.setSelection(f.anchor,f.head);a.focus();L(e)}b()});p(d.scroller,"touchcancel",b);p(d.scroller,"scroll",function(){d.scroller.clientHeight&&(hb(a,d.scroller.scrollTop),Ia(a,d.scroller.scrollLeft,!0),F(a,"scroll",a))});p(d.scroller,"mousewheel",function(b){je(a,b)});p(d.scroller,"DOMMouseScroll",function(b){je(a,b)});p(d.wrapper,"scroll",function(){d.wrapper.scrollTop=d.wrapper.scrollLeft=0});d.dragFunctions={simple:function(b){ea(a,b)||ad(b)}, start:function(b){if(y&&(!a.state.draggingText||100>+new Date-ke))ad(b);else if(!ea(a,b)&&!ka(a.display,b)&&(b.dataTransfer.setData("Text",a.getSelection()),b.dataTransfer.setDragImage&&!le)){var c=q("img",null,null,"position: fixed; left: 0; top: 0;");c.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";Y&&(c.width=c.height=1,a.display.wrapper.appendChild(c),c._top=c.offsetTop);b.dataTransfer.setDragImage(c,0,0);Y&&c.parentNode.removeChild(c)}},drop:B(a,Af)};var g=d.input.getField(); p(g,"keyup",function(b){me.call(a,b)});p(g,"keydown",B(a,ne));p(g,"keypress",B(a,oe));p(g,"focus",Za(sc,a));p(g,"blur",Za($a,a))}function Bf(a){var b=a.display;b.lastWrapHeight==b.wrapper.clientHeight&&b.lastWrapWidth==b.wrapper.clientWidth||(b.cachedCharWidth=b.cachedTextHeight=b.cachedPaddingH=null,b.scrollbarsClipped=!1,a.setSize())}function ka(a,b){for(var c=b.target||b.srcElement;c!=a.wrapper;c=c.parentNode)if(!c||1==c.nodeType&&"true"==c.getAttribute("cm-ignore-events")||c.parentNode==a.sizer&& c!=a.mover)return!0}function Qa(a,b,c,d){var e=a.display;if(!c&&"true"==(b.target||b.srcElement).getAttribute("cm-not-content"))return null;var f,g,c=e.lineSpace.getBoundingClientRect();try{f=b.clientX-c.left,g=b.clientY-c.top}catch(h){return null}var b=Xc(a,f,g),i;if(d&&1==b.xRel&&(i=r(a.doc,b.line).text).length==b.ch)d=X(i,i.length,a.options.tabSize)-i.length,b=o(b.line,Math.max(0,Math.round((f-ae(a.display).left)/cb(a.display))-d));return b}function he(a){var b=this.display;if(!(b.activeTouch&& b.input.supportsTouch()||ea(this,a)))if(b.shift=a.shiftKey,ka(b,a))E||(b.scroller.draggable=!1,setTimeout(function(){b.scroller.draggable=!0},100));else if(!Zc(this,a,"gutterClick",!0,H)){var c=Qa(this,a);window.focus();switch(pe(a)){case 1:c?Cf(this,a,c):(a.target||a.srcElement)==b.scroller&&L(a);break;case 2:E&&(this.state.lastMiddleDown=+new Date);c&&Qb(this.doc,c);setTimeout(function(){b.input.focus()},20);L(a);break;case 3:$c?ie(this,a):Df(this)}}}function Cf(a,b,c){y?setTimeout(Za(Md,a),0): a.curOp.focus=aa();var d=+new Date,e;ac&&ac.time>d-400&&0==v(ac.pos,c)?e="triple":bc&&bc.time>d-400&&0==v(bc.pos,c)?(e="double",ac={time:d,pos:c}):(e="single",bc={time:d,pos:c});var d=a.doc.sel,f=T?b.metaKey:b.ctrlKey,g;a.options.dragDrop&&Ef&&!Nb(a)&&"single"==e&&-1<(g=d.contains(c))&&!d.ranges[g].empty()?Ff(a,b,c,f):Gf(a,b,c,e,f)}function Ff(a,b,c,d){var e=a.display,f=+new Date,g=B(a,function(h){E&&(e.scroller.draggable=!1);a.state.draggingText=!1;fa(document,"mouseup",g);fa(e.scroller,"drop",g); 10>Math.abs(b.clientX-h.clientX)+Math.abs(b.clientY-h.clientY)&&(L(h),!d&&+new Date-200q&&e.push(new w(o(h,q),o(h,qe(I,g,f))))}e.length||e.push(new w(c,c));A(j,W(l.ranges.slice(0,n).concat(e),n),{origin:"*mouse",scroll:!1});a.scrollIntoView(b)}else e=k,f=e.anchor,i=b,"single"!=d&&(b="double"==d?a.findWordAt(b):new w(o(b.line,0),t(j,o(b.line+1,0))),0=h.to||e.lineq.bottom?20:0;k&&setTimeout(B(a,function(){u==c&&(i.scroller.scrollTop+=k,g(b))}),50)}}function h(a){u=Infinity;L(a);i.input.focus();fa(document,"mousemove",y);fa(document,"mouseup",x);j.history.lastSelOrigin= null}var i=a.display,j=a.doc;L(b);var k,n,l=j.sel,s=l.ranges;e&&!b.shiftKey?(n=j.sel.contains(c),k=-1=Math.floor(a.display.gutters.getBoundingClientRect().right))return!1;d&&L(b);var d=a.display,i=d.lineDiv.getBoundingClientRect(); if(g>i.bottom||!P(a,c))return cd(b);g-=i.top-d.viewOffset;for(i=0;i=f)return f=xa(a.doc,g),e(a,c,a,f,a.options.gutters[i],b),cd(b)}}function Af(a){var b=this;if(!ea(b,a)&&!ka(b.display,a)){L(a);y&&(ke=+new Date);var c=Qa(b,a,!0),d=a.dataTransfer.files;if(c&&!Nb(b))if(d&&d.length&&window.FileReader&&window.File)for(var e=d.length,f=Array(e),g=0,a=function(a,d){var h=new FileReader;h.onload=B(b,function(){f[d]= h.result;if(++g==e){c=t(b.doc,c);var a={from:c,to:c,text:oa(f.join("\n")),origin:"paste"};Ka(b.doc,a);Ud(b.doc,ba(c,pa(a)))}});h.readAsText(a)},h=0;hMath.abs(a.doc.scrollTop-b)||(a.doc.scrollTop=b,sa||Ic(a,{top:b}),a.display.scroller.scrollTop!=b&&(a.display.scroller.scrollTop=b),a.display.scrollbars.setScrollTop(b),sa&&Ic(a),bb(a,100))}function Ia(a,b,c){if(!(c?b==a.doc.scrollLeft:2>Math.abs(a.doc.scrollLeft-b)))b=Math.min(b,a.display.scroller.scrollWidth-a.display.scroller.clientWidth),a.doc.scrollLeft=b,wc(a),a.display.scroller.scrollLeft!=b&&(a.display.scroller.scrollLeft= b),a.display.scrollbars.setScrollLeft(b)}function je(a,b){var c=re(b),d=c.x,c=c.y,e=a.display,f=e.scroller;if(d&&f.scrollWidth>f.clientWidth||c&&f.scrollHeight>f.clientHeight){if(c&&T&&E){var g=b.target,h=e.view;a:for(;g!=f;g=g.parentNode)for(var i=0;ig?h=Math.max(0,h+g-50):i=Math.min(a.doc.height,i+g+50),Ic(a,{top:h,bottom:i})),20>cc)null==e.wheelStartX?(e.wheelStartX=f.scrollLeft,e.wheelStartY=f.scrollTop,e.wheelDX=d,e.wheelDY=c,setTimeout(function(){if(e.wheelStartX!=null){var a=f.scrollLeft-e.wheelStartX,b=f.scrollTop-e.wheelStartY,a=b&&e.wheelDY&&b/e.wheelDY||a&&e.wheelDX&&a/e.wheelDX;e.wheelStartX=e.wheelStartY=null;if(a){O=(O*cc+a)/(cc+1);++cc}}}, 200)):(e.wheelDX+=d,e.wheelDY+=c)}}function dc(a,b,c){if("string"==typeof b&&(b=ec[b],!b))return!1;a.display.input.ensurePolled();var d=a.display.shift,e=!1;try{Nb(a)&&(a.state.suppressEdits=!0),c&&(a.display.shift=!1),e=b(a)!=se}finally{a.display.shift=d,a.state.suppressEdits=!1}return e}function Hf(a,b,c){for(var d=0;dz&&27==a.keyCode)&&(a.returnValue=!1);var b=a.keyCode;this.display.shift=16==b||a.shiftKey;var c=te(this,a);Y&&(dd=c?b:null,!c&&(88==b&&!ue&&(T?a.metaKey:a.ctrlKey))&&this.replaceSelection("",null,"cut"));18==b&&!/\bCodeMirror-crosshair\b/.test(this.display.lineDiv.className)&&Mf(this)}}function Mf(a){function b(a){if(18== a.keyCode||!a.altKey)gb(c,"CodeMirror-crosshair"),fa(document,"keyup",b),fa(document,"mouseover",b)}var c=a.display.lineDiv;ib(c,"CodeMirror-crosshair");p(document,"keyup",b);p(document,"mouseover",b)}function me(a){16==a.keyCode&&(this.doc.sel.shift=!1);ea(this,a)}function oe(a){if(!ka(this.display,a)&&!ea(this,a)&&!(a.ctrlKey&&!a.altKey||T&&a.metaKey)){var b=a.keyCode,c=a.charCode;if(Y&&b==dd)dd=null,L(a);else if(!Y||a.which&&!(10>a.which)||!te(this,a))if(b=String.fromCharCode(null==c?b:c),!Lf(this, a,b))this.display.input.onKeyPress(a)}}function Df(a){a.state.delayingBlurEvent=!0;setTimeout(function(){a.state.delayingBlurEvent&&(a.state.delayingBlurEvent=!1,$a(a))},100)}function sc(a){a.state.delayingBlurEvent&&(a.state.delayingBlurEvent=!1);"nocursor"!=a.options.readOnly&&(a.state.focused||(F(a,"focus",a),a.state.focused=!0,ib(a.display.wrapper,"CodeMirror-focused"),!a.curOp&&a.display.selForContextMenu!=a.doc.sel&&(a.display.input.reset(),E&&setTimeout(function(){a.display.input.reset(true)}, 20)),a.display.input.receivedFocus()),Qc(a))}function $a(a){a.state.delayingBlurEvent||(a.state.focused&&(F(a,"blur",a),a.state.focused=!1,gb(a.display.wrapper,"CodeMirror-focused")),clearInterval(a.display.blinker),setTimeout(function(){if(!a.state.focused)a.display.shift=false},150))}function ie(a,b){var c;if(!(c=ka(a.display,b)))c=P(a,"gutterContextMenu")?Zc(a,b,"gutterContextMenu",!1,F):!1;if(!c)a.display.input.onContextMenu(b)}function ve(a,b){if(0>v(a,b.from))return a;if(0>=v(a,b.to))return pa(b); var c=a.line+b.text.length-(b.to.line-b.from.line)-1,d=a.ch;a.line==b.to.line&&(d+=pa(b).ch-b.to.ch);return o(c,d)}function ed(a,b){for(var c=[],d=0;da.lastLine())){if(b.from.linee&&(b={from:b.from,to:o(e,r(a,e).text.length),text:[b.text[0]],origin:b.origin});b.removed=za(a,b.from,b.to);c||(c=ed(a,b));a.cm?Of(a.cm,b,d):hd(a,b,d);Rb(a,c,ca)}}function Of(a,b,c){var d=a.doc,e=a.display,f=b.from,g=b.to,h=!1,i=f.line;a.options.lineWrapping|| (i=C(da(r(d,f.line))),d.iter(i,g.line+1,function(a){if(a==e.maxLine)return h=!0}));-1e.maxLineLength){e.maxLine=a;e.maxLineLength=b;e.maxLineChanged=true;h=false}}),h&&(a.curOp.updateMaxLine=!0));d.frontier=Math.min(d.frontier,f.line);bb(a,400);c=b.text.length-(g.line-f.line)-1;b.full?N(a):f.line==g.line&&1==b.text.length&&!Ee(a.doc,b)?ja(a,f.line,"text"):N(a,f.line, g.line+1,c);c=P(a,"changes");if((d=P(a,"change"))||c)b={from:f,to:g,text:b.text,removed:b.removed,origin:b.origin},d&&H(a,"change",a,b),c&&(a.curOp.changeObjs||(a.curOp.changeObjs=[])).push(b);a.display.selForContextMenu=null}function sb(a,b,c,d,e){d||(d=c);if(0>v(d,c))var f=d,d=c,c=f;"string"==typeof b&&(b=oa(b));Ka(a,{from:c,to:d,text:b,origin:e})}function Zb(a,b,c,d,e){var f=a.display,g=ta(a.display);0>c&&(c=0);var h=a.curOp&&null!=a.curOp.scrollTop?a.curOp.scrollTop:f.scroller.scrollTop,i=Gc(a), j={};e-c>i&&(e=c+i);var k=a.doc.height+(f.mover.offsetHeight-f.lineSpace.offsetHeight),n=ck-g;ch+i&&(c=Math.min(c,(g?k:e)-i),c!=h&&(j.scrollTop=c));h=a.curOp&&null!=a.curOp.scrollLeft?a.curOp.scrollLeft:f.scroller.scrollLeft;a=la(a)-(a.options.fixedGutter?f.gutters.offsetWidth:0);(f=d-b>a)&&(d=b+a);10>b?j.scrollLeft=0:ba+h-3&&(j.scrollLeft=d+(f?0:10)-a);return j}function id(a,b,c){(null!=b||null!=c)&&hc(a);null!=b&&(a.curOp.scrollLeft= (null==a.curOp.scrollLeft?a.doc.scrollLeft:a.curOp.scrollLeft)+b);null!=c&&(a.curOp.scrollTop=(null==a.curOp.scrollTop?a.doc.scrollTop:a.curOp.scrollTop)+c)}function La(a){hc(a);var b=a.getCursor(),c=b,d=b;a.options.lineWrapping||(c=b.ch?o(b.line,b.ch-1):b,d=o(b.line,b.ch+1));a.curOp.scrollToPos={from:c,to:d,margin:a.options.cursorScrollMargin,isCursor:!0}}function hc(a){var b=a.curOp.scrollToPos;if(b){a.curOp.scrollToPos=null;var c=ge(a,b.from),d=ge(a,b.to),b=Zb(a,Math.min(c.left,d.left),Math.min(c.top, d.top)-b.margin,Math.max(c.right,d.right),Math.max(c.bottom,d.bottom)+b.margin);a.scrollTo(b.scrollLeft,b.scrollTop)}}function lb(a,b,c,d){var e=a.doc,f;null==c&&(c="add");"smart"==c&&(e.mode.indent?f=ob(a,b):c="prev");var g=a.options.tabSize,h=r(e,b),i=X(h.text,null,g);h.stateAfter&&(h.stateAfter=null);var j=h.text.match(/^\s*/)[0],k;if(!d&&!/\S/.test(h.text))k=0,c="not";else if("smart"==c&&(k=e.mode.indent(f,h.text.slice(j.length),h.text),k==se||150e.first? X(r(e,b-1).text,null,g):0:"add"==c?k=i+a.options.indentUnit:"subtract"==c?k=i-a.options.indentUnit:"number"==typeof c&&(k=i+c);k=Math.max(0,k);c="";d=0;if(a.options.indentWithTabs)for(a=Math.floor(k/g);a;--a)d+=g,c+="\t";d=v(f.from,x(d).to);){var g=d.pop();if(0>v(g.from,f.from)){f.from=g.from;break}}d.push(f)}Q(a,function(){for(var b=d.length-1;0<=b;b--)sb(a.doc,"",d[b].from,d[b].to,"+delete");La(a)})}function jd(a,b,c,d,e){function f(b){var d=(e?Yc:Ge)(j,h,c,!0);if(null==d){if(b=!b)b=g+c,b=a.first+ a.size?b=k=!1:(g=b,b=j=r(a,b));if(b)h=e?(0>c?Yb:Xb)(j):0>c?j.text.length:0;else return k=!1}else h=d;return!0}var g=b.line,h=b.ch,i=c,j=r(a,g),k=!0;if("char"==d)f();else if("column"==d)f(!0);else if("word"==d||"group"==d)for(var n=null,d="group"==d,b=a.cm&&a.cm.getHelper(b,"wordChars"),l=!0;!(0>c)||f(!l);l=!1){var s=j.text.charAt(h)||"\n",s=jc(s,b)?"w":d&&"\n"==s?"n":!d||/\s/.test(s)?null:"p";d&&(!l&&!s)&&(s="s");if(n&&n!=s){0>c&&(c=1,f());break}s&&(n=s);if(0c?1.5:0.5)*ta(a.display))):"line"==d&&(g=0c?0>=g:g>=e.height){h.hitSide=!0;break}g+=5*c}return h}function u(a,b,c,d){m.defaults[a]=b;c&&(Ga[a]=d?function(a,b,d){d!=xd&&c(a,b,d)}:c)}function Pf(a){for(var b=a.split(/-(?!$)/),a=b[b.length- 1],c,d,e,f,g=0;g=e:j.to>e);(i||(i=[])).push(new lc(k,j.from,n?null:j.to))}}c=i;if(d)for(var h=0,l;h=f:i.to>f)||i.from==f&&"bookmark"==j.type&&(!g||i.marker.insertLeft))k=null==i.from||(j.inclusiveLeft?i.from<=f:i.fromv(g.to,e.from)||0i||!c.inclusiveLeft&&!i)&&h.push({from:g.from,to:e.from});(0Ne(d,e.marker)))d=e.marker;return d}function Ie(a,b,c,d,e){a=r(a,b);if(a=na&&a.markedSpans)for(b=0;b=i||0>=h&&0<=i))if(0>=h&&(0v(g.from,d)||f.marker.inclusiveLeft&&e.inclusiveRight))return!0}}}function da(a){for(var b;b=wa(a,!0);)a=b.find(-1,!0).line;return a}function Fc(a,b){var c=r(a,b),d=da(c);return c==d?b:C(d)}function Dd(a,b){if(b> a.lastLine())return b;var c=r(a,b),d;if(!ua(a,c))return b;for(;d=wa(c,!1);)c=d.find(1,!0).line;return C(c)+1}function ua(a,b){var c=na&&b.markedSpans;if(c)for(var d,e=0;ee;e++){d&&(d[0]=m.innerMode(a,c).mode);var f=a.token(b,c);if(b.pos>b.start)return f}throw Error("Mode "+a.name+" failed to advance stream."); }function Re(a,b,c,d){function e(a){return{start:k.start,end:k.pos,string:k.current(),type:h||null,state:a?Oa(f.mode,j):j}}var f=a.doc,g=f.mode,h,b=t(f,b),i=r(f,b.line),j=ob(a,b.line,c),k=new oc(i.text,a.options.tabSize),n;for(d&&(n=[]);(d||k.posa.options.maxHighlightLength?(h=!1,g&&Rc(a,b,d,k.pos),k.pos=b.length,n=null):n=Pe(md(c,k,d,l),f);if(l){var s=l[0].name;s&&(n="m-"+(n?s+" "+n:s))}if(!h||j!=n){for(;ia&&e.splice(h,1,a,e[h+1],d);h=h+2;i=Math.min(a,d)}if(b)if(g.opaque){e.splice(c,h-c,a,"cm-overlay "+b);h=c+2}else for(;cAa(g,1,2).getBoundingClientRect().right-h.right}if(g&&(f=V(e)))c.addToken=Xf(c.addToken,f);c.map=[];h=b!=a.display.externalMeasured&&C(e);a:{g=c;var h=Te(a,e,h),i=e.markedSpans,j=e.text,k=0;if(i)for(var n=j.length,l=0,s=1,m="",o=void 0,r=void 0,p=0,t=void 0,u=void 0,v=void 0, x=void 0,w=void 0;;){if(p==l){for(var t=u=v=x=r="",w=null,p=Infinity,z=[],B=0;Bl||A.collapsed&&D.to==l&&D.from==l)){if(null!=D.to&&(D.to!=l&&p>D.to)&&(p=D.to,u=""),A.className&&(t+=" "+A.className),A.css&&(r=A.css),A.startStyle&&D.from==l&&(v+=" "+A.startStyle),A.endStyle&&D.to==p&&(u+=" "+A.endStyle),A.title&&!x&&(x=A.title),A.collapsed&&(!w||0>Ne(w.marker,A)))w=D}else D.from> l&&p>D.from&&(p=D.from)}if(w&&(w.from||0)==l){Ve(g,(null==w.to?n+1:w.to)-l,w.marker,null==w.from);if(null==w.to)break a;w.to==l&&(w=!1)}if(!w&&z.length)for(B=0;B=n)break;for(z=Math.min(n,p);;){if(m){B=l+m.length;w||(D=B>z?m.slice(0,z-l):m,g.addToken(g,D,o?o+t:t,v,l+D.length==p?u:"",x,r));if(B>=z){m=m.slice(z-l);l=z;break}l=B;v=""}m=j.slice(k,k=h[s++]);o=Ue(h[s++],g.cm.options)}}else for(var s=1;sz?k.appendChild(q("span",[m])):k.appendChild(m);a.map.push(a.pos,a.pos+s,m);a.col+=s;a.pos+=s}if(!l)break;n+=s+1;"\t"==l[0]?(m= a.cm.options.tabSize,l=m-a.col%m,m=k.appendChild(q("span",Fe(l),"cm-tab")),m.setAttribute("role","presentation"),m.setAttribute("cm-text","\t"),a.col+=l):(m=a.cm.options.specialCharPlaceholder(l[0]),m.setAttribute("cm-text",l[0]),y&&9>z?k.appendChild(q("span",[m])):k.appendChild(m),a.col+=1);a.map.push(a.pos,a.pos+1,m);a.pos++}else{a.col+=b.length;var k=document.createTextNode(h);a.map.push(a.pos,a.pos+b.length,k);y&&9>z&&(j=!0);a.pos+=b.length}if(c||d||e||j||g)return b=c||"",d&&(b+=d),e&&(b+=e), d=q("span",[k],b,g),f&&(d.title=f),a.content.appendChild(d);a.content.appendChild(k)}}function Zf(a){for(var b=" ",c=0;cj&&l.from<=j)break}if(l.to>=k)return a(c,d,e,f,g,h,i);a(c,d.slice(0,l.to-j),e,f,null,h,i);f=null;d=d.slice(l.to-j);j=l.to}}}function Ve(a,b,c,d){var e=!d&&c.widgetNode; e&&a.map.push(a.pos,a.pos+b,e);!d&&a.cm.display.input.needsContentAttribute&&(e||(e=a.content.appendChild(document.createElement("span"))),e.setAttribute("cm-marker",c.id));e&&(a.cm.display.input.setUneditable(e),a.content.appendChild(e));a.pos+=b}function Ee(a,b){return 0==b.from.ch&&0==b.to.ch&&""==x(b.text)&&(!a.cm||a.cm.options.wholeLineUpdateBefore)}function hd(a,b,c,d){function e(a){return c?c[a]:null}function f(a,c,e){var f=d;a.text=c;a.stateAfter&&(a.stateAfter=null);a.styles&&(a.styles=null); null!=a.order&&(a.order=null);Le(a);Me(a,e);c=f?f(a):1;c!=a.height&&Z(a,c);H(a,"change",a,b)}function g(a,b){for(var c=a,f=[];cb||b>=a.size)throw Error("There is no line "+(b+a.first)+" in the document.");for(var c=a;!c.lines;)for(var d=0;;++d){var e=c.children[d],f=e.chunkSize();if(bf-a.cm.options.historyEventDelay||"*"==b.origin.charAt(0))){var i;e.lastOp==d?(Vd(e.done),i=x(e.done)):e.done.length&&!x(e.done).ranges? i=x(e.done):1e.undoDepth;)e.done.shift(),e.done[0].ranges||e.done.shift()}e.done.push(c);e.generation=++e.maxGeneration;e.lastModTime=e.lastSelTime=f;e.lastOp=e.lastSelOp=d;e.lastOrigin=e.lastSelOrigin= b.origin;j||F(a,"historyAdded")}function Sb(a,b){var c=x(b);(!c||!c.ranges||!c.equals(a))&&b.push(a)}function We(a,b,c,d){var e=b["spans_"+a.id],f=0;a.iter(Math.max(a.first,c),Math.min(a.first+a.size,d),function(c){c.markedSpans&&((e||(e=b["spans_"+a.id]={}))[f]=c.markedSpans);++f})}function Sf(a){if(!a)return null;for(var b=0,c;b=b)return d+Math.min(g,b-e);e+=f-d;e+=c-e%c;d=f+1;if(e>=b)return d}}function Fe(a){for(;qc.length<=a;)qc.push(x(qc)+" ");return qc[a]}function x(a){return a[a.length-1]}function G(a,b){for(var c=0;c=b.offsetWidth&&2z))}a=qd?q("span","​"):q("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");a.setAttribute("cm-text","");return a} function tf(a,b,c,d){if(!a)return d(b,c,"ltr");for(var e=!1,f=0;fb||b==c&&g.to==b)d(Math.max(g.from,b),Math.min(g.to,c),1==g.level?"rtl":"ltr"),e=!0}e||d(b,c,"ltr")}function Wc(a){return a.level%2?a.from:a.to}function Xb(a){return(a=V(a))?a[0].level%2?a[0].to:a[0].from:0}function Yb(a){var b=V(a);return!b?a.text.length:Wc(x(b))}function cf(a,b){var c=r(a.doc,b),d=da(c);d!=c&&(b=C(d));c=V(d);d=!c?0:c[0].level%2?Yb(d):Xb(d);return o(b,d)}function df(a,b){var c= cf(a,b.line),d=r(a.doc,c.line),e=V(d);return!e||0==e[0].level?(d=Math.max(0,d.text.search(/\S/)),o(c.line,b.line==c.line&&b.ch<=d&&b.ch?0:d)):c}function Ob(a,b){rb=null;for(var c=0,d;cb)return c;if(e.from==b||e.to==b)if(null==d)d=c;else{var f;f=e.level;var g=a[d].level,h=a[0].level;f=f==h?!0:g==h?!1:fg.from&&bb||b>a.text.length?null:b}var sa=/gecko\/\d/i.test(navigator.userAgent),ef=/MSIE \d/.test(navigator.userAgent),ff=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent), y=ef||ff,z=y&&(ef?document.documentMode||6:ff[1]),E=/WebKit\//.test(navigator.userAgent),cg=E&&/Qt\/\d+\.\d+/.test(navigator.userAgent),dg=/Chrome\//.test(navigator.userAgent),Y=/Opera\//.test(navigator.userAgent),le=/Apple Computer/.test(navigator.vendor),eg=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(navigator.userAgent),zf=/PhantomJS/.test(navigator.userAgent),Ma=/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent),Xa=Ma||/Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent), T=Ma||/Mac/.test(navigator.platform),fg=/win/i.test(navigator.platform),Ea=Y&&navigator.userAgent.match(/Version\/(\d*\.\d*)/);Ea&&(Ea=Number(Ea[1]));Ea&&15<=Ea&&(Y=!1,E=!0);var gf=T&&(cg||Y&&(null==Ea||12.11>Ea)),$c=sa||y&&9<=z,ye=!1,na=!1;zc.prototype=S({update:function(a){var b=a.scrollWidth>a.clientWidth+1,c=a.scrollHeight>a.clientHeight+1,d=a.nativeBarWidth;if(c){this.vert.style.display="block";this.vert.style.bottom=b?d+"px":"0";this.vert.firstChild.style.height=Math.max(0,a.scrollHeight-a.clientHeight+ (a.viewHeight-(b?d:0)))+"px"}else{this.vert.style.display="";this.vert.firstChild.style.height="0"}if(b){this.horiz.style.display="block";this.horiz.style.right=c?d+"px":"0";this.horiz.style.left=a.barLeft+"px";this.horiz.firstChild.style.width=a.scrollWidth-a.clientWidth+(a.viewWidth-a.barLeft-(c?d:0))+"px"}else{this.horiz.style.display="";this.horiz.firstChild.style.width="0"}if(!this.checkedOverlay&&a.clientHeight>0){d==0&&this.overlayHack();this.checkedOverlay=true}return{right:c?d:0,bottom:b? d:0}},setScrollLeft:function(a){if(this.horiz.scrollLeft!=a)this.horiz.scrollLeft=a},setScrollTop:function(a){if(this.vert.scrollTop!=a)this.vert.scrollTop=a},overlayHack:function(){this.horiz.style.minHeight=this.vert.style.minWidth=T&&!eg?"12px":"18px";var a=this,b=function(b){(b.target||b.srcElement)!=a.vert&&(b.target||b.srcElement)!=a.horiz&&B(a.cm,he)(b)};p(this.vert,"mousedown",b);p(this.horiz,"mousedown",b)},clear:function(){var a=this.horiz.parentNode;a.removeChild(this.horiz);a.removeChild(this.vert)}}, zc.prototype);Ac.prototype=S({update:function(){return{bottom:0,right:0}},setScrollLeft:function(){},setScrollTop:function(){},clear:function(){}},Ac.prototype);m.scrollbarModel={"native":zc,"null":Ac};Ib.prototype.signal=function(a,b){P(a,b)&&this.events.push(arguments)};Ib.prototype.finish=function(){for(var a=0;a=9&&c.hasSelection)c.hasSelection=null;c.poll()});p(f,"paste",function(){if(E&&!d.state.fakedLastChar&&!(new Date-d.state.lastMiddleDown<200)){var a=f.selectionStart,b=f.selectionEnd;f.value=f.value+"$";f.selectionEnd=b;f.selectionStart=a;d.state.fakedLastChar=true}d.state.pasteIncoming=true;c.fastPoll()});p(f,"cut",b);p(f,"copy",b);p(a.scroller,"paste",function(b){if(!ka(a,b)){d.state.pasteIncoming=true;c.focus()}});p(a.lineSpace, "selectstart",function(b){ka(a,b)||L(b)});p(f,"compositionstart",function(){var a=d.getCursor("from");c.composing={start:a,range:d.markText(a,d.getCursor("to"),{className:"CodeMirror-composing"})}});p(f,"compositionend",function(){if(c.composing){c.poll();c.composing.range.clear();c.composing=null}})},prepareSelection:function(){var a=this.cm,b=a.display,c=a.doc,d=$d(a);if(a.options.moveInputWithCursor){var a=ia(a,c.sel.primary().head,"div"),c=b.wrapper.getBoundingClientRect(),e=b.lineDiv.getBoundingClientRect(); d.teTop=Math.max(0,Math.min(b.wrapper.clientHeight-10,a.top+e.top-c.top));d.teLeft=Math.max(0,Math.min(b.wrapper.clientWidth-10,a.left+e.left-c.left))}return d},showSelection:function(a){var b=this.cm.display;R(b.cursorDiv,a.cursors);R(b.selectionDiv,a.selection);if(a.teTop!=null){this.wrapper.style.top=a.teTop+"px";this.wrapper.style.left=a.teLeft+"px"}},reset:function(a){if(!this.contextMenuPending){var b,c,d=this.cm,e=d.doc;if(d.somethingSelected()){this.prevInput="";b=e.sel.primary();c=(b=ue&& (b.to().line-b.from().line>100||(c=d.getSelection()).length>1E3))?"-":c||d.getSelection();this.textarea.value=c;d.state.focused&&Va(this.textarea);if(y&&z>=9)this.hasSelection=c}else if(!a){this.prevInput=this.textarea.value="";if(y&&z>=9)this.hasSelection=null}this.inaccurateSelection=b}},getField:function(){return this.textarea},supportsTouch:function(){return false},focus:function(){if(this.cm.options.readOnly!="nocursor"&&(!Xa||aa()!=this.textarea))try{this.textarea.focus()}catch(a){}},blur:function(){this.textarea.blur()}, resetPosition:function(){this.wrapper.style.top=this.wrapper.style.left=0},receivedFocus:function(){this.slowPoll()},slowPoll:function(){var a=this;a.pollingFast||a.polling.set(this.cm.options.pollInterval,function(){a.poll();a.cm.state.focused&&a.slowPoll()})},fastPoll:function(){function a(){if(!c.poll()&&!b){b=true;c.polling.set(60,a)}else{c.pollingFast=false;c.slowPoll()}}var b=false,c=this;c.pollingFast=true;c.polling.set(20,a)},poll:function(){var a=this.cm,b=this.textarea,c=this.prevInput; if(!a.state.focused||gg(b)&&!c||Nb(a)||a.options.disableInput||a.state.keySeq)return false;if(a.state.pasteIncoming&&a.state.fakedLastChar){b.value=b.value.substring(0,b.value.length-1);a.state.fakedLastChar=false}var d=b.value;if(d==c&&!a.somethingSelected())return false;if(y&&z>=9&&this.hasSelection===d||T&&/[\uf700-\uf7ff]/.test(d)){a.display.input.reset();return false}if(a.doc.sel==a.display.selForContextMenu){var e=d.charCodeAt(0);e==8203&&!c&&(c="​");if(e==8666){this.reset();return this.cm.execCommand("undo")}}for(var f= 0,e=Math.min(c.length,d.length);f1E3||d.indexOf("\n")>-1?b.value=g.prevInput="":g.prevInput=d;if(g.composing){g.composing.range.clear();g.composing.range=a.markText(g.composing.start,a.getCursor("to"),{className:"CodeMirror-composing"})}});return true},ensurePolled:function(){if(this.pollingFast&&this.poll())this.pollingFast=false},onKeyPress:function(){if(y&&z>= 9)this.hasSelection=null;this.fastPoll()},onContextMenu:function(a){function b(){if(g.selectionStart!=null){var a=e.somethingSelected(),b="​"+(a?g.value:"");g.value="⇚";g.value=b;d.prevInput=a?"":"​";g.selectionStart=1;g.selectionEnd=b.length;f.selForContextMenu=e.doc.sel}}function c(){d.contextMenuPending=false;d.wrapper.style.position="relative";g.style.cssText=j;if(y&&z<9)f.scrollbars.setScrollTop(f.scroller.scrollTop=i);if(g.selectionStart!=null){(!y||y&&z<9)&&b();var a=0,c=function(){f.selForContextMenu== e.doc.sel&&g.selectionStart==0&&g.selectionEnd>0&&d.prevInput=="​"?B(e,ec.selectAll)(e):a++<10?f.detectingSelectAll=setTimeout(c,500):f.input.reset()};f.detectingSelectAll=setTimeout(c,200)}}var d=this,e=d.cm,f=e.display,g=d.textarea,h=Qa(e,a),i=f.scroller.scrollTop;if(h&&!Y){e.options.resetSelectionOnContextMenu&&e.doc.sel.contains(h)==-1&&B(e,A)(e.doc,ba(h),ca);var j=g.style.cssText;d.wrapper.style.position="absolute";g.style.cssText="position: fixed; width: 30px; height: 30px; top: "+(a.clientY- 5)+"px; left: "+(a.clientX-5)+"px; z-index: 1000; background: "+(y?"rgba(255, 255, 255, .05)":"transparent")+"; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";if(E)var k=window.scrollY;f.input.focus();E&&window.scrollTo(null,k);f.input.reset();if(!e.somethingSelected())g.value=d.prevInput=" ";d.contextMenuPending=true;f.selForContextMenu=e.doc.sel;clearTimeout(f.detectingSelectAll);y&&z>=9&&b();if($c){ad(a);var n=function(){fa(window,"mouseup", n);setTimeout(c,20)};p(window,"mouseup",n)}else setTimeout(c,50)}},setUneditable:Ab,needsContentAttribute:!1},Lc.prototype);Mc.prototype=S({init:function(a){function b(a){if(d.somethingSelected()){U=d.getSelections();a.type=="cut"&&d.replaceSelection("",null,"cut")}else if(d.options.lineWiseCopyCut){var b=Nd(d);U=b.text;a.type=="cut"&&d.operation(function(){d.setSelections(b.ranges,0,ca);d.replaceSelection("",null,"cut")})}else return;if(a.clipboardData&&!Ma){a.preventDefault();a.clipboardData.clearData(); a.clipboardData.setData("text/plain",U.join("\n"))}else{var c=Pd(),a=c.firstChild;d.display.lineSpace.insertBefore(c,d.display.lineSpace.firstChild);a.value=U.join("\n");var h=document.activeElement;Va(a);setTimeout(function(){d.display.lineSpace.removeChild(c);h.focus()},50)}}var c=this,d=c.cm,a=c.div=a.lineDiv;a.contentEditable="true";Od(a);p(a,"paste",function(a){var b=a.clipboardData&&a.clipboardData.getData("text/plain");if(b){a.preventDefault();d.replaceSelection(b,null,"paste")}});p(a,"compositionstart", function(a){a=a.data;c.composing={sel:d.doc.sel,data:a,startData:a};if(a){var b=d.doc.sel.primary(),g=d.getLine(b.head.line).indexOf(a,Math.max(0,b.head.ch-a.length));if(g>-1&&g<=b.head.ch)c.composing.sel=ba(o(b.head.line,g),o(b.head.line,g+a.length))}});p(a,"compositionupdate",function(a){c.composing.data=a.data});p(a,"compositionend",function(a){var b=c.composing;if(b){if(a.data!=b.startData&&!/\u200b/.test(a.data))b.data=a.data;setTimeout(function(){b.handled||c.applyComposition(b);if(c.composing== b)c.composing=null},50)}});p(a,"touchstart",function(){c.forceCompositionEnd()});p(a,"input",function(){c.composing||c.pollContent()||Q(c.cm,function(){N(d)})});p(a,"copy",b);p(a,"cut",b)},prepareSelection:function(){var a=$d(this.cm,false);a.focus=this.cm.state.focused;return a},showSelection:function(a){if(a&&this.cm.display.view.length){a.focus&&this.showPrimarySelection();this.showMultipleSelections(a)}},showPrimarySelection:function(){var a=window.getSelection(),b=this.cm.doc.sel.primary(),c= Pb(this.cm,a.anchorNode,a.anchorOffset),d=Pb(this.cm,a.focusNode,a.focusOffset);if(!c||c.bad||!d||d.bad||!(v(Mb(c,d),b.from())==0&&v(Lb(c,d),b.to())==0)){c=Qd(this.cm,b.from());d=Qd(this.cm,b.to());if(c||d){var e=this.cm.display.view,b=a.rangeCount&&a.getRangeAt(0);if(c){if(!d){d=e[e.length-1].measure;d=d.maps?d.maps[d.maps.length-1]:d.map;d={node:d[d.length-1],offset:d[d.length-2]-d[d.length-3]}}}else c={node:e[0].measure.map[2],offset:0};try{var f=Aa(c.node,c.offset,d.offset,d.node)}catch(g){}if(f){a.removeAllRanges(); a.addRange(f);b&&a.anchorNode==null?a.addRange(b):sa&&this.startGracePeriod()}this.rememberSelection()}}},startGracePeriod:function(){var a=this;clearTimeout(this.gracePeriod);this.gracePeriod=setTimeout(function(){a.gracePeriod=false;a.selectionChanged()&&a.cm.operation(function(){a.cm.curOp.selectionChanged=true})},20)},showMultipleSelections:function(a){R(this.cm.display.cursorDiv,a.cursors);R(this.cm.display.selectionDiv,a.selection)},rememberSelection:function(){var a=window.getSelection();this.lastAnchorNode= a.anchorNode;this.lastAnchorOffset=a.anchorOffset;this.lastFocusNode=a.focusNode;this.lastFocusOffset=a.focusOffset},selectionInEditor:function(){var a=window.getSelection();if(!a.rangeCount)return false;a=a.getRangeAt(0).commonAncestorContainer;return Oc(this.div,a)},focus:function(){this.cm.options.readOnly!="nocursor"&&this.div.focus()},blur:function(){this.div.blur()},getField:function(){return this.div},supportsTouch:function(){return true},receivedFocus:function(){function a(){if(b.cm.state.focused){b.pollSelection(); b.polling.set(b.cm.options.pollInterval,a)}}var b=this;this.selectionInEditor()?this.pollSelection():Q(this.cm,function(){b.cm.curOp.selectionChanged=true});this.polling.set(this.cm.options.pollInterval,a)},selectionChanged:function(){var a=window.getSelection();return a.anchorNode!=this.lastAnchorNode||a.anchorOffset!=this.lastAnchorOffset||a.focusNode!=this.lastFocusNode||a.focusOffset!=this.lastFocusOffset},pollSelection:function(){if(!this.composing&&!this.gracePeriod&&this.selectionChanged()){var a= window.getSelection(),b=this.cm;this.rememberSelection();var c=Pb(b,a.anchorNode,a.anchorOffset),d=Pb(b,a.focusNode,a.focusOffset);c&&d&&Q(b,function(){A(b.doc,ba(c,d),ca);if(c.bad||d.bad)b.curOp.selectionChanged=true})}},pollContent:function(){var a=this.cm,b=a.display,c=a.doc.sel.primary(),d=c.from(),c=c.to();if(d.lineb.viewTo-1)return false;var e;if(d.line==b.viewFrom||(e=ya(a,d.line))==0){d=C(b.view[0].line);e=b.view[0].node}else{d=C(b.view[e].line);e=b.view[e-1].node.nextSibling}var f= ya(a,c.line);if(f==b.view.length-1){c=b.viewTo-1;b=b.view[f].node}else{c=C(b.view[f+1].line)-1;b=b.view[f+1].node.previousSibling}b=oa(qf(a,e,b,d,c));for(e=za(a.doc,o(d,0),o(c,r(a.doc,c).text.length));b.length>1&&e.length>1;)if(x(b)==x(e)){b.pop();e.pop();c--}else if(b[0]==e[0]){b.shift();e.shift();d++}else break;for(var g=0,f=0,h=b[0],i=e[0],j=Math.min(h.length,i.length);g1||b[0]||v(d,c)){sb(a.doc,b,d,c,"+input");return true}},ensurePolled:function(){this.forceCompositionEnd()},reset:function(){this.forceCompositionEnd()},forceCompositionEnd:function(){if(this.composing&&!this.composing.handled){this.applyComposition(this.composing);this.composing.handled=true;this.div.blur();this.div.focus()}},applyComposition:function(a){a.data&& a.data!=a.startData&&B(this.cm,Kc)(this.cm,a.data,0,a.sel)},setUneditable:function(a){a.setAttribute("contenteditable","false")},onKeyPress:function(a){a.preventDefault();B(this.cm,Kc)(this.cm,String.fromCharCode(a.charCode==null?a.keyCode:a.charCode),0)},onContextMenu:Ab,resetPosition:Ab,needsContentAttribute:!0},Mc.prototype);m.inputStyles={textarea:Lc,contenteditable:Mc};ha.prototype={primary:function(){return this.ranges[this.primIndex]},equals:function(a){if(a==this)return true;if(a.primIndex!= this.primIndex||a.ranges.length!=this.ranges.length)return false;for(var b=0;b=0&&v(a,d.to())<=0)return c}return-1}};w.prototype={from:function(){return Mb(this.anchor,this.head)},to:function(){return Lb(this.anchor,this.head)},empty:function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch}};var Tc={left:0,right:0,top:0,bottom:0},Ba,Pa=null,yf=0,bc,ac,ke=0,cc=0,O=null;y?O=-0.53:sa?O=15:dg?O=-0.7:le&&(O=-1/3);var re=function(a){var b= a.wheelDeltaX,c=a.wheelDeltaY;if(b==null&&a.detail&&a.axis==a.HORIZONTAL_AXIS)b=a.detail;if(c==null&&a.detail&&a.axis==a.VERTICAL_AXIS)c=a.detail;else if(c==null)c=a.wheelDelta;return{x:b,y:c}};m.wheelEventPixels=function(a){a=re(a);a.x=a.x*O;a.y=a.y*O;return a};var Jf=new Ya,dd=null,pa=m.changeEnd=function(a){return!a.text?a.to:o(a.from.line+a.text.length-1,x(a.text).length+(a.text.length==1?a.from.ch:0))};m.prototype={constructor:m,focus:function(){window.focus();this.display.input.focus()},setOption:function(a, b){var c=this.options,d=c[a];if(!(c[a]==b&&a!="mode")){c[a]=b;Ga.hasOwnProperty(a)&&B(this,Ga[a])(this,b,d)}},getOption:function(a){return this.options[a]},getDoc:function(){return this.doc},addKeyMap:function(a,b){this.state.keyMaps[b?"push":"unshift"](kc(a))},removeKeyMap:function(a){for(var b=this.state.keyMaps,c=0;cc){lb(this,e.head.line,a,true);c=e.head.line;d==this.doc.sel.primIndex&&La(this)}}else{for(var f=e.from(),e=e.to(),g=Math.max(c,f.line),c=Math.min(this.lastLine(),e.line-(e.ch?0:1))+1,e=g;e0)&&Pc(this.doc,d,new w(f,e[d].to()),ca)}}}),getTokenAt:function(a,b){return Re(this,a,b)},getLineTokens:function(a,b){return Re(this,o(a),b,true)},getTokenTypeAt:function(a){var a= t(this.doc,a),b=Te(this,r(this.doc,a.line)),c=0,d=(b.length-1)/2,a=a.ch,e;if(a==0)e=b[2];else for(;;){var f=c+d>>1;if((f?b[f*2-1]:0)>=a)d=f;else if(b[f*2+1]d){a=d;c=true}d=r(this.doc,a)}else d=a;return Vc(this,d,{top:0,left:0},b||"page").top+(c?this.doc.height-ga(d):0)},defaultTextHeight:function(){return ta(this.display)},defaultCharWidth:function(){return cb(this.display)},setGutterMarker:J(function(a,b,c){return ic(this.doc,a,"gutter",function(a){var e=a.gutterMarkers||(a.gutterMarkers={});e[b]=c;if(!c&&af(e))a.gutterMarkers=null;return true})}),clearGutter:J(function(a){var b=this,c=b.doc,d=c.first;c.iter(function(c){if(c.gutterMarkers&& c.gutterMarkers[a]){c.gutterMarkers[a]=null;ja(b,d,"gutter");if(af(c.gutterMarkers))c.gutterMarkers=null}++d})}),lineInfo:function(a){if(typeof a=="number"){if(!mb(this.doc,a))return null;var b=a,a=r(this.doc,a);if(!a)return null}else{b=C(a);if(b==null)return null}return{line:b,handle:a,text:a.text,gutterMarkers:a.gutterMarkers,textClass:a.textClass,bgClass:a.bgClass,wrapClass:a.wrapClass,widgets:a.widgets}},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(a, b,c,d,e){var f=this.display,a=ia(this,t(this.doc,a)),g=a.bottom,h=a.left;b.style.position="absolute";b.setAttribute("cm-ignore-events","true");this.display.input.setUneditable(b);f.sizer.appendChild(b);if(d=="over")g=a.top;else if(d=="above"||d=="near"){var i=Math.max(f.wrapper.clientHeight,this.doc.height),j=Math.max(f.sizer.clientWidth,f.lineSpace.clientWidth);if((d=="above"||a.bottom+b.offsetHeight>i)&&a.top>b.offsetHeight)g=a.top-b.offsetHeight;else if(a.bottom+b.offsetHeight<=i)g=a.bottom;h+ b.offsetWidth>j&&(h=j-b.offsetWidth)}b.style.top=g+"px";b.style.left=b.style.right="";if(e=="right"){h=f.sizer.clientWidth-b.offsetWidth;b.style.right="0px"}else{e=="left"?h=0:e=="middle"&&(h=(f.sizer.clientWidth-b.offsetWidth)/2);b.style.left=h+"px"}if(c){a=Zb(this,h,g,h+b.offsetWidth,g+b.offsetHeight);a.scrollTop!=null&&hb(this,a.scrollTop);a.scrollLeft!=null&&Ia(this,a.scrollLeft)}},triggerOnKeyDown:J(ne),triggerOnKeyPress:J(oe),triggerOnKeyUp:me,execCommand:function(a){if(ec.hasOwnProperty(a))return ec[a](this)}, findPosH:function(a,b,c,d){var e=1;if(b<0){e=-1;b=-b}for(var f=0,a=t(this.doc,a);f0&&f(b.charAt(c-1));)--c;for(;d0.5)&&vc(this);F(this,"refresh",this)}),swapDoc:J(function(a){var b=this.doc;b.cm=null;wd(this,a);db(this);this.display.input.reset(); this.scrollTo(a.scrollLeft,a.scrollTop);this.curOp.forceScroll=true;H(this,"swapDoc",this,b);return b}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}};Ua(m);var jf=m.defaults={},Ga=m.optionHandlers={},xd=m.Init={toString:function(){return"CodeMirror.Init"}};u("value","",function(a,b){a.setValue(b)},!0);u("mode", null,function(a,b){a.doc.modeOption=b;uc(a)},!0);u("indentUnit",2,uc,!0);u("indentWithTabs",!1);u("smartIndent",!0);u("tabSize",4,function(a){ab(a);db(a);N(a)},!0);u("specialChars",/[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g,function(a,b,c){a.state.specialChars=RegExp(b.source+(b.test("\t")?"":"|\t"),"g");c!=m.Init&&a.refresh()});u("specialCharPlaceholder",function(a){var b=q("span","•","cm-invalidchar");b.title="\\u"+a.charCodeAt(0).toString(16);b.setAttribute("aria-label",b.title); return b},function(a){a.refresh()},!0);u("electricChars",!0);u("inputStyle",Xa?"contenteditable":"textarea",function(){throw Error("inputStyle can not (yet) be changed in a running editor");},!0);u("rtlMoveVisually",!fg);u("wholeLineUpdateBefore",!0);u("theme","default",function(a){td(a);eb(a)},!0);u("keyMap","default",function(a,b,c){b=kc(b);(c=c!=m.Init&&kc(c))&&c.detach&&c.detach(a,b);b.attach&&b.attach(a,c||null)});u("extraKeys",null);u("lineWrapping",!1,function(a){if(a.options.lineWrapping){ib(a.display.wrapper, "CodeMirror-wrap");a.display.sizer.style.minWidth="";a.display.sizerWidth=null}else{gb(a.display.wrapper,"CodeMirror-wrap");yc(a)}vc(a);N(a);db(a);setTimeout(function(){Ja(a)},100)},!0);u("gutters",[],function(a){rc(a.options);eb(a)},!0);u("fixedGutter",!0,function(a,b){a.display.gutters.style.left=b?Cc(a.display)+"px":"0";a.refresh()},!0);u("coverGutterNextToScrollbar",!1,function(a){Ja(a)},!0);u("scrollbarStyle","native",function(a){ud(a);Ja(a);a.display.scrollbars.setScrollTop(a.doc.scrollTop); a.display.scrollbars.setScrollLeft(a.doc.scrollLeft)},!0);u("lineNumbers",!1,function(a){rc(a.options);eb(a)},!0);u("firstLineNumber",1,eb,!0);u("lineNumberFormatter",function(a){return a},eb,!0);u("showCursorWhenSelecting",!1,jb,!0);u("resetSelectionOnContextMenu",!0);u("lineWiseCopyCut",!0);u("readOnly",!1,function(a,b){if(b=="nocursor"){$a(a);a.display.input.blur();a.display.disabled=true}else{a.display.disabled=false;b||a.display.input.reset()}});u("disableInput",!1,function(a,b){b||a.display.input.reset()}, !0);u("dragDrop",!0,function(a,b,c){if(!b!=!(c&&c!=m.Init)){c=a.display.dragFunctions;b=b?p:fa;b(a.display.scroller,"dragstart",c.start);b(a.display.scroller,"dragenter",c.simple);b(a.display.scroller,"dragover",c.simple);b(a.display.scroller,"drop",c.drop)}});u("cursorBlinkRate",530);u("cursorScrollMargin",0);u("cursorHeight",1,jb,!0);u("singleCursorHeightPerLine",!0,jb,!0);u("workTime",100);u("workDelay",100);u("flattenSpans",!0,ab,!0);u("addModeClass",!1,ab,!0);u("pollInterval",100);u("undoDepth", 200,function(a,b){a.doc.history.undoDepth=b});u("historyEventDelay",1250);u("viewportMargin",10,function(a){a.refresh()},!0);u("maxHighlightLength",1E4,ab,!0);u("moveInputWithCursor",!0,function(a,b){b||a.display.input.resetPosition()});u("tabindex",null,function(a,b){a.display.input.getField().tabIndex=b||""});u("autofocus",null);var hf=m.modes={},Db=m.mimeModes={};m.defineMode=function(a,b){if(!m.defaults.mode&&a!="null")m.defaults.mode=a;if(arguments.length>2)b.dependencies=Array.prototype.slice.call(arguments, 2);hf[a]=b};m.defineMIME=function(a,b){Db[a]=b};m.resolveMode=function(a){if(typeof a=="string"&&Db.hasOwnProperty(a))a=Db[a];else if(a&&typeof a.name=="string"&&Db.hasOwnProperty(a.name)){var b=Db[a.name];typeof b=="string"&&(b={name:b});a=Ze(b,a);a.name=b.name}else if(typeof a=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(a))return m.resolveMode("application/xml");return typeof a=="string"?{name:a}:a||{name:"null"}};m.getMode=function(a,b){var b=m.resolveMode(b),c=hf[b.name];if(!c)return m.getMode(a, "text/plain");c=c(a,b);if(Eb.hasOwnProperty(b.name)){var d=Eb[b.name],e;for(e in d)if(d.hasOwnProperty(e)){c.hasOwnProperty(e)&&(c["_"+e]=c[e]);c[e]=d[e]}}c.name=b.name;if(b.helperType)c.helperType=b.helperType;if(b.modeProps)for(e in b.modeProps)c[e]=b.modeProps[e];return c};m.defineMode("null",function(){return{token:function(a){a.skipToEnd()}}});m.defineMIME("text/plain","null");var Eb=m.modeExtensions={};m.extendMode=function(a,b){var c=Eb.hasOwnProperty(a)?Eb[a]:Eb[a]={};S(b,c)};m.defineExtension= function(a,b){m.prototype[a]=b};m.defineDocExtension=function(a,b){M.prototype[a]=b};m.defineOption=u;var tc=[];m.defineInitHook=function(a){tc.push(a)};var Wa=m.helpers={};m.registerHelper=function(a,b,c){Wa.hasOwnProperty(a)||(Wa[a]=m[a]={_global:[]});Wa[a][b]=c};m.registerGlobalHelper=function(a,b,c,d){m.registerHelper(a,b,d);Wa[a]._global.push({pred:c,val:d})};var Oa=m.copyState=function(a,b){if(b===true)return b;if(a.copyState)return a.copyState(b);var c={},d;for(d in b){var e=b[d];e instanceof Array&&(e=e.concat([]));c[d]=e}return c},wf=m.startState=function(a,b,c){return a.startState?a.startState(b,c):true};m.innerMode=function(a,b){for(;a.innerMode;){var c=a.innerMode(b);if(!c||c.mode==a)break;b=c.state;a=c.mode}return c||{mode:a,state:b}};var ec=m.commands={selectAll:function(a){a.setSelection(o(a.firstLine(),0),o(a.lastLine()),ca)},singleSelection:function(a){a.setSelection(a.getCursor("anchor"),a.getCursor("head"),ca)},killLine:function(a){Ra(a,function(b){if(b.empty()){var c=r(a.doc, b.head.line).text.length;return b.head.ch==c&&b.head.line0){e=new o(e.line,e.ch+1);a.replaceRange(f.charAt(e.ch-1)+f.charAt(e.ch-2),o(e.line,e.ch-2),e,"+transpose")}else if(e.line>a.doc.first){var g=r(a.doc,e.line-1).text;g&&a.replaceRange(f.charAt(0)+ "\n"+g.charAt(g.length-1),o(e.line-1,g.length-1),o(e.line,1),"+transpose")}}c.push(new w(e,e))}a.setSelections(c)})},newlineAndIndent:function(a){Q(a,function(){for(var b=a.listSelections().length,c=0;c=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||void 0},next:function(){if(this.posb},eatSpace:function(){for(var a=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>a},skipToEnd:function(){this.pos=this.string.length},skipTo:function(a){a=this.string.indexOf(a,this.pos);if(a>-1){this.pos=a;return true}},backUp:function(a){this.pos=this.pos-a},column:function(){if(this.lastColumnPos0)return null;if(a&&b!==false)this.pos=this.pos+a[0].length;return a}},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(a,b){this.lineStart=this.lineStart+a;try{return b()}finally{this.lineStart=this.lineStart-a}}};var kd=0,Da=m.TextMarker=function(a,b){this.lines=[];this.type=b;this.doc=a;this.id=++kd};Ua(Da);Da.prototype.clear=function(){if(!this.explicitlyCleared){var a=this.doc.cm,b= a&&!a.curOp;b&&Fa(a);if(P(this,"clear")){var c=this.find();c&&H(this,"clear",c.from,c.to)}for(var d=c=null,e=0;ea.display.maxLineLength){a.display.maxLine=f;a.display.maxLineLength=g;a.display.maxLineChanged=true}}c!=null&&(a&&this.collapsed)&&N(a,c,d+1);this.lines.length=0;this.explicitlyCleared=true;if(this.atomic&&this.doc.cantEdit){this.doc.cantEdit=false;a&&Zd(a.doc)}a&&H(a,"markerCleared",a,this);b&&Ha(a);this.parent&&this.parent.clear()}};Da.prototype.find=function(a,b){a==null&&this.type=="bookmark"&&(a=1);for(var c,d,e=0;e1||!(this.children[0]instanceof xb))){c=[];this.collapse(c);this.children=[new xb(c)];this.children[0].parent=this}},collapse:function(a){for(var b=0;b< this.children.length;++b)this.children[b].collapse(a)},insertInner:function(a,b,c){this.size=this.size+b.length;this.height=this.height+c;for(var d=0;d50){for(;e.lines.length>50;){a=e.lines.splice(e.lines.length-25,25);a=new xb(a);e.height=e.height-a.height;this.children.splice(d+1,0,a);a.parent=this}this.maybeSpill()}break}a=a-f}},maybeSpill:function(){if(!(this.children.length<= 10)){var a=this;do{var b=a.children.splice(a.children.length-5,5),b=new yb(b);if(a.parent){a.size=a.size-b.size;a.height=a.height-b.height;var c=G(a.parent.children,a);a.parent.children.splice(c+1,0,b)}else{c=new yb(a.children);c.parent=a;a.children=[c,b];a=c}b.parent=a.parent}while(a.children.length>10);a.parent.maybeSpill()}},iterN:function(a,b,c){for(var d=0;d=0;f--)Ka(this,d[f]);b?Ud(this,b):this.cm&&La(this.cm)}),undo:K(function(){gc(this,"undo")}), redo:K(function(){gc(this,"redo")}),undoSelection:K(function(){gc(this,"undo",true)}),redoSelection:K(function(){gc(this,"redo",true)}),setExtending:function(a){this.extend=a},getExtending:function(){return this.extend},historySize:function(){for(var a=this.history,b=0,c=0,d=0;d=a.ch))b.push(e.marker.parent||e.marker)}return b},findMarks:function(a,b,c){var a=t(this,a),b=t(this,b),d=[],e=a.line;this.iter(a.line,b.line+1,function(f){if(f=f.markedSpans)for(var g=0;gh.to||h.from==null&&e!=a.line||e==b.line&&h.from>b.ch)&&(!c||c(h.marker)))d.push(h.marker.parent|| h.marker)}++e});return d},getAllMarks:function(){var a=[];this.iter(function(b){if(b=b.markedSpans)for(var c=0;ca){b=a;return true}a=a-d;++c});return t(this,o(c,b))},indexFromPos:function(a){var a=t(this,a),b=a.ch;if(a.lineb)b=a.from;if(a.to!=null&&a.toG(ig,Fb)&&(m.prototype[Fb]=function(a){return function(){return a.apply(this.doc,arguments)}}(M.prototype[Fb])); Ua(M);var L=m.e_preventDefault=function(a){a.preventDefault?a.preventDefault():a.returnValue=false},jg=m.e_stopPropagation=function(a){a.stopPropagation?a.stopPropagation():a.cancelBubble=true},ad=m.e_stop=function(a){L(a);jg(a)},p=m.on=function(a,b,c){if(a.addEventListener)a.addEventListener(b,c,false);else if(a.attachEvent)a.attachEvent("on"+b,c);else{a=a._handlers||(a._handlers={});(a[b]||(a[b]=[])).push(c)}},fa=m.off=function(a,b,c){if(a.removeEventListener)a.removeEventListener(b,c,false);else if(a.detachEvent)a.detachEvent("on"+ b,c);else if(a=a._handlers&&a._handlers[b])for(b=0;b=b)return e+(b-d);e=e+(f-d);e=e+(c-e%c);d=f+1}},qc=[""],Va=function(a){a.select()};Ma?Va=function(a){a.selectionStart=0;a.selectionEnd=a.value.length}:y&&(Va=function(a){try{a.select()}catch(b){}});var kg=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,$e=m.isWordChar=function(a){return/\w/.test(a)||a>"€"&&(a.toUpperCase()!=a.toLowerCase()|| kg.test(a))},bg=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/, Aa;Aa=document.createRange?function(a,b,c,d){var e=document.createRange();e.setEnd(d||a,c);e.setStart(a,b);return e}:function(a,b,c){var d=document.body.createTextRange();try{d.moveToElementText(a.parentNode)}catch(e){return d}d.collapse(true);d.moveEnd("character",c);d.moveStart("character",b);return d};var Oc=m.contains=function(a,b){if(b.nodeType==3)b=b.parentNode;if(a.contains)return a.contains(b);do{if(b.nodeType==11)b=b.host;if(b==a)return true}while(b=b.parentNode)};y&&11>z&&(aa=function(){try{return document.activeElement}catch(a){return document.body}}); var gb=m.rmClass=function(a,b){var c=a.className,d=Bb(b).exec(c);if(d){var e=c.slice(d.index+d[0].length);a.className=c.slice(0,d.index)+(e?d[1]+e:"")}},ib=m.addClass=function(a,b){var c=a.className;if(!Bb(b).test(c))a.className=a.className+((c?" ":"")+b)},vd=!1,Ef=function(){if(y&&z<9)return false;var a=q("div");return"draggable"in a||"dragDrop"in a}(),qd,nd,oa=m.splitLines=3!="\n\nb".split(/\n/).length?function(a){for(var b=0,c=[],d=a.length;b<=d;){var e=a.indexOf("\n",b);if(e==-1)e=a.length;var f= a.slice(b,a.charAt(e-1)=="\r"?e-1:e),g=f.indexOf("\r");if(g!=-1){c.push(f.slice(0,g));b=b+(g+1)}else{c.push(f);b=e+1}}return c}:function(a){return a.split(/\r\n?|\n/)},gg=window.getSelection?function(a){try{return a.selectionStart!=a.selectionEnd}catch(b){return false}}:function(a){try{var b=a.ownerDocument.selection.createRange()}catch(c){}return!b||b.parentElement()!=a?false:b.compareEndPoints("StartToEnd",b)!=0},ue=function(){var a=q("div");if("oncopy"in a)return true;a.setAttribute("oncopy","return;"); return typeof a.oncopy=="function"}(),Uc=null,ra={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",107:"=",109:"-",127:"Delete",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right", 63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"};m.keyNames=ra;(function(){for(var a=0;a<10;a++)ra[a+48]=ra[a+96]=""+a;for(a=65;a<=90;a++)ra[a]=String.fromCharCode(a);for(a=1;a<=12;a++)ra[a+111]=ra[a+63235]="F"+a})();var rb,$f=function(){function a(a){return a<=247?c.charAt(a):1424<=a&&a<=1524?"R":1536<=a&&a<=1773?d.charAt(a-1536):1774<=a&&a<=2220?"r":8192<=a&&a<=8203?"w":a==8204?"b":"L"}function b(a,b,c){this.level=a;this.from=b;this.to=c}var c="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN", d="rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm",e=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,f=/[stwN]/,g=/[LRr]/,h=/[Lb1n]/,i=/[1n]/;return function(c){if(!e.test(c))return false;for(var d=c.length,n=[],l=0,m;l and others Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/toolbarconfigurator/lib/codemirror/show-hint.js0000644000201500020150000001757414514267702031416 0ustar puckpuck(function(f){"object"==typeof exports&&"object"==typeof module?f(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],f):f(CodeMirror)})(function(f){function m(a,b){this.cm=a;this.options=this.buildOptions(b);this.widget=null;this.tick=this.debounce=0;this.startPos=this.cm.getCursor();this.startLen=this.cm.getLine(this.startPos.line).length;var c=this;a.on("cursorActivity",this.activityFunc=function(){c.cursorActivity()})}function t(a,b){function c(a, c){var d;d="string"!=typeof c?function(a){return c(a,b)}:e.hasOwnProperty(c)?e[c]:c;f[a]=d}var e={Up:function(){b.moveFocus(-1)},Down:function(){b.moveFocus(1)},PageUp:function(){b.moveFocus(-b.menuSize()+1,!0)},PageDown:function(){b.moveFocus(b.menuSize()-1,!0)},Home:function(){b.setFocus(0)},End:function(){b.setFocus(b.length-1)},Enter:b.pick,Tab:b.pick,Esc:b.close},d=a.options.customKeys,f=d?{}:e;if(d)for(var g in d)d.hasOwnProperty(g)&&c(g,d[g]);if(d=a.options.extraKeys)for(g in d)d.hasOwnProperty(g)&& c(g,d[g]);return f}function s(a,b){for(;b&&b!=a;){if("LI"===b.nodeName.toUpperCase()&&b.parentNode==a)return b;b=b.parentNode}}function l(a,b){this.completion=a;this.data=b;this.picked=!1;var c=this,e=a.cm,d=this.hints=document.createElement("ul");d.className="CodeMirror-hints";this.selectedHint=b.selectedHint||0;for(var k=b.list,g=0;gi&&(d.style.height=i-5+"px",d.style.top=(p=g.bottom-h.top)+"px",i=e.getCursor(),b.from.ch!=i.ch&&(g=e.cursorCoords(i),d.style.left=(o=g.left)+"px",h=d.getBoundingClientRect()))}i=h.right-j;0j&&(d.style.width=j-5+"px",i-=h.right-h.left-j),d.style.left=(o=g.left-i)+"px");e.addKeyMap(this.keyMap=t(a,{moveFocus:function(a,b){c.changeActive(c.selectedHint+a,b)},setFocus:function(a){c.changeActive(a)}, menuSize:function(){return c.screenAmount()},length:k.length,close:function(){a.close()},pick:function(){c.pick()},data:b}));if(a.options.closeOnUnfocus){var m;e.on("blur",this.onBlur=function(){m=setTimeout(function(){a.close()},100)});e.on("focus",this.onFocus=function(){clearTimeout(m)})}var n=e.getScrollInfo();e.on("scroll",this.onScroll=function(){var c=e.getScrollInfo(),b=e.getWrapperElement().getBoundingClientRect(),f=p+n.top-c.top,g=f-(window.pageYOffset||(document.documentElement||document.body).scrollTop); l||(g=g+d.offsetHeight);if(g<=b.top||g>=b.bottom)return a.close();d.style.top=f+"px";d.style.left=o+n.left-c.left+"px"});f.on(d,"dblclick",function(a){if((a=s(d,a.target||a.srcElement))&&a.hintId!=null){c.changeActive(a.hintId);c.pick()}});f.on(d,"click",function(b){if((b=s(d,b.target||b.srcElement))&&b.hintId!=null){c.changeActive(b.hintId);a.options.completeOnSingleClick&&c.pick()}});f.on(d,"mousedown",function(){setTimeout(function(){e.focus()},20)});f.signal(b,"select",k[0],d.firstChild);return!0} var u="CodeMirror-hint",q="CodeMirror-hint-active";f.showHint=function(a,b,c){if(!b)return a.showHint(c);c&&c.async&&(b.async=!0);b={hint:b};if(c)for(var e in c)b[e]=c[e];return a.showHint(b)};f.defineExtension("showHint",function(a){1=this.data.list.length?a=b?this.data.list.length-1:0:0>a&&(a=b?0:this.data.list.length-1); if(this.selectedHint!=a){var c=this.hints.childNodes[this.selectedHint];c.className=c.className.replace(" "+q,"");c=this.hints.childNodes[this.selectedHint=a];c.className+=" "+q;c.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=c.offsetTop+c.offsetHeight-this.hints.clientHeight+3);f.signal(this.data,"select",this.data.list[this.selectedHint],c)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/ this.hints.firstChild.offsetHeight)||1}};f.registerHelper("hint","auto",function(a,b){var c=a.getHelpers(a.getCursor(),"hint");if(c.length)for(var e=0;e,]/,closeOnUnfocus:!0,completeOnSingleClick:!1,container:null,customKeys:null,extraKeys:null};f.defineOption("hintOptions",null)});rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/toolbarconfigurator/lib/codemirror/neo.css0000644000201500020150000000152314514267702030416 0ustar puckpuck/* neo theme for codemirror */ /* Color scheme */ .cm-s-neo.CodeMirror { background-color:#ffffff; color:#2e383c; line-height:1.4375; } .cm-s-neo .cm-comment {color:#75787b} .cm-s-neo .cm-keyword, .cm-s-neo .cm-property {color:#1d75b3} .cm-s-neo .cm-atom,.cm-s-neo .cm-number {color:#75438a} .cm-s-neo .cm-node,.cm-s-neo .cm-tag {color:#9c3328} .cm-s-neo .cm-string {color:#b35e14} .cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier {color:#047d65} /* Editor styling */ .cm-s-neo pre { padding:0; } .cm-s-neo .CodeMirror-gutters { border:none; border-right:10px solid transparent; background-color:transparent; } .cm-s-neo .CodeMirror-linenumber { padding:0; color:#e0e2e5; } .cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; } .cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; } rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/toolbarconfigurator/lib/codemirror/show-hint.css0000644000201500020150000000127414514267702031560 0ustar puckpuck.CodeMirror-hints { position: absolute; z-index: 10; overflow: hidden; list-style: none; margin: 0; padding: 2px; -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2); -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2); box-shadow: 2px 3px 5px rgba(0,0,0,.2); border-radius: 3px; border: 1px solid silver; background: white; font-size: 90%; font-family: monospace; max-height: 20em; overflow-y: auto; } .CodeMirror-hint { margin: 0; padding: 0 4px; border-radius: 2px; max-width: 19em; overflow: hidden; white-space: pre; color: black; cursor: pointer; } li.CodeMirror-hint-active { background: #08f; color: white; } rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/toolbarconfigurator/lib/codemirror/javascript.js0000644000201500020150000002716214514267702031636 0ustar puckpuck(function(m){"object"==typeof exports&&"object"==typeof module?m(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],m):m(CodeMirror)})(function(m){m.defineMode("javascript",function(oa,p){var H,l,i,t,C;function n(a,d,e){D=a;I=e;return d}function u(a,d){var e=a.next();if('"'==e||"'"==e)return d.tokenize=pa(e),d.tokenize(a,d);if("."==e&&a.match(/^\d+(?:[eE][+\-]?\d+)?/))return n("number","number");if("."==e&&a.match(".."))return n("spread","meta"); if(/[\[\]{}\(\),;\:\.]/.test(e))return n(e);if("="==e&&a.eat(">"))return n("=>","operator");if("0"==e&&a.eat(/x/i))return a.eatWhile(/[\da-f]/i),n("number","number");if(/\d/.test(e))return a.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/),n("number","number");if("/"==e){if(a.eat("*"))return d.tokenize=J,J(a,d);if(a.eat("/"))return a.skipToEnd(),n("comment","comment");if("operator"==d.lastType||"keyword c"==d.lastType||"sof"==d.lastType||/^[\[{}\(,;:]$/.test(d.lastType)){a:for(var e=!1,c,b=!1;null!=(c=a.next());){if(!e){if("/"== c&&!b)break a;"["==c?b=!0:b&&"]"==c&&(b=!1)}e=!e&&"\\"==c}a.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/);return n("regexp","string-2")}a.eatWhile(K);return n("operator","operator",a.current())}if("`"==e)return d.tokenize=Q,Q(a,d);if("#"==e)return a.skipToEnd(),n("error","error");if(K.test(e))return a.eatWhile(K),n("operator","operator",a.current());if(R.test(e))return a.eatWhile(R),e=a.current(),(c=ba.propertyIsEnumerable(e)&&ba[e])&&"."!=d.lastType?n(c.type,c.style,e):n("variable","variable",e)}function pa(a){return function(d, e){var c=!1,b;if(L&&"@"==d.peek()&&d.match(qa))return e.tokenize=u,n("jsonld-keyword","meta");for(;null!=(b=d.next())&&(b!=a||c);)c=!c&&"\\"==b;c||(e.tokenize=u);return n("string","string")}}function J(a,d){for(var b=!1,c;c=a.next();){if("/"==c&&b){d.tokenize=u;break}b="*"==c}return n("comment","comment")}function Q(a,d){for(var b=!1,c;null!=(c=a.next());){if(!b&&("`"==c||"$"==c&&a.eat("{"))){d.tokenize=u;break}b=!b&&"\\"==c}return n("quasi","string-2",a.current())}function S(a,d){d.fatArrowAt&&(d.fatArrowAt= null);var b=a.string.indexOf("=>",a.start);if(!(0>b)){for(var c=0,r=!1,b=b-1;0<=b;--b){var T=a.string.charAt(b),f=ra.indexOf(T);if(0<=f&&3>f){if(!c){++b;break}if(0==--c)break}else if(3<=f&&6>f)++c;else if(R.test(T))r=!0;else{if(/["'\/]/.test(T))return;if(r&&!c){++b;break}}}r&&!c&&(d.fatArrowAt=b)}}function ca(a,d,b,c,r,f){this.indented=a;this.column=d;this.type=b;this.prev=r;this.info=f;null!=c&&(this.align=c)}function f(){for(var a=arguments.length-1;0<=a;a--)H.push(arguments[a])}function b(){f.apply(null, arguments);return!0}function v(a){function d(b){for(;b;b=b.next)if(b.name==a)return!0;return!1}var b=l;b.context?(i="def",d(b.localVars)||(b.localVars={name:a,next:b.localVars})):!d(b.globalVars)&&p.globalVars&&(b.globalVars={name:a,next:b.globalVars})}function w(){l.context={prev:l.context,vars:l.localVars};l.localVars=sa}function x(){l.localVars=l.context.vars;l.context=l.context.prev}function g(a,b){var e=function(){var c=l,e=c.indented;if("stat"==c.lexical.type)e=c.lexical.indented;else for(var f= c.lexical;f&&")"==f.type&&f.align;f=f.prev)e=f.indented;c.lexical=new ca(e,t.column(),a,null,c.lexical,b)};e.lex=!0;return e}function h(){var a=l;a.lexical.prev&&(")"==a.lexical.type&&(a.indented=a.lexical.indented),a.lexical=a.lexical.prev)}function j(a){function d(e){return e==a?b():";"==a?f():b(d)}return d}function o(a,d){return"var"==a?b(g("vardef",d.length),U,j(";"),h):"keyword a"==a?b(g("form"),k,o,h):"keyword b"==a?b(g("form"),o,h):"{"==a?b(g("}"),V,h):";"==a?b():"if"==a?("else"==l.lexical.info&& l.cc[l.cc.length-1]==h&&l.cc.pop()(),b(g("form"),k,o,h,da)):"function"==a?b(s):"for"==a?b(g("form"),ea,o,h):"variable"==a?b(g("stat"),ta):"switch"==a?b(g("form"),k,g("}","switch"),j("{"),V,h,h):"case"==a?b(k,j(":")):"default"==a?b(j(":")):"catch"==a?b(g("form"),w,j("("),W,j(")"),o,h,x):"module"==a?b(g("form"),w,ua,x,h):"class"==a?b(g("form"),va,h):"export"==a?b(g("form"),wa,h):"import"==a?b(g("form"),xa,h):f(g("stat"),k,j(";"),h)}function k(a){return fa(a,!1)}function q(a){return fa(a,!0)}function fa(a, d){if(l.fatArrowAt==t.start){var e=d?ga:ha;if("("==a)return b(w,g(")"),E(y,")"),h,j("=>"),e,x);if("variable"==a)return f(w,y,j("=>"),e,x)}e=d?X:M;return ya.hasOwnProperty(a)?b(e):"function"==a?b(s,e):"keyword c"==a?b(d?ia:Y):"("==a?b(g(")"),Y,N,j(")"),h,e):"operator"==a||"spread"==a?b(d?q:k):"["==a?b(g("]"),za,h,e):"{"==a?F(Aa,"}",null,e):"quasi"==a?f(O,e):b()}function Y(a){return a.match(/[;\}\)\],]/)?f():f(k)}function ia(a){return a.match(/[;\}\)\],]/)?f():f(q)}function M(a,d){return","==a?b(k): X(a,d,!1)}function X(a,d,e){var c=!1==e?M:X,r=!1==e?k:q;if("=>"==a)return b(w,e?ga:ha,x);if("operator"==a)return/\+\+|--/.test(d)?b(c):"?"==d?b(k,j(":"),r):b(r);if("quasi"==a)return f(O,c);if(";"!=a){if("("==a)return F(q,")","call",c);if("."==a)return b(Ba,c);if("["==a)return b(g("]"),Y,j("]"),h,c)}}function O(a,d){return"quasi"!=a?f():"${"!=d.slice(d.length-2)?b(O):b(k,Ca)}function Ca(a){if("}"==a)return i="string-2",l.tokenize=Q,b(O)}function ha(a){S(t,l);return f("{"==a?o:k)}function ga(a){S(t, l);return f("{"==a?o:q)}function ta(a){return":"==a?b(h,o):f(M,j(";"),h)}function Ba(a){if("variable"==a)return i="property",b()}function Aa(a,d){if("variable"==a||"keyword"==C)return i="property","get"==d||"set"==d?b(Da):b(G);if("number"==a||"string"==a)return i=L?"property":C+" property",b(G);if("jsonld-keyword"==a)return b(G);if("["==a)return b(k,j("]"),G)}function Da(a){if("variable"!=a)return f(G);i="property";return b(s)}function G(a){if(":"==a)return b(q);if("("==a)return f(s)}function E(a, d){function e(c){return","==c?(c=l.lexical,"call"==c.info&&(c.pos=(c.pos||0)+1),b(a,e)):c==d?b():b(j(d))}return function(c){return c==d?b():f(a,e)}}function F(a,d,e){for(var c=3;c!?|~^]/,qa=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/, D,I,ra="([{}])",ya={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,"this":!0,"jsonld-keyword":!0};H=i=l=null;C=t=void 0;var sa={name:"this",next:{name:"arguments"}};h.lex=!0;return{startState:function(a){a={tokenize:u,lastType:"sof",cc:[],lexical:new ca((a||0)-A,0,"block",!1),localVars:p.localVars,context:p.localVars&&{vars:p.localVars},indented:0};p.globalVars&&"object"==typeof p.globalVars&&(a.globalVars=p.globalVars);return a},token:function(a,b){a.sol()&&(b.lexical.hasOwnProperty("align")|| (b.lexical.align=!1),b.indented=a.indentation(),S(a,b));if(b.tokenize!=J&&a.eatSpace())return null;var e=b.tokenize(a,b);if("comment"==D)return e;b.lastType="operator"==D&&("++"==I||"--"==I)?"incdec":D;var c;a:{var f=D,h=I,g=b.cc;l=b;t=a;i=null;H=g;C=e;b.lexical.hasOwnProperty("align")||(b.lexical.align=!0);for(;;)if((g.length?g.pop():B?k:o)(f,h)){for(;g.length&&g[g.length-1].lex;)g.pop()();if(i){c=i;break a}if(c="variable"==f)b:{for(c=b.localVars;c;c=c.next)if(c.name==h){c=!0;break b}for(f=b.context;f;f= f.prev)for(c=f.vars;c;c=c.next)if(c.name==h){c=!0;break b}c=void 0}if(c){c="variable-2";break a}c=e;break a}}return c},indent:function(a,b){if(a.tokenize==J)return m.Pass;if(a.tokenize!=u)return 0;var e=b&&b.charAt(0),c=a.lexical;if(!/^\s*else\b/.test(b))for(var f=a.cc.length-1;0<=f;--f){var g=a.cc[f];if(g==h)c=c.prev;else if(g!=da)break}"stat"==c.type&&"}"==e&&(c=c.prev);na&&(")"==c.type&&"stat"==c.prev.type)&&(c=c.prev);f=c.type;g=e==f;return"vardef"==f?c.indented+("operator"==a.lastType||","== a.lastType?c.info+1:0):"form"==f&&"{"==e?c.indented:"form"==f?c.indented+A:"stat"==f?c.indented+("operator"==a.lastType||","==a.lastType||K.test(b.charAt(0))||/[,.]/.test(b.charAt(0))?na||A:0):"switch"==c.info&&!g&&!1!=p.doubleIndentSwitch?c.indented+(/^(?:case|default)\b/.test(b)?A:2*A):c.align?c.column+(g?0:1):c.indented+(g?0:A)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:B?null:"/*",blockCommentEnd:B?null:"*/",lineComment:B?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``", helperType:B?"json":"javascript",jsonldMode:L,jsonMode:B}});m.registerHelper("wordChars","javascript",/[\w$]/);m.defineMIME("text/javascript","javascript");m.defineMIME("text/ecmascript","javascript");m.defineMIME("application/javascript","javascript");m.defineMIME("application/x-javascript","javascript");m.defineMIME("application/ecmascript","javascript");m.defineMIME("application/json",{name:"javascript",json:!0});m.defineMIME("application/x-json",{name:"javascript",json:!0});m.defineMIME("application/ld+json", {name:"javascript",jsonld:!0});m.defineMIME("text/typescript",{name:"javascript",typescript:!0});m.defineMIME("application/typescript",{name:"javascript",typescript:!0})});rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/toolbarconfigurator/lib/codemirror/codemirror.css0000644000201500020150000001764014514267702032011 0ustar puckpuck/* BASICS */ .CodeMirror { /* Set height, width, borders, and global font properties here */ font-family: monospace; height: 300px; color: black; } /* PADDING */ .CodeMirror-lines { padding: 4px 0; /* Vertical padding around content */ } .CodeMirror pre { padding: 0 4px; /* Horizontal padding of content */ } .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { background-color: white; /* The little square between H and V scrollbars */ } /* GUTTER */ .CodeMirror-gutters { border-right: 1px solid #ddd; background-color: #f7f7f7; white-space: nowrap; } .CodeMirror-linenumbers {} .CodeMirror-linenumber { padding: 0 3px 0 5px; min-width: 20px; text-align: right; color: #999; white-space: nowrap; } .CodeMirror-guttermarker { color: black; } .CodeMirror-guttermarker-subtle { color: #999; } /* CURSOR */ .CodeMirror div.CodeMirror-cursor { border-left: 1px solid black; } /* Shown when moving in bi-directional text */ .CodeMirror div.CodeMirror-secondarycursor { border-left: 1px solid silver; } .CodeMirror.cm-fat-cursor div.CodeMirror-cursor { width: auto; border: 0; background: #7e7; } .CodeMirror.cm-fat-cursor div.CodeMirror-cursors { z-index: 1; } .cm-animate-fat-cursor { width: auto; border: 0; -webkit-animation: blink 1.06s steps(1) infinite; -moz-animation: blink 1.06s steps(1) infinite; animation: blink 1.06s steps(1) infinite; } @-moz-keyframes blink { 0% { background: #7e7; } 50% { background: none; } 100% { background: #7e7; } } @-webkit-keyframes blink { 0% { background: #7e7; } 50% { background: none; } 100% { background: #7e7; } } @keyframes blink { 0% { background: #7e7; } 50% { background: none; } 100% { background: #7e7; } } /* Can style cursor different in overwrite (non-insert) mode */ div.CodeMirror-overwrite div.CodeMirror-cursor {} .cm-tab { display: inline-block; text-decoration: inherit; } .CodeMirror-ruler { border-left: 1px solid #ccc; position: absolute; } /* DEFAULT THEME */ .cm-s-default .cm-keyword {color: #708;} .cm-s-default .cm-atom {color: #219;} .cm-s-default .cm-number {color: #164;} .cm-s-default .cm-def {color: #00f;} .cm-s-default .cm-variable, .cm-s-default .cm-punctuation, .cm-s-default .cm-property, .cm-s-default .cm-operator {} .cm-s-default .cm-variable-2 {color: #05a;} .cm-s-default .cm-variable-3 {color: #085;} .cm-s-default .cm-comment {color: #a50;} .cm-s-default .cm-string {color: #a11;} .cm-s-default .cm-string-2 {color: #f50;} .cm-s-default .cm-meta {color: #555;} .cm-s-default .cm-qualifier {color: #555;} .cm-s-default .cm-builtin {color: #30a;} .cm-s-default .cm-bracket {color: #997;} .cm-s-default .cm-tag {color: #170;} .cm-s-default .cm-attribute {color: #00c;} .cm-s-default .cm-header {color: blue;} .cm-s-default .cm-quote {color: #090;} .cm-s-default .cm-hr {color: #999;} .cm-s-default .cm-link {color: #00c;} .cm-negative {color: #d44;} .cm-positive {color: #292;} .cm-header, .cm-strong {font-weight: bold;} .cm-em {font-style: italic;} .cm-link {text-decoration: underline;} .cm-strikethrough {text-decoration: line-through;} .cm-s-default .cm-error {color: #f00;} .cm-invalidchar {color: #f00;} .CodeMirror-composing { border-bottom: 2px solid; } /* Default styles for common addons */ div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} .CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } .CodeMirror-activeline-background {background: #e8f2ff;} /* STOP */ /* The rest of this file contains styles related to the mechanics of the editor. You probably shouldn't touch them. */ .CodeMirror { position: relative; overflow: hidden; background: white; } .CodeMirror-scroll { overflow: scroll !important; /* Things will break if this is overridden */ /* 30px is the magic margin used to hide the element's real scrollbars */ /* See overflow: hidden in .CodeMirror */ margin-bottom: -30px; margin-right: -30px; padding-bottom: 30px; height: 100%; outline: none; /* Prevent dragging from highlighting the element */ position: relative; } .CodeMirror-sizer { position: relative; border-right: 30px solid transparent; } /* The fake, visible scrollbars. Used to force redraw during scrolling before actuall scrolling happens, thus preventing shaking and flickering artifacts. */ .CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { position: absolute; z-index: 6; display: none; } .CodeMirror-vscrollbar { right: 0; top: 0; overflow-x: hidden; overflow-y: scroll; } .CodeMirror-hscrollbar { bottom: 0; left: 0; overflow-y: hidden; overflow-x: scroll; } .CodeMirror-scrollbar-filler { right: 0; bottom: 0; } .CodeMirror-gutter-filler { left: 0; bottom: 0; } .CodeMirror-gutters { position: absolute; left: 0; top: 0; z-index: 3; } .CodeMirror-gutter { white-space: normal; height: 100%; display: inline-block; margin-bottom: -30px; /* Hack to make IE7 behave */ *zoom:1; *display:inline; } .CodeMirror-gutter-wrapper { position: absolute; z-index: 4; height: 100%; } .CodeMirror-gutter-elt { position: absolute; cursor: default; z-index: 4; } .CodeMirror-gutter-wrapper { -webkit-user-select: none; -moz-user-select: none; user-select: none; } .CodeMirror-lines { cursor: text; min-height: 1px; /* prevents collapsing before first draw */ } .CodeMirror pre { /* Reset some styles that the rest of the page might have set */ -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; border-width: 0; background: transparent; font-family: inherit; font-size: inherit; margin: 0; white-space: pre; word-wrap: normal; line-height: inherit; color: inherit; z-index: 2; position: relative; overflow: visible; -webkit-tap-highlight-color: transparent; } .CodeMirror-wrap pre { word-wrap: break-word; white-space: pre-wrap; word-break: normal; } .CodeMirror-linebackground { position: absolute; left: 0; right: 0; top: 0; bottom: 0; z-index: 0; } .CodeMirror-linewidget { position: relative; z-index: 2; overflow: auto; } .CodeMirror-widget {} .CodeMirror-code { outline: none; } /* Force content-box sizing for the elements where we expect it */ .CodeMirror-scroll, .CodeMirror-sizer, .CodeMirror-gutter, .CodeMirror-gutters, .CodeMirror-linenumber { -moz-box-sizing: content-box; box-sizing: content-box; } .CodeMirror-measure { position: absolute; width: 100%; height: 0; overflow: hidden; visibility: hidden; } .CodeMirror-measure pre { position: static; } .CodeMirror div.CodeMirror-cursor { position: absolute; border-right: none; width: 0; } div.CodeMirror-cursors { visibility: hidden; position: relative; z-index: 3; } .CodeMirror-focused div.CodeMirror-cursors { visibility: visible; } .CodeMirror-selected { background: #d9d9d9; } .CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } .CodeMirror-crosshair { cursor: crosshair; } .CodeMirror ::selection { background: #d7d4f0; } .CodeMirror ::-moz-selection { background: #d7d4f0; } .cm-searching { background: #ffa; background: rgba(255, 255, 0, .4); } /* IE7 hack to prevent it from returning funny offsetTops on the spans */ .CodeMirror span { *vertical-align: text-bottom; } /* Used to force a border model for a node */ .cm-force-border { padding-right: .1px; } @media print { /* Hide the cursor when printing */ .CodeMirror div.CodeMirror-cursors { visibility: hidden; } } /* See issue #2901 */ .cm-tab-wrap-hack:after { content: ''; } /* Help users use markselection to safely style text background */ span.CodeMirror-selectedtext { background: none; } rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/img/0000755000201500020150000000000014514267702020676 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/img/navigation-tip.png0000644000201500020150000002737514514267702024353 0ustar puckpuckPNG  IHDR,h.IDATx t[չ%YyB)q&2Alq&NHB ˒gْ;kKoܮ.Go{tWn弳O#\\t&I|}{t]zSmvy܆U'muؓF Nz}nF~ͳ o]a./ޜ\]5q`6 `I0)u[S[-\0@@g eN7]k67y)WLLu"~ڝ7dHDȲf+ЀXܖ}/֞$py'13!ctjg6'SrŢӥd׵=mߺ$·\w~[EBgS6ܵ'}ϾJL$Syvѝ7ۚl\CCW/mJduiPp>tNa^ٱ H!53 y[Zxڇ>AI gKuqxwm-kcǛ϶:жU֥nwv?>)W,z(+|>Ou@(s}Ui|urujf՛D;IPpmy\Ȼ:;/?|Qn:YuCkcIHhV Lx-]2hɒltJQ4Rݦm)-|ְt߿Hܨ~/Ll٦7 I,zr˼ϻ;. nm>Q%DKI-|#(, D(0ٳRfRiRlZ)!z [6teE:׆+7#]y+9㋔]躖q{=WRt$;I°7u+}Tַ͖7vu Oߊޗ;<7Ϋ 4wg8Bˆ6_5wū:4O vo80ٶg[;'Ρ~;Z5%_u^\1#7۵qCr6v4?~Mέq?X;/\[QfUSQkd\ۺ._yAy?7| ՉH[d[ؾy赻}p+캟c"xX_d|RNR)vjS32/O+^|=cw?Q_!V~\!d%8[AQLT4/(;β߆ ʘ &v@؂q}²#T1\T{[Ģb~m 9zG@fʛ$ik}Qr:f+Fx @#U-ɛ^ki!9`qbd03j Q8&m U-!{3! K%/Tr^8ДZ$4!>ȔuF&Dxx&x2z4ᰦ!BKN.Y916*(:?Z%(O:~5iԟbβFywJ}ROKF-&(dĈ񨨗sf:%7QK< oV[7d+1">ס)}.V8C^/=%ϔ]% Ii 봆|jh!Vƛ(cδ(z.ikx͸ZM0M(xDśN'W򂣒VxɮjҼEIJ3i)~ e8䵆QK|9%,q ZϳnfN2-?y2l@f"rv81ZxR2akru#EHT*"GYRKUz5Ğ@1pODŭ=>+9ס Ϭ *%SF,o&c*'ȽVjiBǝ]g+#mL.S&9G=j ?dTi*$>~yk+?FHK!p-2Aq4v]$&R4+5uc@ey5:&!][ZhmJu^KSvݚ$;EGF*t]P6|D# ǒv~GҮF +nDԮ!( a9~1Q[M-d$aaCCEnx8HCE͐ϐ.(xRd]&e>Ua"E5HQIgqF]õn]Zm4#Ԃr{5ϣdx cwB^'v=Y}< q|_9ܓE.K)'4wRp(*=)k%tcG^a dѮOV9.;NxfK͛F%kwT1.U@D!v.9=ܓU>|;&JJN '' U! B8B V8è$(,M2*xvElg51ZXI^"|7Կ;qdvY)r~x_g{rEOR' 4'OiJ"Sh!@BB$ո=lƀǛ`y*~ǣ}OLEj'; 7^f-IgwIڲs4sb;5}VQ&:Vi>-1~UNIhE;!$m{b/,0et5,E%%w0|.:{xb|ֱi)Κ\E'WK%v4/:,M¼KH*Ŗ}bqðA @`gFʛ9'jfvz[|_ ws>5kJTl9g<>_{HE럔İ 7:MG*Ϣ-T[B-7\JX5Tfer% q3|eZҌx<_Ǔkr׈H<Ņ߇ j-d4GۦȈBR_I*g&WC^Uj)H5ȏn+ACy*1iLƖ-(=2'Ȣ,aǪ|x2V fQzxl=10} 6*ZPXyt1J)5}4j%7һa1[Ǎ}ψ3}C{<yX7S8'ZEMۓ\Hh(zCPg.%t,?g:F0//O_Y]mE$]J0%Sl+kvTqqt1]%X˙lG_=ēHmE'9_HN'|и㓕w֖:Zz^hE|ki~QYƝWֆ~0x3-iy}}[uשMh{!>5C1;aKݾ7iݗ:yڇ[nC ʃN?T-؜,7\] P n|z_%5/X$mʕe6AHZ~eޓ3 i3ffNϝIʖ N{;B[K-sҧߔb+-5=66fx_(~,xE|f4̘63}5¾& >@?`H$ib7wNV&ﮝ9o &6U6wkr#; 3M:yͲGON6EOgq>);;$n2f-Rzh=uJgo! Y-c)s8%Y`±*>nm#8o޲qyiy3VxL@p)3ҶSr6KnMQRf&I}OH)j?[{kK\S VN;-`dǶ}xOK=vǥڿfiT$s&´=6޹y%1d[CwCiC.thvwl[]h.F]>]Wr3R^ю%⦤YeWܦ`d*[J/ntmߚpʹYflJZ&;!3[p}J&[SϿ[~Vm]=$swVe; a#&l#L >KEGN^6m=y2jPžb8j=kc*A;uEܛRV搄(%AZ6Y a{-tg,7miu`ⰲ/9["6kSϋ``k `ͽg˗>0 ?#})tKB;C;ssw؛{h %u6i20&ac^)PHoam} {C%^?_L6n^|乊6^q_{6|ȗ&s41OEbx  .9xQ]*P~o,|<e :N:/{P].[zVu.L,n? S6tqco7[K#󞧭o\j=}t+}n;oP_|\(XyPdKWKo:zfƺ`:_Foƞ;om yQp|}C3Co"C;2$5uuއ+f 7*;#frB[N7i޺t W =gSCu>uI%؟(؆"+2(=GW(:jyjH -vq:lmͽ/Y}w=3ʻ.{y vG%_lz$pz9f}_AϿ)jqrjl͡ߕ6v1~Y}s5=pG6t?sit@ LL苯<# ֿ=іpt\״վuԭ-=׼vՁ8cyqxxlDMI)9ft漂2|ƣMDW449/<$eҵ.-0_`dg"Pfz5d,o8:̸hmmےzvz8vt4uj>9 톀:}zH$T^bJ7o Q/ ((ˬmXQQbI@b3];Y,) (Ç#:], צO6UeAije; KWkjD,DB4EԐP[%nNK 8Xj 钜{ܡAGo .e# z5n|4x̐`ݸG<.#ڏB9ГMդ/Slg+뺃·t~`6l{ZVeGQXT y|m8p] }qEץKWmⶦtaf"blam6VYw1l O\V99üu.W)S*WWm˯|ɬ_'8xyzGu7"A? (Cӊ^f盞Kn?<'n_5[u#gkV@PĦ5=-WMBc޴UB =|5g7P(( +Hٻ]Ζ҆ο,kn8ֲ!z2g0\]&|D~nr i[O=N i^1Y ot 6| _]Ts&N끠SވX֎t_(qFمk%gZ"hnٶķ7@LI݋f6ԝjlG olg 򎭩]<кya`ޥ.^zm<]9[.Ty۳q Wa,s%֦kPUtFf@v Ń?k޶ev_+iDE3>UupA/ An r;$/ضQAZL@˖-{-6;C8=CT{(,$4U=csEAE#F0MDMZ&tME :຤Ji r;3>1li&OeosqWw?iX_)R5$(ǓA'A1B]]qD1%j$ Y\8`&E+5"D~moJ7:S{MecJzEӧ/"nu:Vx`$`EcaaclZAg |ގZny3y*\?:%WkY713Qo>OfBڄ>p~Xx(3"rs@,z}Q/Y4n A^GQbya7ĘgT`oM5cJ\@"ƍ!G{D0G |]_Z!Ej4TTHI ,H5kVJtkN~}+Л]'AD# E+# **7vSx74 ZQ<7>Wpj ]sc8eJ@h y]J5t#;gFeڴii,T1L`CwQcfky?<.CMsk2׋ʍNiFB+\MZ&-*ZåԘą>G)Mғ+#1-HΘ\\m.z-I? fuX+6%ёXAKh>C)S =Ix^x6y2Qxz ڡZJRh,){㉆w]y]'2 OLu!:DYpO8x&X %) m``u-@cQ\r#xD yezH(h)ENg>rɈ&Rhyn䌨Wim =/:5Fc^ٞbIHw"GX!+^G]hu+(y2<&6Oʒ}_V?SN^5cj7 \hX O>E˘\VZD-?=X_ŕ"'=Q7ߜ$NiDRb8<O S^+y&H2z0PO6jïF#od^y-b]_5ttuv-#C7iIՎ(˜b[n>Gk߫6-e}tT7UxQg wDfhJOĺsd}/q%PXD%4ƛQJ>KG:v,u XzEW~ }`|`k|?pɣ?iNg*ʖ)~Q\IcZ2ӧQK<>O߈[HՓ$@0ZK"NGɣiPtK(g( jhm*_ӛeusgH4'\sȓj(O>:llVo߉{yJwVtA,V_X&<ԓ cPʭpώ͈ |' RKEOjf; {A!B1~@ Hrӊ)+5ADHIx*bKhI:<T!J@ZxܫΣMUK"=| ;PړH.OxYT yb˜iCqkE5 "_ @6IENDB`rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/img/github-top.png0000644000201500020150000000057714514267702023477 0ustar puckpuckPNG  IHDR[iPLTEv"tRNS=\-gQ'Bv6kl|IDATEr0JnB°ٌ06Ov]vgU9Bp.V-y^PvZ E9k<;E=zШ9DjP#eU^KYa8e XU.\l5I_ʜ)dHyIENDB`rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/img/header-bg.png0000644000201500020150000003143614514267702023231 0ustar puckpuckPNG  IHDRqr%2IDATx}Yeu]H8H#P, NdPMٖĬzU)Ѳ# GĎl N#@䧃|(b%fwPU]Cwo>{uXUTΝog3;6v;Nۿ_}W 7蓏vse_~76ӏd4S 2qt])_7sĿIOݳx$Zk?g}AoyMV66ۛ9p' 磙}4VK7qsS$*ګtkZNtR+Y2U73g;-<"ۗ! eb9_L τ2E,"Jn:Uw߅칔 9;ݛ.w?67'ύ6{f[+@mOyegėp!_>; ؙ*|Ǿի_J!s@pik+kf A!X?n!ק {*;] e徻.$vxԜ*nsm cHSP+۔p_JjWJ-qŹB\)^Oŋ7QB۩_Aܙ.).-?qeh˸5vsp5U³qnۋ@jQ4>1P0U>)şm1?=6=^>Asב}*+x f p3*YwJ #}5WJ߆|=U>A;fʁs?M4MS@/l$+9|_cyZnc`m*kzZ x,rqr﹁cԖA k48 iW J-h&v\]9Mc :d4jrRB>J=u*TSkZyyT:V0𾦂n۸62 )#JӶ<6 33amY̳QA5W914eHS.5}K,CV]wUȺn#-SZ8mHwH;H;iפ 9VHq_0Lys&o2u~L}vs_NT&ۚʠ[!ߚ۵Y&wnp%GQwRжpiagDOEg h*_)Bo ‚1S݌%ʤI&]py-uTփF d0\Ux >][@F #0WMۄ4JA@6%iUx:CpvV*A#} vsLdm 3Zvt]̂VDT6lDՒ5x0wE:[(M}`|vb sTy1Th7,h"}{L0Q(*"Mj' AQh6-B4&q,zV2@C vDqϐktcpY ƹ>}vy@v{Cn[zO\zS>MY-u$``WLŔI]X /hHh6 ^`Q<iq8#xb& hG@(wa^ݩhxt@9amSMtws_}ׯ; "2 mK-6KJZ &*(M_N"5J4Pnmy< pA++E@bq@9>済F;h>oDAnHM\S{ vU+;j4;6Q!"*Ah v'`v*EHi' m:դRZ9RaÐͼ6Ԇq㽁6:pΜoytO⽓&VkPh)Af,+WE'I{ZS)w(KL]ȵt CWJ#cfÂ~|.Z08CDA!nB;"A?d֮?7n.q*h*Q8= xQCuf[h ab}%HfVc Ҏ%sfG"R8 1-ܬihe=@ԁ3u^r `. "ߐ6ˆZ :3Q ;mQ^j!GgT:izM$t%Ahal@6]_C#F@w=U7ʞ8M:db AXNm.-aD-8.ABh;(C1_*dK ^hߨi~h/OI٢f2%m +0DΫai %CUI(U1ԦJj-1p $i[;7Bul+ZOhl=6 aA @J ZBKAlgLRĠn"nAnsk uR+VPMC҄@V%lIU##astdaȝn4߫nt*;;eu[,2#(XilyG灮h[LP`ZhJZHPI[8 m>x wb:/i 4PC(v?™J+΍Ji滔M'6JH™j NfC/C'.Bnէ$:`o6USٍy YPQ9Hq { F9\spKL|!28,el&86Bv,ZaF.@B{;яbp"g}gŒ$Oܼ$s`8Ym6m di]46@gZ ڂ)^46@imZIMkp:\\R \͎RnVKtͦ~#E-eƐPfSS4Ѱ9:[oHh;YD3HE [4zScף`i&RZ+Cnt'U];О^ ؾR*ŷE qrT_#Łlzw];I2 4rslh+tĎʞLj:2L!Z*>i)imMnu&44YLrى˝g.B=3of|ҟy3/m? "3gw~/}h ryQ[whJ 2\!rv SktM} gŮGYsىսݳ{g'dDs3k(ې[:d6MW!oA^|U~%#/̯>4uB5@'D PÔWtkoc]J߿ii2 S5Jӻ3̙g_?YŸ6O7GmYR C#\ ɂV0n,Yw{3c0;f۞Ø=z[է>/>]Տ\xL<:~1sfRta`v=0ЌI#[L ObO=>؇>#O=#ih0>7{GyGޟ{艜w;Nw;~*~q+SK0sh?c_+q'4':/ZW꓅֊cIt._M|֋gPYBatУr>Jg˿r4ansaInU+IR=lCx;ZjDSWq|6,_+ M 4gƌ{dT@lg{=#%Tq$煵=.eF}=Sz[Է[&_jNjwPHl=lpvT@l?0I˘9װF666+[Soq.L+:jK#fgqP:[&.-&'7/qd}l:̞N>Y=>T +i%]KtZȨy?8Qgo伌)K`d”ݰ/4Xq3n*+JL0eYauThdqTAl Ri(ؼ5& ]Rpt#P_q4+ہ,MJgKBSej|FONr^\ct &=˝@e=^s_pX&񀬢1{t#fDP@Ok^X}r"id|.ԐL{fR)a5.}&8VZG0Ԩ\-;J*tc{#ߜjO sF$e,ڧV%pEJ(v5PEk˜IFZb(O!)Чfr pNr^ƌ'VF%'4KsZH)־¦ІJwZ8qǕUy(Ty'D!۞.+X{q^UI*@1\vdH ީ ku8(-0 ɬ,{#P =y!HkQ>!U椴>9N eMڤRfuĄ'QB{(8(-I>بw;yS2RW;I[@xNM4Ӏ͎+O4q*\.r<" )1P:[SJJ I AL:U:%)Dj0e f o jF7m QR9< %2Cm&*'9/"$.۵ZHNlhV^]*9xn))1P:[;3%4S"i`̓LF tyB:ùnpf6T)-ZxTA_K)H=TG{'9/c/'˅tš&n:*FNprڪl#5#r>Jg'ky퉉Jzb96q& UOM) A"=g)i5W4M8(-j}8; ;^ jtѼ8Ă#"H:*ޟ.RY3RM,Ԑmǃ#Ȩ '꘡Rv:'ԼIJY@u2FzC7J> (в՞h;埕Ozp q4+7>yK Fо8xY- LBYIP ,n}QR9_:eL8n5DjvBM4M5u&S8 4zcG'#UGF|Ζva^IkSX25 I& OI%g]UmWV-=qvay#wFK)-.|S+6ڰh8='wRDvDqr}v8R*ctM?% 伌NdRHa4h5@j&4\Q0r>JgtB.uk- ؼun*Iv* B`n!m7pNXʊi%qP:[Єr;q.'7/ci X"PHVFA! &2~Ȕ֗Ѡ%tTAl ն2HSvb+HECUKXYm,ꎚJzK?輤LQ!qP:[eaM˺.csb2FF\ԞL\@.v_|%9;q=]ҮgZf /pvZ}Ie(aH6Bl=I 4q-ȏ g'^`U˷[*d-!o1._nEM'| )@\lT9=a? +w>5/ۏ/~w>^1dJ~r6d&S^{C|gx>/'MeP'0zRr;, =qW6/H,=|mI5lSr ,7z\J7KNV#/Q87Z^ΉQ'ٶm/>[T'JUKgMkd\N=.یsE:aMَٗ~Z Xs2V^%$|F_(ۑ&rǏW?nO77z\27yaŸ v LJ,g-('7HW6Y{Lj^ iTd Prxl?m_n*rjlVw'~yhmY΃m[E ]sp(k2U#($R$vL+f9:VHf*WI%r*6Of>*m2͚/da3U;k# ?Jmoߟ/"/nem-T gBZ@'cI%VW®u ʶ$+[aiVٞ5g%90<m} /@&~qCFR^O"vțE N透.-QP v9% #c86Qf,XpɲoaA 2M *"uJuE+_ g*p;+,Xx.FqH/0zo_7YZ|)-ef2sYY_:q9`7 : V={:i6lBI.<>+WJE]D T$<>@[6JZ'kF=ccW *`?ﯻHYfi2 XZ ι0輅BH x9sXxòe^;6h;It%p5+ (YXl ?VC]]]Nga ̥/h˃g&_Լ$?Aւ>o Fz4c{B[j2ѓ8:k؃\!\dB$,N²5 5ϑ˝R:Do4qhIVBAe2f<U"5t΋P4&AĺG{/J_*i5S(S"İUR 8IWxxJ~/8'oDрs6ߴ?ϰ^!^< ĈH%]h*˔Q@ut$&iq5$ӶP@cCxVZ+o.R^ ,yIhowԼ/.7Æa{{ʹ7B?Y{[m_siQAkށCwBoa! NZBknM8Q ruk`(+7HrKn@Ƈ= ^-OEuh`yyf.mYf^g:;3GR˙7O Du7 i"R+ǔfoZLD!Pp:]Svрd {.xM\8E.SI ^7]j( @̨5w"[h{lv31'8M< Ӿh9 -Nk }m1Ӥ@)! sj_ঐNwZH: .D\KBbKaHbqcŽqzaBs>0 F$<>y!ޙp5h9y?'vLu imM+#@Y-5oB/yJ[X ~Hk3qV48St\\! so|`n5:(iNLhzX(NyA5"8q;]bXg$ ƪnNCž~B0ӳB"$ i[;G< VtZ$ c,M-}F%vD>jrTK (-4ެ ـ ڀfa~+ U=>̡٘S)61Z "Z\ :wsvU۲7ٹ5hs^P<wvt}?ۍ\sQkgF2=c쇝-;hZA8A yx05t@FRq@n( tFڮMNnk4<Qs q́)u{-7sQnm&Z(LAĉV5 bf;?TgW+轆[}o4g?n Ebk-~ ak~hRsb Ex9Y}Yf;+nUVBuDS23P%>~үσXπmNP@'OzBaJ7B Yi0Hva殟kTx5zܦK[&^V 4{ϠTvpqMU6i~-#kb=cdv?+W959lS9sf娋=m_lfѷiy};m>RҮskH} ?ms4lg/ؼZqLyy?W!*ݣ.)q+Qo;I1LT6}hAzH>CْrA5}! lFh` !%=29S< Y5l->fo*wsU/@hUL5֞ZύM >Ⱏя0I{Qar\-O<{ƃV:~u\6ϴzTVai^%V~AbƺL̹s4|"mqIENDB`rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/img/header-separator.png0000644000201500020150000000017314514267702024633 0ustar puckpuckPNG  IHDRM3BIDATxK CrCG!76]I2Y.|h +Y6--_ E7IENDB`rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/img/logo.png0000644000201500020150000001340314514267702022345 0ustar puckpuckPNG  IHDR<ӣIDATx tU  $ӁA@TP** 3QxFGs9&;"Y{B! [V.1=;]U]~ޢM`~Sd~r̜)EeZvP60GKGH<0+.LvM;¦`$ğ\lAWj /f&Pe>4+&;j,6=:~$#n$l7f9רy_ ɐCLDzu,Aј[4Ս`q\Ϳ9.koB9fa۝,6CQi[+pDxG ݑʮ2¦}:%)}0% 9l~|6nvLм F6M(Rnl\,_2leqqŷ,,~ WA͒|Pr?1-0FxM(+IJ ou pc\w2y%X[BV1[Q]Z[ ~B8ll.`3*[&q;I [ru"c%plni^F?yGZx+lEk JK%b\f{])\)@[+q[';0n?|m(RtC >xyWZpu~* V唰nO أAvj>WAn9Y*Y8.-ep}DzٞJIu leޙV:/})V$\i![ u[͍B`Mn)9ɊϜ+T $8esd@Y;= n`, δzQ䗲J۳pO\i[6JSCtd;+T9 Mճ Y~9;BS @JNn:jqѕR )>a5gؗE'Ki.ʺ Nbv7QF_l?mywZE°JgJQ >*R(H>=Փq% 3 i6O7U!= [sKG|]FMaߧ>eޝcV䔜[QK KB%<rvf ZWJ 8W J|e ⶏX8NΜeU5\Nɕp{Sو}fyҏe ۢ\JPH\MHiW ъ*f**gP'OMJqs@G` ' Yu2N+dU+ULe5˨>]GJh+M2)3;Y!~j])^J>Ɂ(w:|܈=i̻ DznZ $$W9+$ I5l3 ]!ɸz^J2N#'8lTېl讔Aң)yDjE q^d#{zBKx pWɸӜ2Ƕ•N4V:JWߛR õR! dwҺJ ZLKzgEqj diZG ޕn$cޝ\BoQwh]ql^@j%Gjwdr[")^C*ᶿA+aI7h'۝bޝ1~h% ((T ۽ fQX9t#7JB<׉P//m'w&Rtu# ܕͼ;tY ˑp I&+}R Kefes,8/FI $6=Y.1c4?8xuرcFY, Oxm34cXXX,4ٹ5S7ny1Lngܶvj=-Km·afA!-N\+tgf%D*|:גHFGfdP692TS zڪ+g&J]Dʸmur>߶ TH(QK ?Õ&sWJݖՒPЃY%o1!Ctds!<wy皋yskb_8wP"6FUW]P&5.nrڑQdwIN=q% TPmnܬ&(\uX])W>%!R6ˍ pN U \*qV]Nlwy*l~"3}G&zM& ,x֔  4v\n5\T(m1eۍ"Q ʖv=XIS,.I߭8(qބ6fVA)qއ#:kiw ׻Y\wN8R2`ڝ":K߶n6ǣ~~Cݹݍίcȅ0j7U"9+YBX ߣJyRH^or`|Fܦ{+l[M]Fՙ+_ 8R3ާW œC-pdk|>j#p9Dg>"D+㾒׉O?:~J9v{53:+UBɅ0fz=6Օ]U5}m ^TPpӮ$-QpO"x=w ppnM8?D&n$aQK XJs4ḉP4($C)Jre]jxx/S*ueW:Z!E3e.Wgh2XFi,S& r% To8QkXtRqڶ?#(nvPSDnۿ£S8> 58R hᑎ@;sl]뎕 J3#pCP[KJX(8ח$=TPyٺEoXS/km4rrSp*ARq >MO*Y97 $p-9vZ,}nnImgs{yƠl_9,\ƮT(u UM+dcMЦM1'N@& gDᵔB~8O4em?Ąan:%.b㢴bT*ڪ7cN < xsTSd~a)dQ qJw,74!VS+Oj|w!&D!"cKn5^fGZ1_~mM\3ȕ&z1/P (W'HK<~K+bWq۷J+%ؠpJmذŶ5܆f}k̫.{)oZj\SJntFGbrc%|T1*w|UPΖ1?HI&[W$SoS]8lfc6hc|{J=Oߧul%^O$:_ |H>{h_Dݕ^͕)BL6Y5O??VK>MIPr"z{YP66QMdܕn۸ e8w}wS=qb}ѣ W~;tk9{kеI 2#\*X=$D\f ќ0z=76BFÄ ߽Q@qnqڽSU.ULbu7^4R*da T`~۷,0+ll`X@l8 _ xҼ Qq] n֣pGM*P!3*ܵu*J 먨5!Za2fjf|GފjuQb]$frq% jz2U53/C R+W섽.4IENDB`rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/index.html0000644000201500020150000001504414514267702022123 0ustar puckpuck CKEditor Sample

        Congratulations!

        If you can see CKEditor below, it means that the installation succeeded. You can now try out your new editor version, see its features, and when you are ready to move on, check some of the most useful resources recommended below.

        Hello world!

        I'm an instance of CKEditor.

        Customize Your Editor

        Modular build and numerous configuration options give you nearly endless possibilities to customize CKEditor. Replace the content of your config.js file with the following code and refresh this page (remember to clear the browser cache)!

        CKEDITOR.editorConfig = function( config ) {
        	config.language = 'es';
        	config.uiColor = '#F7B42C';
        	config.height = 300;
        	config.toolbarCanCollapse = true;
        };

        Toolbar Configuration

        If you want to reorder toolbar buttons or remove some of them, check this handy tool!

        More Samples!

        Visit the CKEditor SDK for a huge collection of samples showcasing editor features, with source code readily available to copy and use in your own implementation.

        Developer's Guide

        The most important resource for all developers working with CKEditor, integrating it with their websites and applications, and customizing to their needs. You can start from here:

        • Getting Started – Explains most crucial editor concepts and practices as well as the installation process and integration with your website.
        • Advanced Installation Concepts – Describes how to upgrade, install additional components (plugins, skins), or create a custom build.

        When you have the basics sorted out, feel free to browse some more advanced sections like:

        CKEditor JavaScript API

        CKEditor boasts a rich JavaScript API that you can use to adjust the editor to your needs and integrate it with your website or application.

        CKEditor – The text editor for the Internet – http://ckeditor.com

        Copyright © 2003-2015, CKSource – Frederico Knabben. All rights reserved.

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/0000755000201500020150000000000014514267702020700 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/inlinebycode.html0000644000201500020150000001405614514267702024240 0ustar puckpuck Inline Editing by Code — CKEditor Sample

        CKEditor Samples » Inline Editing by Code

        This sample is not maintained anymore. Check out its brand new version in CKEditor SDK.

        This sample shows how to create an inline editor instance of CKEditor. It is created with a JavaScript call using the following code:

        // This property tells CKEditor to not activate every element with contenteditable=true element.
        CKEDITOR.disableAutoInline = true;
        
        var editor = CKEDITOR.inline( document.getElementById( 'editable' ) );
        

        Note that editable in the code above is the id attribute of the <div> element to be converted into an inline instance.

        Saturn V carrying Apollo 11 Apollo 11

        Apollo 11 was the spaceflight that landed the first humans, Americans Neil Armstrong and Buzz Aldrin, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.

        Armstrong spent about three and a half two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5 kg) of lunar material for return to Earth. A third member of the mission, Michael Collins, piloted the command spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.

        Broadcasting and quotes

        Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:

        One small step for [a] man, one giant leap for mankind.

        Apollo 11 effectively ended the Space Race and fulfilled a national goal proposed in 1961 by the late U.S. President John F. Kennedy in a speech before the United States Congress:

        [...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.

        Technical details

        Mission crew
        Position Astronaut
        Commander Neil A. Armstrong
        Command Module Pilot Michael Collins
        Lunar Module Pilot Edwin "Buzz" E. Aldrin, Jr.

        Launched by a Saturn V rocket from Kennedy Space Center in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of NASA's Apollo program. The Apollo spacecraft had three parts:

        1. Command Module with a cabin for the three astronauts which was the only part which landed back on Earth
        2. Service Module which supported the Command Module with propulsion, electrical power, oxygen and water
        3. Lunar Module for landing on the Moon.

        After being sent to the Moon by the Saturn V's upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the Sea of Tranquility. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the Pacific Ocean on July 24.


        Source: Wikipedia.org

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/wysiwygarea/0000755000201500020150000000000014514267702023253 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/wysiwygarea/fullpage.html0000644000201500020150000001765214514267702025753 0ustar puckpuck Full Page Editing — CKEditor Sample

        CKEditor Samples » Full Page Editing

        This sample is not maintained anymore. Check out its brand new version in CKEditor SDK.

        This sample shows how to configure CKEditor to edit entire HTML pages, from the <html> tag to the </html> tag.

        The CKEditor instance below is inserted with a JavaScript call using the following code:

        CKEDITOR.replace( 'textarea_id', {
        	fullPage: true,
        	allowedContent: true
        });
        

        Note that textarea_id in the code above is the id attribute of the <textarea> element to be replaced.

        The allowedContent in the code above is set to true to disable content filtering. Setting this option is not obligatory, but in full page mode there is a strong chance that one may want be able to freely enter any HTML content in source mode without any limitations.

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/toolbar/0000755000201500020150000000000014514267702022342 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/toolbar/toolbar.html0000644000201500020150000002130414514267702024672 0ustar puckpuck Toolbar Configuration — CKEditor Sample

        CKEditor Samples » Toolbar Configuration

        This sample is not maintained anymore. Check out the brand new CKEditor Toolbar Configurator.

        This sample page demonstrates editor with loaded full toolbar (all registered buttons) and, if current editor's configuration modifies default settings, also editor with modified toolbar.

        Since CKEditor 4 there are two ways to configure toolbar buttons.

        By config.toolbar

        You can explicitly define which buttons are displayed in which groups and in which order. This is the more precise setting, but less flexible. If newly added plugin adds its own button you'll have to add it manually to your config.toolbar setting as well.

        To add a CKEditor instance with custom toolbar setting, insert the following JavaScript call to your code:

        CKEDITOR.replace( 'textarea_id', {
        	toolbar: [
        		{ name: 'document', items: [ 'Source', '-', 'NewPage', 'Preview', '-', 'Templates' ] },	// Defines toolbar group with name (used to create voice label) and items in 3 subgroups.
        		[ 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo' ],			// Defines toolbar group without name.
        		'/',																					// Line break - next group will be placed in new line.
        		{ name: 'basicstyles', items: [ 'Bold', 'Italic' ] }
        	]
        });

        By config.toolbarGroups

        You can define which groups of buttons (like e.g. basicstyles, clipboard and forms) are displayed and in which order. Registered buttons are associated with toolbar groups by toolbar property in their definition. This setting's advantage is that you don't have to modify toolbar configuration when adding/removing plugins which register their own buttons.

        To add a CKEditor instance with custom toolbar groups setting, insert the following JavaScript call to your code:

        CKEDITOR.replace( 'textarea_id', {
        	toolbarGroups: [
        		{ name: 'document',	   groups: [ 'mode', 'document' ] },			// Displays document group with its two subgroups.
         		{ name: 'clipboard',   groups: [ 'clipboard', 'undo' ] },			// Group's name will be used to create voice label.
         		'/',																// Line break - next group will be placed in new line.
         		{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
         		{ name: 'links' }
        	]
        
        	// NOTE: Remember to leave 'toolbar' property with the default value (null).
        });

        Full toolbar configuration

        Below you can see editor with full toolbar, generated automatically by the editor.

        Note: To create editor instance with full toolbar you don't have to set anything. Just leave toolbar and toolbarGroups with the default, null values.

        
        	
        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/inlinetextarea.html0000644000201500020150000001147014514267702024605 0ustar puckpuck Replace Textarea with Inline Editor — CKEditor Sample

        CKEditor Samples » Replace Textarea with Inline Editor

        This sample is not maintained anymore. Check out its brand new version in CKEditor SDK.

        You can also create an inline editor from a textarea element. In this case the textarea will be replaced by a div element with inline editing enabled.

        // "article-body" is the name of a textarea element.
        var editor = CKEDITOR.inline( 'article-body' );
        

        This is a sample form with some fields

        Title:

        Article Body (Textarea converted to CKEditor):

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/inlineall.html0000644000201500020150000002372314514267702023544 0ustar puckpuck Massive inline editing — CKEditor Sample

        CKEditor Samples » Massive inline editing

        This sample is not maintained anymore. Check out its brand new version in CKEditor SDK.

        This sample page demonstrates the inline editing feature - CKEditor instances will be created automatically from page elements with contentEditable attribute set to value true:

        <div contenteditable="true" > ... </div>

        Click inside of any element below to start editing.

        Fusce vitae porttitor

        Lorem ipsum dolor sit amet dolor. Duis blandit vestibulum faucibus a, tortor.

        Proin nunc justo felis mollis tincidunt, risus risus pede, posuere cubilia Curae, Nullam euismod, enim. Etiam nibh ultricies dolor ac dignissim erat volutpat. Vivamus fermentum nisl nulla sem in metus. Maecenas wisi. Donec nec erat volutpat.

        Fusce vitae porttitor a, euismod convallis nisl, blandit risus tortor, pretium. Vehicula vitae, imperdiet vel, ornare enim vel sodales rutrum

        Libero nunc, rhoncus ante ipsum non ipsum. Nunc eleifend pede turpis id sollicitudin fringilla. Phasellus ultrices, velit ac arcu.

        Pellentesque nunc. Donec suscipit erat. Pellentesque habitant morbi tristique ullamcorper.

        Mauris mattis feugiat lectus nec mauris. Nullam vitae ante.

        Integer condimentum sit amet

        Aenean nonummy a, mattis varius. Cras aliquet. Praesent magna non mattis ac, rhoncus nunc, rhoncus eget, cursus pulvinar mollis.

        Proin id nibh. Sed eu libero posuere sed, lectus. Phasellus dui gravida gravida feugiat mattis ac, felis.

        Integer condimentum sit amet, tempor elit odio, a dolor non ante at sapien. Sed ac lectus. Nulla ligula quis eleifend mi, id leo velit pede cursus arcu id nulla ac lectus. Phasellus vestibulum. Nunc viverra enim quis diam.

        Praesent wisi accumsan sit amet nibh

        Donec ullamcorper, risus tortor, pretium porttitor. Morbi quam quis lectus non leo.

        Integer faucibus scelerisque. Proin faucibus at, aliquet vulputate, odio at eros. Fusce gravida, erat vitae augue. Fusce urna fringilla gravida.

        In hac habitasse platea dictumst. Praesent wisi accumsan sit amet nibh. Maecenas orci luctus a, lacinia quam sem, posuere commodo, odio condimentum tempor, pede semper risus. Suspendisse pede. In hac habitasse platea dictumst. Nam sed laoreet sit amet erat. Integer.

        CKEditor logo

        Quisque justo neque, mattis sed, fermentum ultrices posuere cubilia Curae, Vestibulum elit metus, quis placerat ut, lectus. Ut sagittis, nunc libero, egestas consequat lobortis velit rutrum ut, faucibus turpis. Fusce porttitor, nulla quis turpis. Nullam laoreet vel, consectetuer tellus suscipit ultricies, hendrerit wisi. Donec odio nec velit ac nunc sit amet, accumsan cursus aliquet. Vestibulum ante sit amet sagittis mi.

        Nullam laoreet vel consectetuer tellus suscipit

        • Ut sagittis, nunc libero, egestas consequat lobortis velit rutrum ut, faucibus turpis.
        • Fusce porttitor, nulla quis turpis. Nullam laoreet vel, consectetuer tellus suscipit ultricies, hendrerit wisi.
        • Mauris eget tellus. Donec non felis. Nam eget dolor. Vestibulum enim. Donec.

        Quisque justo neque, mattis sed, fermentum ultrices posuere cubilia Curae, Vestibulum elit metus, quis placerat ut, lectus.

        Nullam laoreet vel, consectetuer tellus suscipit ultricies, hendrerit wisi. Ut sagittis, nunc libero, egestas consequat lobortis velit rutrum ut, faucibus turpis. Fusce porttitor, nulla quis turpis.

        Donec odio nec velit ac nunc sit amet, accumsan cursus aliquet. Vestibulum ante sit amet sagittis mi. Sed in nonummy faucibus turpis. Mauris eget tellus. Donec non felis. Nam eget dolor. Vestibulum enim. Donec.

        Tags of this article:

        inline, editing, floating, CKEditor

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/tabindex.html0000644000201500020150000000454414514267702023373 0ustar puckpuck TAB Key-Based Navigation — CKEditor Sample

        CKEditor Samples » TAB Key-Based Navigation

        This sample is not maintained anymore. Check out its brand new version in CKEditor SDK.

        This sample shows how tab key navigation among editor instances is affected by the tabIndex attribute from the original page element. Use TAB key to move between the editors.

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/datafiltering.html0000644000201500020150000013450614514267702024414 0ustar puckpuck Data Filtering — CKEditor Sample

        CKEditor Samples » Data Filtering and Features Activation

        This sample is not maintained anymore. Check out its brand new version in CKEditor SDK.

        This sample page demonstrates the idea of Advanced Content Filter (ACF), a sophisticated tool that takes control over what kind of data is accepted by the editor and what kind of output is produced.

        When and what is being filtered?

        ACF controls every single source of data that comes to the editor. It process both HTML that is inserted manually (i.e. pasted by the user) and programmatically like:

        editor.setData( '<p>Hello world!</p>' );
        

        ACF discards invalid, useless HTML tags and attributes so the editor remains "clean" during runtime. ACF behaviour can be configured and adjusted for a particular case to prevent the output HTML (i.e. in CMS systems) from being polluted. This kind of filtering is a first, client-side line of defense against "tag soups", the tool that precisely restricts which tags, attributes and styles are allowed (desired). When properly configured, ACF is an easy and fast way to produce a high-quality, intentionally filtered HTML.

        How to configure or disable ACF?

        Advanced Content Filter is enabled by default, working in "automatic mode", yet it provides a set of easy rules that allow adjusting filtering rules and disabling the entire feature when necessary. The config property responsible for this feature is config.allowedContent.

        By "automatic mode" is meant that loaded plugins decide which kind of content is enabled and which is not. For example, if the link plugin is loaded it implies that <a> tag is automatically allowed. Each plugin is given a set of predefined ACF rules that control the editor until config.allowedContent is defined manually.

        Let's assume our intention is to restrict the editor to accept (produce) paragraphs only: no attributes, no styles, no other tags. With ACF this is very simple. Basically set config.allowedContent to 'p':

        var editor = CKEDITOR.replace( textarea_id, {
        	allowedContent: 'p'
        } );
        

        Now try to play with allowed content:

        // Trying to insert disallowed tag and attribute.
        editor.setData( '<p style="color: red">Hello <em>world</em>!</p>' );
        alert( editor.getData() );
        
        // Filtered data is returned.
        "<p>Hello world!</p>"
        

        What happened? Since config.allowedContent: 'p' is set the editor assumes that only plain <p> are accepted. Nothing more. This is why style attribute and <em> tag are gone. The same filtering would happen if we pasted disallowed HTML into this editor.

        This is just a small sample of what ACF can do. To know more, please refer to the sample section below and the official Advanced Content Filter guide.

        You may, of course, want CKEditor to avoid filtering of any kind. To get rid of ACF, basically set config.allowedContent to true like this:

        CKEDITOR.replace( textarea_id, {
        	allowedContent: true
        } );
        

        Beyond data flow: Features activation

        ACF is far more than I/O control: the entire UI of the editor is adjusted to what filters restrict. For example: if <a> tag is disallowed by ACF, then accordingly link command, toolbar button and link dialog are also disabled. Editor is smart: it knows which features must be removed from the interface to match filtering rules.

        CKEditor can be far more specific. If <a> tag is allowed by filtering rules to be used but it is restricted to have only one attribute (href) config.allowedContent = 'a[!href]', then "Target" tab of the link dialog is automatically disabled as target attribute isn't included in ACF rules for <a>. This behaviour applies to dialog fields, context menus and toolbar buttons.

        Sample configurations

        There are several editor instances below that present different ACF setups. All of them, except the inline instance, share the same HTML content to visualize how different filtering rules affect the same input data.

        This editor is using default configuration ("automatic mode"). It means that config.allowedContent is defined by loaded plugins. Each plugin extends filtering rules to make it's own associated content available for the user.


        This editor is using a custom configuration for ACF:

        CKEDITOR.replace( 'editor2', {
        	allowedContent:
        		'h1 h2 h3 p blockquote strong em;' +
        		'a[!href];' +
        		'img(left,right)[!src,alt,width,height];' +
        		'table tr th td caption;' +
        		'span{!font-family};' +'
        		'span{!color};' +
        		'span(!marker);' +
        		'del ins'
        } );
        

        The following rules may require additional explanation:

        • h1 h2 h3 p blockquote strong em - These tags are accepted by the editor. Any tag attributes will be discarded.
        • a[!href] - href attribute is obligatory for <a> tag. Tags without this attribute are disarded. No other attribute will be accepted.
        • img(left,right)[!src,alt,width,height] - src attribute is obligatory for <img> tag. alt, width, height and class attributes are accepted but class must be either class="left" or class="right"
        • table tr th td caption - These tags are accepted by the editor. Any tag attributes will be discarded.
        • span{!font-family}, span{!color}, span(!marker) - <span> tags will be accepted if either font-family or color style is set or class="marker" is present.
        • del ins - These tags are accepted by the editor. Any tag attributes will be discarded.

        Please note that UI of the editor is different. It's a response to what happened to the filters. Since text-align isn't allowed, the align toolbar is gone. The same thing happened to subscript/superscript, strike, underline (<u>, <sub>, <sup> are disallowed by config.allowedContent) and many other buttons.


        This editor is using a custom configuration for ACF. Note that filters can be configured as an object literal as an alternative to a string-based definition.

        CKEDITOR.replace( 'editor3', {
        	allowedContent: {
        		'b i ul ol big small': true,
        		'h1 h2 h3 p blockquote li': {
        			styles: 'text-align'
        		},
        		a: { attributes: '!href,target' },
        		img: {
        			attributes: '!src,alt',
        			styles: 'width,height',
        			classes: 'left,right'
        		}
        	}
        } );
        

        This editor is using a custom set of plugins and buttons.

        CKEDITOR.replace( 'editor4', {
        	removePlugins: 'bidi,font,forms,flash,horizontalrule,iframe,justify,table,tabletools,smiley',
        	removeButtons: 'Anchor,Underline,Strike,Subscript,Superscript,Image',
        	format_tags: 'p;h1;h2;h3;pre;address'
        } );
        

        As you can see, removing plugins and buttons implies filtering. Several tags are not allowed in the editor because there's no plugin/button that is responsible for creating and editing this kind of content (for example: the image is missing because of removeButtons: 'Image'). The conclusion is that ACF works "backwards" as well: modifying UI elements is changing allowed content rules.


        This editor is built on editable <h1> element. ACF takes care of what can be included in <h1>. Note that there are no block styles in Styles combo. Also why lists, indentation, blockquote, div, form and other buttons are missing.

        ACF makes sure that no disallowed tags will come to <h1> so the final markup is valid. If the user tried to paste some invalid HTML into this editor (let's say a list), it would be automatically converted into plain text.

        Apollo 11 was the spaceflight that landed the first humans, Americans Neil Armstrong and Buzz Aldrin, on the Moon on July 20, 1969, at 20:18 UTC.


        This editor is using a custom configuration for ACF. It's using the Disallowed Content property of the filter to eliminate all title attributes.

        CKEDITOR.replace( 'editor6', {
        	allowedContent: {
        		'b i ul ol big small': true,
        		'h1 h2 h3 p blockquote li': {
        			styles: 'text-align'
        		},
        		a: {attributes: '!href,target'},
        		img: {
        			attributes: '!src,alt',
        			styles: 'width,height',
        			classes: 'left,right'
        		}
        	},
        	disallowedContent: '*{title*}'
        } );
        

        This editor is using a custom configuration for ACF. It's using the Disallowed Content property of the filter to eliminate all a and img tags, while allowing all other tags.

        CKEDITOR.replace( 'editor7', {
        	allowedContent: {
        		// Allow all content.
        		$1: {
        			elements: CKEDITOR.dtd,
        			attributes: true,
        			styles: true,
        			classes: true
        		}
        	},
        	disallowedContent: 'img a'
        } );
        
        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/replacebyclass.html0000644000201500020150000001554314514267702024572 0ustar puckpuck Replace Textareas by Class Name — CKEditor Sample

        CKEditor Samples » Replace Textarea Elements by Class Name

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

        This sample shows how to automatically replace all <textarea> elements of a given class with a CKEditor instance.

        To replace a <textarea> element, simply assign it the ckeditor class, as in the code below:

        <textarea class="ckeditor" name="editor1"></textarea>
        

        Note that other <textarea> attributes (like id or name) need to be adjusted to your document.

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/replacebycode.html0000644000201500020150000001540214514267702024371 0ustar puckpuck Replace Textarea by Code — CKEditor Sample

        CKEditor Samples » Replace Textarea Elements Using JavaScript Code

        This sample is not maintained anymore. Check out its brand new version in CKEditor SDK.

        This editor is using an <iframe> element-based editing area, provided by the Wysiwygarea plugin.

        CKEDITOR.replace( 'textarea_id' )
        

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/index.html0000644000201500020150000001317614514267702022705 0ustar puckpuck CKEditor Samples

        CKEditor Samples

        These samples are not maintained anymore. Check out the brand new samples in CKEditor SDK.

        Basic Samples

        Replace textarea elements by class name
        Automatic replacement of all textarea elements of a given class with a CKEditor instance.
        Replace textarea elements by code
        Replacement of textarea elements with CKEditor instances by using a JavaScript call.
        Create editors with jQuery
        Creating standard and inline CKEditor instances with jQuery adapter.

        Basic Customization

        User Interface color
        Changing CKEditor User Interface color and adding a toolbar button that lets the user set the UI color.
        User Interface languages
        Changing CKEditor User Interface language and adding a drop-down list that lets the user choose the UI language.

        Plugins

        Magicline plugin
        Using the Magicline plugin to access difficult focus spaces.
        Full page support
        CKEditor inserted with a JavaScript call and used to edit the whole page from <html> to </html>.

        Inline Editing

        Massive inline editor creation
        Turn all elements with contentEditable = true attribute into inline editors.
        Convert element into an inline editor by code
        Conversion of DOM elements into inline CKEditor instances by using a JavaScript call.
        Replace textarea with inline editor New!
        A form with a textarea that is replaced by an inline editor at runtime.

        Advanced Samples

        Data filtering and features activation New!
        Data filtering and automatic features activation basing on configuration.
        Replace DIV elements on the fly
        Transforming a div element into an instance of CKEditor with a mouse click.
        Append editor instances
        Appending editor instances to existing DOM elements.
        Create and destroy editor instances for Ajax applications
        Creating and destroying CKEditor instances on the fly and saving the contents entered into the editor window.
        Basic usage of the API
        Using the CKEditor JavaScript API to interact with the editor at runtime.
        XHTML-compliant style
        Configuring CKEditor to produce XHTML 1.1 compliant attributes and styles.
        Read-only mode
        Using the readOnly API to block introducing changes to the editor contents.
        "Tab" key-based navigation
        Navigating among editor instances with tab key.
        Using the JavaScript API to customize dialog windows
        Using the dialog windows API to customize dialog windows without changing the original editor code.
        Using the "Enter" key in CKEditor
        Configuring the behavior of Enter and Shift+Enter keys.
        Output for Flash
        Configuring CKEditor to produce HTML code that can be used with Adobe Flash.
        Output HTML
        Configuring CKEditor to produce legacy HTML 4 code.
        Toolbar Configurations
        Configuring CKEditor to display full or custom toolbar layout.
        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/appendto.html0000644000201500020150000000432314514267702023402 0ustar puckpuck Append To Page Element Using JavaScript Code — CKEditor Sample

        CKEditor Samples » Append To Page Element Using JavaScript Code

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

        The CKEDITOR.appendTo() method serves to to place editors inside existing DOM elements. Unlike CKEDITOR.replace(), a target container to be replaced is no longer necessary. A new editor instance is inserted directly wherever it is desired.

        CKEDITOR.appendTo( 'container_id',
        	{ /* Configuration options to be used. */ }
        	'Editor content to be used.'
        );

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/enterkey/0000755000201500020150000000000014514267702022526 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/enterkey/enterkey.html0000644000201500020150000001040014514267702025235 0ustar puckpuck ENTER Key Configuration — CKEditor Sample

        CKEditor Samples » ENTER Key Configuration

        This sample is not maintained anymore. Check out its brand new version in CKEditor SDK.

        This sample shows how to configure the Enter and Shift+Enter keys to perform actions specified in the enterMode and shiftEnterMode parameters, respectively. You can choose from the following options:

        • ENTER_P – new <p> paragraphs are created;
        • ENTER_BR – lines are broken with <br> elements;
        • ENTER_DIV – new <div> blocks are created.

        The sample code below shows how to configure CKEditor to create a <div> block when Enter key is pressed.

        CKEDITOR.replace( 'textarea_id', {
        	enterMode: CKEDITOR.ENTER_DIV
        });

        Note that textarea_id in the code above is the id attribute of the <textarea> element to be replaced.

        When Enter is pressed:
        When Shift+Enter is pressed:


        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/ajax.html0000644000201500020150000000522214514267702022512 0ustar puckpuck Ajax — CKEditor Sample

        CKEditor Samples » Create and Destroy Editor Instances for Ajax Applications

        This sample is not maintained anymore. Check out its brand new version in CKEditor SDK.

        This sample shows how to create and destroy CKEditor instances on the fly. After the removal of CKEditor the content created inside the editing area will be displayed in a <div> element.

        For details of how to create this setup check the source code of this sample page for JavaScript code responsible for the creation and destruction of a CKEditor instance.

        Click the buttons to create and remove a CKEditor instance.

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/sample_posteddata.php0000644000201500020150000000142514514267702025104 0ustar puckpuck
        
        -------------------------------------------------------------------------------------------
          CKEditor - Posted Data
        
          We are sorry, but your Web server does not support the PHP language used in this script.
        
          Please note that CKEditor can be used with any other server-side language than just PHP.
          To save the content created with CKEditor you need to read the POST data on the server
          side and write it to a file or the database.
        
          Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
          For licensing, see LICENSE.md or http://ckeditor.com/license
        -------------------------------------------------------------------------------------------
        
        
        */ include "assets/posteddata.php"; ?> rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/uicolor.html0000644000201500020150000000505414514267702023246 0ustar puckpuck UI Color Picker — CKEditor Sample

        CKEditor Samples » UI Color

        This sample is not maintained anymore. Check out its brand new version in CKEditor SDK.

        This sample shows how to automatically replace <textarea> elements with a CKEditor instance with an option to change the color of its user interface.
        Note:The UI skin color feature depends on the CKEditor skin compatibility. The Moono and Kama skins are examples of skins that work with it.

        This editor instance has a UI color value defined in configuration to change the skin color, To specify the color of the user interface, set the uiColor property:

        CKEDITOR.replace( 'textarea_id', {
        	uiColor: '#14B8C4'
        });

        Note that textarea_id in the code above is the id attribute of the <textarea> element to be replaced.

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/uilanguages.html0000644000201500020150000001061714514267702024077 0ustar puckpuck User Interface Globalization — CKEditor Sample

        CKEditor Samples » User Interface Languages

        This sample is not maintained anymore. Check out its brand new version in CKEditor SDK.

        This sample shows how to automatically replace <textarea> elements with a CKEditor instance with an option to change the language of its user interface.

        It pulls the language list from CKEditor _languages.js file that contains the list of supported languages and creates a drop-down list that lets the user change the UI language.

        By default, CKEditor automatically localizes the editor to the language of the user. The UI language can be controlled with two configuration options: language and defaultLanguage. The defaultLanguage setting specifies the default CKEditor language to be used when a localization suitable for user's settings is not available.

        To specify the user interface language that will be used no matter what language is specified in user's browser or operating system, set the language property:

        CKEDITOR.replace( 'textarea_id', {
        	// Load the German interface.
        	language: 'de'
        });

        Note that textarea_id in the code above is the id attribute of the <textarea> element to be replaced.

        Available languages ( languages!):

        (You may see strange characters if your system does not support the selected language)

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/htmlwriter/0000755000201500020150000000000014514267702023101 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/htmlwriter/outputhtml.html0000644000201500020150000001623114514267702026217 0ustar puckpuck HTML Compliant Output — CKEditor Sample

        CKEditor Samples » Producing HTML Compliant Output

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

        This sample shows how to configure CKEditor to output valid HTML 4.01 code. Traditional HTML elements like <b>, <i>, and <font> are used in place of <strong>, <em>, and CSS styles.

        To add a CKEditor instance outputting legacy HTML 4.01 code, load the editor using a standard JavaScript call, and define CKEditor features to use the HTML compliant elements and attributes.

        A snippet of the configuration code can be seen below; check the source of this page for full definition:

        CKEDITOR.replace( 'textarea_id', {
        	coreStyles_bold: { element: 'b' },
        	coreStyles_italic: { element: 'i' },
        
        	fontSize_style: {
        		element: 'font',
        		attributes: { 'size': '#(size)' }
        	}
        
        	...
        });

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/htmlwriter/outputforflash.html0000644000201500020150000002357414514267702027067 0ustar puckpuck Output for Flash — CKEditor Sample

        CKEditor Samples » Producing Flash Compliant HTML Output

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

        This sample shows how to configure CKEditor to output HTML code that can be used with Adobe Flash. The code will contain a subset of standard HTML elements like <b>, <i>, and <p> as well as HTML attributes.

        To add a CKEditor instance outputting Flash compliant HTML code, load the editor using a standard JavaScript call, and define CKEditor features to use HTML elements and attributes.

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

        To see how it works, create some content in the editing area of CKEditor on the left and send it to the Flash object on the right side of the page by using the Send to Flash button.

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/htmlwriter/assets/0000755000201500020150000000000014514267702024403 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/htmlwriter/assets/outputforflash/0000755000201500020150000000000014514267702027470 5ustar puckpuck././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootrt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/htmlwriter/assets/outputforflash/outputforflash.flart-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/htmlwriter/assets/outputforflash/outputforflas0000644000201500020150000024700014514267702032333 0ustar puckpuckࡱ> qRoot Entryp|YrRASH>ޱ3q@ContentsLyFP 1 1212997365AS 1 1216047046,(Root Entry5HZEޱ-3q Contentsr9fP 1 1212997365!S 1 1216047046,( -./0123456789:;<=>?@BCDEFGHIJKMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoM 1 1287673773O= x] tEK ʀ . `PG(#;&gQt2-*a=,N<8ΝQi%%A$]鮪ֽ'O< סԘqRZN*c&=S{~@LݦI1#Ǥv͂ﬕoIɵ ꭅrտyyy퐆?g2 yB8!2Kǥ7XXQt\Pjbt{oo\u_$)aN``18 ptc74{ɚ'bE$u5.m7n)sNS2`_,#ɍ{N`q p8> > >D鲩 tk0 Layer 1OO?mimport flash.external.ExternalInterface; FCKTextArea.htmlText = ""; function setData(htData) { FCKTextArea.htmlText = htData; } ExternalInterface.addCallback("setData", this, setData);  Actions3import flash.ext{@|>x,δ2h<<<|F:tF;-Ĥ>{XnuOlj':D呤7ګ~m9vMXgBYp?~N+<'Oȯɉwڜsp-Wnp:'w'8pjRWbcRo]X^+ ,0 ;YVXW./aHLNCuu~Rz\g%D@7<1'`vyQR{^EG0s/'ɦM͔1%,&慠ڨ~ėp<88TN ܽn{lo K'.09 ?ӋW|eʫ!g3 {dx%\\A+ /yƒ/#'¾"8b*kI u r"핹BO]9=#NT{Ň_]tK9Dyrmn|$WVIF|ՇC>+k>qc`G/m 1gjpaz67[͕krVW? 0'J.pl{eE+>D9_l]y8qi0^ϭY(-7$W2XkB6}8_Ɯ1grpĜɉ9o9sQӴW8F$ñ8};/ljyBNiyvUF@J9]Ù? [~mƜr"0:3XX}YqĜ>-nɉb6oHJ >w_+ }8DƜ_~f?pH>v|Eu{OZugsMmGO(br|`s}/g1͛mӶ]q\ 3su^l4:Zܼg_רQc]o9S/x]du:vds uZ4lp͔xk蛲$~mrƜO|ps6h̙sdYDƜM|v̹:z=l#+c>ϒflƇU%;b0g\T(G](XQ~}3Zjm"qH|.۴/=hĮ^G> ̨=zߺ=?}IJwL#L9gt0gp~Qq3vɉiohfr4[uP?=Ѹ[_ù=8@|E3 x}MֲbuM| >|qI\X{V.][<>Ų`1? ò۰Swy89s]k?\1=^qD]K)b>g`p#`X4}8]3S|WC?'JO?gLCF=8tP``:Edd$ǘ o6=,FDHq^s[ޘ/vT`9 ^|v@7[7@>E{}ʉ=QϾ^V8.ro^3z?\3oߘߛ4sSQL?ZG #Ok&1ˬӶyfgp#+gkT'_1 NytbZiXgFK7_D`q4pW)oJ&M"A;:6+M,{ob(\,_^b:)斊9'Ek;cvH)N/ѱιT̙im Nd|6 K4X|X\urĘ[EcGgdt,G)/ۚ$6,ip:&=m߁YWx%}]=HClPḍɉ7l9,g }c!'&lטeJ)NXܖqt#[㶷|}r>Fvpo>"=!%2D5ɉYgXɉRmWh=Hb5MS>կ=iDžcbO c"Ӱv؟{cYˇcñ9q+N{E"/q/bژFMj7+K  u[wι\8cö89Wy8.X{ČѵRsbzO^@`M_uֺL+ p>X`3b&'eCz^qӸC^/Ñ@zE/ۃ_ 5}TCfD>,{#b ^#I~(uΆR3^[Iu=޴2:Lc_&cl`3us^Ӣ_85p9T^ݚ%vi[co>{:s݀ߤ7Frv%Qm**#Fܫ.>Niplo_JګRN 53%E $G$#K/‘W֓'O< T^uD]zQ\27c@qp 9ΜzY3e ,>7}Rq# C1F\DnGVGi s39 XYr g9ܨb8Uz0jh"U-A(%bq5trr_~s^Y*d 8%><%'xxj`.tbB7<OFLw7pH$OoMd?oGF M$džK~{b:EJ$o3&mdbc]{Ƀ?A&aSbc6f!VYf4ÚYglmwgY /y$I@"G4#PublishGifProperties::PaletteOption"PublishPNGProperties::DitherOption0PublishFormatProperties::projectorMacDefaultName1'PublishFormatProperties::pngDefaultName1-PublishFormatProperties::projectorWinFileN "#$%&'()*p-./0123456789:;<=>?@stuvwxyz{|}~M 1 1287673773OS 2 1287674123QM 3 1287674134O= x] tEK ʀ . `PG(#;&gQt2-*a=,N<8ΝQi%%A$]鮪ֽ'O< סԘqRZN*c&=S{~@LݦI1#Ǥv͂ﬕoIɵ ꭅrտyyy퐆?g2 yB8!2Kǥ7XXQt\Pjbt{oo\u_$)aN``18 ptc74{ɚ'bE$u5.m7n)sNS2`_,#ɍ{N`q p8> > >D鲩 tk0x,δ2h<<<|F:tF;-Ĥ>{XnuOlj':D呤7ګ~m9vMXgBYp?~N+<'Oȯɉwڜsp-Wnp:'w'8pjRWbcRo]X^+ ,0 ;YVXW./aHLNCuu~Rz\g%D@7<1'`vyQR{^EG0s/'ɦM͔1%,&慠ڨ~ėp<88TN ܽn{lo K'.09 ?ӋW|eʫ!g3 {dx%\\A+ /yƒ/#'¾"8b*kI u r"핹BO]9=#NT{Ň_]tK9Dyrmn|$WVIF|ՇC>+k>qc`G/m 1gjpaz67[͕krVW? 0'J.pl{eE+>D9_l]y8qi0^ϭY(-7$W2XkB6}8_Ɯ1grpĜɉ9o9sQӴW8F$ñ8};/ljyBNiyvUF@J9]Ù? [~mƜr"0:3XX}YqĜ>-nɉb6oHJ >w_+ }8DƜ_~f?pH>v|Eu{OZugsMmGO(br|`s}/g1͛mӶ]q\ 3su^l4:Zܼg_רQc]o9S/x]du:vds uZ4lp͔xk蛲$~mrƜO|ps6h̙sdYDƜM|v̹:z=l#+c>ϒflƇU%;b0g\T(G](XQ~}3Zjm"qH|.۴/=hĮ^G> ̨=zߺ=?}IJwL#L9gt0gp~Qq3vɉiohfr4[uP?=Ѹ[_ù=8@|E3 x}MֲbuM| >|qI\X{V.][<>Ų`1? ò۰Swy89s]k?\1=^qD]K)b>g`p#`X4}8]3S|WC?'JO?gLCF=8tP``:Edd$ǘ o6=,FDHq^s[ޘ/vT`9 ^|v@7[7@>E{}ʉ=QϾ^V8.ro^3z?\3oߘߛ4sSQL?ZG #Ok&1ˬӶyfgp#+gkT'_1 NytbZiXgFK7_D`q4pW)oJ&M"A;:6+M,{ob(\,_^b:)斊9'Ek;cvH)N/ѱιT̙im Nd|6 K4X|X\urĘ[EcGgdt,G)/ۚ$6,ip:&=m߁YWx%}]=HClPḍɉ7l9,g }c!'&lטeJ)NXܖqt#[㶷|}r>Fvpo>"=!%2D5ɉYgXɉRmWh=Hb5MS>կ=iDžcbO c"Ӱv؟{cYˇcñ9q+N{E"/q/bژFMj7+K  u[wι\8cö89Wy8.X{ČѵRsbzO^@`M_uֺL+ p>X`3b&'eCz^qӸC^/Ñ@zE/ۃ_ 5}TCfD>,{#b ^#I~(uΆR3^[Iu=޴2:Lc_&cl`3us^Ӣ_85p9T^ݚ%vi[co>{:s݀ߤ7Frv%Qm**#Fܫ.>Niplo_JګRN 53%E $G$#K/‘W֓'O< T^uD]zQ\27c@qp 9ΜzY3e ,>7}Rq# C1F\DnGVGi s39 XYr g9ܨb8Uz0jh"U-A(%bq5trr_~s^Y*d 8%><%'xxj`.tbB7<OFLw7pH$OoMd?oGF M$džK~{b:EJ$o3&mdbc]{Ƀ?A&aSbc6f!VYf4ÚYglmwgY /y$I@"G4ntrollerOption0"PublishQTProperties::PausedAtStart0 CColorDef3PfP0PHP`Px333(3f<03CH3F`3Hxf0f30ff(0f5HCPicPage CPicLayer CPicFrame CPicBitmap&? Layer 1OO Layer 1OOCPicPage CPicLayer CPicFrameCPicText X2ArialArialMT@"(The following text has been produced with CKEditor XhArial Arial-BoldMT@"(Flash Output Sample CPicSymbol????K29g&f0'&44 l< #PaaaDDDDdrrD]grrrrrprrprpppp |nnn_XvXQnXXQXQXQXXXQXXX55X555555555XX5XXXXwXwXXwXwXwaaXwa+%&%aDj""&&f<a%8d&6#8' zz[,zzeO,,, bSS,n_S S,S,SYfzzS,SOadozzzzzzzz;.L'l..7.&L))))m -HM)0.0F1 '  EEDBEEBnBBBBuBn1h tl DDDBDDDEEDE8B - ]0>H H H rH H H H XH XH H XrH XH XH XXXH XXoH XXXXX:CPicText (  Myriad-RomanxEthe text editor for Internet?\ Logo FCKeditor.aiOOCPicPage CPicLayer CPicFrameCPicText  X3 Arial(The following text has been produced with FCKeditor CPicSymbol h  X hArial(Flash Output SampleK29g&f0'&44 l<  <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:12:18 "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/"> <xmp:CreatorTool>Adobe Flash CS4 Professional</xmp:CreatorTool> <xmp:CreateDate>2010-10-21T17:08:13+02:00</xmp:CreateDate> <xmp:MetadataDate>2010-10-21T17:18:13+02:00</xmp:MetadataDate> <xmp:ModifyDate>2010-10-21T17:18:13+02:00</xmp:ModifyDate> </rdf:Description> <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/"> <dc:format>application/vnd.adobe.fla</dc:format> </rdf:Description> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"> <xmpMM:DerivedFrom rdf:parseType="Resource"/> <xmpMM:DocumentID>xmp.did:97FEEC6B26DDDF119CC2FB8A8AACE65D</xmpMM:DocumentID> <xmpMM:InstanceID>xmp.iid:97FEEC6B26DDDF119CC2FB8A8AACE65D</xmpMM:InstanceID> <xmpMM:OriginalDocumentID>xmp.did:97FEEC6B26DDDF119CC2FB8A8AACE65D</xmpMM:OriginalDocumentID> <xmpMM:History> <rdf:Seq> <rdf:li rdf:parseType="Resource"> <stEvt:action>saved</stEvt:action> <stEvt:instanceID>xmp.iid:97FEEC6B26DDDF119CC2FB8A8AACE65D</stEvt:instanceID> <stEvt:when>2010-10-21T17:18:13+02:00</stEvt:when> <stEvt:softwareAgent>Adobe Flash CS4 Professional</stEvt:softwareAgent> <stEvt:changed>/</stEvt:changed> </rdf:li> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="w"?> CSaved by Adobe Flash Windows 10.0 build 544 timecount = 1287674293K@|rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/htmlwriter/assets/outputforflash/swfobject.js0000644000201500020150000002172014514267702032016 0ustar puckpuckvar swfobject=function(){function u(){if(!s){try{var a=d.getElementsByTagName("body")[0].appendChild(d.createElement("span"));a.parentNode.removeChild(a)}catch(b){return}s=!0;for(var a=x.length,c=0;cf){f++;setTimeout(arguments.callee,10);return}a.removeChild(b);c=null;D()})()}else D()}function D(){var a=p.length;if(0e.wk))t(c,!0),f&&(g.success=!0,g.ref=E(c),f(g));else if(p[b].expressInstall&&F()){g={};g.data=p[b].expressInstall;g.width=d.getAttribute("width")||"0";g.height=d.getAttribute("height")||"0";d.getAttribute("class")&&(g.styleclass=d.getAttribute("class"));d.getAttribute("align")&&(g.align=d.getAttribute("align"));for(var h={},d=d.getElementsByTagName("param"),j=d.length,k=0;ke.wk)}function G(a,b,c,f){A=!0;H=f||null;N={success:!1,id:c};var g=n(c);if(g){"OBJECT"==g.nodeName?(w=I(g),B=null):(w=g,B=c);a.id= O;if(typeof a.width==i||!/%$/.test(a.width)&&310>parseInt(a.width,10))a.width="310";if(typeof a.height==i||!/%$/.test(a.height)&&137>parseInt(a.height,10))a.height="137";d.title=d.title.slice(0,47)+" - Flash Player Installation";f=e.ie&&e.win?"ActiveX":"PlugIn";f="MMredirectURL="+m.location.toString().replace(/&/g,"%26")+"&MMplayerType="+f+"&MMdoctitle="+d.title;b.flashvars=typeof b.flashvars!=i?b.flashvars+("&"+f):f;e.ie&&(e.win&&4!=g.readyState)&&(f=d.createElement("div"),c+="SWFObjectNew",f.setAttribute("id", c),g.parentNode.insertBefore(f,g),g.style.display="none",function(){g.readyState==4?g.parentNode.removeChild(g):setTimeout(arguments.callee,10)}());J(a,b,c)}}function W(a){if(e.ie&&e.win&&4!=a.readyState){var b=d.createElement("div");a.parentNode.insertBefore(b,a);b.parentNode.replaceChild(I(a),b);a.style.display="none";(function(){4==a.readyState?a.parentNode.removeChild(a):setTimeout(arguments.callee,10)})()}else a.parentNode.replaceChild(I(a),a)}function I(a){var b=d.createElement("div");if(e.win&& e.ie)b.innerHTML=a.innerHTML;else if(a=a.getElementsByTagName(r)[0])if(a=a.childNodes)for(var c=a.length,f=0;fe.wk)return f;if(g)if(typeof a.id==i&&(a.id=c),e.ie&&e.win){var o="",h;for(h in a)a[h]!=Object.prototype[h]&&("data"==h.toLowerCase()?b.movie=a[h]:"styleclass"==h.toLowerCase()?o+=' class="'+a[h]+'"':"classid"!=h.toLowerCase()&&(o+=" "+ h+'="'+a[h]+'"'));h="";for(var j in b)b[j]!=Object.prototype[j]&&(h+='');g.outerHTML='"+h+"";C[C.length]=a.id;f=n(a.id)}else{j=d.createElement(r);j.setAttribute("type",y);for(var k in a)a[k]!=Object.prototype[k]&&("styleclass"==k.toLowerCase()?j.setAttribute("class",a[k]):"classid"!=k.toLowerCase()&&j.setAttribute(k,a[k]));for(o in b)b[o]!=Object.prototype[o]&&"movie"!=o.toLowerCase()&& (a=j,h=o,k=b[o],c=d.createElement("param"),c.setAttribute("name",h),c.setAttribute("value",k),a.appendChild(c));g.parentNode.replaceChild(j,g);f=j}return f}function P(a){var b=n(a);b&&"OBJECT"==b.nodeName&&(e.ie&&e.win?(b.style.display="none",function(){if(4==b.readyState){var c=n(a);if(c){for(var f in c)"function"==typeof c[f]&&(c[f]=null);c.parentNode.removeChild(c)}}else setTimeout(arguments.callee,10)}()):b.parentNode.removeChild(b))}function n(a){var b=null;try{b=d.getElementById(a)}catch(c){}return b} function U(a,b,c){a.attachEvent(b,c);v[v.length]=[a,b,c]}function z(a){var b=e.pv,a=a.split(".");a[0]=parseInt(a[0],10);a[1]=parseInt(a[1],10)||0;a[2]=parseInt(a[2],10)||0;return b[0]>a[0]||b[0]==a[0]&&b[1]>a[1]||b[0]==a[0]&&b[1]==a[1]&&b[2]>=a[2]?!0:!1}function Q(a,b,c,f){if(!e.ie||!e.mac){var g=d.getElementsByTagName("head")[0];if(g){c=c&&"string"==typeof c?c:"screen";f&&(K=l=null);if(!l||K!=c)f=d.createElement("style"),f.setAttribute("type","text/css"),f.setAttribute("media",c),l=g.appendChild(f), e.ie&&(e.win&&typeof d.styleSheets!=i&&0\.;]/.exec(a)&&typeof encodeURIComponent!=i?encodeURIComponent(a):a}var i="undefined",r="object",y="application/x-shockwave-flash", O="SWFObjectExprInst",m=window,d=document,q=navigator,T=!1,x=[function(){T?V():D()}],p=[],C=[],v=[],w,B,H,N,s=!1,A=!1,l,K,R=!0,e=function(){var a=typeof d.getElementById!=i&&typeof d.getElementsByTagName!=i&&typeof d.createElement!=i,b=q.userAgent.toLowerCase(),c=q.platform.toLowerCase(),f=c?/win/.test(c):/win/.test(b),c=c?/mac/.test(c):/mac/.test(b),b=/webkit/.test(b)?parseFloat(b.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):!1,g=!+"\v1",e=[0,0,0],h=null;if(typeof q.plugins!=i&&typeof q.plugins["Shockwave Flash"]== r){if((h=q.plugins["Shockwave Flash"].description)&&!(typeof q.mimeTypes!=i&&q.mimeTypes[y]&&!q.mimeTypes[y].enabledPlugin))T=!0,g=!1,h=h.replace(/^.*\s+(\S+\s+\S+$)/,"$1"),e[0]=parseInt(h.replace(/^(.*)\..*$/,"$1"),10),e[1]=parseInt(h.replace(/^.*\.(.*)\s.*$/,"$1"),10),e[2]=/[a-zA-Z]/.test(h)?parseInt(h.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}else if(typeof m.ActiveXObject!=i)try{var j=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");if(j&&(h=j.GetVariable("$version")))g=!0,h=h.split(" ")[1].split(","), e=[parseInt(h[0],10),parseInt(h[1],10),parseInt(h[2],10)]}catch(k){}return{w3:a,pv:e,wk:b,ie:g,win:f,mac:c}}();(function(){e.w3&&((typeof d.readyState!=i&&"complete"==d.readyState||typeof d.readyState==i&&(d.getElementsByTagName("body")[0]||d.body))&&u(),s||(typeof d.addEventListener!=i&&d.addEventListener("DOMContentLoaded",u,!1),e.ie&&e.win&&(d.attachEvent("onreadystatechange",function(){"complete"==d.readyState&&(d.detachEvent("onreadystatechange",arguments.callee),u())}),m==top&&function(){if(!s){try{d.documentElement.doScroll("left")}catch(a){setTimeout(arguments.callee, 0);return}u()}}()),e.wk&&function(){s||(/loaded|complete/.test(d.readyState)?u():setTimeout(arguments.callee,0))}(),M(u)))})();(function(){e.ie&&e.win&&window.attachEvent("onunload",function(){for(var a=v.length,b=0;be.wk)&&a&&b&&c&&d&&g?(t(b,!1),L(function(){c+="";d+="";var e={};if(k&&typeof k===r)for(var l in k)e[l]=k[l];e.data=a;e.width=c;e.height=d;l={};if(j&&typeof j===r)for(var p in j)l[p]=j[p];if(h&&typeof h===r)for(var q in h)l.flashvars=typeof l.flashvars!=i?l.flashvars+("&"+q+"="+h[q]):q+"="+h[q];if(z(g))p=J(e,l,b),e.id== b&&t(b,!0),n.success=!0,n.ref=p;else{if(o&&F()){e.data=o;G(e,l,b,m);return}t(b,!0)}m&&m(n)})):m&&m(n)},switchOffAutoHideShow:function(){R=!1},ua:e,getFlashPlayerVersion:function(){return{major:e.pv[0],minor:e.pv[1],release:e.pv[2]}},hasFlashPlayerVersion:z,createSWF:function(a,b,c){if(e.w3)return J(a,b,c)},showExpressInstall:function(a,b,c,d){e.w3&&F()&&G(a,b,c,d)},removeSWF:function(a){e.w3&&P(a)},createCSS:function(a,b,c,d){e.w3&&Q(a,b,c,d)},addDomLoadEvent:L,addLoadEvent:M,getQueryParamValue:function(a){var b= d.location.search||d.location.hash;if(b){/\?/.test(b)&&(b=b.split("?")[1]);if(null==a)return S(b);for(var b=b.split("&"),c=0;cXa`T!'l=z=2J0iH4:?cͯՌ2+"K:Qie4 ު\Qf>VGB Ed u(B̿|W7 Arial24%B3>WnTmG  5zWgP(Wv8UaF|/X.7 TlҤʙ!S%d3hwR#'?wX* p0Im& Y匪24UTjN"exʤ~+%< x*FT XמZ:[ g1^tDŽ ^)z#(l/J Xם)7#R74dQe<9'{P$=l _iLz-dl/ CYAtC` =qi J4xWp*L2+:= EWdGYhsK߫D' 8* .>Sz *xn;yT,DڝQj"tuH!Њ*RԊ=T(%@9`  P&.t]aD@\ea`BUuAAƁDhd`52:ԀD8<4 WRʱ|U r ^c^t8G#57PRp2c (cP#`UVU].OQP;*d ʠwb5*I[*I5/ J_"0ۀd @j0@ 8gzPsUMkH!U 4w|4^ TGUQWIlIʴ6"aT&̕J:-Jl䏀 =J\< !pfʨ)J$j]@ zkbX (/sQ*-DlP&jJSBMNQf]@(:'D}Lʣ\?$ p *3L6D|*ˌ 8RkP> k9Rz sU kG U$cv4^ V GGhRQUYQT#P@tU)R `iѼ*+t5 2Ϫ>en [Q mrRA*"UW$$R{Ɉs f`ՅzXWzWz  ozRQ.U$@T@UJ>TAU+twr3^3 T DQW j%H!:&"tC>zܬ a*$X bp nꭻ)R0@\NuPC>F|x &F%TiPCRaY5VxZeU XםeII$0Rَa|f  x2Tu=Vl3TCIM:3[QcUڅ ⵗD| T'i{o菀XZ=TtG <Xם> ZН ҼՒK%H/2K *ARd`U qx3bTiO.W`Sy50\fmUGD| TVz3F*Ud{ +qh++qe*.rI+n(H+P5M9UVP?F~J)V7'd6U YU]CY ~@  F74C4t%)k-Qms2J W ^TBI P2([dTW]YYS:Д -犆] gԨϏQ'\ƥ@^,* 8.@ dZН UeLR4v']hjkfzd1QhpCtV> vzwEA,dGUA&pTKJX@R,UtwRGU1LS+ tRE%# IKkR9#>'R AM1RuLˍ*4`{jf&Wbq"u8Z*wa/Jw\)5ɰ9@ šǀyﲓ% Psm mMS TM0e^I@54tVMDt)GmnvĺU;XB0 7'-7* " (K zg"* )c=^Js/:#p*`zKQ1e@T6fceYN-0 =TtM 4НiGyj{N:1HIGR^yf3Gw芀 )`8yNew2n9 Ml.X e؆o8'};.o$7F^ CEKTabcdefghilnoprstuwxlH` D9\5\50,,(,,D,,,,,(D,9(A L P T Y         F,P,T,V,W,Y,r,v,w,y,,,,,,,,<,< ,",#,`3,44@4 B4XC4XD44M44N44555 5|"5x#5152535475:5B5C5E5F5I5M5!6#6X-6162656>6A6B6C6N67#7x07174273757477:7<7>7@7E7F7M78x"8|#8h#9X":|#:h;;x;";h#;$;X-;X.;h1;h2; 3;45;X7;:;>;4@;DB;4C;4D;4M;4N;4<<x"<|#<h-<.<1<42<C<N<=x#=h>>>> >|">#>%>2>3>47>:>;>A>B>C>E>F>I>M>"?|#?h@x"@x#@hC@AA"Ax#A1A2A3A47A:ABACAEAFAB4BX0B42B45BX:B>B4@B4DB4EBLBMB4NB4CC4CCCCCC"Cx%C4)C0C1C42C45C6C7C:C<C>C@CBCDCICD1D2D7DCDEDEE"E|#Eh1EX5E4>E@EMENE#FhGXG!G0G41GX2Gh5GX6G7GX;G4>G4@G4AGDG4EG4LGNG4#Hh"I|#Ih1JX2JX4J46J7J4Kx"K|Lx"L|MM M41M4M:MAMCMNx"N|#NhOO OX"Ox#O-O1O42O3O@OCODOMO 4 4" 4#  4  A L f |r      x* ,   @=3Bz6BV6B>B*?B6B2B.?Bh2B6BA?B)6>B6B3B(6>B82%?B 6B 6B3B6B6>B3B3B?ArialTypeface © The Monotype Corporation plc. Data © The Monotype Corporation plc/Type Solutions Inc. 1990-1992. All Rights Reservedqp  2"MT@CQW \5֍^Z:҅0؅*g̅J(W@CE!P無P֍hCb0FVhCE P`-Arial @tZl ? XמлSa"wkcM,+vQ Gq@*K6l2JZ Pjh ññ& t ;`;`Tq쑪VU#7PT@Y V ne]UFU@t ^ ` rZtT TdQQBK, <& mM1N#yUi];eRUWViP]@aD텉aU%74VU+r]3w +Nb2ǀ &!*qQT rFCC "j 8$CnQ2DD!ʬ(+ 4] ]ooY FY`T5Z9Y8`TsK7YT.EPMLШ# z %>Ktv > SL+½S0bVCXR#ᮨt4uFЋi=G`p 5e\WT  e9poɂ(yۃn nц bP)_Y`Ojݦ eU oUUu.^ V EՕD>iBVEYV1FOxIP'E*)Y<J LRp .y{J6bR c@ z) G +^|UT')؀ah )0K*0eXV7B{QGӅNfVxSQ*ݢ]U*dvT5b |XםrP` ;+B{=ҵU+t<R4Hx*W2K*ˎ`T@eCK*:AT$EP 7eAhJ'SҜj& Z)+ʼhwB2BA6>BN6B3>B6BN6Bx6B06>B?Arial BoldTypeface © The Monotype Corporation plc. Data © The Monotype Corporation plc/Type Solutions Inc. 1990-1992. All Rights Reserved;hЀ @hqD2(cpBF0ܱM7,x2!@qE2 PװA C   %# , #&')*)-0-(0%()(C   ((((((((((((((((((((((((((((((((((((((((((((((((((( }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzJFIFC   %# , #&')*)-0-(0%()(C   (((((((((((((((((((((((((((((((((((((((((((((((((((=" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?R4S%1:}냂 \+ |#]V}6RK&hV` PO3zRZۢ<x {"d0[(^^* iў|ʹ+> i66^?uDKO+.dmח"O'TBxZhHKuf1\~l7FwSЧ߯c]S^QI>9_ 궃N22THrU>k>:i‹rS9 )_ʾuJQ{.X$e7y+zX(=p(((((((ٿ\7~#fM:lP4"?_0ZQi؎zW}%IP~kyZuew׷|ьGui/]&Fm"<I tcjt-r{f2@6}3 E'NIzHS}b.-ңc+FLZ?Ǫ޻sw_&J?v}_r?txeǓtu܇RU =}6^5џe߈:o5(Tb7OL?y Z?}QU9M;lK%n b>˩@>5)^kC>W}i`@m}A;YJJɳ~|銫]57Zx1T?s@udnnd%Zڰ-}_<]7 5fhԬ`2j?A~[ hڬ2T3p~u[#܃ǽzkRu}q$9S=.i6lK\ m/$"8R̀Fp?Z/bɳɺ }\Oq#>$fd==%/l[+XQ'!NԈ/]Eq![(dMm#TZDžtXSX&3#3`}+:k!;mI=#Ry[{;1Hn08y}6ƛM-l;n1LَH\j3Z-v-L9 MU{ TĞ+{x"AX.]tX8aqָ(l-ޯ}n`D Vb]eH8>SƗe'5_i)ϗe!Y|@ο[֢ռ?ͺ8Rp#XGB((1?i%y@" 2+ѧZ<"ռEjۿu+B'8+&(8S5 (((((((((x홻v@g$&ql.nb[QZRY[avcDwRD@w|?x:6*|6L_t'$m.0j YJo{mֲl:fm#&1!qqq\}$l> "ig-4 "ہjssx#e[|RЅs&q^ ED:Е`?Jač|UDMۇѠm#}tKw`r!O<}ݧ<4PB9 Ά( n/&z΍ -MtU( ΍dMMpPFԉ#j} /-ADid~Q0E&\ Ш8fDhF8R (p#E4-KD--c5$9@DfTD"Gef _4 {Q6HF""DJqEMEqJ-j. $#(e@6Q'6a (XKDZ#(S?thO:x]YU<í[@mTDޔyq@.c0/%՘zk-WNKUMFh ,ݓ1@۵ԿM'ٔw!ۭ]kz0nf#oJlc6KKtg?5ng#a|l?.Bĕ+*װ|Z)s\e3,鲗"W֮Vk]jԯ• ,#lTF|fs%>=y?{OχNٸƔ< B[{{}qڷȑj/2(ҥrvDZvulԯZy]ds<*q2+q\-o;EC3dճ>ΓC@C@ L7d:l󱗝)G 3w"(

         H&jT`FCKTextArea@rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/assets/0000755000201500020150000000000014514267702022202 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/assets/outputxhtml/0000755000201500020150000000000014514267702024617 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/assets/outputxhtml/outputxhtml.css0000644000201500020150000000413714514267702027753 0ustar puckpuck/* * Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md 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; } rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/assets/sample.jpg0000644000201500020150000003416114514267702024172 0ustar puckpuckJFIF,,C   %# , #&')*)-0-(0%()(C   ((((((((((((((((((((((((((((((((((((((((((((((((((( itwQ˪NDp`gU̥<՛ !rqmX7{=͍bfbfVa+z{.㡨"Y>%JB22ū?A1$E}XuJ{|OK7,|{jOs4sOWs3]a3YDxfz"Lh$h{Wڦu;Z3--yÎri+z#iTd35VHnUKtSDe=f!ќlZR]MF9ͣiʛVp:Sd͠6%<̚vZˠ][gtSEd=l4ؤxDjxy^/>*Q8‹J9z$4ϒ8d/:{ּζǘ}2bsɠg==٣ҔGy!~s& wyK)0i'ش7^jqH,}F:T3әv':4<-@tX8_Lоt>#K 2B+!"#12 3$5AB7M'K=} LSɒ5ggR6;Vv, a7X+%c;a7a|L*N\]K9بKfTńmC}Kq݀,&П/e Z ?+{~BXQ Z:'UƄeqQ Pc`Y֝ܪcsU.hZIi zQ J)_ q ,2˰hud\[hPkg)Y3s I>T~+}KmD*"E%}f& Ck` 8djyVήo$>Wu*ɬZεJfM&ɏXL_+On.ZGPkjAV.7MXOVWLe^>߸u? iW Cqߒ3! j^UJNOif5zr5UUZ[3 q| !Y3 ha5N?亄@r.x KV9Xї\rV8J2hGKg_ t6 kXByYVَhOs,*Sr~uܼ]~Nəg5CbZLkKo0lߋĬBzcvVRكi9%A\L.pL[Qf-?V d ,#]iV Y^^vAS vZ+tB@ȻJ]1jj*ؗS?YX~[kVuOʮ&tk@ O%t<J}̬{];=sz+z'a}[rڟ6WRҰВT!@d]Հr&nYJJ}߻f؏ZaO8¿[]l=kcX|o?g3R:-Qzݜ`{-!o,ۑbSvL FaU7<6ǿ"jfl>i5]kźc{w]bex稷̞2 k1ӭVV82^5L[.ܯmnS[ps?,!1A"2Q Ba#3R?eG%85Em{k{  QģRJ(oe38 <"ٖ4jGfh#4sfŵ%p=4=/GPE !+D(h 0$PXh(h{2C[GMy8PĨjƬq$28P (M2**'"% Kh"HR\z(pzȿhrb"YTN"(:[7"9Q=&ݒU {GyeБ!gr$iɓZ01Kjgnĉe,=Q Y%c-'oږRbY+4rLvkjdv"LB-oO20fH!Q} ]YE{=,ly:D*xT6Nl2YԌTb _,.$ KӨY:!9E%8 N$cy$Cnmq;)4.EJ3Q5r"4kivEffxID̲Ec~dEвg1d9"3ƼOԨ'cf?ibdYlo[:%;2R.ȳ܉e:yNlr%ddCtatFDEY7蔆wfd-N6ro,e:$L$я7c>}$}4dTݜY=#*C,Ye,G,kd9ҍYg#/ "?L1rZ$cɤb9Heֆt6EPcڱvY ZSC$szؑN(oEђN&G:u"'gL&nD/¯_%&13db}chdQ/q'  1ʴ8ˈrd#0 +v%F:kĐݳ.׌j+piL5'}V8"+#+D$>̒Gd\hS#ƹIFiވV"*#FNHt oT{n?fKBb6bw- HH4N4c~^R壣l QЄ/R>|˱NZgbEbF?#ؚc/j膾'/vճ$Q[>^iEtqtqMZI+2%Q,ʬg*51qĆ.=.4]ZďpԭH~KBĔlI|볍= !1AQ"2aq #3BRrCbs%0S?]l6@.k5 ܫ|W\?2*jpZw71«5 AEw9IaSJf|߲z~JNlJ`BiI  ;O "VP\Lq,[uV HQ[ˮwϹ\6~+JpFVH[%6{zm(R湿 d£GJɍu.桱 h-`DWUWGhe-^{$l.] cpqXe(TC]d˺Y arEgaD:R.TZ0'@gϪغȻ7AnWvscӽ^\S:N]2Ɖp(?57{j3&҄.+RH9pr L; 0U,fop6 Mr6OR?%LS2CsNXKzto4,.ʩN;O RIa sy艐Dt}Y|討VQcmwB܁.c'sܩS&J]ʨٻ]qt.NS&.uQ=uQ\z ? 13e 3w]38A>1A3.0xQN $4ܙFHpjULHUH Cpm:RN|u_'cEJkXNrsMPPwjS fe h3\|n&7 PP7Φ|M'u_pEY= 0_R%W|]E o<>îK=y/v)ɓJAԤ\wXQMO"QLs~u.E`[fX;K"XRLߘ4a,_ hqJF@>IkBE_`wآau6ǰZb j'XU{X]G_($EӢgpz#?̙){(7W.2, )ܩRpsC3.>"u;cTTe${8p]DԘr^߬qQJ+70h!KsoY YI X6Ee4 ]4E>*d-9zVJ j Hu՜$> nW%$dh 48S&S.Xc& .JpKRtb]w.JuM L5=/c]SJB Y(_{Krbg(d ڭ䔐 {`NJmeP1Yn%5r,<7 l홺<alRۣ97Nx㯙0[l0+Es«UV6|\j c}ˑ /I.O;ePu.tJ1`/b x _:@ES֟DO) "z[9kg/XIWo&o>~Xu c0$7]u1ꙶ/}B<^'Õb= 1*wBvޥD%D1wee!/4>B؛{L-,_B:hDX+bõ9u ,L;5Yzu)VNy% |=`K׶)ۗ&NYe~*\}ϼ0xoكDݻ"ѷpHKhF7}b}{iNJ©dW Am-Mݺ{V~n0_d☌@1fR2#^Ub'%D4tOe s\Eiv8*40zjEsK_`n 0p٣sʎfk?k'L2Xc־Q˪d*zo_Gsgl4%O7X"tsN{V` rǦVIn.1sQᱳ+e/Ic ieתx5/oxf]F'pSU>[ܠ˃?:U2 b !'SP85EUlF;Pu޷\<C>k^o0,CܥR rbvu~fFU1G`T(" xcZkVn[~Jbm?@6XefzpÓ mO[׹(-ݞ{FM>}>T?1 =2Վ#+ ?!.-o; śUu6(9iy(2G>""m|WZgU'uȺmA ߇K>XLl\ l uׯ?;FP>MlwL\>%WT jk^aCS i=&=NNU_=#J7 #W0[;Z Ǐ&!1AQaqѡ?n$fS`$ҢcIq; JX6)c-P<$‘HaDGN%U/#yRU1ͳ̶cv o 4)ԳS8&pe3 Hn/j 3(;a!r2- !fr#'DF% m5aB.+>[J`(N H][Ddmde!1Gܧ krp mxp+1 /ܥ8ě3D%Bs-<+t]GUBDkFx!ĬڙK(DYJg4Ɗ _ ʲ )s a]@˗b2"(A),Y`TT@L ix2C& C>L+ iWg]0DOD89?c̼+~FɣRg!]%y||M㜦\0j <=J^R[1vRTY2]w?&!1AQaq?0Ne XjX *[;'+Jc$Caˊ\\0X.e'zEkK&G$hԪWF CLa n'`mm{Z B-yʂw `ea+X@[j%5~<7UQˈ;"fF#d 2z`B .\ GD18V', 6ǽEeD*4haRȪpFziY" +u2b#0&Xw*ȊweK1d0s*@˙KC!MDaMI.7",{Kܪx,\?AEa6+j5) y_C|5r!&CSD࿠80Dv xwvZ i?؆3 3*7hؖP t(-;L" n:BۘI3"Kc9M΍3 v*,"Sx1e[ |6%Hۉ j*pVu "5gO}xq}#T3 0a/9\K ~u (heF* K/} 1 ]wyV'A;8T#7(7(ճ')zE.'BRQ- ksf9랍$D%2Y5}_+^~J001wЖx5  :y&^q丣Qt" 5?_2w)bp_Rd*N}짌"*Ym80E Au5e!>\ArX'!-Ax\#K.P#蘥iz|ho>* ܳ/ 2|b/#}?>f;2+^yqU|ŗ;|13B2x.S%!1AQaq?T]ސX[au\PU* L+n#>;ɑ4< 8YD bT}@ r ްUzŻ@I5ɑhZo o9tDZ-:2㋖:!kK(7yiqʂƆ;пSl1#]bۖ|5ڙ f:7y8hlӍj&f,rxC_y]C)B{/b#$ʻFXAB^5WNswm^8 8|ݺ+եQEJl8sFiD/ErB%BycyE+'-Su-vj?.~ ;"/Qb#&*ہ3 aFr$?Qׁ!`sDŧ(;_n_ =>H_-7R=|gy&3ejiUܥj~\௎W& ehpcщ*f\ !k"!>3˻;(s| ۩qGUJ#DbpY` ֧|a֤;x mj:LAGRSS$_h0 qӸ"a 2K̀sǷT]Tcf{D Bco~@ {~}nkYFִ*ze7 ;=?,D8 ?MWlڽёޟGY9,"O)].yl@CxE[ڜa6Kz 0?Qy!j@5q,D?%ģC)t!̺ٔ4{~2UO_Ás~9WbaY;( pt:wW8@b^Xa7 {lsYG6#ÁTEƃA hN fȲ/{Vը}4WG0ıaM3q~39h.1@Vӌ&'4QJ H _xI|xrz cho|L\ 6 4P A}aPN4eT5Tk8FZr)Rz`yE~|[HaEe!;&"a-;1R!O>V-" y}?HT]~08Gq Fh7ӬHC[5*ݻxnok,6/9J`.& (Iӆ$Y2klĵN]d>'=$쎿8l9E[z0uMoEi u;H""y<rMRe.lKxלsݧLv&v0@5+yq8Gz∀\1TQ:4ZqtʤE +54Q E[[H^PS_է"-"oh.8lԂAnL$k×AM EoK5]/{&ymjn^& D(5G 5|CK0F"#+9P 5)]Z a8ϙxLD70NP 0s[*v*V-&,xp$Pӓh`޵C_.5CB4[]@ #?ʇy+ ze;I#SBQoQ fv%m(@ysF´yѧwv܍A&e#`Vj& Er)47q_1؈üFଆȜ0Pm<0hÛjr}`'|JޏKbQ>C TJFQXd5 d,Vi!ploa tfG :w"^؂|FNرRfov~1y [PTZ`Py"h d,f uvNœ BMx :]qU򈿼)l bdtƈw'~W\EF6:ՃEj{C8vS%PCMzw+̫de5Y!JzԃMa$@D| 9PSdR 'xmט =~&P CzAbz :kKMZPV0aw+ Ď4B%!*ki9eʧ&ڦ7Jb@Ggl뚆R GŃHVTÞ^p%u;0"ʵ7 lq, e\ZlF`4Sߌr(۫r%W|G;Fjk. @w^]PLC4݀6<>4 k`|٦*sByL9ADKD8 U޸602] .^=!'Pmmq&ȑ_ |p\rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/assets/uilanguages/0000755000201500020150000000000014514267702024506 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/assets/uilanguages/languages.js0000644000201500020150000000251314514267702027013 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ var CKEDITOR_LANGS=function(){var c={af:"Afrikaans",ar:"Arabic",bg:"Bulgarian",bn:"Bengali/Bangla",bs:"Bosnian",ca:"Catalan",cs:"Czech",cy:"Welsh",da:"Danish",de:"German",el:"Greek",en:"English","en-au":"English (Australia)","en-ca":"English (Canadian)","en-gb":"English (United Kingdom)",eo:"Esperanto",es:"Spanish",et:"Estonian",eu:"Basque",fa:"Persian",fi:"Finnish",fo:"Faroese",fr:"French","fr-ca":"French (Canada)",gl:"Galician",gu:"Gujarati",he:"Hebrew",hi:"Hindi",hr:"Croatian",hu:"Hungarian",id:"Indonesian", is:"Icelandic",it:"Italian",ja:"Japanese",ka:"Georgian",km:"Khmer",ko:"Korean",ku:"Kurdish",lt:"Lithuanian",lv:"Latvian",mk:"Macedonian",mn:"Mongolian",ms:"Malay",nb:"Norwegian Bokmal",nl:"Dutch",no:"Norwegian",pl:"Polish",pt:"Portuguese (Portugal)","pt-br":"Portuguese (Brazil)",ro:"Romanian",ru:"Russian",si:"Sinhala",sk:"Slovak",sq:"Albanian",sl:"Slovenian",sr:"Serbian (Cyrillic)","sr-latn":"Serbian (Latin)",sv:"Swedish",th:"Thai",tr:"Turkish",tt:"Tatar",ug:"Uighur",uk:"Ukrainian",vi:"Vietnamese", zh:"Chinese Traditional","zh-cn":"Chinese Simplified"},b=[],a;for(a in CKEDITOR.lang.languages)b.push({code:a,name:c[a]||a});b.sort(function(a,b){return a.name Sample — CKEditor

        CKEditor — Posted Data

        $value ) { if ( ( !is_string($value) && !is_numeric($value) ) || !is_string($key) ) continue; if ( get_magic_quotes_gpc() ) $value = htmlspecialchars( stripslashes((string)$value) ); else $value = htmlspecialchars( (string)$value ); ?>
        Field Name Value
        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/assets/inlineall/0000755000201500020150000000000014514267702024151 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/assets/inlineall/logo.png0000644000201500020150000001027314514267702025622 0ustar puckpuckPNG  IHDR?MO2IDATx tSU&KRdjQPP*Fh(FVq8Lݰ"v`*c]Nϙ9z+0:Jiӽi.iZ`}{mҌs9$シh~}/pq'pq8\\l.^/|!RݰlK,uzL>[kn˵$ߜc1t7f[0PRfեqBEBB!11? s0'ni-=FGg"`U',1lҶHѮ_Z"=\,q_(VAoGoAz} =d]"O skJsS3M&jZa32;&[ l`u&c3ԭ70nj[`n0>SI6<\w۳!!~"G*p:0ȯω[[#o# ԭ ԫЭ7b<'ȧ[;`K nk|LƓJ;=tr+`?@n1>ބ`ht7uhti a;::R܇q50>>UP|&6r;)|PPO4a|ހe‹s0:eݗ w/ѭqB?ktQ AV#]f1a\tNQ`v {19Po;@,-Av Q:']aiI?ҡKiQ?'0E_M_zETo1n-bH #[ޓAKƺr{xSXT-P&$acktĭ3JFC&@`N>$:Bև`גd}R.2QέsĢl v|UkI_cAHyPɭ0{J ]qI O1$aGm AD>`7BD1<@Ylԑ2(~gQ[׋(E\\/&]| =۽'nm Q*y, Hb"Rk\ށkB+=z#]~*Y+*AJa y`w uP;Hu[$qi=! ㊲&X >g{j˽ N7aRH0 !{Tة[[D.Jx/V `+}^_hd--/աcܝ܋ 9b\.%\]c 9u1+4 ˄_PkՎQ4N$M y.9d% Q^[gjJ% [I{W3˽H?r)amE–[1 "S#*r%$/ 9-,)̾>MMqϕ~'^8 y80Z+%,n^#"zT'4A;INQqg$#' E|9g >/ke&{q ^Z %V#=Dy֥dw1L~£GwMԭn=ro! S#YA[^2ys>⼾9S)~1RcAY”1 Gɴ8^-&)h8ON> >m-򉝄^;奻gl%R4phOdA7uP8A5{]e6~M4ʝ0Y S+, u6&;]{H H聽X!qdyF > rh"Iܚӎ$.E)sտVw"u|l`bn?o9gر! 6lؽW`!]{?H cUb ݙgl lmȂЖ&<܋$NfmRޓD܋TBx8֝0"W,cob=z<34zԱ;B {3Y,R?[#nM\[fIH wtc"&S2J2t5zra3q> `Q'xt7#~z+yTsCH5۽GiSӣTr/bqa PI^>4Au `zܧU cΙc-vդB*DVK{e\Sqńq(֗@eI28}l[U;&hX(zi&FSAV*YwA ~*F-a!;g@3?ҏ~X?~,4P~l`M˝Y AR]5)[+$rzF&3ĩ۟aȺȆ%)jB ə0<# WU~ )`PdrJpYCA$l.5Ky\IENDB`rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/api.html0000644000201500020150000001601314514267702022340 0ustar puckpuck API Usage — CKEditor Sample

        CKEditor Samples » Using CKEditor JavaScript API

        This sample is not maintained anymore. Check out its brand new version in CKEditor SDK.

        This sample shows how to use the CKEditor JavaScript API to interact with the editor at runtime.

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

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/sample.js0000644000201500020150000000321314514267702022516 0ustar puckpuck/** * Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ // Tool scripts for the sample pages. // This file can be ignored and is not required to make use of CKEditor. ( function() { CKEDITOR.on( 'instanceReady', function( ev ) { // Check for sample compliance. var editor = ev.editor, meta = CKEDITOR.document.$.getElementsByName( 'ckeditor-sample-required-plugins' ), requires = meta.length ? CKEDITOR.dom.element.get( meta[ 0 ] ).getAttribute( 'content' ).split( ',' ) : [], missing = [], i; if ( requires.length ) { for ( i = 0; i < requires.length; i++ ) { if ( !editor.plugins[ requires[ i ] ] ) missing.push( '' + requires[ i ] + '' ); } if ( missing.length ) { var warn = CKEDITOR.dom.element.createFromHtml( '
        ' + 'To fully experience this demo, the ' + missing.join( ', ' ) + ' plugin' + ( missing.length > 1 ? 's are' : ' is' ) + ' required.' + '
        ' ); warn.insertBefore( editor.container ); } } // Set icons. var doc = new CKEDITOR.dom.document( document ), icons = doc.find( '.button_icon' ); for ( i = 0; i < icons.count(); i++ ) { var icon = icons.getItem( i ), name = icon.getAttribute( 'data-icon' ), style = CKEDITOR.skin.getIconStyle( name, ( CKEDITOR.lang.dir == 'rtl' ) ); icon.addClass( 'cke_button_icon' ); icon.addClass( 'cke_button__' + name + '_icon' ); icon.setAttribute( 'style', style ); icon.setStyle( 'float', 'none' ); } } ); } )(); rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/readonly.html0000644000201500020150000000550614514267702023411 0ustar puckpuck Using the CKEditor Read-Only API — CKEditor Sample

        CKEditor Samples » Using the CKEditor Read-Only API

        This sample is not maintained anymore. Check out its brand new version in CKEditor SDK.

        This sample shows how to use the setReadOnly API to put editor into the read-only state that makes it impossible for users to change the editor contents.

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

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/sample.css0000644000201500020150000001174614514267702022704 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ html, body, h1, h2, h3, h4, h5, h6, div, span, blockquote, p, address, form, fieldset, img, ul, ol, dl, dt, dd, li, hr, table, td, th, strong, em, sup, sub, dfn, ins, del, q, cite, var, samp, code, kbd, tt, pre { line-height: 1.5; } body { padding: 10px 30px; } input, textarea, select, option, optgroup, button, td, th { font-size: 100%; } pre { -moz-tab-size: 4; tab-size: 4; } pre, code, kbd, samp, tt { font-family: monospace,monospace; font-size: 1em; } body { width: 960px; margin: 0 auto; } code { background: #f3f3f3; border: 1px solid #ddd; padding: 1px 4px; border-radius: 3px; } abbr { border-bottom: 1px dotted #555; cursor: pointer; } .new, .beta { text-transform: uppercase; font-size: 10px; font-weight: bold; padding: 1px 4px; margin: 0 0 0 5px; color: #fff; float: right; border-radius: 3px; } .new { background: #FF7E00; border: 1px solid #DA8028; text-shadow: 0 1px 0 #C97626; box-shadow: 0 2px 3px 0 #FFA54E inset; } .beta { background: #18C0DF; border: 1px solid #19AAD8; text-shadow: 0 1px 0 #048CAD; font-style: italic; box-shadow: 0 2px 3px 0 #50D4FD inset; } h1.samples { color: #0782C1; font-size: 200%; font-weight: normal; margin: 0; padding: 0; } h1.samples a { color: #0782C1; text-decoration: none; border-bottom: 1px dotted #0782C1; } .samples a:hover { border-bottom: 1px dotted #0782C1; } h2.samples { color: #000000; font-size: 130%; margin: 15px 0 0 0; padding: 0; } p, blockquote, address, form, pre, dl, h1.samples, h2.samples { margin-bottom: 15px; } ul.samples { margin-bottom: 15px; } .clear { clear: both; } fieldset { margin: 0; padding: 10px; } body, input, textarea { color: #333333; font-family: Arial, Helvetica, sans-serif; } body { font-size: 75%; } a.samples { color: #189DE1; text-decoration: none; } form { margin: 0; padding: 0; } pre.samples { background-color: #F7F7F7; border: 1px solid #D7D7D7; overflow: auto; padding: 0.25em; white-space: pre-wrap; /* CSS 2.1 */ word-wrap: break-word; /* IE7 */ } #footer { clear: both; padding-top: 10px; } #footer hr { margin: 10px 0 15px 0; height: 1px; border: solid 1px gray; border-bottom: none; } #footer p { margin: 0 10px 10px 10px; float: left; } #footer #copy { float: right; } #outputSample { width: 100%; table-layout: fixed; } #outputSample thead th { color: #dddddd; background-color: #999999; padding: 4px; white-space: nowrap; } #outputSample tbody th { vertical-align: top; text-align: left; } #outputSample pre { margin: 0; padding: 0; } .description { border: 1px dotted #B7B7B7; margin-bottom: 10px; padding: 10px 10px 0; overflow: hidden; } label { display: block; margin-bottom: 6px; } /** * CKEditor editables are automatically set with the "cke_editable" class * plus cke_editable_(inline|themed) depending on the editor type. */ /* Style a bit the inline editables. */ .cke_editable.cke_editable_inline { cursor: pointer; } /* Once an editable element gets focused, the "cke_focus" class is added to it, so we can style it differently. */ .cke_editable.cke_editable_inline.cke_focus { box-shadow: inset 0px 0px 20px 3px #ddd, inset 0 0 1px #000; outline: none; background: #eee; cursor: text; } /* Avoid pre-formatted overflows inline editable. */ .cke_editable_inline pre { white-space: pre-wrap; word-wrap: break-word; } /** * Samples index styles. */ .twoColumns, .twoColumnsLeft, .twoColumnsRight { overflow: hidden; } .twoColumnsLeft, .twoColumnsRight { width: 45%; } .twoColumnsLeft { float: left; } .twoColumnsRight { float: right; } dl.samples { padding: 0 0 0 40px; } dl.samples > dt { display: list-item; list-style-type: disc; list-style-position: outside; margin: 0 0 3px; } dl.samples > dd { margin: 0 0 3px; } .warning { color: #ff0000; background-color: #FFCCBA; border: 2px dotted #ff0000; padding: 15px 10px; margin: 10px 0; } .warning.deprecated { font-size: 1.3em; } /* Used on inline samples */ blockquote { font-style: italic; font-family: Georgia, Times, "Times New Roman", serif; padding: 2px 0; border-style: solid; border-color: #ccc; border-width: 0; } .cke_contents_ltr blockquote { padding-left: 20px; padding-right: 8px; border-left-width: 5px; } .cke_contents_rtl blockquote { padding-left: 8px; padding-right: 20px; border-right-width: 5px; } img.right { border: 1px solid #ccc; float: right; margin-left: 15px; padding: 5px; } img.left { border: 1px solid #ccc; float: left; margin-right: 15px; padding: 5px; } .marker { background-color: Yellow; } rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/xhtmlstyle.html0000644000201500020150000001556314514267702024015 0ustar puckpuck XHTML Compliant Output — CKEditor Sample

        CKEditor Samples » Producing XHTML Compliant Output

        This sample is not maintained anymore. Check out its brand new version in CKEditor SDK.

        This sample shows how to configure CKEditor to output valid XHTML 1.1 code. Deprecated elements (<font>, <u>) or attributes (size, face) will be replaced with XHTML compliant code.

        To add a CKEditor instance outputting valid XHTML code, load the editor using a standard JavaScript call and define CKEditor features to use the XHTML compliant elements and styles.

        A snippet of the configuration code can be seen below; check the source of this page for full definition:

        CKEDITOR.replace( 'textarea_id', {
        	contentsCss: 'assets/outputxhtml.css',
        
        	coreStyles_bold: {
        		element: 'span',
        		attributes: { 'class': 'Bold' }
        	},
        	coreStyles_italic: {
        		element: 'span',
        		attributes: { 'class': 'Italic' }
        	},
        
        	...
        });

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/dialog/0000755000201500020150000000000014514267702022137 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/dialog/assets/0000755000201500020150000000000014514267702023441 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/dialog/assets/my_dialog.js0000644000201500020150000000155514514267702025751 0ustar puckpuck/** * Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.dialog.add( 'myDialog', function() { return { title: 'My Dialog', minWidth: 400, minHeight: 200, contents: [ { id: 'tab1', label: 'First Tab', title: 'First Tab', elements: [ { id: 'input1', type: 'text', label: 'Text Field' }, { id: 'select1', type: 'select', label: 'Select Field', items: [ [ 'option1', 'value1' ], [ 'option2', 'value2' ] ] } ] }, { id: 'tab2', label: 'Second Tab', title: 'Second Tab', elements: [ { id: 'button1', type: 'button', label: 'Button Field' } ] } ] }; } ); rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/dialog/dialog.html0000644000201500020150000001626114514267702024272 0ustar puckpuck Using API to Customize Dialog Windows — CKEditor Sample

        CKEditor Samples » Using CKEditor Dialog API

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

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

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

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

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

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

        1. Adding dialog tab – Add new tab "My Tab" to dialog window.
        2. Removing a dialog window tab – Remove "Second Tab" page from the dialog window.
        3. Adding dialog window fields – Add "My Custom Field" to the dialog window.
        4. Removing dialog window field – Remove "Select Field" selection field from the dialog window.
        5. Setting default values for dialog window fields – Set default value of "Text Field" text field.
        6. Setup initial focus for dialog window – Put initial focus on "My Custom Field" text field.
        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/divreplace.html0000644000201500020150000001107614514267702023711 0ustar puckpuck Replace DIV — CKEditor Sample

        CKEditor Samples » Replace DIV with CKEditor on the Fly

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

        This sample shows how to automatically replace <div> elements with a CKEditor instance on the fly, following user's doubleclick. The content that was previously placed inside the <div> element will now be moved into CKEditor editing area.

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

        Double-click any of the following <div> elements to transform them into editor instances.

        Part 1

        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus.

        Part 2

        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus.

        Donec velit. Mauris massa. Vestibulum non nulla. Nam suscipit arcu nec elit. Phasellus sollicitudin iaculis ante. Ut non mauris et sapien tincidunt adipiscing. Vestibulum vitae leo. Suspendisse nec mi tristique nulla laoreet vulputate.

        Part 3

        Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi semper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna rutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla nec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce eu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus.

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/jquery.html0000644000201500020150000001652714514267702023120 0ustar puckpuck jQuery Adapter — CKEditor Sample

        CKEditor Samples » Create Editors with jQuery

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

        This sample shows how to use the jQuery adapter. Note that you have to include both CKEditor and jQuery scripts before including the adapter.

        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
        <script src="/ckedit../../ckeditor.js"></script>
        <script src="/ckeditor/adapters/jquery.js"></script>
        

        Then you can replace HTML elements with a CKEditor instance using the ckeditor() method.

        $( document ).ready( function() {
        	$( 'textarea#editor1' ).ckeditor();
        } );
        

        Inline Example

        Saturn V carrying Apollo 11Apollo 11 was the spaceflight that landed the first humans, Americans Neil Armstrong and Buzz Aldrin, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.

        Armstrong spent about three and a half two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5 kg) of lunar material for return to Earth. A third member of the mission, Michael Collins, piloted the command spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.

        Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:

        One small step for [a] man, one giant leap for mankind.

        Apollo 11 effectively ended the Space Race and fulfilled a national goal proposed in 1961 by the late U.S. President John F. Kennedy in a speech before the United States Congress:

        [...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.


        Classic (iframe-based) Example

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/magicline/0000755000201500020150000000000014514267702022630 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/samples/old/magicline/magicline.html0000644000201500020150000002027414514267702025453 0ustar puckpuck Using Magicline plugin — CKEditor Sample

        CKEditor Samples » Using Magicline plugin

        This sample is not maintained anymore. Check out its brand new version in CKEditor SDK.

        This sample shows the advantages of Magicline plugin which is to enhance the editing process. Thanks to this plugin, a number of difficult focus spaces which are inaccessible due to browser issues can now be focused.

        Magicline plugin shows a red line with a handler which, when clicked, inserts a paragraph and allows typing. To see this, focus an editor and move your mouse above the focus space you want to access. The plugin is enabled by default so no additional configuration is necessary.

        This editor uses a default Magicline setup.


        This editor is using a blue line.

        CKEDITOR.replace( 'editor2', {
        	magicline_color: 'blue'
        });
        rt-4.4.7/devel/third-party/ckeditor-4.5.3/config.js0000644000201500020150000000051414514267702020261 0ustar puckpuck/** * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. * For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.editorConfig = function( config ) { // Define changes to default configuration here. For example: // config.language = 'fr'; // config.uiColor = '#AADC6E'; }; rt-4.4.7/devel/third-party/ckeditor-4.5.3/LICENSE.md0000644000201500020150000022473314514267702020075 0ustar puckpuckSoftware License Agreement ========================== CKEditor - The text editor for Internet - http://ckeditor.com Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. Licensed under the terms of any of the following licenses at your choice: - GNU General Public License Version 2 or later (the "GPL") http://www.gnu.org/licenses/gpl.html (See Appendix A) - GNU Lesser General Public License Version 2.1 or later (the "LGPL") http://www.gnu.org/licenses/lgpl.html (See Appendix B) - Mozilla Public License Version 1.1 or later (the "MPL") http://www.mozilla.org/MPL/MPL-1.1.html (See Appendix C) You are not required to, but if you want to explicitly declare the license you have chosen to be bound to when using, reproducing, modifying and distributing this software, just include a text file titled "legal.txt" in your version of this software, indicating your license choice. In any case, your choice will not restrict any recipient of your version of this software to use, reproduce, modify and distribute this software under any of the above licenses. Sources of Intellectual Property Included in CKEditor ----------------------------------------------------- Where not otherwise indicated, all CKEditor content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, CKEditor will incorporate work done by developers outside of CKSource with their express permission. The following libraries are included in CKEditor under the MIT license (see Appendix D): * CKSource Samples Framework (included in the samples) - Copyright (c) 2014-2015, CKSource - Frederico Knabben. * PicoModal (included in `samples/js/sf.js`) - Copyright (c) 2012 James Frasca. * CodeMirror (included in the samples) - Copyright (C) 2014 by Marijn Haverbeke and others. Parts of code taken from the following libraries are included in CKEditor under the MIT license (see Appendix D): * jQuery (inspired the domReady function, ckeditor_base.js) - Copyright (c) 2011 John Resig, http://jquery.com/ The following libraries are included in CKEditor under the SIL Open Font License, Version 1.1 (see Appendix E): * Font Awesome (included in the toolbar configurator) - Copyright (C) 2012 by Dave Gandy. The following libraries are included in CKEditor under the BSD-3 License (see Appendix F): * highlight.js (included in the `codesnippet` plugin) - Copyright (c) 2006, Ivan Sagalaev. * YUI Library (included in the `uicolor` plugin) - Copyright (c) 2009, Yahoo! Inc. Trademarks ---------- CKEditor is a trademark of CKSource - Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders. --- Appendix A: The GPL License --------------------------- ``` GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software-to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS ``` Appendix B: The LGPL License ---------------------------- ``` GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software-to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages-typically libraries-of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS ``` Appendix C: The MPL License --------------------------- ``` MOZILLA PUBLIC LICENSE Version 1.1 1. Definitions. 1.0.1. "Commercial Use" means distribution or otherwise making the Covered Code available to a third party. 1.1. "Contributor" means each entity that creates or contributes to the creation of Modifications. 1.2. "Contributor Version" means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor. 1.3. "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof. 1.4. "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data. 1.5. "Executable" means Covered Code in any form other than Source Code. 1.6. "Initial Developer" means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A. 1.7. "Larger Work" means a work which combines Covered Code or portions thereof with code not governed by the terms of this License. 1.8. "License" means this document. 1.8.1. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. 1.9. "Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is: A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications. B. Any new file that contains any part of the Original Code or previous Modifications. 1.10. "Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License. 1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor. 1.11. "Source Code" means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge. 1.12. "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. Source Code License. 2.1. The Initial Developer Grant. The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims: (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and (b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof). (c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License. (d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code; or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices. 2.2. Contributor Grant. Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination). (c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code. (d) Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2) separate from the Contributor Version; 3) for infringements caused by: i) third party modifications of Contributor Version or ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor. 3. Distribution Obligations. 3.1. Application of License. The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5. 3.2. Availability of Source Code. Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party. 3.3. Description of Modifications. You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code. 3.4. Intellectual Property Matters (a) Third Party Claims. If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL" which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained. (b) Contributor APIs. If Contributor's Modifications include an application programming interface and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file. (c) Representations. Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License. 3.5. Required Notices. You must duplicate the notice in Exhibit A in each file of the Source Code. If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice. If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A. You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. 3.6. Distribution of Executable Versions. You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer. 3.7. Larger Works. You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code. 4. Inability to Comply Due to Statute or Regulation. If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. 5. Application of this License. This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code. 6. Versions of the License. 6.1. New Versions. Netscape Communications Corporation ("Netscape") may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number. 6.2. Effect of New Versions. Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netscape. No one other than Netscape has the right to modify the terms applicable to Covered Code created under this License. 6.3. Derivative Works. If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", "MPL", "NPL" or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.) 7. DISCLAIMER OF WARRANTY. COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. 8. TERMINATION. 8.1. This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. 8.2. If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant") alleging that: (a) such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i) agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant. If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above. (b) any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant. 8.3. If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license. 8.4. In the event of termination under Sections 8.1 or 8.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination. 9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. 10. U.S. GOVERNMENT END USERS. The Covered Code is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein. 11. MISCELLANEOUS. This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. 12. RESPONSIBILITY FOR CLAIMS. As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. 13. MULTIPLE-LICENSED CODE. Initial Developer may designate portions of the Covered Code as "Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the NPL or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A. EXHIBIT A -Mozilla Public License. ``The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. The Original Code is ______________________________________. The Initial Developer of the Original Code is ________________________. Portions created by ______________________ are Copyright (C) ______ _______________________. All Rights Reserved. Contributor(s): ______________________________________. Alternatively, the contents of this file may be used under the terms of the _____ license (the "[___] License"), in which case the provisions of [______] License are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of the [____] License and not to allow others to use your version of this file under the MPL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the [___] License. If you do not delete the provisions above, a recipient may use your version of this file under either the MPL or the [___] License." [NOTE: The text of this Exhibit A may differ slightly from the text of the notices in the Source Code files of the Original Code. You should use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.] ``` Appendix D: The MIT License --------------------------- ``` The MIT License (MIT) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` Appendix E: The SIL Open Font License Version 1.1 --------------------------------------------- ``` SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ----------------------------------------------------------- PREAMBLE The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. DEFINITIONS "Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. "Reserved Font Name" refers to any names specified as such after the copyright statement(s). "Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). "Modified Version" refers to any derivative made by adding to, deleting, or substituting -- in part or in whole -- any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. "Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. PERMISSION & CONDITIONS Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. 2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. 3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. TERMINATION This license becomes null and void if any of the above conditions are not met. DISCLAIMER THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. ``` Appendix F: The BSD-3 License ----------------------------- ``` Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ``` rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/0000755000201500020150000000000014514267702020137 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/0000755000201500020150000000000014514267702021563 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/0000755000201500020150000000000014514267702023205 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/a11yhelp.js0000644000201500020150000000532314514267702025172 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.dialog.add("a11yHelp",function(j){var a=j.lang.a11yhelp,l=CKEDITOR.tools.getNextId(),e={8:a.backspace,9:a.tab,13:a.enter,16:a.shift,17:a.ctrl,18:a.alt,19:a.pause,20:a.capslock,27:a.escape,33:a.pageUp,34:a.pageDown,35:a.end,36:a.home,37:a.leftArrow,38:a.upArrow,39:a.rightArrow,40:a.downArrow,45:a.insert,46:a["delete"],91:a.leftWindowKey,92:a.rightWindowKey,93:a.selectKey,96:a.numpad0,97:a.numpad1,98:a.numpad2,99:a.numpad3,100:a.numpad4,101:a.numpad5,102:a.numpad6,103:a.numpad7,104:a.numpad8, 105:a.numpad9,106:a.multiply,107:a.add,109:a.subtract,110:a.decimalPoint,111:a.divide,112:a.f1,113:a.f2,114:a.f3,115:a.f4,116:a.f5,117:a.f6,118:a.f7,119:a.f8,120:a.f9,121:a.f10,122:a.f11,123:a.f12,144:a.numLock,145:a.scrollLock,186:a.semiColon,187:a.equalSign,188:a.comma,189:a.dash,190:a.period,191:a.forwardSlash,192:a.graveAccent,219:a.openBracket,220:a.backSlash,221:a.closeBracket,222:a.singleQuote};e[CKEDITOR.ALT]=a.alt;e[CKEDITOR.SHIFT]=a.shift;e[CKEDITOR.CTRL]=a.ctrl;var f=[CKEDITOR.ALT,CKEDITOR.SHIFT, CKEDITOR.CTRL],m=/\$\{(.*?)\}/g,p=function(){var a=j.keystrokeHandler.keystrokes,g={},c;for(c in a)g[a[c]]=c;return function(a,c){var b;if(g[c]){b=g[c];for(var h,i,k=[],d=0;d=h&&(b-=i,k.push(e[i]));k.push(e[b]||String.fromCharCode(b));b=k.join("+")}else b=a;return b}}();return{title:a.title,minWidth:600,minHeight:400,contents:[{id:"info",label:j.lang.common.generalTab,expand:!0,elements:[{type:"html",id:"legends",style:"white-space:normal;",focus:function(){this.getElement().focus()}, html:function(){for(var e='
        %1
        '+a.contents+" ",g=[],c=a.legend,j=c.length,f=0;f%1
        %2
        ".replace("%1",n.name).replace("%2",o))}g.push("

        %1

        %2
        ".replace("%1",b.name).replace("%2",h.join("")))}return e.replace("%1", g.join(""))}()+''}]}], buttons:[CKEDITOR.dialog.cancelButton]}});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/0000755000201500020150000000000014514267702024126 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/zh.js0000644000201500020150000001011514514267702025103 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","zh",{title:"輔助工具指南",contents:"說明內容。若要關閉此對話框請按「ESC」。",legend:[{name:"一般",items:[{name:"編輯器工具列",legend:"請按 ${toolbarFocus} 以導覽到工具列。利用 TAB 或 SHIFT+TAB 以便移動到下一個及前一個工具列群組。利用右方向鍵或左方向鍵以便移動到下一個及上一個工具列按鈕。按下空白鍵或 ENTER 鍵啟用工具列按鈕。"},{name:"編輯器對話方塊",legend:"在對話框中,按下 TAB 鍵以導覽到下一個對話框元素,按下 SHIFT+TAB 以移動到上一個對話框元素,按下 ENTER 以遞交對話框,按下 ESC 以取消對話框。當對話框有多個分頁時,可以使用 ALT+F10 或是在對話框分頁順序中的一部份按下 TAB 以使用分頁列表。焦點在分頁列表上時,分別使用右方向鍵及左方向鍵移動到下一個及上一個分頁。"},{name:"編輯器內容功能表",legend:"請按下「${contextMenu}」或是「應用程式鍵」以開啟內容選單。以「TAB」或是「↓」鍵移動到下一個選單選項。以「SHIFT + TAB」或是「↑」鍵移動到上一個選單選項。按下「空白鍵」或是「ENTER」鍵以選取選單選項。以「空白鍵」或「ENTER」或「→」開啟目前選項之子選單。以「ESC」或「←」回到父選單。以「ESC」鍵關閉內容選單」。"}, {name:"編輯器清單方塊",legend:"在清單方塊中,使用 TAB 或下方向鍵移動到下一個列表項目。使用 SHIFT+TAB 或上方向鍵移動到上一個列表項目。按下空白鍵或 ENTER 以選取列表選項。按下 ESC 以關閉清單方塊。"},{name:"編輯器元件路徑工具列",legend:"請按 ${elementsPathFocus} 以瀏覽元素路徑列。利用 TAB 或右方向鍵以便移動到下一個元素按鈕。利用 SHIFT 或左方向鍵以便移動到上一個按鈕。按下空白鍵或 ENTER 鍵來選取在編輯器中的元素。"}]},{name:"命令",items:[{name:"復原命令",legend:"請按下「${undo}」"},{name:"重複命令",legend:"請按下「 ${redo}」"},{name:"粗體命令",legend:"請按下「${bold}」"},{name:"斜體",legend:"請按下「${italic}」"},{name:"底線命令",legend:"請按下「${underline}」"},{name:"連結",legend:"請按下「${link}」"}, {name:"隱藏工具列",legend:"請按下「${toolbarCollapse}」"},{name:"存取前一個焦點空間命令",legend:"請按下 ${accessPreviousSpace} 以存取最近但無法靠近之插字符號前的焦點空間。舉例:二個相鄰的 HR 元素。\r\n重複按鍵以存取較遠的焦點空間。"},{name:"存取下一個焦點空間命令",legend:"請按下 ${accessNextSpace} 以存取最近但無法靠近之插字符號後的焦點空間。舉例:二個相鄰的 HR 元素。\r\n重複按鍵以存取較遠的焦點空間。"},{name:"協助工具說明",legend:"請按下「${a11yHelp}」"}]}],backspace:"退格鍵",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Esc",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home", leftArrow:"向左箭號",upArrow:"向上鍵號",rightArrow:"向右鍵號",downArrow:"向下鍵號",insert:"插入","delete":"刪除",leftWindowKey:"左方 Windows 鍵",rightWindowKey:"右方 Windows 鍵",selectKey:"選擇鍵",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"乘號",add:"新增",subtract:"減號",decimalPoint:"小數點",divide:"除號",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10", f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"分號",equalSign:"等號",comma:"逗號",dash:"虛線",period:"句點",forwardSlash:"斜線",graveAccent:"抑音符號",openBracket:"左方括號",backSlash:"反斜線",closeBracket:"右方括號",singleQuote:"單引號"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/nb.js0000644000201500020150000001052514514267702025066 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","nb",{title:"Instruksjoner for tilgjengelighet",contents:"Innhold for hjelp. Trykk ESC for å lukke denne dialogen.",legend:[{name:"Generelt",items:[{name:"Verktøylinje for editor",legend:"Trykk ${toolbarFocus} for å navigere til verktøylinjen. Flytt til neste og forrige verktøylinjegruppe med TAB og SHIFT+TAB. Flytt til neste og forrige verktøylinjeknapp med HØYRE PILTAST og VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å aktivere verktøylinjeknappen."},{name:"Dialog for editor", legend:"Mens du er i en dialog, trykk TAB for å navigere til neste dialogelement, trykk SHIFT+TAB for å flytte til forrige dialogelement, trykk ENTER for å akseptere dialogen, trykk ESC for å avbryte dialogen. Når en dialog har flere faner, kan fanelisten nås med enten ALT+F10 eller med TAB. Når fanelisten er fokusert, går man til neste og forrige fane med henholdsvis HØYRE og VENSTRE PILTAST."},{name:"Kontekstmeny for editor",legend:"Trykk ${contextMenu} eller MENYKNAPP for å åpne kontekstmeny. Gå til neste alternativ i menyen med TAB eller PILTAST NED. Gå til forrige alternativ med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge menyalternativet. Åpne undermenyen på valgt alternativ med MELLOMROM eller ENTER eller HØYRE PILTAST. Gå tilbake til overordnet menyelement med ESC eller VENSTRE PILTAST. Lukk kontekstmenyen med ESC."}, {name:"Listeboks for editor",legend:"I en listeboks, gå til neste alternativ i listen med TAB eller PILTAST NED. Gå til forrige alternativ i listen med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge alternativet i listen. Trykk ESC for å lukke listeboksen."},{name:"Verktøylinje for elementsti",legend:"Trykk ${elementsPathFocus} for å navigere til verktøylinjen som viser elementsti. Gå til neste elementknapp med TAB eller HØYRE PILTAST. Gå til forrige elementknapp med SHIFT+TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge elementet i editoren."}]}, {name:"Hurtigtaster",items:[{name:"Angre",legend:"Trykk ${undo}"},{name:"Gjør om",legend:"Trykk ${redo}"},{name:"Fet tekst",legend:"Trykk ${bold}"},{name:"Kursiv tekst",legend:"Trykk ${italic}"},{name:"Understreking",legend:"Trykk ${underline}"},{name:"Lenke",legend:"Trykk ${link}"},{name:"Skjul verktøylinje",legend:"Trykk ${toolbarCollapse}"},{name:"Gå til forrige fokusområde",legend:"Trykk ${accessPreviousSpace} for å komme til nærmeste fokusområde før skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."}, {name:"Gå til neste fokusområde",legend:"Trykk ${accessNextSpace} for å komme til nærmeste fokusområde etter skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."},{name:"Hjelp for tilgjengelighet",legend:"Trykk ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tabulator",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up", pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Venstre piltast",upArrow:"Opp-piltast",rightArrow:"Høyre piltast",downArrow:"Ned-piltast",insert:"Insert","delete":"Delete",leftWindowKey:"Venstre Windows-tast",rightWindowKey:"Høyre Windows-tast",selectKey:"Velg nøkkel",numpad0:"Numerisk tastatur 0",numpad1:"Numerisk tastatur 1",numpad2:"Numerisk tastatur 2",numpad3:"Numerisk tastatur 3",numpad4:"Numerisk tastatur 4",numpad5:"Numerisk tastatur 5",numpad6:"Numerisk tastatur 6",numpad7:"Numerisk tastatur 7", numpad8:"Numerisk tastatur 8",numpad9:"Numerisk tastatur 9",multiply:"Multipliser",add:"Legg til",subtract:"Trekk fra",decimalPoint:"Desimaltegn",divide:"Divider",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semikolon",equalSign:"Likhetstegn",comma:"Komma",dash:"Bindestrek",period:"Punktum",forwardSlash:"Forover skråstrek",graveAccent:"Grav aksent",openBracket:"Åpne parentes",backSlash:"Bakover skråstrek", closeBracket:"Lukk parentes",singleQuote:"Enkelt sitattegn"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/eo.js0000644000201500020150000001115514514267702025072 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","eo",{title:"Uzindikoj pri atingeblo",contents:"Helpilenhavo. Por fermi tiun dialogon, premu la ESKAPAN klavon.",legend:[{name:"Ĝeneralaĵoj",items:[{name:"Ilbreto de la redaktilo",legend:"Premu ${toolbarFocus} por atingi la ilbreton. Moviĝu al la sekva aŭ antaŭa grupoj de la ilbreto per la klavoj TABA kaj MAJUSKLIGA+TABA. Moviĝu al la sekva aŭ antaŭa butonoj de la ilbreto per la klavoj SAGO DEKSTREN kaj SAGO MALDEKSTREN. Premu la SPACETklavon aŭ la ENENklavon por aktivigi la ilbretbutonon."}, {name:"Redaktildialogo",legend:"Inside 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."},{name:"Kunteksta menuo de la redaktilo",legend:"Premu ${contextMenu} aŭ entajpu la KLAVKOMBINAĴON por malfermi la kuntekstan menuon. Poste moviĝu al la sekva opcio de la menuo per la klavoj TABA aŭ SAGO SUBEN. Moviĝu al la antaŭa opcio per la klavoj MAJUSKLGA + TABA aŭ SAGO SUPREN. Premu la SPACETklavon aŭ ENENklavon por selekti la menuopcion. Malfermu la submenuon de la kuranta opcio per la SPACETklavo aŭ la ENENklavo aŭ la SAGO DEKSTREN. Revenu al la elemento de la patra menuo per la klavoj ESKAPA aŭ SAGO MALDEKSTREN. Fermu la kuntekstan menuon per la ESKAPA klavo."}, {name:"Fallisto de la redaktilo",legend:"En fallisto, moviĝu al la sekva listelemento per la klavoj TABA aŭ SAGO SUBEN. Moviĝu al la antaŭa listelemento per la klavoj MAJUSKLIGA+TABA aŭ SAGO SUPREN. Premu la SPACETklavon aŭ ENENklavon por selekti la opcion en la listo. Premu la ESKAPAN klavon por fermi la falmenuon."},{name:"Breto indikanta la vojon al la redaktilelementoj",legend:"Premu ${elementsPathFocus} por navigi al la breto indikanta la vojon al la redaktilelementoj. Moviĝu al la butono de la sekva elemento per la klavoj TABA aŭ SAGO DEKSTREN. Moviĝu al la butono de la antaŭa elemento per la klavoj MAJUSKLIGA+TABA aŭ SAGO MALDEKSTREN. Premu la SPACETklavon aŭ ENENklavon por selekti la elementon en la redaktilo."}]}, {name:"Komandoj",items:[{name:"Komando malfari",legend:"Premu ${undo}"},{name:"Komando refari",legend:"Premu ${redo}"},{name:"Komando grasa",legend:"Premu ${bold}"},{name:"Komando kursiva",legend:"Premu ${italic}"},{name:"Komando substreki",legend:"Premu ${underline}"},{name:"Komando ligilo",legend:"Premu ${link}"},{name:"Komando faldi la ilbreton",legend:"Premu ${toolbarCollapse}"},{name:"Komando por atingi la antaŭan fokusan spacon",legend:"Press ${accessPreviousSpace} por atingi la plej proksiman neatingeblan fokusan spacon antaŭ la kursoro, ekzemple : du kuntuŝiĝajn HR elementojn. Ripetu la klavkombinaĵon por atingi malproksimajn fokusajn spacojn."}, {name:"Komando por atingi la sekvan fokusan spacon",legend:"Press ${accessNextSpace} por atingi la plej proksiman neatingeblan fokusan spacon post la kursoro, ekzemple : du kuntuŝiĝajn HR elementojn. Ripetu la klavkombinajôn por atingi malproksimajn fokusajn spacojn"},{name:"Helpilo pri atingeblo",legend:"Premu ${a11yHelp}"}]}],backspace:"Retropaŝo",tab:"Tabo",enter:"Enigi",shift:"Registrumo",ctrl:"Stirklavo",alt:"Alt-klavo",pause:"Paŭzo",capslock:"Majuskla baskulo",escape:"Eskapa klavo",pageUp:"Antaŭa Paĝo", pageDown:"Sekva Paĝo",end:"Fino",home:"Hejmo",leftArrow:"Sago Maldekstren",upArrow:"Sago Supren",rightArrow:"Sago Dekstren",downArrow:"Sago Suben",insert:"Enmeti","delete":"Forigi",leftWindowKey:"Maldekstra Windows-klavo",rightWindowKey:"Dekstra Windows-klavo",selectKey:"Selektklavo",numpad0:"Nombra Klavaro 0",numpad1:"Nombra Klavaro 1",numpad2:"Nombra Klavaro 2",numpad3:"Nombra Klavaro 3",numpad4:"Nombra Klavaro 4",numpad5:"Nombra Klavaro 5",numpad6:"Nombra Klavaro 6",numpad7:"Nombra Klavaro 7", numpad8:"Nombra Klavaro 8",numpad9:"Nombra Klavaro 9",multiply:"Obligi",add:"Almeti",subtract:"Subtrahi",decimalPoint:"Dekuma Punkto",divide:"Dividi",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Nombra Baskulo",scrollLock:"Ruluma Baskulo",semiColon:"Punktokomo",equalSign:"Egalsigno",comma:"Komo",dash:"Haltostreko",period:"Punkto",forwardSlash:"Oblikvo",graveAccent:"Malakuto",openBracket:"Malferma Krampo",backSlash:"Retroklino",closeBracket:"Ferma Krampo", singleQuote:"Citilo"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/es.js0000644000201500020150000001110714514267702025073 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","es",{title:"Instrucciones de accesibilidad",contents:"Ayuda. Para cerrar presione ESC.",legend:[{name:"General",items:[{name:"Barra de herramientas del editor",legend:'Presiona ${toolbarFocus} para navegar por la barra de herramientas. Para moverse por los distintos grupos de herramientas usa las teclas TAB y MAY+TAB. Para moverse por las distintas herramientas usa FLECHA DERECHA o FECHA IZQUIERDA. Presiona "espacio" o "intro" para activar la herramienta.'},{name:"Editor de diálogo", legend:"Inside 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."},{name:"Editor del menú contextual",legend:"Presiona ${contextMenu} o TECLA MENÚ para abrir el menú contextual. Entonces muévete a la siguiente opción del menú con TAB o FLECHA ABAJO. Muévete a la opción previa con SHIFT + TAB o FLECHA ARRIBA. Presiona ESPACIO o ENTER para seleccionar la opción del menú. Abre el submenú de la opción actual con ESPACIO o ENTER o FLECHA DERECHA. Regresa al elemento padre del menú con ESC o FLECHA IZQUIERDA. Cierra el menú contextual con ESC."}, {name:"Lista del Editor",legend:"Dentro de una lista, te mueves al siguiente elemento de la lista con TAB o FLECHA ABAJO. Te mueves al elemento previo de la lista con SHIFT+TAB o FLECHA ARRIBA. Presiona ESPACIO o ENTER para elegir la opción de la lista. Presiona ESC para cerrar la lista."},{name:"Barra de Ruta del Elemento en el Editor",legend:"Presiona ${elementsPathFocus} para navegar a los elementos de la barra de ruta. Te mueves al siguiente elemento botón con TAB o FLECHA DERECHA. Te mueves al botón previo con SHIFT+TAB o FLECHA IZQUIERDA. Presiona ESPACIO o ENTER para seleccionar el elemento en el editor."}]}, {name:"Comandos",items:[{name:"Comando deshacer",legend:"Presiona ${undo}"},{name:"Comando rehacer",legend:"Presiona ${redo}"},{name:"Comando negrita",legend:"Presiona ${bold}"},{name:"Comando itálica",legend:"Presiona ${italic}"},{name:"Comando subrayar",legend:"Presiona ${underline}"},{name:"Comando liga",legend:"Presiona ${liga}"},{name:"Comando colapsar barra de herramientas",legend:"Presiona ${toolbarCollapse}"},{name:"Comando accesar el anterior espacio de foco",legend:"Presiona ${accessPreviousSpace} para accesar el espacio de foco no disponible más cercano anterior al cursor, por ejemplo: dos elementos HR adyacentes. Repite la combinación de teclas para alcanzar espacios de foco distantes."}, {name:"Comando accesar el siguiente spacio de foco",legend:"Presiona ${accessNextSpace} para accesar el espacio de foco no disponible más cercano después del cursor, por ejemplo: dos elementos HR adyacentes. Repite la combinación de teclas para alcanzar espacios de foco distantes."},{name:"Ayuda de Accesibilidad",legend:"Presiona ${a11yHelp}"}]}],backspace:"Retroceso",tab:"Tabulador",enter:"Ingresar",shift:"Mayús.",ctrl:"Ctrl",alt:"Alt",pause:"Pausa",capslock:"Bloq. Mayús.",escape:"Escape",pageUp:"Regresar Página", pageDown:"Avanzar Página",end:"Fin",home:"Inicio",leftArrow:"Flecha Izquierda",upArrow:"Flecha Arriba",rightArrow:"Flecha Derecha",downArrow:"Flecha Abajo",insert:"Insertar","delete":"Suprimir",leftWindowKey:"Tecla Windows Izquierda",rightWindowKey:"Tecla Windows Derecha",selectKey:"Tecla de Selección",numpad0:"Tecla 0 del teclado numérico",numpad1:"Tecla 1 del teclado numérico",numpad2:"Tecla 2 del teclado numérico",numpad3:"Tecla 3 del teclado numérico",numpad4:"Tecla 4 del teclado numérico",numpad5:"Tecla 5 del teclado numérico", numpad6:"Tecla 6 del teclado numérico",numpad7:"Tecla 7 del teclado numérico",numpad8:"Tecla 8 del teclado numérico",numpad9:"Tecla 9 del teclado numérico",multiply:"Multiplicar",add:"Sumar",subtract:"Restar",decimalPoint:"Punto Decimal",divide:"Dividir",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Punto y coma",equalSign:"Signo de Igual",comma:"Coma",dash:"Guión",period:"Punto",forwardSlash:"Diagonal", graveAccent:"Acento Grave",openBracket:"Abrir llave",backSlash:"Diagonal Invertida",closeBracket:"Cerrar llave",singleQuote:"Comillas simples"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/ro.js0000644000201500020150000001023314514267702025103 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","ro",{title:"Instrucțiuni de accesibilitate",contents:"Cuprins. Pentru a închide acest dialog, apăsați tasta ESC.",legend:[{name:"General",items:[{name:"Editează bara instrumente.",legend:"Apasă ${toolbarFocus} pentru a naviga prin bara de instrumente. Pentru a te mișca prin grupurile de instrumente folosește tastele TAB și SHIFT+TAB. Pentru a te mișca intre diverse instrumente folosește tastele SĂGEATĂ DREAPTA sau SĂGEATĂ STÂNGA. Apasă butonul SPAȚIU sau ENTER pentru activarea instrumentului."}, {name:"Dialog editor",legend:"Inside 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."},{name:"Editor meniu contextual",legend:"Apasă ${contextMenu} sau TASTA MENIU pentru a deschide meniul contextual. Treci la următoarea opțiune din meniu cu TAB sau SĂGEATĂ JOS. Treci la opțiunea anterioară cu SHIFT+TAB sau SĂGEATĂ SUS. Apasă SPAȚIU sau ENTER pentru a selecta opțiunea din meniu. Deschide sub-meniul opțiunii curente cu SPAȚIU sau ENTER sau SĂGEATĂ DREAPTA. Revino la elementul din meniul părinte cu ESC sau SĂGEATĂ STÂNGA. Închide meniul de context cu ESC."}, {name:"Editor Casetă Listă",legend:"În interiorul unei liste, treci la următorull element cu TAB sau SĂGEATĂ JOS. Treci la elementul anterior din listă cu SHIFT+TAB sau SĂGEATĂ SUS. Apasă SPAȚIU sau ENTER pentru a selecta opțiunea din listă. Apasă ESC pentru a închide lista."},{name:"Editor Element Path Bar",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."}]}, {name:"Comenzi",items:[{name:" Undo command",legend:"Apasă ${undo}"},{name:"Comanda precedentă",legend:"Apasă ${redo}"},{name:"Comanda Îngroșat",legend:"Apasă ${bold}"},{name:"Comanda Inclinat",legend:"Apasă ${italic}"},{name:"Comanda Subliniere",legend:"Apasă ${underline}"},{name:"Comanda Legatură",legend:"Apasă ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",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."}, {name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow", upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3", f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/hr.js0000644000201500020150000001007114514267702025074 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","hr",{title:"Upute dostupnosti",contents:"Sadržaj pomoći. Za zatvaranje pritisnite ESC.",legend:[{name:"Općenito",items:[{name:"Alatna traka",legend:"Pritisni ${toolbarFocus} za navigaciju do alatne trake. Pomicanje do prethodne ili sljedeće alatne grupe vrši se pomoću SHIFT+TAB i TAB. Pomicanje do prethodnog ili sljedećeg gumba u alatnoj traci vrši se pomoću lijeve i desne strelice kursora. Pritisnite SPACE ili ENTER za aktivaciju alatne trake."},{name:"Dijalog", legend:"Inside 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."},{name:"Kontekstni izbornik",legend:"Pritisnite ${contextMenu} ili APPLICATION tipku za otvaranje kontekstnog izbornika. Pomicanje se vrši TAB ili strelicom kursora prema dolje ili SHIFT+TAB ili strelica kursora prema gore. SPACE ili ENTER odabiru opciju izbornika. Otvorite podizbornik trenutne opcije sa SPACE, ENTER ili desna strelica kursora. Povratak na prethodni izbornik vrši se sa ESC ili lijevom strelicom kursora. Zatvaranje se vrši pritiskom na tipku ESC."}, {name:"Lista",legend:"Unutar list-boxa, pomicanje na sljedeću stavku vrši se sa TAB ili strelica kursora prema dolje. Na prethodnu sa SHIFT+TAB ili strelica prema gore. Pritiskom na SPACE ili ENTER odabire se stavka ili ESC za zatvaranje."},{name:"Traka putanje elemenata",legend:"Pritisnite ${elementsPathFocus} za navigaciju po putanji elemenata. Pritisnite TAB ili desnu strelicu kursora za pomicanje na sljedeći element ili SHIFT+TAB ili lijeva strelica kursora za pomicanje na prethodni element. Pritiskom na SPACE ili ENTER vrši se odabir elementa."}]}, {name:"Naredbe",items:[{name:"Vrati naredbu",legend:"Pritisni ${undo}"},{name:"Ponovi naredbu",legend:"Pritisni ${redo}"},{name:"Bold naredba",legend:"Pritisni ${bold}"},{name:"Italic naredba",legend:"Pritisni ${italic}"},{name:"Underline naredba",legend:"Pritisni ${underline}"},{name:"Link naredba",legend:"Pritisni ${link}"},{name:"Smanji alatnu traku naredba",legend:"Pritisni ${toolbarCollapse}"},{name:"Access previous focus space naredba",legend:"Pritisni ${accessPreviousSpace} za pristup najbližem nedostupnom razmaku prije kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak."}, {name:"Access next focus space naredba",legend:"Pritisni ${accessNextSpace} za pristup najbližem nedostupnom razmaku nakon kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak."},{name:"Pomoć za dostupnost",legend:"Pritisni ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow", upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3", f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/it.js0000644000201500020150000001146714514267702025111 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","it",{title:"Istruzioni di Accessibilità",contents:"Contenuti di Aiuto. Per chiudere questa finestra premi ESC.",legend:[{name:"Generale",items:[{name:"Barra degli strumenti Editor",legend:"Premere ${toolbarFocus} per passare alla barra degli strumenti. Usare TAB per spostarsi al gruppo successivo, MAIUSC+TAB per spostarsi a quello precedente. Usare FRECCIA DESTRA per spostarsi al pulsante successivo, FRECCIA SINISTRA per spostarsi a quello precedente. Premere SPAZIO o INVIO per attivare il pulsante della barra degli strumenti."}, {name:"Finestra Editor",legend:"All'interno di una finestra di dialogo è possibile premere TAB per passare all'elemento successivo della finestra, MAIUSC+TAB per passare a quello precedente; premere INVIO per inviare i dati della finestra, oppure ESC per annullare l'operazione. Quando una finestra di dialogo ha più schede, è possibile passare all'elenco delle schede sia con ALT+F10 che con TAB, in base all'ordine delle tabulazioni della finestra. Quando l'elenco delle schede è attivo, premere la FRECCIA DESTRA o la FRECCIA SINISTRA per passare rispettivamente alla scheda successiva o a quella precedente."}, {name:"Menù contestuale Editor",legend:"Premi ${contextMenu} o TASTO APPLICAZIONE per aprire il menu contestuale. Dunque muoviti all'opzione successiva del menu con il tasto TAB o con la Freccia Sotto. Muoviti all'opzione precedente con MAIUSC+TAB o con Freccia Sopra. Premi SPAZIO o INVIO per scegliere l'opzione di menu. Apri il sottomenu dell'opzione corrente con SPAZIO o INVIO oppure con la Freccia Destra. Torna indietro al menu superiore con ESC oppure Freccia Sinistra. Chiudi il menu contestuale con ESC."}, {name:"Box Lista Editor",legend:"All'interno di un elenco di opzioni, per spostarsi all'elemento successivo premere TAB oppure FRECCIA GIÙ. Per spostarsi all'elemento precedente usare SHIFT+TAB oppure FRECCIA SU. Premere SPAZIO o INVIO per selezionare l'elemento della lista. Premere ESC per chiudere l'elenco di opzioni."},{name:"Barra percorso elementi editor",legend:"Premere ${elementsPathFocus} per passare agli elementi della barra del percorso. Usare TAB o FRECCIA DESTRA per passare al pulsante successivo. Per passare al pulsante precedente premere MAIUSC+TAB o FRECCIA SINISTRA. Premere SPAZIO o INVIO per selezionare l'elemento nell'editor."}]}, {name:"Comandi",items:[{name:" Annulla comando",legend:"Premi ${undo}"},{name:" Ripeti comando",legend:"Premi ${redo}"},{name:" Comando Grassetto",legend:"Premi ${bold}"},{name:" Comando Corsivo",legend:"Premi ${italic}"},{name:" Comando Sottolineato",legend:"Premi ${underline}"},{name:" Comando Link",legend:"Premi ${link}"},{name:" Comando riduci barra degli strumenti",legend:"Premi ${toolbarCollapse}"},{name:"Comando di accesso al precedente spazio di focus",legend:"Premi ${accessPreviousSpace} per accedere il più vicino spazio di focus non raggiungibile prima del simbolo caret, per esempio due elementi HR adiacenti. Ripeti la combinazione di tasti per raggiungere spazi di focus distanti."}, {name:"Comando di accesso al prossimo spazio di focus",legend:"Premi ${accessNextSpace} per accedere il più vicino spazio di focus non raggiungibile dopo il simbolo caret, per esempio due elementi HR adiacenti. Ripeti la combinazione di tasti per raggiungere spazi di focus distanti."},{name:" Aiuto Accessibilità",legend:"Premi ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Invio",shift:"Maiusc",ctrl:"Ctrl",alt:"Alt",pause:"Pausa",capslock:"Bloc Maiusc",escape:"Esc",pageUp:"Pagina sù",pageDown:"Pagina giù", end:"Fine",home:"Inizio",leftArrow:"Freccia sinistra",upArrow:"Freccia su",rightArrow:"Freccia destra",downArrow:"Freccia giù",insert:"Ins","delete":"Canc",leftWindowKey:"Tasto di Windows sinistro",rightWindowKey:"Tasto di Windows destro",selectKey:"Tasto di selezione",numpad0:"0 sul tastierino numerico",numpad1:"1 sul tastierino numerico",numpad2:"2 sul tastierino numerico",numpad3:"3 sul tastierino numerico",numpad4:"4 sul tastierino numerico",numpad5:"5 sul tastierino numerico",numpad6:"6 sul tastierino numerico", numpad7:"7 sul tastierino numerico",numpad8:"8 sul tastierino numerico",numpad9:"9 sul tastierino numerico",multiply:"Moltiplicazione",add:"Più",subtract:"Sottrazione",decimalPoint:"Punto decimale",divide:"Divisione",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Bloc Num",scrollLock:"Bloc Scorr",semiColon:"Punto-e-virgola",equalSign:"Segno di uguale",comma:"Virgola",dash:"Trattino",period:"Punto",forwardSlash:"Barra",graveAccent:"Accento grave", openBracket:"Parentesi quadra aperta",backSlash:"Barra rovesciata",closeBracket:"Parentesi quadra chiusa",singleQuote:"Apostrofo"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/sk.js0000644000201500020150000001114314514267702025101 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","sk",{title:"Inštrukcie prístupnosti",contents:"Pomocný obsah. Pre zatvorenie tohto okna, stlačte ESC.",legend:[{name:"Všeobecne",items:[{name:"Lišta nástrojov editora",legend:"Stlačte ${toolbarFocus} pre navigáciu na lištu nástrojov. Medzi ďalšou a predchádzajúcou lištou nástrojov sa pohybujete s TAB a SHIFT+TAB. Medzi ďalším a predchádzajúcim tlačidlom na lište nástrojov sa pohybujete s pravou šípkou a ľavou šípkou. Stlačte medzerník alebo ENTER pre aktiváciu tlačidla lišty nástrojov."}, {name:"Editorový dialóg",legend:"Inside 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."},{name:"Editorové kontextové menu",legend:"Stlačte ${contextMenu} alebo APPLICATION KEY pre otvorenie kontextového menu. Potom sa presúvajte na ďalšie možnosti menu s TAB alebo dolnou šípkou. Presunte sa k predchádzajúcej možnosti s SHIFT+TAB alebo hornou šípkou. Stlačte medzerník alebo ENTER pre výber možnosti menu. Otvorte pod-menu danej možnosti s medzerníkom, alebo ENTER, alebo pravou šípkou. Vráťte sa späť do položky rodičovského menu s ESC alebo ľavou šípkou. Zatvorte kontextové menu s ESC."}, {name:"Editorov box zoznamu",legend:"V boxe zoznamu, presuňte sa na ďalšiu položku v zozname s TAB alebo dolnou šípkou. Presuňte sa k predchádzajúcej položke v zozname so SHIFT+TAB alebo hornou šípkou. Stlačte medzerník alebo ENTER pre výber možnosti zoznamu. Stlačte ESC pre zatvorenie boxu zoznamu."},{name:"Editorove pásmo cesty prvku",legend:"Stlačte ${elementsPathFocus} pre navigovanie na pásmo cesty elementu. Presuňte sa na tlačidlo ďalšieho prvku s TAB alebo pravou šípkou. Presuňte sa k predchádzajúcemu tlačidlu s SHIFT+TAB alebo ľavou šípkou. Stlačte medzerník alebo ENTER pre výber prvku v editore."}]}, {name:"Príkazy",items:[{name:"Vrátiť príkazy",legend:"Stlačte ${undo}"},{name:"Nanovo vrátiť príkaz",legend:"Stlačte ${redo}"},{name:"Príkaz na stučnenie",legend:"Stlačte ${bold}"},{name:"Príkaz na kurzívu",legend:"Stlačte ${italic}"},{name:"Príkaz na podčiarknutie",legend:"Stlačte ${underline}"},{name:"Príkaz na odkaz",legend:"Stlačte ${link}"},{name:"Príkaz na zbalenie lišty nástrojov",legend:"Stlačte ${toolbarCollapse}"},{name:"Prejsť na predchádzajúcu zamerateľnú medzeru príkazu",legend:"Stlačte ${accessPreviousSpace} pre prístup na najbližšie nedosiahnuteľné zamerateľné medzery pred vsuvkuo. Napríklad: dve za sebou idúce horizontálne čiary. Opakujte kombináciu klávesov pre dosiahnutie vzdialených zamerateľných medzier."}, {name:"Prejsť na ďalší ",legend:"Stlačte ${accessNextSpace} pre prístup na najbližšie nedosiahnuteľné zamerateľné medzery po vsuvke. Napríklad: dve za sebou idúce horizontálne čiary. Opakujte kombináciu klávesov pre dosiahnutie vzdialených zamerateľných medzier."},{name:"Pomoc prístupnosti",legend:"Stlačte ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Stránka hore",pageDown:"Stránka dole", end:"End",home:"Home",leftArrow:"Šípka naľavo",upArrow:"Šípka hore",rightArrow:"Šípka napravo",downArrow:"Šípka dole",insert:"Insert","delete":"Delete",leftWindowKey:"Ľavé Windows tlačidlo",rightWindowKey:"Pravé Windows tlačidlo",selectKey:"Tlačidlo Select",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Násobenie",add:"Sčítanie",subtract:"Odčítanie", decimalPoint:"Desatinná čiarka",divide:"Delenie",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Bodkočiarka",equalSign:"Rovná sa",comma:"Čiarka",dash:"Pomĺčka",period:"Bodka",forwardSlash:"Lomítko",graveAccent:"Zdôrazňovanie prízvuku",openBracket:"Hranatá zátvorka otváracia",backSlash:"Backslash",closeBracket:"Hranatá zátvorka zatváracia",singleQuote:"Jednoduché úvodzovky"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/pt.js0000644000201500020150000001062114514267702025107 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","pt",{title:"Instruções de acessibilidade",contents:"Conteúdo de ajuda. Use a tecla ESC para fechar esta janela.",legend:[{name:"Geral",items:[{name:"Barra de ferramentas do editor",legend:"Clique em ${toolbarFocus} para navegar para a barra de ferramentas. Vá para o grupo da barra de ferramentas anterior e seguinte com TAB e SHIFT+TAB. Vá para o botão da barra de ferramentas anterior com a SETA DIREITA ou ESQUERDA. Pressione ESPAÇO ou ENTER para ativar o botão da barra de ferramentas."}, {name:"Janela do Editor",legend:"Inside 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."},{name:"Menu de Contexto do Editor",legend:"Clique em ${contextMenu} ou TECLA APLICAÇÃO para abrir o menu de contexto. Depois vá para a opção do menu seguinte com TAB ou SETA PARA BAIXO. Vá para a opção anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu. Abra o submenu da opção atual com ESPAÇO, ENTER ou SETA DIREITA. GVá para o item do menu parente com ESC ou SETA ESQUERDA. Feche o menu de contexto com ESC."}, {name:"Editor de caixa em lista",legend:"Dentro da caixa da lista, vá para o itemda lista seguinte com TAB ou SETA PARA BAIXO. Move Vá parao item da lista anterior com SHIFT+TAB ou SETA PARA BAIXO. Pressione ESPAÇO ou ENTER para selecionar a opção da lista. Pressione ESC para fechar a caisa da lista."},{name:"Caminho Barra Elemento Editor",legend:"Clique em ${elementsPathFocus} para navegar para a barra do caminho dos elementos. Vá para o botão do elemento seguinte com TAB ou SETA DIREITA. Vá para o botão anterior com SHIFT+TAB ou SETA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar o elemento no editor."}]}, {name:"Comandos",items:[{name:"Comando de Anular",legend:"Carregar ${undo}"},{name:"Comando de Refazer",legend:"Pressione ${redo}"},{name:"Comando de Negrito",legend:"Pressione ${bold}"},{name:"Comando de Itálico",legend:"Pressione ${italic}"},{name:"Comando de Sublinhado",legend:"Pressione ${underline}"},{name:"Comando de Hiperligação",legend:"Pressione ${link}"},{name:"Comando de Ocultar Barra de Ferramentas",legend:"Pressione ${toolbarCollapse}"},{name:"Acesso comando do espaço focus anterior", legend:"Clique em ${accessPreviousSpace} para aceder ao espaço do focos inalcançável mais perto antes do sinal de omissão, por exemplo: dois elementos HR adjacentes. Repetir a combinação da chave para alcançar os espaços dos focos distantes."},{name:"Acesso comando do espaço focus seguinte",legend:"Pressione ${accessNextSpace} para aceder ao espaço do focos inalcançável mais perto depois do sinal de omissão, por exemplo: dois elementos HR adjacentes. Repetir a combinação da chave para alcançar os espaços dos focos distantes."}, {name:"Ajuda a acessibilidade",legend:"Pressione ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pausa",capslock:"Maiúsculas",escape:"Esc",pageUp:"Page Up",pageDown:"Page Down",end:"Fim",home:"Entrada",leftArrow:"Seta esquerda",upArrow:"Seta para cima",rightArrow:"Seta direita",downArrow:"Seta para baixo",insert:"Inserir","delete":"Eliminar",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0", numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiplicar",add:"Adicionar",subtract:"Subtrair",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Vírgula",dash:"Dash",period:"Period", forwardSlash:"Forward Slash",graveAccent:"Acento grave",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/si.js0000644000201500020150000001356214514267702025106 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","si",{title:"ළඟා වියහැකි ",contents:"උදව් සඳහා අන්තර්ගතය.නික්මයෙමට ESC බොත්තම ඔබන්න",legend:[{name:"පොදු කරුණු",items:[{name:"සංස්කරණ මෙවලම් ",legend:"ඔබන්න ${මෙවලම් තීරු අවධානය} මෙවලම් තීරුවේ එහා මෙහා යෑමට.ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරුකාණ්ඩය හා TAB හා SHIFT+TAB .ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරු බොත්තම සමග RIGHT ARROW හෝ LEFT ARROW.මෙවලම් තීරු බොත්තම සක්‍රිය කර ගැනීමට SPACE හෝ ENTER බොත්තම ඔබන්න."},{name:"සංස්කරණ ",legend:"Inside 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."}, {name:"සංස්කරණ අඩංගුවට ",legend:"ඔබන්න ${අන්තර්ගත මෙනුව} හෝ APPLICATION KEY අන්තර්ගත-මෙනුව විවුරතකිරීමට. ඊළඟ මෙනුව-ව්කල්පයන්ට යෑමට TAB හෝ DOWN ARROW බොත්තම ද, පෙර විකල්පයන්ටයෑමට SHIFT+TAB හෝ UP ARROW බොත්තම ද, මෙනුව-ව්කල්පයන් තේරීමට SPACE හෝ ENTER බොත්තම ද, දැනට විවුර්තව ඇති උප-මෙනුවක වීකල්ප තේරීමට SPACE හෝ ENTER හෝ RIGHT ARROW ද, නැවත පෙර ප්‍රධාන මෙනුවට යෑමට ESC හෝ LEFT ARROW බොත්තම ද. අන්තර්ගත-මෙනුව වැසීමට ESC බොත්තම ද ඔබන්න."},{name:"සංස්කරණ තේරුම් ",legend:"තේරුම් කොටුව තුළ , ඊළඟ අයිතමයට යෑමට TAB හෝ DOWN ARROW , පෙර අයිතමයට යෑමට SHIFT+TAB හෝ UP ARROW . අයිතම විකල්පයන් තේරීමට SPACE හෝ ENTER ,තේරුම් කොටුව වැසීමට ESC බොත්තම් ද ඔබන්න."}, {name:"සංස්කරණ අංග සහිත ",legend:"ඔබන්න ${මෙවලම් තීරු අවධානය} මෙවලම් තීරුවේ එහා මෙහා යෑමට.ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරුකාණ්ඩය හා TAB හා SHIFT+TAB .ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරු බොත්තම සමග RIGHT ARROW හෝ LEFT ARROW.මෙවලම් තීරු බොත්තම සක්‍රිය කර ගැනීමට SPACE හෝ ENTER බොත්තම ඔබන්න."}]},{name:"විධාන",items:[{name:"විධානය වෙනස් ",legend:"ඔබන්න ${වෙනස් කිරීම}"},{name:"විධාන නැවත් පෙර පරිදිම වෙනස්කර ගැනීම.",legend:"ඔබන්න ${නැවත් පෙර පරිදිම වෙනස්කර ගැනීම}"},{name:"තද අකුරින් විධාන",legend:"ඔබන්න ${තද }"}, {name:"බැධී අකුරු විධාන",legend:"ඔබන්න ${බැධී අකුරු }"},{name:"යටින් ඉරි ඇද ඇති විධාන.",legend:"ඔබන්න ${යටින් ඉරි ඇද ඇති}"},{name:"සම්බන්ධිත විධාන",legend:"ඔබන්න ${සම්බන්ධ }"},{name:"මෙවලම් තීරු හැකුලුම් විධාන",legend:"ඔබන්න ${මෙවලම් තීරු හැකුලුම් }"},{name:"යොමුවීමට පෙර වැදගත් විධාන",legend:"ඔබන්න ${යොමුවීමට ඊළඟ }"},{name:"යොමුවීමට ඊළග වැදගත් විධාන",legend:"ඔබන්න ${යොමුවීමට ඊළඟ }"},{name:"ප්‍රවේශ ",legend:"ඔබන්න ${a11y }"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl", alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8", numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/ko.js0000644000201500020150000001277114514267702025105 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","ko",{title:"접근성 설명",contents:"도움말. 이 창을 닫으시려면 ESC 를 누르세요.",legend:[{name:"일반",items:[{name:"편집기 툴바",legend:"툴바를 탐색하시려면 ${toolbarFocus} 를 투르세요. 이전/다음 툴바 그룹으로 이동하시려면 TAB 키 또는 SHIFT+TAB 키를 누르세요. 이전/다음 툴바 버튼으로 이동하시려면 오른쪽 화살표 키 또는 왼쪽 화살표 키를 누르세요. 툴바 버튼을 활성화 하려면 SPACE 키 또는 ENTER 키를 누르세요."},{name:"편집기 다이얼로그",legend:"TAB 키를 누르면 다음 대화상자로 이동하고, SHIFT+TAB 키를 누르면 이전 대화상자로 이동합니다. 대화상자를 제출하려면 ENTER 키를 누르고, ESC 키를 누르면 대화상자를 취소합니다. 대화상자에 탭이 여러개 있을 때, ALT+F10 키 또는 TAB 키를 누르면 순서에 따라 탭 목록에 도달할 수 있습니다. 탭 목록에 초점이 맞을 때, 오른쪽과 왼쪽 화살표 키를 이용하면 각각 다음과 이전 탭으로 이동할 수 있습니다."}, {name:"편집기 환경 메뉴",legend:"${contextMenu} 또는 어플리케이션 키를 누르면 환경-메뉴를 열 수 있습니다. 환경-메뉴에서 TAB 키 또는 아래 화살표 키를 누르면 다음 메뉴 옵션으로 이동할 수 있습니다. 이전 옵션으로 이동은 SHIFT+TAB 키 또는 위 화살표 키를 눌러서 할 수 있습니다. 스페이스 키 또는 ENTER 키를 눌러서 메뉴 옵션을 선택할 수 있습니다. 스페이스 키 또는 ENTER 키 또는 오른쪽 화살표 키를 눌러서 하위 메뉴를 열 수 있습니다. 부모 메뉴 항목으로 돌아가려면 ESC 키 또는 왼쪽 화살표 키를 누릅니다. ESC 키를 눌러서 환경-메뉴를 닫습니다."},{name:"편집기 목록 박스",legend:"리스트-박스 내에서, 목록의 다음 항목으로 이동하려면 TAB 키 또는 아래쪽 화살표 키를 누릅니다. 목록의 이전 항목으로 이동하려면 SHIFT+TAB 키 또는 위쪽 화살표 키를 누릅니다. 스페이스 키 또는 ENTER 키를 누르면 목록의 해당 옵션을 선택합니다. ESC 키를 눌러서 리스트-박스를 닫을 수 있습니다."}, {name:"편집기 요소 경로 막대",legend:"${elementsPathFocus}를 눌러서 요소 경로 막대를 탐색할 수 있습니다. 다음 요소로 이동하려면 TAB 키 또는 오른쪽 화살표 키를 누릅니다. SHIFT+TAB 키 또는 왼쪽 화살표 키를 누르면 이전 버튼으로 이동할 수 있습니다. 스페이스 키나 ENTER 키를 누르면 편집기의 해당 항목을 선택합니다."}]},{name:"명령",items:[{name:" 명령 실행 취소",legend:"${undo} 누르시오"},{name:" 명령 다시 실행",legend:"${redo} 누르시오"},{name:" 굵게 명령",legend:"${bold} 누르시오"},{name:" 기울임 꼴 명령",legend:"${italic} 누르시오"},{name:" 밑줄 명령",legend:"${underline} 누르시오"},{name:" 링크 명령",legend:"${link} 누르시오"},{name:" 툴바 줄이기 명령",legend:"${toolbarCollapse} 누르시오"}, {name:" 이전 포커스 공간 접근 명령",legend:"탈자 기호(^) 이전에 ${accessPreviousSpace} 를 누르면, 접근 불가능하면서 가장 가까운 포커스 영역에 접근합니다. 예를 들면, 두 인접한 HR 요소가 있습니다. 키 조합을 반복해서 멀리있는 포커스 영역들에 도달할 수 있습니다."},{name:"다음 포커스 공간 접근 명령",legend:"탈자 기호(^) 다음에 ${accessNextSpace} 를 누르면, 접근 불가능하면서 가장 가까운 포커스 영역에 접근합니다. 예를 들면, 두 인접한 HR 요소가 있습니다. 키 조합을 반복해서 멀리있는 포커스 영역들에 도달할 수 있습니다. "},{name:" 접근성 도움말",legend:"${a11yHelp} 누르시오"}]}],backspace:"Backspace 키",tab:"탭 키",enter:"엔터 키",shift:"시프트 키",ctrl:"컨트롤 키",alt:"알트 키",pause:"일시정지 키",capslock:"캡스 록 키", escape:"이스케이프 키",pageUp:"페이지 업 키",pageDown:"페이지 다운 키",end:"엔드 키",home:"홈 키",leftArrow:"왼쪽 화살표 키",upArrow:"위쪽 화살표 키",rightArrow:"오른쪽 화살표 키",downArrow:"아래쪽 화살표 키",insert:"인서트 키","delete":"삭제 키",leftWindowKey:"왼쪽 윈도우 키",rightWindowKey:"오른쪽 윈도우 키",selectKey:"셀렉트 키",numpad0:"숫자 패드 0 키",numpad1:"숫자 패드 1 키",numpad2:"숫자 패드 2 키",numpad3:"숫자 패드 3 키",numpad4:"숫자 패드 4 키",numpad5:"숫자 패드 5 키",numpad6:"숫자 패드 6 키",numpad7:"숫자 패드 7 키",numpad8:"숫자 패드 8 키",numpad9:"숫자 패드 9 키",multiply:"곱셈(*) 키",add:"덧셈(+) 키",subtract:"뺄셈(-) 키", decimalPoint:"온점(.) 키",divide:"나눗셈(/) 키",f1:"F1 키",f2:"F2 키",f3:"F3 키",f4:"F4 키",f5:"F5 키",f6:"F6 키",f7:"F7 키",f8:"F8 키",f9:"F9 키",f10:"F10 키",f11:"F11 키",f12:"F12 키",numLock:"Num Lock 키",scrollLock:"Scroll Lock 키",semiColon:"세미콜론(;) 키",equalSign:"등호(=) 키",comma:"쉼표(,) 키",dash:"대시(-) 키",period:"온점(.) 키",forwardSlash:"슬래시(/) 키",graveAccent:"억음 악센트(`) 키",openBracket:"브라켓 열기([) 키",backSlash:"역슬래시(\\\\) 키",closeBracket:"브라켓 닫기(]) 키",singleQuote:"외 따옴표(') 키"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/mk.js0000644000201500020150000001003214514267702025067 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","mk",{title:"Инструкции за пристапност",contents:"Содржина на делот за помош. За да го затворите овој дијалот притиснете ESC.",legend:[{name:"Општо",items:[{name:"Мени за едиторот",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Дијалот за едиторот", legend:"Inside 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."},{name:"Editor Context Menu",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."}, {name:"Editor List Box",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."},{name:"Editor Element Path Bar",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."}]}, {name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command",legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",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."}, {name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow", upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3", f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/cy.js0000644000201500020150000001022614514267702025100 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","cy",{title:"Canllawiau Hygyrchedd",contents:"Cynnwys Cymorth. I gau y deialog hwn, pwyswch ESC.",legend:[{name:"Cyffredinol",items:[{name:"Bar Offer y Golygydd",legend:"Pwyswch $ {toolbarFocus} i fynd at y bar offer. Symudwch i'r grŵp bar offer nesaf a blaenorol gyda TAB a SHIFT+TAB. Symudwch i'r botwm bar offer nesaf a blaenorol gyda SAETH DDE neu SAETH CHWITH. Pwyswch SPACE neu ENTER i wneud botwm y bar offer yn weithredol."},{name:"Deialog y Golygydd",legend:"Inside 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."}, {name:"Dewislen Cyd-destun y Golygydd",legend:"Pwyswch $ {contextMenu} neu'r ALLWEDD 'APPLICATION' i agor y ddewislen cyd-destun. Yna symudwch i'r opsiwn ddewislen nesaf gyda'r TAB neu'r SAETH I LAWR. Symudwch i'r opsiwn blaenorol gyda SHIFT+TAB neu'r SAETH I FYNY. Pwyswch SPACE neu ENTER i ddewis yr opsiwn ddewislen. Agorwch is-dewislen yr opsiwn cyfredol gyda SPACE neu ENTER neu SAETH DDE. Ewch yn ôl i'r eitem ar y ddewislen uwch gydag ESC neu SAETH CHWITH. Ceuwch y ddewislen cyd-destun gydag ESC."}, {name:"Blwch Rhestr y Golygydd",legend:"Tu mewn y blwch rhestr, ewch i'r eitem rhestr nesaf gyda TAB neu'r SAETH I LAWR. Symudwch i restr eitem flaenorol gyda SHIFT+TAB neu SAETH I FYNY. Pwyswch SPACE neu ENTER i ddewis yr opsiwn o'r rhestr. Pwyswch ESC i gau'r rhestr."},{name:"Bar Llwybr Elfen y Golygydd",legend:"Pwyswch ${elementsPathFocus} i fynd i'r bar llwybr elfennau. Symudwch i fotwm yr elfen nesaf gyda TAB neu SAETH DDE. Symudwch i fotwm blaenorol gyda SHIFT+TAB neu SAETH CHWITH. Pwyswch SPACE neu ENTER i ddewis yr elfen yn y golygydd."}]}, {name:"Gorchmynion",items:[{name:"Gorchymyn dadwneud",legend:"Pwyswch ${undo}"},{name:"Gorchymyn ailadrodd",legend:"Pwyswch ${redo}"},{name:"Gorchymyn Bras",legend:"Pwyswch ${bold}"},{name:"Gorchymyn italig",legend:"Pwyswch ${italig}"},{name:"Gorchymyn tanlinellu",legend:"Pwyso ${underline}"},{name:"Gorchymyn dolen",legend:"Pwyswch ${link}"},{name:"Gorchymyn Cwympo'r Dewislen",legend:"Pwyswch ${toolbarCollapse}"},{name:"Myned i orchymyn bwlch ffocws blaenorol",legend:"Pwyswch ${accessPreviousSpace} i fyned i'r \"blwch ffocws sydd methu ei gyrraedd\" cyn y caret, er enghraifft: dwy elfen HR drws nesaf i'w gilydd. AIladroddwch y cyfuniad allwedd i gyrraedd bylchau ffocws pell."}, {name:"Ewch i'r gorchymyn blwch ffocws nesaf",legend:"Pwyswch ${accessNextSpace} i fyned i'r blwch ffocws agosaf nad oes modd ei gyrraedd ar ôl y caret, er enghraifft: dwy elfen HR drws nesaf i'w gilydd. Ailadroddwch y cyfuniad allwedd i gyrraedd blychau ffocws pell."},{name:"Cymorth Hygyrchedd",legend:"Pwyswch ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point", divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/uk.js0000644000201500020150000001403714514267702025110 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","uk",{title:"Спеціальні Інструкції",contents:"Довідка. Натисніть ESC і вона зникне.",legend:[{name:"Основне",items:[{name:"Панель Редактора",legend:"Натисніть ${toolbarFocus} для переходу до панелі інструментів. Для переміщення між групами панелі інструментів використовуйте TAB і SHIFT+TAB. Для переміщення між кнопками панелі іструментів використовуйте кнопки СТРІЛКА ВПРАВО або ВЛІВО. Натисніть ПРОПУСК або ENTER для запуску кнопки панелі інструментів."},{name:"Діалог Редактора", legend:"Inside 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."},{name:"Контекстне Меню Редактора",legend:"Press ${contextMenu} or APPLICATION KEY to open context-menu. Потім перейдіть до наступного пункту меню за допомогою TAB або СТРІЛКИ ВНИЗ. Натисніть ПРОПУСК або ENTER для вибору параметру меню. Відкрийте підменю поточного параметру, натиснувши ПРОПУСК або ENTER або СТРІЛКУ ВПРАВО. Перейдіть до батьківського елемента меню, натиснувши ESC або СТРІЛКУ ВЛІВО. Закрийте контекстне меню, натиснувши ESC."}, {name:"Скринька Списків Редактора",legend:"Всередині списку переходимо до наступного пункту списку клавішею TAB або СТРІЛКА ВНИЗ. Перейти до попереднього елемента списку можна SHIFT+TAB або СТРІЛКА ВГОРУ. Натисніть ПРОПУСК або ENTER, щоб вибрати параметр списку. Натисніть клавішу ESC, щоб закрити список."},{name:"Шлях до елемента редактора",legend:"Натисніть ${elementsPathFocus} для навігації між елементами панелі. Перейдіть до наступного елемента кнопкою TAB або СТРІЛКА ВПРАВО. Перейдіть до попереднього елемента кнопкою SHIFT+TAB або СТРІЛКА ВЛІВО. Натисніть ПРОПУСК або ENTER для вибору елемента в редакторі."}]}, {name:"Команди",items:[{name:"Відмінити команду",legend:"Натисніть ${undo}"},{name:"Повторити",legend:"Натисніть ${redo}"},{name:"Жирний",legend:"Натисніть ${bold}"},{name:"Курсив",legend:"Натисніть ${italic}"},{name:"Підкреслений",legend:"Натисніть ${underline}"},{name:"Посилання",legend:"Натисніть ${link}"},{name:"Згорнути панель інструментів",legend:"Натисніть ${toolbarCollapse}"},{name:"Доступ до попереднього місця фокусування",legend:"Натисніть ${accessNextSpace} для доступу до найближчої недосяжної області фокусування перед кареткою, наприклад: два сусідні елементи HR. Повторіть комбінацію клавіш для досягнення віддалених областей фокусування."}, {name:"Доступ до наступного місця фокусування",legend:"Натисніть ${accessNextSpace} для доступу до найближчої недосяжної області фокусування після каретки, наприклад: два сусідні елементи HR. Повторіть комбінацію клавіш для досягнення віддалених областей фокусування."},{name:"Допомога з доступності",legend:"Натисніть ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Esc",pageUp:"Page Up",pageDown:"Page Down", end:"End",home:"Home",leftArrow:"Ліва стрілка",upArrow:"Стрілка вгору",rightArrow:"Права стрілка",downArrow:"Стрілка вниз",insert:"Вставити","delete":"Видалити",leftWindowKey:"Ліва клавіша Windows",rightWindowKey:"Права клавіша Windows",selectKey:"Виберіть клавішу",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Множення",add:"Додати",subtract:"Віднімання", decimalPoint:"Десяткова кома",divide:"Ділення",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Крапка з комою",equalSign:"Знак рівності",comma:"Кома",dash:"Тире",period:"Період",forwardSlash:"Коса риска",graveAccent:"Гравіс",openBracket:"Відкрити дужку",backSlash:"Зворотна коса риска",closeBracket:"Закрити дужку",singleQuote:"Одинарні лапки"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/zh-cn.js0000644000201500020150000001010414514267702025477 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","zh-cn",{title:"辅助功能说明",contents:"帮助内容。要关闭此对话框请按 ESC 键。",legend:[{name:"常规",items:[{name:"编辑器工具栏",legend:"按 ${toolbarFocus} 切换到工具栏,使用 TAB 键和 SHIFT+TAB 组合键移动到上一个和下一个工具栏组。使用左右箭头键移动到上一个或下一个工具栏按钮。按空格键或回车键以选中工具栏按钮。"},{name:"编辑器对话框",legend:"在对话框内,按 TAB 键移动到下一个字段,按 SHIFT + TAB 组合键移动到上一个字段,按 ENTER 键提交对话框,按 ESC 键取消对话框。对于有多选项卡的对话框,可以按 ALT + F10 直接切换到或者按 TAB 键逐步移到选项卡列表,当焦点移到选项卡列表时可以用左右箭头键来移动到前后的选项卡。"},{name:"编辑器上下文菜单",legend:"用 ${contextMenu} 或者“应用程序键”打开上下文菜单。然后用 TAB 键或者下箭头键来移动到下一个菜单项;SHIFT + TAB 组合键或者上箭头键移动到上一个菜单项。用 SPACE 键或者 ENTER 键选择菜单项。用 SPACE 键,ENTER 键或者右箭头键打开子菜单。返回菜单用 ESC 键或者左箭头键。用 ESC 键关闭上下文菜单。"}, {name:"编辑器列表框",legend:"在列表框中,移到下一列表项用 TAB 键或者下箭头键。移到上一列表项用SHIFT+TAB 组合键或者上箭头键,用 SPACE 键或者 ENTER 键选择列表项。用 ESC 键收起列表框。"},{name:"编辑器元素路径栏",legend:"按 ${elementsPathFocus} 以导航到元素路径栏,使用 TAB 键或右箭头键选择下一个元素,使用 SHIFT+TAB 组合键或左箭头键选择上一个元素,按空格键或回车键以选定编辑器里的元素。"}]},{name:"命令",items:[{name:" 撤消命令",legend:"按 ${undo}"},{name:" 重做命令",legend:"按 ${redo}"},{name:" 加粗命令",legend:"按 ${bold}"},{name:" 倾斜命令",legend:"按 ${italic}"},{name:" 下划线命令",legend:"按 ${underline}"},{name:" 链接命令",legend:"按 ${link}"},{name:" 工具栏折叠命令",legend:"按 ${toolbarCollapse}"}, {name:"访问前一个焦点区域的命令",legend:"按 ${accessPreviousSpace} 访问^符号前最近的不可访问的焦点区域,例如:两个相邻的 HR 元素。重复此组合按键可以到达远处的焦点区域。"},{name:"访问下一个焦点区域命令",legend:"按 ${accessNextSpace} 以访问^符号后最近的不可访问的焦点区域。例如:两个相邻的 HR 元素。重复此组合按键可以到达远处的焦点区域。"},{name:"辅助功能帮助",legend:"按 ${a11yHelp}"}]}],backspace:"退格键",tab:"Tab 键",enter:"回车键",shift:"Shift 键",ctrl:"Ctrl 键",alt:"Alt 键",pause:"暂停键",capslock:"大写锁定键",escape:"Esc 键",pageUp:"上翻页键",pageDown:"下翻页键",end:"行尾键",home:"行首键",leftArrow:"向左箭头键",upArrow:"向上箭头键",rightArrow:"向右箭头键",downArrow:"向下箭头键", insert:"插入键","delete":"删除键",leftWindowKey:"左 WIN 键",rightWindowKey:"右 WIN 键",selectKey:"选择键",numpad0:"小键盘 0 键",numpad1:"小键盘 1 键",numpad2:"小键盘 2 键",numpad3:"小键盘 3 键",numpad4:"小键盘 4 键",numpad5:"小键盘 5 键",numpad6:"小键盘 6 键",numpad7:"小键盘 7 键",numpad8:"小键盘 8 键",numpad9:"小键盘 9 键",multiply:"星号键",add:"加号键",subtract:"减号键",decimalPoint:"小数点键",divide:"除号键",f1:"F1 键",f2:"F2 键",f3:"F3 键",f4:"F4 键",f5:"F5 键",f6:"F6 键",f7:"F7 键",f8:"F8 键",f9:"F9 键",f10:"F10 键",f11:"F11 键",f12:"F12 键",numLock:"数字锁定键",scrollLock:"滚动锁定键", semiColon:"分号键",equalSign:"等号键",comma:"逗号键",dash:"短划线键",period:"句号键",forwardSlash:"斜杠键",graveAccent:"重音符键",openBracket:"左中括号键",backSlash:"反斜杠键",closeBracket:"右中括号键",singleQuote:"单引号键"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/sv.js0000644000201500020150000001037214514267702025117 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","sv",{title:"Hjälpmedelsinstruktioner",contents:"Hjälpinnehåll. För att stänga denna dialogruta trycker du på ESC.",legend:[{name:"Allmänt",items:[{name:"Editor verktygsfält",legend:"Tryck på ${toolbarFocus} för att navigera till verktygsfältet. Flytta till nästa och föregående verktygsfältsgrupp med TAB och SHIFT+TAB. Flytta till nästa och föregående knapp i verktygsfältet med HÖGERPIL eller VÄNSTERPIL. Tryck SPACE eller ENTER för att aktivera knappen i verktygsfältet."}, {name:"Dialogeditor",legend:"Inuti en dialogruta, tryck TAB för att navigera till nästa fält i dialogrutan, tryck SKIFT+TAB för att flytta till föregående fält, tryck ENTER för att skicka. Du avbryter och stänger dialogen med ESC. För dialogrutor som har flera flikar, tryck ALT+F10 eller TAB för att navigera till fliklistan. med fliklistan vald flytta till nästa och föregående flik med HÖGER- eller VÄNSTERPIL."},{name:"Editor för innehållsmeny",legend:"Tryck på $ {contextMenu} eller PROGRAMTANGENTEN för att öppna snabbmenyn. Flytta sedan till nästa menyalternativ med TAB eller NEDPIL. Flytta till föregående alternativ med SHIFT + TABB eller UPPIL. Tryck Space eller ENTER för att välja menyalternativ. Öppna undermeny av nuvarande alternativ med SPACE eller ENTER eller HÖGERPIL. Gå tillbaka till överordnade menyalternativ med ESC eller VÄNSTERPIL. Stäng snabbmenyn med ESC."}, {name:"Editor för list-box",legend:"Inuti en list-box, gå till nästa listobjekt med TAB eller NEDPIL. Flytta till föregående listobjekt med SHIFT+TAB eller UPPIL. Tryck SPACE eller ENTER för att välja listan alternativet. Tryck ESC för att stänga list-boxen."},{name:"Editor för elementens sökväg",legend:"Tryck på ${elementsPathFocus} för att navigera till verktygsfältet för elementens sökvägar. Flytta till nästa elementknapp med TAB eller HÖGERPIL. Flytta till föregående knapp med SKIFT+TAB eller VÄNSTERPIL. Tryck SPACE eller ENTER för att välja element i redigeraren."}]}, {name:"Kommandon",items:[{name:"Ångra kommando",legend:"Tryck på ${undo}"},{name:"Gör om kommando",legend:"Tryck på ${redo}"},{name:"Kommandot fet stil",legend:"Tryck på ${bold}"},{name:"Kommandot kursiv",legend:"Tryck på ${italic}"},{name:"Kommandot understruken",legend:"Tryck på ${underline}"},{name:"Kommandot länk",legend:"Tryck på ${link}"},{name:"Verktygsfält Dölj kommandot",legend:"Tryck på ${toolbarCollapse}"},{name:"Gå till föregående fokus plats",legend:"Tryck på ${accessPreviousSpace} för att gå till närmast onåbara utrymme före markören, exempel: två intilliggande HR element. Repetera tangentkombinationen för att gå till nästa."}, {name:"Tillgå nästa fokuskommandots utrymme",legend:"Tryck ${accessNextSpace} på för att komma åt den närmaste onåbar fokus utrymme efter cirkumflex, till exempel: två intilliggande HR element. Upprepa tangentkombinationen för att nå avlägsna fokus utrymmen."},{name:"Hjälp om tillgänglighet",legend:"Tryck ${a11yHelp}"}]}],backspace:"Backsteg",tab:"Tab",enter:"Retur",shift:"Skift",ctrl:"Ctrl",alt:"Alt",pause:"Paus",capslock:"Caps lock",escape:"Escape",pageUp:"Sida Up",pageDown:"Sida Ned",end:"Slut", home:"Hem",leftArrow:"Vänsterpil",upArrow:"Uppil",rightArrow:"Högerpil",downArrow:"Nedåtpil",insert:"Infoga","delete":"Radera",leftWindowKey:"Vänster Windowstangent",rightWindowKey:"Höger Windowstangent",selectKey:"Välj tangent",numpad0:"Nummer 0",numpad1:"Nummer 1",numpad2:"Nummer 2",numpad3:"Nummer 3",numpad4:"Nummer 4",numpad5:"Nummer 5",numpad6:"Nummer 6",numpad7:"Nummer 7",numpad8:"Nummer 8",numpad9:"Nummer 9",multiply:"Multiplicera",add:"Addera",subtract:"Minus",decimalPoint:"Decimalpunkt", divide:"Dividera",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semikolon",equalSign:"Lika med tecken",comma:"Komma",dash:"Minus",period:"Punkt",forwardSlash:"Snedstreck framåt",graveAccent:"Accent",openBracket:"Öppningsparentes",backSlash:"Snedstreck bakåt",closeBracket:"Slutparentes",singleQuote:"Enkelt Citattecken"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/lt.js0000644000201500020150000000761414514267702025113 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","lt",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Bendros savybės",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside 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."}, {name:"Editor Context Menu",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."},{name:"Editor List Box",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."}, {name:"Editor Element Path Bar",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."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",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."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/fr-ca.js0000644000201500020150000001125214514267702025455 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","fr-ca",{title:"Instructions d'accessibilité",contents:"Contenu de l'aide. Pour fermer cette fenêtre, appuyez sur ESC.",legend:[{name:"Général",items:[{name:"Barre d'outil de l'éditeur",legend:"Appuyer sur ${toolbarFocus} pour accéder à la barre d'outils. Se déplacer vers les groupes suivant ou précédent de la barre d'outil avec les touches TAB et SHIFT+TAB. Se déplacer vers les boutons suivant ou précédent de la barre d'outils avec les touches FLECHE DROITE et FLECHE GAUCHE. Appuyer sur la barre d'espace ou la touche ENTRER pour activer le bouton de barre d'outils."}, {name:"Dialogue de l'éditeur",legend:"Inside 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."},{name:"Menu contextuel de l'éditeur",legend:"Appuyer sur ${contextMenu} ou entrer le RACCOURCI CLAVIER pour ouvrir le menu contextuel. Puis se déplacer vers l'option suivante du menu avec les touches TAB ou FLECHE BAS. Se déplacer vers l'option précédente avec les touches SHIFT+TAB ou FLECHE HAUT. appuyer sur la BARRE D'ESPACE ou la touche ENTREE pour sélectionner l'option du menu. Oovrir le sous-menu de l'option courante avec la BARRE D'ESPACE ou les touches ENTREE ou FLECHE DROITE. Revenir à l'élément de menu parent avec les touches ESC ou FLECHE GAUCHE. Fermer le menu contextuel avec ESC."}, {name:"Menu déroulant de l'éditeur",legend:"A l'intérieur d'une liste en menu déroulant, se déplacer vers l'élément suivant de la liste avec les touches TAB ou FLECHE BAS. Se déplacer vers l'élément précédent de la liste avec les touches SHIFT+TAB ou FLECHE HAUT. Appuyer sur la BARRE D'ESPACE ou sur ENTREE pour sélectionner l'option dans la liste. Appuyer sur ESC pour fermer le menu déroulant."},{name:"Barre d'emplacement des éléments de l'éditeur",legend:"Appuyer sur ${elementsPathFocus} pour naviguer vers la barre d'emplacement des éléments de léditeur. Se déplacer vers le bouton d'élément suivant avec les touches TAB ou FLECHE DROITE. Se déplacer vers le bouton d'élément précédent avec les touches SHIFT+TAB ou FLECHE GAUCHE. Appuyer sur la BARRE D'ESPACE ou sur ENTREE pour sélectionner l'élément dans l'éditeur."}]}, {name:"Commandes",items:[{name:"Annuler",legend:"Appuyer sur ${undo}"},{name:"Refaire",legend:"Appuyer sur ${redo}"},{name:"Gras",legend:"Appuyer sur ${bold}"},{name:"Italique",legend:"Appuyer sur ${italic}"},{name:"Souligné",legend:"Appuyer sur ${underline}"},{name:"Lien",legend:"Appuyer sur ${link}"},{name:"Enrouler la barre d'outils",legend:"Appuyer sur ${toolbarCollapse}"},{name:"Accéder à l'objet de focus précédent",legend:"Appuyer ${accessPreviousSpace} pour accéder au prochain espace disponible avant le curseur, par exemple: deux éléments HR adjacents. Répéter la combinaison pour joindre les éléments d'espaces distantes."}, {name:"Accéder au prochain objet de focus",legend:"Appuyer ${accessNextSpace} pour accéder au prochain espace disponible après le curseur, par exemple: deux éléments HR adjacents. Répéter la combinaison pour joindre les éléments d'espaces distantes."},{name:"Aide d'accessibilité",legend:"Appuyer sur ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home", leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1", f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/et.js0000644000201500020150000000761414514267702025104 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","et",{title:"Accessibility Instructions",contents:"Abi sisu. Selle dialoogi sulgemiseks vajuta ESC klahvi.",legend:[{name:"Üldine",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside 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."}, {name:"Editor Context Menu",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."},{name:"Editor List Box",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."}, {name:"Editor Element Path Bar",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."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",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."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/pl.js0000644000201500020150000001153014514267702025077 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","pl",{title:"Instrukcje dotyczące dostępności",contents:"Zawartość pomocy. Wciśnij ESC, aby zamknąć to okno.",legend:[{name:"Informacje ogólne",items:[{name:"Pasek narzędzi edytora",legend:"Naciśnij ${toolbarFocus}, by przejść do paska narzędzi. Przejdź do następnej i poprzedniej grupy narzędzi używając TAB oraz SHIFT+TAB. Przejdź do następnego i poprzedniego przycisku paska narzędzi za pomocą STRZAŁKI W PRAWO lub STRZAŁKI W LEWO. Naciśnij SPACJĘ lub ENTER by aktywować przycisk paska narzędzi."}, {name:"Okno dialogowe edytora",legend:"Wewnątrz okna dialogowego naciśnij TAB, by przejść do kolejnego elementu tego okna lub SHIFT+TAB, by przejść do poprzedniego elementu okna. Naciśnij ENTER w celu zatwierdzenia opcji okna dialogowego lub ESC w celu anulowania zmian. Jeśli okno dialogowe ma kilka zakładek, do listy zakładek można przejść za pomocą ALT+F10 lub TAB. Gdy lista zakładek jest aktywna, możesz przejść do kolejnej i poprzedniej zakładki za pomocą STRZAŁKI W PRAWO i STRZAŁKI W LEWO."}, {name:"Menu kontekstowe edytora",legend:"Wciśnij ${contextMenu} lub PRZYCISK APLIKACJI aby otworzyć menu kontekstowe. Przejdź do następnej pozycji menu wciskając TAB lub STRZAŁKĘ W DÓŁ. Przejdź do poprzedniej pozycji menu wciskając SHIFT + TAB lub STRZAŁKĘ W GÓRĘ. Wciśnij SPACJĘ lub ENTER aby wygrać pozycję menu. Otwórz pod-menu obecnej pozycji wciskając SPACJĘ lub ENTER lub STRZAŁKĘ W PRAWO. Wróć do pozycji nadrzędnego menu wciskając ESC lub STRZAŁKĘ W LEWO. Zamknij menu wciskając ESC."},{name:"Lista w edytorze", legend:"Wewnątrz listy przejdź do kolejnego elementu listy za pomocą przycisku TAB lub STRZAŁKI W DÓŁ. Przejdź do poprzedniego elementu listy za pomocą SHIFT+TAB lub STRZAŁKI W GÓRĘ. Naciśnij SPACJĘ lub ENTER w celu wybrania opcji z listy. Naciśnij ESC, by zamknąć listę."},{name:"Pasek ścieżki elementów edytora",legend:"Naciśnij ${elementsPathFocus} w celu przejścia do paska ścieżki elementów edytora. W celu przejścia do kolejnego elementu naciśnij klawisz TAB lub STRZAŁKI W PRAWO. W celu przejścia do poprzedniego elementu naciśnij klawisze SHIFT+TAB lub STRZAŁKI W LEWO. By wybrać element w edytorze, użyj klawisza SPACJI lub ENTER."}]}, {name:"Polecenia",items:[{name:"Polecenie Cofnij",legend:"Naciśnij ${undo}"},{name:"Polecenie Ponów",legend:"Naciśnij ${redo}"},{name:"Polecenie Pogrubienie",legend:"Naciśnij ${bold}"},{name:"Polecenie Kursywa",legend:"Naciśnij ${italic}"},{name:"Polecenie Podkreślenie",legend:"Naciśnij ${underline}"},{name:"Polecenie Wstaw/ edytuj odnośnik",legend:"Naciśnij ${link}"},{name:"Polecenie schowaj pasek narzędzi",legend:"Naciśnij ${toolbarCollapse}"},{name:" Access previous focus space command",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."}, {name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"Pomoc dotycząca dostępności",legend:"Naciśnij ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Strzałka w lewo", upArrow:"Strzałka w górę",rightArrow:"Strzałka w prawo",downArrow:"Strzałka w dół",insert:"Insert","delete":"Delete",leftWindowKey:"Lewy klawisz Windows",rightWindowKey:"Prawy klawisz Windows",selectKey:"Klawisz wyboru",numpad0:"Klawisz 0 na klawiaturze numerycznej",numpad1:"Klawisz 1 na klawiaturze numerycznej",numpad2:"Klawisz 2 na klawiaturze numerycznej",numpad3:"Klawisz 3 na klawiaturze numerycznej",numpad4:"Klawisz 4 na klawiaturze numerycznej",numpad5:"Klawisz 5 na klawiaturze numerycznej", numpad6:"Klawisz 6 na klawiaturze numerycznej",numpad7:"Klawisz 7 na klawiaturze numerycznej",numpad8:"Klawisz 8 na klawiaturze numerycznej",numpad9:"Klawisz 9 na klawiaturze numerycznej",multiply:"Przemnóż",add:"Plus",subtract:"Minus",decimalPoint:"Separator dziesiętny",divide:"Podziel",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Średnik",equalSign:"Znak równości",comma:"Przecinek",dash:"Pauza", period:"Kropka",forwardSlash:"Ukośnik prawy",graveAccent:"Akcent słaby",openBracket:"Nawias kwadratowy otwierający",backSlash:"Ukośnik lewy",closeBracket:"Nawias kwadratowy zamykający",singleQuote:"Apostrof"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/bg.js0000644000201500020150000000760414514267702025063 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","bg",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Общо",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside 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."}, {name:"Editor Context Menu",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."},{name:"Editor List Box",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."}, {name:"Editor Element Path Bar",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."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",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."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/fa.js0000644000201500020150000001335014514267702025054 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","fa",{title:"دستورالعمل‌های دسترسی",contents:"راهنمای فهرست مطالب. برای بستن این کادر محاوره‌ای ESC را فشار دهید.",legend:[{name:"عمومی",items:[{name:"نوار ابزار ویرایشگر",legend:"${toolbarFocus} را برای باز کردن نوار ابزار بفشارید. با کلید Tab و Shift+Tab در مجموعه نوار ابزار بعدی و قبلی حرکت کنید. برای حرکت در کلید نوار ابزار قبلی و بعدی با کلید جهت‌نمای راست و چپ جابجا شوید. کلید Space یا Enter را برای فعال کردن کلید نوار ابزار بفشارید."},{name:"پنجره محاورهای ویرایشگر", legend:"Inside 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."},{name:"منوی متنی ویرایشگر",legend:"${contextMenu} یا کلید برنامههای کاربردی را برای باز کردن منوی متن را بفشارید. سپس میتوانید برای حرکت به گزینه بعدی منو با کلید Tab و یا کلید جهتنمای پایین جابجا شوید. حرکت به گزینه قبلی با Shift+Tab یا کلید جهتنمای بالا. فشردن Space یا Enter برای انتخاب یک گزینه از منو. باز کردن زیر شاخه گزینه منو جاری با کلید Space یا Enter و یا کلید جهتنمای راست و چپ. بازگشت به منوی والد با کلید Esc یا کلید جهتنمای چپ. بستن منوی متن با Esc."}, {name:"جعبه فهرست ویرایشگر",legend:"در داخل جعبه لیست، قلم دوم از اقلام لیست بعدی را با TAB و یا Arrow Down حرکت دهید. انتقال به قلم دوم از اقلام لیست قبلی را با SHIFT + TAB یا UP ARROW. کلید Space یا ENTER را برای انتخاب گزینه لیست بفشارید. کلید ESC را برای بستن جعبه لیست بفشارید."},{name:"ویرایشگر عنصر نوار راه",legend:"برای رفتن به مسیر عناصر ${elementsPathFocus} را بفشارید. حرکت به کلید عنصر بعدی با کلید Tab یا کلید جهت‌نمای راست. برگشت به کلید قبلی با Shift+Tab یا کلید جهت‌نمای چپ. فشردن Space یا Enter برای انتخاب یک عنصر در ویرایشگر."}]}, {name:"فرمان‌ها",items:[{name:"بازگشت به آخرین فرمان",legend:"فشردن ${undo}"},{name:"انجام مجدد فرمان",legend:"فشردن ${redo}"},{name:"فرمان درشت کردن متن",legend:"فشردن ${bold}"},{name:"فرمان کج کردن متن",legend:"فشردن ${italic}"},{name:"فرمان زیرخطدار کردن متن",legend:"فشردن ${underline}"},{name:"فرمان پیوند دادن",legend:"فشردن ${link}"},{name:"بستن نوار ابزار فرمان",legend:"فشردن ${toolbarCollapse}"},{name:"دسترسی به فرمان محل تمرکز قبلی",legend:"فشردن ${accessPreviousSpace} برای دسترسی به نزدیک‌ترین فضای قابل دسترسی تمرکز قبل از هشتک، برای مثال: دو عنصر مجاور HR -خط افقی-. تکرار کلید ترکیبی برای رسیدن به فضاهای تمرکز از راه دور."}, {name:"دسترسی به فضای دستور بعدی",legend:"برای دسترسی به نزدیک‌ترین فضای تمرکز غیر قابل دسترس، ${accessNextSpace} را پس از علامت هشتک بفشارید، برای مثال: دو عنصر مجاور HR -خط افقی-. کلید ترکیبی را برای رسیدن به فضای تمرکز تکرار کنید."},{name:"راهنمای دسترسی",legend:"فشردن ${a11yHelp}"}]}],backspace:"عقبگرد",tab:"برگه",enter:"ورود",shift:"تعویض",ctrl:"کنترل",alt:"دگرساز",pause:"توقف",capslock:"Caps Lock",escape:"گریز",pageUp:"صفحه به بالا",pageDown:"صفحه به پایین",end:"پایان",home:"خانه",leftArrow:"پیکان چپ", upArrow:"پیکان بالا",rightArrow:"پیکان راست",downArrow:"پیکان پایین",insert:"ورود","delete":"حذف",leftWindowKey:"کلید چپ ویندوز",rightWindowKey:"کلید راست ویندوز",selectKey:"انتخاب کلید",numpad0:"کلید شماره 0",numpad1:"کلید شماره 1",numpad2:"کلید شماره 2",numpad3:"کلید شماره 3",numpad4:"کلید شماره 4",numpad5:"کلید شماره 5",numpad6:"کلید شماره 6",numpad7:"کلید شماره 7",numpad8:"کلید شماره 8",numpad9:"کلید شماره 9",multiply:"ضرب",add:"افزودن",subtract:"تفریق",decimalPoint:"نقطه‌ی اعشار",divide:"جدا کردن", f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"علامت تساوی",comma:"کاما",dash:"خط تیره",period:"دوره",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/ku.js0000644000201500020150000001254114514267702025106 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","ku",{title:"ڕێنمای لەبەردەستدابوون",contents:"پێکهاتەی یارمەتی. کلیك ESC بۆ داخستنی ئەم دیالۆگه.",legend:[{name:"گشتی",items:[{name:"تووڵامرازی دەستكاریكەر",legend:"کلیك ${toolbarFocus} بۆ ڕابەری تووڵامراز. بۆ گواستنەوەی پێشوو داهاتووی گرووپی تووڵامرازی داگرتنی کلیلی TAB لەگەڵ‌ SHIFT+TAB. بۆ گواستنەوەی پێشوو داهاتووی دووگمەی تووڵامرازی لەڕێی کلیلی تیری دەستی ڕاست یان کلیلی تیری دەستی چەپ. کلیکی کلیلی SPACE یان ENTER بۆ چالاککردنی دووگمەی تووڵامراز."},{name:"دیالۆگی دەستكاریكەر", legend:"Inside 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."},{name:"پێڕستی سەرنووسەر",legend:"کلیك ${contextMenu} یان دوگمەی لیسته‌(Menu) بۆ کردنەوەی لیستەی دەق. بۆ چوونە هەڵبژاردەیەکی تر له‌ لیسته‌ کلیکی کلیلی TAB یان کلیلی تیری ڕوو لەخوارەوه‌ بۆ چوون بۆ هەڵبژاردەی پێشوو کلیکی کلیلی SHIFT+TAB یان کلیلی تیری ڕوو له‌ سەرەوە. داگرتنی کلیلی SPACE یان ENTER بۆ هەڵبژاردنی هەڵبژاردەی لیسته‌. بۆ کردنەوەی لقی ژێر لیسته‌ لەهەڵبژاردەی لیستە کلیکی کلیلی SPACE یان ENTER یان کلیلی تیری دەستی ڕاست. بۆ گەڕانەوه بۆ سەرەوەی لیسته‌ کلیکی کلیلی ESC یان کلیلی تیری دەستی چەپ. بۆ داخستنی لیستە کلیكی کلیلی ESC بکە."}, {name:"لیستی سنووقی سەرنووسەر",legend:"لەناو سنوقی لیست, چۆن بۆ هەڵنبژاردەی لیستێکی تر کلیکی کلیلی TAB یان کلیلی تیری ڕوو لەخوار. چوون بۆ هەڵبژاردەی لیستی پێشوو کلیکی کلیلی SHIFT+TAB یان کلیلی تیری ڕوو لەسەرەوه‌. کلیکی کلیلی SPACE یان ENTER بۆ دیاریکردنی ‌هەڵبژاردەی لیست. کلیکی کلیلی ESC بۆ داخستنی سنوقی لیست."},{name:"تووڵامرازی توخم",legend:"کلیك ${elementsPathFocus} بۆ ڕابەری تووڵامرازی توخمەکان. چوون بۆ دوگمەی توخمێکی تر کلیکی کلیلی TAB یان کلیلی تیری دەستی ڕاست. چوون بۆ دوگمەی توخمی پێشوو کلیلی SHIFT+TAB یان کلیکی کلیلی تیری دەستی چەپ. داگرتنی کلیلی SPACE یان ENTER بۆ دیاریکردنی توخمەکه‌ لەسەرنووسه."}]}, {name:"فەرمانەکان",items:[{name:"پووچکردنەوەی فەرمان",legend:"کلیك ${undo}"},{name:"هەڵگەڕانەوەی فەرمان",legend:"کلیك ${redo}"},{name:"فەرمانی دەقی قەڵەو",legend:"کلیك ${bold}"},{name:"فەرمانی دەقی لار",legend:"کلیك ${italic}"},{name:"فەرمانی ژێرهێڵ",legend:"کلیك ${underline}"},{name:"فەرمانی به‌ستەر",legend:"کلیك ${link}"},{name:"شاردەنەوەی تووڵامراز",legend:"کلیك ${toolbarCollapse}"},{name:"چوونەناو سەرنجدانی پێشوی فەرمانی بۆشایی",legend:"کلیک ${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."}, {name:"چوونەناو سەرنجدانی داهاتووی فەرمانی بۆشایی",legend:"کلیک ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"دەستپێگەیشتنی یارمەتی",legend:"کلیك ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow", upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"پەنجەرەی چەپ",rightWindowKey:"پەنجەرەی ڕاست",selectKey:"Select",numpad0:"Numpad 0",numpad1:"1",numpad2:"2",numpad3:"3",numpad4:"4",numpad5:"5",numpad6:"6",numpad7:"7",numpad8:"8",numpad9:"9",multiply:"*",add:"+",subtract:"-",decimalPoint:".",divide:"/",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock", semiColon:";",equalSign:"=",comma:",",dash:"-",period:".",forwardSlash:"/",graveAccent:"`",openBracket:"[",backSlash:"\\\\",closeBracket:"}",singleQuote:"'"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/el.js0000644000201500020150000001552014514267702025067 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","el",{title:"Οδηγίες Προσβασιμότητας",contents:"Περιεχόμενα Βοήθειας. Πατήστε ESC για κλείσιμο.",legend:[{name:"Γενικά",items:[{name:"Εργαλειοθήκη Επεξεργαστή",legend:"Πατήστε ${toolbarFocus} για να περιηγηθείτε στην γραμμή εργαλείων. Μετακινηθείτε ανάμεσα στις ομάδες της γραμμής εργαλείων με TAB και SHIFT+TAB. Μετακινηθείτε ανάμεσα στα κουμπιά εργαλείων με το ΔΕΞΙ ή ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να ενεργοποιήσετε το ενεργό κουμπί εργαλείου."},{name:"Παράθυρο Διαλόγου Επεξεργαστή", legend:"Inside 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."},{name:"Αναδυόμενο Μενού Επεξεργαστή",legend:"Πατήστε ${contextMenu} ή APPLICATION KEY για να ανοίξετε το αναδυόμενο μενού. Μετά μετακινηθείτε στην επόμενη επιλογή του μενού με TAB ή ΚΑΤΩ ΒΕΛΑΚΙ. Μετακινηθείτε στην προηγούμενη επιλογή με SHIFT+TAB ή το ΠΑΝΩ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξτε το τρέχων στοιχείο. Ανοίξτε το αναδυόμενο μενού της τρέχουσας επιλογής με ΔΙΑΣΤΗΜΑ ή ENTER ή το ΔΕΞΙ ΒΕΛΑΚΙ. Μεταβείτε πίσω στο αρχικό στοιχείο μενού με το ESC ή το ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Κλείστε το αναδυόμενο μενού με ESC."}, {name:"Κουτί Λίστας Επεξεργαστών",legend:"Μέσα σε ένα κουτί λίστας, μετακινηθείτε στο επόμενο στοιχείο με TAB ή ΚΑΤΩ ΒΕΛΑΚΙ. Μετακινηθείτε στο προηγούμενο στοιχείο με SHIFT+TAB ή το ΠΑΝΩ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξετε ένα στοιχείο. Πατήστε ESC για να κλείσετε το κουτί της λίστας."},{name:"Μπάρα Διαδρομών Στοιχείων Επεξεργαστή",legend:"Πατήστε ${elementsPathFocus} για να περιηγηθείτε στην μπάρα διαδρομών στοιχείων του επεξεργαστή. Μετακινηθείτε στο κουμπί του επόμενου στοιχείου με το TAB ή το ΔΕΞΙ ΒΕΛΑΚΙ. Μετακινηθείτε στο κουμπί του προηγούμενου στοιχείου με το SHIFT+TAB ή το ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξετε το στοιχείο στον επεξεργαστή."}]}, {name:"Εντολές",items:[{name:"Εντολή αναίρεσης",legend:"Πατήστε ${undo}"},{name:"Εντολή επανάληψης",legend:"Πατήστε ${redo}"},{name:"Εντολή έντονης γραφής",legend:"Πατήστε ${bold}"},{name:"Εντολή πλάγιας γραφής",legend:"Πατήστε ${italic}"},{name:"Εντολή υπογράμμισης",legend:"Πατήστε ${underline}"},{name:"Εντολή συνδέσμου",legend:"Πατήστε ${link}"},{name:"Εντολή Σύμπτηξης Εργαλειοθήκης",legend:"Πατήστε ${toolbarCollapse}"},{name:"Πρόσβαση στην προηγούμενη εντολή του χώρου εστίασης ",legend:"Πατήστε ${accessPreviousSpace} για να έχετε πρόσβαση στον πιο κοντινό χώρο εστίασης πριν το δρομέα, για παράδειγμα: δύο παρακείμενα στοιχεία ΥΕ. Επαναλάβετε το συνδυασμό πλήκτρων για να φθάσετε στους χώρους μακρινής εστίασης. "}, {name:"Πρόσβαση στην επόμενη εντολή του χώρου εστίασης",legend:"Πατήστε ${accessNextSpace} για να έχετε πρόσβαση στον πιο κοντινό χώρο εστίασης μετά το δρομέα, για παράδειγμα: δύο παρακείμενα στοιχεία ΥΕ. Επαναλάβετε το συνδυασμό πλήκτρων για τους χώρους μακρινής εστίασης. "},{name:"Βοήθεια Προσβασιμότητας",legend:"Πατήστε ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", end:"End",home:"Home",leftArrow:"Αριστερό Βέλος",upArrow:"Πάνω Βέλος",rightArrow:"Δεξί Βέλος",downArrow:"Κάτω Βέλος",insert:"Insert ","delete":"Delete",leftWindowKey:"Αριστερό Πλήκτρο Windows",rightWindowKey:"Δεξί Πλήκτρο Windows",selectKey:"Πλήκτρο Select",numpad0:"Αριθμητικό πληκτρολόγιο 0",numpad1:"Αριθμητικό Πληκτρολόγιο 1",numpad2:"Αριθμητικό πληκτρολόγιο 2",numpad3:"Αριθμητικό πληκτρολόγιο 3",numpad4:"Αριθμητικό πληκτρολόγιο 4",numpad5:"Αριθμητικό πληκτρολόγιο 5",numpad6:"Αριθμητικό πληκτρολόγιο 6", numpad7:"Αριθμητικό πληκτρολόγιο 7",numpad8:"Αριθμητικό πληκτρολόγιο 8",numpad9:"Αριθμητικό πληκτρολόγιο 9",multiply:"Πολλαπλασιασμός",add:"Πρόσθεση",subtract:"Αφαίρεση",decimalPoint:"Υποδιαστολή",divide:"Διαίρεση",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"6",f7:"7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Ερωτηματικό",equalSign:"Σύμβολο Ισότητας",comma:"Κόμμα",dash:"Παύλα",period:"Τελεία",forwardSlash:"Κάθετος",graveAccent:"Βαρεία",openBracket:"Άνοιγμα Παρένθεσης", backSlash:"Ανάστροφη Κάθετος",closeBracket:"Κλείσιμο Παρένθεσης",singleQuote:"Απόστροφος"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/fi.js0000644000201500020150000001101014514267702025053 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","fi",{title:"Saavutettavuus ohjeet",contents:"Ohjeen sisällöt. Sulkeaksesi tämän dialogin paina ESC.",legend:[{name:"Yleinen",items:[{name:"Editorin työkalupalkki",legend:"Paina ${toolbarFocus} siirtyäksesi työkalupalkkiin. Siirry seuraavaan ja edelliseen työkalupalkin ryhmään TAB ja SHIFT+TAB näppäimillä. Siirry seuraavaan ja edelliseen työkalupainikkeeseen käyttämällä NUOLI OIKEALLE tai NUOLI VASEMMALLE näppäimillä. Paina VÄLILYÖNTI tai ENTER näppäintä aktivoidaksesi työkalupainikkeen."}, {name:"Editorin dialogi",legend:"Inside 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."},{name:"Editorin oheisvalikko",legend:"Paina ${contextMenu} tai SOVELLUSPAINIKETTA avataksesi oheisvalikon. Liiku seuraavaan valikon vaihtoehtoon TAB tai NUOLI ALAS näppäimillä. Siirry edelliseen vaihtoehtoon SHIFT+TAB tai NUOLI YLÖS näppäimillä. Paina VÄLILYÖNTI tai ENTER valitaksesi valikon kohdan. Avataksesi nykyisen kohdan alivalikon paina VÄLILYÖNTI tai ENTER tai NUOLI OIKEALLE painiketta. Siirtyäksesi takaisin valikon ylemmälle tasolle paina ESC tai NUOLI vasemmalle. Oheisvalikko suljetaan ESC painikkeella."}, {name:"Editorin listalaatikko",legend:"Listalaatikon sisällä siirry seuraavaan listan kohtaan TAB tai NUOLI ALAS painikkeilla. Siirry edelliseen listan kohtaan SHIFT+TAB tai NUOLI YLÖS painikkeilla. Paina VÄLILYÖNTI tai ENTER valitaksesi listan vaihtoehdon. Paina ESC sulkeaksesi listalaatikon."},{name:"Editorin elementtipolun palkki",legend:"Paina ${elementsPathFocus} siirtyäksesi elementtipolun palkkiin. Siirry seuraavaan elementtipainikkeeseen TAB tai NUOLI OIKEALLE painikkeilla. Siirry aiempaan painikkeeseen SHIFT+TAB tai NUOLI VASEMMALLE painikkeilla. Paina VÄLILYÖNTI tai ENTER valitaksesi elementin editorissa."}]}, {name:"Komennot",items:[{name:"Peruuta komento",legend:"Paina ${undo}"},{name:"Tee uudelleen komento",legend:"Paina ${redo}"},{name:"Lihavoi komento",legend:"Paina ${bold}"},{name:"Kursivoi komento",legend:"Paina ${italic}"},{name:"Alleviivaa komento",legend:"Paina ${underline}"},{name:"Linkki komento",legend:"Paina ${link}"},{name:"Pienennä työkalupalkki komento",legend:"Paina ${toolbarCollapse}"},{name:"Siirry aiempaan fokustilaan komento",legend:"Paina ${accessPreviousSpace} siiryäksesi lähimpään kursorin edellä olevaan saavuttamattomaan fokustilaan, esimerkiksi: kaksi vierekkäistä HR elementtiä. Toista näppäinyhdistelmää päästäksesi kauempana oleviin fokustiloihin."}, {name:"Siirry seuraavaan fokustilaan komento",legend:"Paina ${accessPreviousSpace} siiryäksesi lähimpään kursorin jälkeen olevaan saavuttamattomaan fokustilaan, esimerkiksi: kaksi vierekkäistä HR elementtiä. Toista näppäinyhdistelmää päästäksesi kauempana oleviin fokustiloihin."},{name:"Saavutettavuus ohjeet",legend:"Paina ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numeronäppäimistö 0",numpad1:"Numeronäppäimistö 1",numpad2:"Numeronäppäimistö 2",numpad3:"Numeronäppäimistö 3",numpad4:"Numeronäppäimistö 4",numpad5:"Numeronäppäimistö 5",numpad6:"Numeronäppäimistö 6",numpad7:"Numeronäppäimistö 7",numpad8:"Numeronäppäimistö 8", numpad9:"Numeronäppäimistö 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Puolipiste",equalSign:"Equal Sign",comma:"Pilkku",dash:"Dash",period:"Piste",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/ru.js0000644000201500020150000001350614514267702025117 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","ru",{title:"Горячие клавиши",contents:"Помощь. Для закрытия этого окна нажмите ESC.",legend:[{name:"Основное",items:[{name:"Панель инструментов",legend:"Нажмите ${toolbarFocus} для перехода к панели инструментов. Для перемещения между группами панели инструментов используйте TAB и SHIFT+TAB. Для перемещения между кнопками панели иструментов используйте кнопки ВПРАВО или ВЛЕВО. Нажмите ПРОБЕЛ или ENTER для запуска кнопки панели инструментов."},{name:"Диалоги",legend:"Inside 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."}, {name:"Контекстное меню",legend:'Нажмите ${contextMenu} или клавишу APPLICATION, чтобы открыть контекстное меню. Затем перейдите к следующему пункту меню с помощью TAB или стрелкой "ВНИЗ". Переход к предыдущей опции - SHIFT+TAB или стрелкой "ВВЕРХ". Нажмите SPACE, или ENTER, чтобы задействовать опцию меню. Открыть подменю текущей опции - SPACE или ENTER или стрелкой "ВПРАВО". Возврат к родительскому пункту меню - ESC или стрелкой "ВЛЕВО". Закрытие контекстного меню - ESC.'},{name:"Редактор списка", legend:'Внутри окна списка, переход к следующему пункту списка - TAB или стрелкой "ВНИЗ". Переход к предыдущему пункту списка - SHIFT+TAB или стрелкой "ВВЕРХ". Нажмите SPACE, или ENTER, чтобы задействовать опцию списка. Нажмите ESC, чтобы закрыть окно списка.'},{name:"Путь к элементу",legend:'Нажмите ${elementsPathFocus}, чтобы перейти к панели пути элементов. Переход к следующей кнопке элемента - TAB или стрелкой "ВПРАВО". Переход к предыдущей кнопку - SHIFT+TAB или стрелкой "ВЛЕВО". Нажмите SPACE, или ENTER, чтобы выбрать элемент в редакторе.'}]}, {name:"Команды",items:[{name:"Отменить",legend:"Нажмите ${undo}"},{name:"Повторить",legend:"Нажмите ${redo}"},{name:"Полужирный",legend:"Нажмите ${bold}"},{name:"Курсив",legend:"Нажмите ${italic}"},{name:"Подчеркнутый",legend:"Нажмите ${underline}"},{name:"Гиперссылка",legend:"Нажмите ${link}"},{name:"Свернуть панель инструментов",legend:"Нажмите ${toolbarCollapse}"},{name:"Команды доступа к предыдущему фокусному пространству",legend:'Нажмите ${accessPreviousSpace}, чтобы обратиться к ближайшему недостижимому фокусному пространству перед символом "^", например: два смежных HR элемента. Повторите комбинацию клавиш, чтобы достичь отдаленных фокусных пространств.'}, {name:"Команды доступа к следующему фокусному пространству",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"Справка по горячим клавишам",legend:"Нажмите ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Esc",pageUp:"Page Up",pageDown:"Page Down",end:"End", home:"Home",leftArrow:"Стрелка влево",upArrow:"Стрелка вверх",rightArrow:"Стрелка вправо",downArrow:"Стрелка вниз",insert:"Insert","delete":"Delete",leftWindowKey:"Левая клавиша Windows",rightWindowKey:"Правая клавиша Windows",selectKey:"Выбрать",numpad0:"Цифра 0",numpad1:"Цифра 1",numpad2:"Цифра 2",numpad3:"Цифра 3",numpad4:"Цифра 4",numpad5:"Цифра 5",numpad6:"Цифра 6",numpad7:"Цифра 7",numpad8:"Цифра 8",numpad9:"Цифра 9",multiply:"Умножить",add:"Плюс",subtract:"Вычесть",decimalPoint:"Десятичная точка", divide:"Делить",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Точка с запятой",equalSign:"Равно",comma:"Запятая",dash:"Тире",period:"Точка",forwardSlash:"Наклонная черта",graveAccent:"Апостроф",openBracket:"Открыть скобку",backSlash:"Обратная наклонная черта",closeBracket:"Закрыть скобку",singleQuote:"Одинарная кавычка"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/gl.js0000644000201500020150000001060414514267702025067 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","gl",{title:"Instrucións de accesibilidade",contents:"Axuda. Para pechar este diálogo prema ESC.",legend:[{name:"Xeral",items:[{name:"Barra de ferramentas do editor",legend:"Prema ${toolbarFocus} para navegar pola barra de ferramentas. Para moverse polos distintos grupos de ferramentas use as teclas TAB e MAIÚS+TAB. Para moverse polas distintas ferramentas use FRECHA DEREITA ou FRECHA ESQUERDA. Prema ESPAZO ou INTRO para activar o botón da barra de ferramentas."}, {name:"Editor de diálogo",legend:"Inside 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."},{name:"Editor do menú contextual",legend:"Prema ${contextMenu} ou a TECLA MENÚ para abrir o menú contextual. A seguir móvase á seguinte opción do menú con TAB ou FRECHA ABAIXO. Móvase á opción anterior con MAIÚS + TAB ou FRECHA ARRIBA. Prema ESPAZO ou INTRO para seleccionar a opción do menú. Abra o submenú da opción actual con ESPAZO ou INTRO ou FRECHA DEREITA. Regrese ao elemento principal do menú con ESC ou FRECHA ESQUERDA. Peche o menú contextual con ESC."}, {name:"Lista do editor",legend:"Dentro dunha lista, móvase ao seguinte elemento da lista con TAB ou FRECHA ABAIXO. Móvase ao elemento anterior da lista con MAIÚS+TAB ou FRECHA ARRIBA. Prema ESPAZO ou INTRO para escoller a opción da lista. Prema ESC para pechar a lista."},{name:"Barra da ruta ao elemento no editor",legend:"Prema ${elementsPathFocus} para navegar ata os elementos da barra de ruta. Móvase ao seguinte elemento botón con TAB ou FRECHA DEREITA. Móvase ao botón anterior con MAIÚS+TAB ou FRECHA ESQUERDA. Prema ESPAZO ou INTRO para seleccionar o elemento no editor."}]}, {name:"Ordes",items:[{name:"Orde «desfacer»",legend:"Prema ${undo}"},{name:"Orde «refacer»",legend:"Prema ${redo}"},{name:"Orde «negra»",legend:"Prema ${bold}"},{name:"Orde «cursiva»",legend:"Prema ${italic}"},{name:"Orde «subliñar»",legend:"Prema ${underline}"},{name:"Orde «ligazón»",legend:"Prema ${link}"},{name:"Orde «contraer a barra de ferramentas»",legend:"Prema ${toolbarCollapse}"},{name:"Orde «acceder ao anterior espazo en foco»",legend:"Prema ${accessPreviousSpace} para acceder ao espazo máis próximo de foco inalcanzábel anterior ao cursor, por exemplo: dous elementos HR adxacentes. Repita a combinación de teclas para chegar a espazos de foco distantes."}, {name:"Orde «acceder ao seguinte espazo en foco»",legend:"Prema ${accessNextSpace} para acceder ao espazo máis próximo de foco inalcanzábel posterior ao cursor, por exemplo: dous elementos HR adxacentes. Repita a combinación de teclas para chegar a espazos de foco distantes."},{name:"Axuda da accesibilidade",legend:"Prema ${a11yHelp}"}]}],backspace:"Ir atrás",tab:"Tabulador",enter:"Intro",shift:"Maiús",ctrl:"Ctrl",alt:"Alt",pause:"Pausa",capslock:"Bloq. Maiús",escape:"Escape",pageUp:"Páxina arriba", pageDown:"Páxina abaixo",end:"Fin",home:"Inicio",leftArrow:"Frecha esquerda",upArrow:"Frecha arriba",rightArrow:"Frecha dereita",downArrow:"Frecha abaixo",insert:"Inserir","delete":"Supr",leftWindowKey:"Tecla Windows esquerda",rightWindowKey:"Tecla Windows dereita",selectKey:"Escolla a tecla",numpad0:"Tec. numérico 0",numpad1:"Tec. numérico 1",numpad2:"Tec. numérico 2",numpad3:"Tec. numérico 3",numpad4:"Tec. numérico 4",numpad5:"Tec. numérico 5",numpad6:"Tec. numérico 6",numpad7:"Tec. numérico 7", numpad8:"Tec. numérico 8",numpad9:"Tec. numérico 9",multiply:"Multiplicar",add:"Sumar",subtract:"Restar",decimalPoint:"Punto decimal",divide:"Dividir",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Bloq. num.",scrollLock:"Bloq. despraz.",semiColon:"Punto e coma",equalSign:"Signo igual",comma:"Coma",dash:"Guión",period:"Punto",forwardSlash:"Barra inclinada",graveAccent:"Acento grave",openBracket:"Abrir corchete",backSlash:"Barra invertida", closeBracket:"Pechar corchete",singleQuote:"Comiña simple"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/sr-latn.js0000644000201500020150000000760714514267702026056 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","sr-latn",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Opšte",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside 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."}, {name:"Editor Context Menu",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."},{name:"Editor List Box",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."}, {name:"Editor Element Path Bar",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."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",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."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/sq.js0000644000201500020150000000771514514267702025121 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","sq",{title:"Udhëzimet e Qasjes",contents:"Përmbajtja ndihmëse. Për ta mbyllur dialogun shtyp ESC.",legend:[{name:"Të përgjithshme",items:[{name:"Shiriti i Redaktuesit",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Dialogu i Redaktuesit",legend:"Inside 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."}, {name:"Editor Context Menu",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."},{name:"Editor List Box",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."}, {name:"Editor Element Path Bar",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."}]},{name:"Komandat",items:[{name:"Rikthe komandën",legend:"Shtyp ${undo}"},{name:"Ribëj komandën",legend:"Shtyp ${redo}"},{name:"Komanda e trashjes së tekstit",legend:"Shtyp ${bold}"},{name:"Komanda kursive",legend:"Shtyp ${italic}"}, {name:"Komanda e nënvijëzimit",legend:"Shtyp ${underline}"},{name:"Komanda e Nyjes",legend:"Shtyp ${link}"},{name:" Toolbar Collapse command",legend:"Shtyp ${toolbarCollapse}"},{name:" Access previous focus space command",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."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:"Ndihmë Qasjeje",legend:"Shtyp ${a11yHelp}"}]}],backspace:"Prapa",tab:"Fletë",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Shenja majtas",upArrow:"Shenja sipër",rightArrow:"Shenja djathtas",downArrow:"Shenja poshtë",insert:"Shto","delete":"Grise",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Shto",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Presje",dash:"vizë",period:"Pikë",forwardSlash:"Forward Slash", graveAccent:"Grave Accent",openBracket:"Hape kllapën",backSlash:"Backslash",closeBracket:"Mbylle kllapën",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/pt-br.js0000644000201500020150000001106614514267702025514 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","pt-br",{title:"Instruções de Acessibilidade",contents:"Conteúdo da Ajuda. Para fechar este diálogo pressione ESC.",legend:[{name:"Geral",items:[{name:"Barra de Ferramentas do Editor",legend:"Pressione ${toolbarFocus} para navegar para a barra de ferramentas. Mova para o anterior ou próximo grupo de ferramentas com TAB e SHIFT+TAB. Mova para o anterior ou próximo botão com SETA PARA DIREITA or SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para ativar o botão da barra de ferramentas."}, {name:"Diálogo do Editor",legend:"Dentro de um diálogo, pressione TAB para navegar para o próximo elemento. Pressione SHIFT+TAB para mover para o elemento anterior. Pressione ENTER ara enviar o diálogo. pressione ESC para cancelar o diálogo. Quando um diálogo tem múltiplas abas, a lista de abas pode ser acessada com ALT+F10 ou TAB, como parte da ordem de tabulação do diálogo. Com a lista de abas em foco, mova para a próxima aba e para a aba anterior com a SETA DIREITA ou SETA ESQUERDA, respectivamente."}, {name:"Menu de Contexto do Editor",legend:"Pressione ${contextMenu} ou TECLA DE MENU para abrir o menu de contexto, então mova para a próxima opção com TAB ou SETA PARA BAIXO. Mova para a anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu. Abra o submenu da opção atual com ESPAÇO ou ENTER ou SETA PARA DIREITA. Volte para o menu pai com ESC ou SETA PARA ESQUERDA. Feche o menu de contexto com ESC."},{name:"Caixa de Lista do Editor",legend:"Dentro de uma caixa de lista, mova para o próximo item com TAB ou SETA PARA BAIXO. Mova para o item anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar uma opção na lista. Pressione ESC para fechar a caixa de lista."}, {name:"Barra de Caminho do Elementos do Editor",legend:"Pressione ${elementsPathFocus} para a barra de caminho dos elementos. Mova para o próximo botão de elemento com TAB ou SETA PARA DIREITA. Mova para o botão anterior com SHIFT+TAB ou SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar o elemento no editor."}]},{name:"Comandos",items:[{name:" Comando Desfazer",legend:"Pressione ${undo}"},{name:" Comando Refazer",legend:"Pressione ${redo}"},{name:" Comando Negrito",legend:"Pressione ${bold}"}, {name:" Comando Itálico",legend:"Pressione ${italic}"},{name:" Comando Sublinhado",legend:"Pressione ${underline}"},{name:" Comando Link",legend:"Pressione ${link}"},{name:" Comando Fechar Barra de Ferramentas",legend:"Pressione ${toolbarCollapse}"},{name:"Acessar o comando anterior de spaço de foco",legend:"Pressione ${accessNextSpace} para acessar o espaço de foco não alcançável mais próximo antes do cursor, por exemplo: dois elementos HR adjacentes. Repita a combinação de teclas para alcançar espaços de foco distantes."}, {name:"Acessar próximo fomando de spaço de foco",legend:"Pressione ${accessNextSpace} para acessar o espaço de foco não alcançável mais próximo após o cursor, por exemplo: dois elementos HR adjacentes. Repita a combinação de teclas para alcançar espaços de foco distantes."},{name:" Ajuda de Acessibilidade",legend:"Pressione ${a11yHelp}"}]}],backspace:"Tecla Backspace",tab:"Tecla Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up", pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Seta à Esquerda",upArrow:"Seta à Cima",rightArrow:"Seta à Direita",downArrow:"Seta à Baixo",insert:"Insert","delete":"Delete",leftWindowKey:"Tecla do Windows Esquerda",rightWindowKey:"Tecla do Windows Direita",selectKey:"Tecla Selecionar",numpad0:"0 do Teclado Numérico",numpad1:"1 do Teclado Numérico",numpad2:"2 do Teclado Numérico",numpad3:"3 do Teclado Numérico",numpad4:"4 do Teclado Numérico",numpad5:"5 do Teclado Numérico",numpad6:"6 do Teclado Numérico", numpad7:"7 do Teclado Numérico",numpad8:"8 do Teclado Numérico",numpad9:"9 do Teclado Numérico",multiply:"Multiplicar",add:"Mais",subtract:"Subtrair",decimalPoint:"Ponto",divide:"Dividir",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Ponto-e-vírgula",equalSign:"Igual",comma:"Vírgula",dash:"Hífen",period:"Ponto",forwardSlash:"Barra",graveAccent:"Acento Grave",openBracket:"Abrir Conchetes", backSlash:"Contra-barra",closeBracket:"Fechar Colchetes",singleQuote:"Aspas Simples"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/fo.js0000644000201500020150000000760514514267702025100 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","fo",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside 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."}, {name:"Editor Context Menu",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."},{name:"Editor List Box",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."}, {name:"Editor Element Path Bar",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."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",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."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Falda",add:"Pluss",subtract:"Frádráttar",decimalPoint:"Decimal Point",divide:"Býta",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semikolon",equalSign:"Javnatekn",comma:"Komma",dash:"Dash",period:"Punktum",forwardSlash:"Forward Slash", graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/af.js0000644000201500020150000000766114514267702025064 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","af",{title:"Toeganglikheid instruksies",contents:"Hulp inhoud. Druk ESC om toe te maak.",legend:[{name:"Algemeen",items:[{name:"Bewerker balk",legend:"Druk ${toolbarFocus} om op die werkbalk te land. Beweeg na die volgende en voorige wekrbalkgroep met TAB and SHIFT+TAB. Beweeg na die volgende en voorige werkbalkknop met die regter of linker pyl. Druk SPASIE of ENTER om die knop te bevestig."},{name:"Bewerker dialoog",legend:"Inside 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."}, {name:"Bewerkerinhoudmenu",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."},{name:"Editor List Box",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."}, {name:"Editor Element Path Bar",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."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",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."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pouse",capslock:"Hoofletterslot",escape:"Ontsnap",pageUp:"Blaaiop",pageDown:"Blaaiaf",end:"Einde",home:"Tuis",leftArrow:"Linkspyl",upArrow:"Oppyl",rightArrow:"Regterpyl",downArrow:"Afpyl",insert:"Toevoeg","delete":"Verwyder",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Nommerblok 0",numpad1:"Nommerblok 1", numpad2:"Nommerblok 2",numpad3:"Nommerblok 3",numpad4:"Nommerblok 4",numpad5:"Nommerblok 5",numpad6:"Nommerblok 6",numpad7:"Nommerblok 7",numpad8:"Nommerblok 8",numpad9:"Nommerblok 9",multiply:"Maal",add:"Plus",subtract:"Minus",decimalPoint:"Desimaalepunt",divide:"Gedeeldeur",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Nommervergrendel",scrollLock:"Rolvergrendel",semiColon:"Kommapunt",equalSign:"Isgelykaan",comma:"Komma",dash:"Koppelteken", period:"Punt",forwardSlash:"Skuinsstreep",graveAccent:"Aksentteken",openBracket:"Oopblokhakkie",backSlash:"Trustreep",closeBracket:"Toeblokhakkie",singleQuote:"Enkelaanhaalingsteken"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/hi.js0000644000201500020150000000762114514267702025072 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","hi",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"सामान्य",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside 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."}, {name:"Editor Context Menu",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."},{name:"Editor List Box",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."}, {name:"Editor Element Path Bar",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."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",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."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/km.js0000644000201500020150000001164314514267702025100 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","km",{title:"Accessibility Instructions",contents:"មាតិកា​ជំនួយ។ ដើម្បី​បិទ​ផ្ទាំង​នេះ សូម​ចុច ESC ។",legend:[{name:"ទូទៅ",items:[{name:"របារ​ឧបករណ៍​កម្មវិធី​និពន្ធ",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"ផ្ទាំង​កម្មវិធីនិពន្ធ",legend:"Inside 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."}, {name:"ម៉ីនុយបរិបទអ្នកកែសម្រួល",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."},{name:"ប្រអប់បញ្ជីអ្នកកែសម្រួល",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."}, {name:"Editor Element Path Bar",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."}]},{name:"ពាក្យបញ្ជា",items:[{name:"ការ​បញ្ជា​មិនធ្វើវិញ",legend:"ចុច ${undo}"},{name:"ការបញ្ជា​ធ្វើវិញ",legend:"ចុច ${redo}"},{name:"ការបញ្ជា​អក្សរ​ដិត",legend:"ចុច ${bold}"},{name:"ការបញ្ជា​អក្សរ​ទ្រេត",legend:"ចុច ${italic}"},{name:"ពាក្យបញ្ជា​បន្ទាត់​ពីក្រោម", legend:"ចុច ${underline}"},{name:"ពាក្យបញ្ជា​តំណ",legend:"ចុច ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",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."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:"ជំនួយ​ពី​ភាព​ងាយស្រួល",legend:"ជួយ ${a11yHelp}"}]}],backspace:"លុបថយក្រោយ",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"ផ្អាក",capslock:"Caps Lock",escape:"ចាកចេញ",pageUp:"ទំព័រ​លើ",pageDown:"ទំព័រ​ក្រោម",end:"ចុង",home:"ផ្ទះ",leftArrow:"ព្រួញ​ឆ្វេង",upArrow:"ព្រួញ​លើ",rightArrow:"ព្រួញ​ស្ដាំ",downArrow:"ព្រួញ​ក្រោម",insert:"បញ្ចូល","delete":"លុប",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"ជ្រើស​គ្រាប់​ចុច",numpad0:"Numpad 0",numpad1:"Numpad 1", numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"គុណ",add:"បន្ថែម",subtract:"ដក",decimalPoint:"ចំណុចទសភាគ",divide:"ចែក",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"បិទ​រំកិល",semiColon:"ចុច​ក្បៀស",equalSign:"សញ្ញា​អឺរ៉ូ",comma:"ក្បៀស",dash:"Dash",period:"ចុច",forwardSlash:"Forward Slash",graveAccent:"Grave Accent", openBracket:"តង្កៀប​បើក",backSlash:"Backslash",closeBracket:"តង្កៀប​បិទ",singleQuote:"បន្តក់​មួយ"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/nl.js0000644000201500020150000001050514514267702025076 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","nl",{title:"Toegankelijkheidsinstructies",contents:"Help-inhoud. Druk op ESC om dit dialoog te sluiten.",legend:[{name:"Algemeen",items:[{name:"Werkbalk tekstverwerker",legend:"Druk op ${toolbarFocus} om naar de werkbalk te navigeren. Om te schakelen naar de volgende en vorige werkbalkgroep, gebruik TAB en SHIFT+TAB. Om te schakelen naar de volgende en vorige werkbalkknop, gebruik de PIJL RECHTS en PIJL LINKS. Druk op SPATIE of ENTER om een werkbalkknop te activeren."}, {name:"Dialoog tekstverwerker",legend:"Inside 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."},{name:"Contextmenu tekstverwerker",legend:"Druk op ${contextMenu} of APPLICATION KEY om het contextmenu te openen. Schakel naar de volgende menuoptie met TAB of PIJL OMLAAG. Schakel naar de vorige menuoptie met SHIFT+TAB of PIJL OMHOOG. Druk op SPATIE of ENTER om een menuoptie te selecteren. Op een submenu van de huidige optie met SPATIE, ENTER of PIJL RECHTS. Ga terug naar de bovenliggende menuoptie met ESC of PIJL LINKS. Sluit het contextmenu met ESC."}, {name:"Keuzelijst tekstverwerker",legend:"In een keuzelijst, schakel naar het volgende item met TAB of PIJL OMLAAG. Schakel naar het vorige item met SHIFT+TAB of PIJL OMHOOG. Druk op SPATIE of ENTER om het item te selecteren. Druk op ESC om de keuzelijst te sluiten."},{name:"Elementenpad werkbalk tekstverwerker",legend:"Druk op ${elementsPathFocus} om naar het elementenpad te navigeren. Om te schakelen naar het volgende element, gebruik TAB of PIJL RECHTS. Om te schakelen naar het vorige element, gebruik SHIFT+TAB or PIJL LINKS. Druk op SPATIE of ENTER om een element te selecteren in de tekstverwerker."}]}, {name:"Opdrachten",items:[{name:"Ongedaan maken opdracht",legend:"Druk op ${undo}"},{name:"Opnieuw uitvoeren opdracht",legend:"Druk op ${redo}"},{name:"Vetgedrukt opdracht",legend:"Druk op ${bold}"},{name:"Cursief opdracht",legend:"Druk op ${italic}"},{name:"Onderstrepen opdracht",legend:"Druk op ${underline}"},{name:"Link opdracht",legend:"Druk op ${link}"},{name:"Werkbalk inklappen opdracht",legend:"Druk op ${toolbarCollapse}"},{name:"Ga naar vorige focus spatie commando",legend:"Druk ${accessPreviousSpace} om toegang te verkrijgen tot de dichtstbijzijnde onbereikbare focus spatie voor de caret, bijvoorbeeld: twee aangrenzende HR elementen. Herhaal de toetscombinatie om de verste focus spatie te bereiken."}, {name:"Ga naar volgende focus spatie commando",legend:"Druk ${accessNextSpace} om toegang te verkrijgen tot de dichtstbijzijnde onbereikbare focus spatie na de caret, bijvoorbeeld: twee aangrenzende HR elementen. Herhaal de toetscombinatie om de verste focus spatie te bereiken."},{name:"Toegankelijkheidshulp",legend:"Druk op ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", end:"End",home:"Home",leftArrow:"Pijl naar links",upArrow:"Pijl omhoog",rightArrow:"Pijl naar rechts",downArrow:"Pijl naar beneden",insert:"Invoegen","delete":"Verwijderen",leftWindowKey:"Linker Windows-toets",rightWindowKey:"Rechter Windows-toets",selectKey:"Selecteer toets",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Vermenigvuldigen",add:"Toevoegen", subtract:"Aftrekken",decimalPoint:"Decimaalteken",divide:"Delen",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Puntkomma",equalSign:"Is gelijk-teken",comma:"Komma",dash:"Koppelteken",period:"Punt",forwardSlash:"Slash",graveAccent:"Accent grave",openBracket:"Vierkant haakje openen",backSlash:"Backslash",closeBracket:"Vierkant haakje sluiten",singleQuote:"Apostrof"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/mn.js0000644000201500020150000000761214514267702025104 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","mn",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Ерөнхий",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside 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."}, {name:"Editor Context Menu",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."},{name:"Editor List Box",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."}, {name:"Editor Element Path Bar",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."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",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."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/da.js0000644000201500020150000000772414514267702025062 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","da",{title:"Tilgængelighedsinstrukser",contents:"Onlinehjælp. For at lukke dette vindue klik ESC",legend:[{name:"Generelt",items:[{name:"Editor værktøjslinje",legend:"Tryk ${toolbarFocus} for at navigere til værktøjslinjen. Flyt til næste eller forrige værktøjsline gruppe ved hjælp af TAB eller SHIFT+TAB. Flyt til næste eller forrige værktøjslinje knap med venstre- eller højre piltast. Tryk på SPACE eller ENTER for at aktivere værktøjslinje knappen."},{name:"Editor dialogboks", legend:"Inde i en dialogboks kan du, trykke på TAB for at navigere til næste element, trykke på SHIFT+TAB for at navigere til forrige element, trykke på ENTER for at afsende eller trykke på ESC for at lukke dialogboksen.\r\nNår en dialogboks har flere faner, fanelisten kan tilgås med ALT+F10 eller med TAB. Hvis fanelisten er i fokus kan du skifte til næste eller forrige tab, med højre- og venstre piltast."},{name:"Editor Context Menu",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."}, {name:"Editor List Box",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."},{name:"Editor Element Path Bar",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."}]}, {name:"Kommandoer",items:[{name:"Fortryd kommando",legend:"Klik på ${undo}"},{name:"Gentag kommando",legend:"Klik ${redo}"},{name:"Fed kommando",legend:"Klik ${bold}"},{name:"Kursiv kommando",legend:"Klik ${italic}"},{name:"Understregnings kommando",legend:"Klik ${underline}"},{name:"Link kommando",legend:"Klik ${link}"},{name:" Toolbar Collapse command",legend:"Klik ${toolbarCollapse}"},{name:" Access previous focus space command",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."}, {name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."},{name:"Tilgængelighedshjælp",legend:"Kilk ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Venstre pil", upArrow:"Pil op",rightArrow:"Højre pil",downArrow:"Pil ned",insert:"Insert","delete":"Delete",leftWindowKey:"Venstre Windows tast",rightWindowKey:"Højre Windows tast",selectKey:"Select-knap",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Gange",add:"Plus",subtract:"Minus",decimalPoint:"Komma",divide:"Divider",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5", f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semikolon",equalSign:"Lighedstegn",comma:"Komma",dash:"Bindestreg",period:"Punktum",forwardSlash:"Skråstreg",graveAccent:"Accent grave",openBracket:"Start klamme",backSlash:"Omvendt skråstreg",closeBracket:"Slut klamme",singleQuote:"Enkelt citationstegn"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/he.js0000644000201500020150000001131414514267702025060 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","he",{title:"הוראות נגישות",contents:"הוראות נגישות. לסגירה לחץ אסקייפ (ESC).",legend:[{name:"כללי",items:[{name:"סרגל הכלים",legend:"לחץ על ${toolbarFocus} כדי לנווט לסרגל הכלים. עבור לכפתור הבא עם מקש הטאב (TAB) או חץ שמאלי. עבור לכפתור הקודם עם מקש השיפט (SHIFT) + טאב (TAB) או חץ ימני. לחץ רווח או אנטר (ENTER) כדי להפעיל את הכפתור הנבחר."},{name:"דיאלוגים (חלונות תשאול)",legend:"Inside 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."}, {name:"תפריט ההקשר (Context Menu)",legend:"לחץ ${contextMenu} או APPLICATION KEYכדי לפתוח את תפריט ההקשר. עבור לאפשרות הבאה עם טאב (TAB) או חץ למטה. עבור לאפשרות הקודמת עם שיפט (SHIFT) + טאב (TAB) או חץ למעלה. לחץ רווח או אנטר (ENTER) כדי לבחור את האפשרות. פתח את תת התפריט (Sub-menu) של האפשרות הנוכחית עם רווח או אנטר (ENTER) או חץ שמאלי. חזור לתפריט האב עם אסקייפ (ESC) או חץ שמאלי. סגור את תפריט ההקשר עם אסקייפ (ESC)."},{name:"תפריטים צפים (List boxes)",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."}, {name:"עץ אלמנטים (Elements Path)",legend:"לחץ ${elementsPathFocus} כדי לנווט לעץ האלמנטים. עבור לפריט הבא עם טאב (TAB) או חץ ימני. עבור לפריט הקודם עם שיפט (SHIFT) + טאב (TAB) או חץ שמאלי. לחץ רווח או אנטר (ENTER) כדי לבחור את האלמנט בעורך."}]},{name:"פקודות",items:[{name:" ביטול צעד אחרון",legend:"לחץ ${undo}"},{name:" חזרה על צעד אחרון",legend:"לחץ ${redo}"},{name:" הדגשה",legend:"לחץ ${bold}"},{name:" הטייה",legend:"לחץ ${italic}"},{name:" הוספת קו תחתון",legend:"לחץ ${underline}"},{name:" הוספת לינק", legend:"לחץ ${link}"},{name:" כיווץ סרגל הכלים",legend:"לחץ ${toolbarCollapse}"},{name:"גישה למיקום המיקוד הקודם",legend:"לחץ ${accessPreviousSpace} כדי לגשת למיקום המיקוד הלא-נגיש הקרוב לפני הסמן, למשל בין שני אלמנטים סמוכים מסוג HR. חזור על צירוף מקשים זה כדי להגיע למקומות מיקוד רחוקים יותר."},{name:"גישה למיקום המיקוד הבא",legend:"לחץ ${accessNextSpace} כדי לגשת למיקום המיקוד הלא-נגיש הקרוב אחרי הסמן, למשל בין שני אלמנטים סמוכים מסוג HR. חזור על צירוף מקשים זה כדי להגיע למקומות מיקוד רחוקים יותר."}, {name:" הוראות נגישות",legend:"לחץ ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"חץ שמאלה",upArrow:"חץ למעלה",rightArrow:"חץ ימינה",downArrow:"חץ למטה",insert:"הכנס","delete":"מחק",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"בחר מקש",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2", numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"הוסף",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"סלאש",graveAccent:"Grave Accent", openBracket:"Open Bracket",backSlash:"סלאש הפוך",closeBracket:"Close Bracket",singleQuote:"ציטוט יחיד"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/ca.js0000644000201500020150000001072414514267702025053 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","ca",{title:"Instruccions d'Accessibilitat",contents:"Continguts de l'Ajuda. Per tancar aquest quadre de diàleg premi ESC.",legend:[{name:"General",items:[{name:"Editor de barra d'eines",legend:"Premi ${toolbarFocus} per desplaçar-se per la barra d'eines. Vagi en el següent i anterior grup de barra d'eines amb TAB i SHIFT+TAB. Vagi en el següent i anterior botó de la barra d'eines amb RIGHT ARROW i LEFT ARROW. Premi SPACE o ENTER per activar el botó de la barra d'eines."}, {name:"Editor de quadre de diàleg",legend:"Inside 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."},{name:"Editor de menú contextual",legend:"Premi ${contextMenu} o APPLICATION KEY per obrir el menú contextual. Després desplacis a la següent opció del menú amb TAB o DOWN ARROW. Desplacis a l'anterior opció amb SHIFT+TAB o UP ARROW. Premi SPACE o ENTER per seleccionar l'opció del menú. Obri el submenú de l'actual opció utilitzant SPACE o ENTER o RIGHT ARROW. Pot tornar a l'opció del menú pare amb ESC o LEFT ARROW. Tanqui el menú contextual amb ESC."}, {name:"Editor de caixa de llista",legend:"Dins d'un quadre de llista, desplacis al següent element de la llista amb TAB o DOWN ARROW. Desplacis a l'anterior element de la llista amb SHIFT+TAB o UP ARROW. Premi SPACE o ENTER per seleccionar l'opció de la llista. Premi ESC per tancar el quadre de llista."},{name:"Editor de barra de ruta de l'element",legend:"Premi ${elementsPathFocus} per anar als elements de la barra de ruta. Desplacis al botó de l'element següent amb TAB o RIGHT ARROW. Desplacis a l'anterior botó amb SHIFT+TAB o LEFT ARROW. Premi SPACE o ENTER per seleccionar l'element a l'editor."}]}, {name:"Ordres",items:[{name:"Desfer ordre",legend:"Premi ${undo}"},{name:"Refer ordre",legend:"Premi ${redo}"},{name:"Ordre negreta",legend:"Premi ${bold}"},{name:"Ordre cursiva",legend:"Premi ${italic}"},{name:"Ordre subratllat",legend:"Premi ${underline}"},{name:"Ordre enllaç",legend:"Premi ${link}"},{name:"Ordre amagar barra d'eines",legend:"Premi ${toolbarCollapse}"},{name:"Ordre per accedir a l'anterior espai enfocat",legend:"Premi ${accessPreviousSpace} per accedir a l'enfocament d'espai més proper inabastable abans del símbol d'intercalació, per exemple: dos elements HR adjacents. Repetiu la combinació de tecles per arribar a enfocaments d'espais distants."}, {name:"Ordre per accedir al següent espai enfocat",legend:"Premi ${accessNextSpace} per accedir a l'enfocament d'espai més proper inabastable després del símbol d'intercalació, per exemple: dos elements HR adjacents. Repetiu la combinació de tecles per arribar a enfocaments d'espais distants."},{name:"Ajuda d'accessibilitat",legend:"Premi ${a11yHelp}"}]}],backspace:"Retrocés",tab:"Tabulació",enter:"Intro",shift:"Majúscules",ctrl:"Ctrl",alt:"Alt",pause:"Pausa",capslock:"Bloqueig de majúscules",escape:"Escape", pageUp:"Pàgina Amunt",pageDown:"Pàgina Avall",end:"Fi",home:"Inici",leftArrow:"Fletxa Esquerra",upArrow:"Fletxa Amunt",rightArrow:"Fletxa Dreta",downArrow:"Fletxa Avall",insert:"Inserir","delete":"Eliminar",leftWindowKey:"Tecla Windows Esquerra",rightWindowKey:"Tecla Windows Dreta",selectKey:"Tecla Seleccionar",numpad0:"Teclat Numèric 0",numpad1:"Teclat Numèric 1",numpad2:"Teclat Numèric 2",numpad3:"Teclat Numèric 3",numpad4:"Teclat Numèric 4",numpad5:"Teclat Numèric 5",numpad6:"Teclat Numèric 6", numpad7:"Teclat Numèric 7",numpad8:"Teclat Numèric 8",numpad9:"Teclat Numèric 9",multiply:"Multiplicació",add:"Suma",subtract:"Resta",decimalPoint:"Punt Decimal",divide:"Divisió",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Bloqueig Teclat Numèric",scrollLock:"Bloqueig de Desplaçament",semiColon:"Punt i Coma",equalSign:"Símbol Igual",comma:"Coma",dash:"Guió",period:"Punt",forwardSlash:"Barra Diagonal",graveAccent:"Accent Obert",openBracket:"Claudàtor Obert", backSlash:"Barra Invertida",closeBracket:"Claudàtor Tancat",singleQuote:"Cometa Simple"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/gu.js0000644000201500020150000001012514514267702025076 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","gu",{title:"એક્ક્ષેબિલિટી ની વિગતો",contents:"હેલ્પ. આ બંધ કરવા ESC દબાવો.",legend:[{name:"જનરલ",items:[{name:"એડિટર ટૂલબાર",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"એડિટર ડાયલોગ",legend:"Inside 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."}, {name:"Editor Context Menu",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."},{name:"Editor List Box",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."}, {name:"Editor Element Path Bar",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."}]},{name:"કમાંડસ",items:[{name:"અન્ડું કમાંડ",legend:"$ દબાવો {undo}"},{name:"ફરી કરો કમાંડ",legend:"$ દબાવો {redo}"},{name:"બોલ્દનો કમાંડ",legend:"$ દબાવો {bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",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."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/_translationstatus.txt0000644000201500020150000000154514514267702030635 0ustar puckpuckCopyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license cs.js Found: 30 Missing: 0 cy.js Found: 30 Missing: 0 da.js Found: 12 Missing: 18 de.js Found: 30 Missing: 0 el.js Found: 25 Missing: 5 eo.js Found: 30 Missing: 0 fa.js Found: 30 Missing: 0 fi.js Found: 30 Missing: 0 fr.js Found: 30 Missing: 0 gu.js Found: 12 Missing: 18 he.js Found: 30 Missing: 0 it.js Found: 30 Missing: 0 mk.js Found: 5 Missing: 25 nb.js Found: 30 Missing: 0 nl.js Found: 30 Missing: 0 no.js Found: 30 Missing: 0 pt-br.js Found: 30 Missing: 0 ro.js Found: 6 Missing: 24 tr.js Found: 30 Missing: 0 ug.js Found: 27 Missing: 3 vi.js Found: 6 Missing: 24 zh-cn.js Found: 30 Missing: 0 rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/th.js0000644000201500020150000001037514514267702025105 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","th",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"ทั่วไป",items:[{name:"แถบเครื่องมือสำหรับเครื่องมือช่วยพิมพ์",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside 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."}, {name:"Editor Context Menu",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."},{name:"Editor List Box",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."}, {name:"Editor Element Path Bar",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."}]},{name:"คำสั่ง",items:[{name:"เลิกทำคำสั่ง",legend:"วาง ${undo}"},{name:"คำสั่งสำหรับทำซ้ำ",legend:"วาง ${redo}"},{name:"คำสั่งสำหรับตัวหนา",legend:"วาง ${bold}"},{name:"คำสั่งสำหรับตัวเอียง",legend:"วาง ${italic}"},{name:"คำสั่งสำหรับขีดเส้นใต้", legend:"วาง ${underline}"},{name:"คำสั่งสำหรับลิงก์",legend:"วาง ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",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."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/de.js0000644000201500020150000001072714514267702025063 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","de",{title:"Barrierefreiheitinformationen",contents:"Hilfeinhalt. Um den Dialog zu schliessen die Taste ESC drücken.",legend:[{name:"Allgemein",items:[{name:"Editorwerkzeugleiste",legend:"Drücken Sie ${toolbarFocus} auf der Symbolleiste. Gehen Sie zur nächsten oder vorherigen Symbolleistengruppe mit TAB und SHIFT+TAB. Gehen Sie zur nächsten oder vorherigen Symbolleiste auf die Schaltfläche mit dem RECHTS- oder LINKS-Pfeil. Drücken Sie die Leertaste oder Eingabetaste, um die Schaltfläche in der Symbolleiste aktivieren."}, {name:"Editordialog",legend:"Inside 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."},{name:"Editor-Kontextmenü",legend:"Dürcken Sie ${contextMenu} oder die Anwendungstaste um das Kontextmenü zu öffnen. Man kann die Pfeiltasten zum Wechsel benutzen. Mit der Leertaste oder der Enter-Taste kann man den Menüpunkt aufrufen. Schliessen Sie das Kontextmenü mit der ESC-Taste."}, {name:"Editor-Listenbox",legend:"Innerhalb einer Listenbox kann man mit der TAB-Taste oder den Pfeilrunter-Taste den nächsten Menüeintrag wählen. Mit der SHIFT+TAB Tastenkombination oder der Pfeilhoch-Taste gelangt man zum vorherigen Menüpunkt. Mit der Leertaste oder Enter kann man den Menüpunkt auswählen. Drücken Sie ESC zum Verlassen des Menüs."},{name:"Editor-Elementpfadleiste",legend:"Drücken Sie ${elementsPathFocus} um sich durch die Pfadleiste zu bewegen. Um zum nächsten Element zu gelangen drücken Sie TAB oder die Pfeilrechts-Taste. Zum vorherigen Element gelangen Sie mit der SHIFT+TAB oder der Pfeillinks-Taste. Drücken Sie die Leertaste oder Enter um das Element auszuwählen."}]}, {name:"Befehle",items:[{name:"Rückgängig-Befehl",legend:"Drücken Sie ${undo}"},{name:"Wiederherstellen-Befehl",legend:"Drücken Sie ${redo}"},{name:"Fettschrift-Befehl",legend:"Drücken Sie ${bold}"},{name:"Kursiv-Befehl",legend:"Drücken Sie ${italic}"},{name:"Unterstreichen-Befehl",legend:"Drücken Sie ${underline}"},{name:"Link-Befehl",legend:"Drücken Sie ${link}"},{name:"Werkzeugleiste einklappen-Befehl",legend:"Drücken Sie ${toolbarCollapse}"},{name:"Zugang bisheriger Fokussierung Raumbefehl ",legend:"Drücken Sie ${accessPreviousSpace} auf den am nächsten nicht erreichbar Fokus-Abstand vor die Einfügemarke zugreifen: zwei benachbarte HR-Elemente. Wiederholen Sie die Tastenkombination um entfernte Fokusräume zu erreichen. "}, {name:"Zugang nächster Schwerpunkt Raumbefehl ",legend:"Drücken Sie $ { accessNextSpace }, um den nächsten unerreichbar Fokus Leerzeichen nach dem Cursor zum Beispiel auf: zwei benachbarten HR Elemente. Wiederholen Sie die Tastenkombination zum fernen Fokus Bereiche zu erreichen. "},{name:"Eingabehilfen",legend:"Drücken Sie ${a11yHelp}"}]}],backspace:"Rücktaste",tab:"Tab",enter:"Eingabe",shift:"Umschalt",ctrl:"Strg",alt:"Alt",pause:"Pause",capslock:"Feststell",escape:"Escape",pageUp:"Bild auf",pageDown:"Bild ab", end:"Ende",home:"Pos1",leftArrow:"Linke Pfeiltaste",upArrow:"Obere Pfeiltaste",rightArrow:"Rechte Pfeiltaste",downArrow:"Untere Pfeiltaste",insert:"Einfügen","delete":"Entfernen",leftWindowKey:"Linke Windowstaste",rightWindowKey:"Rechte Windowstaste",selectKey:"Taste auswählen",numpad0:"Ziffernblock 0",numpad1:"Ziffernblock 1",numpad2:"Ziffernblock 2",numpad3:"Ziffernblock 3",numpad4:"Ziffernblock 4",numpad5:"Ziffernblock 5",numpad6:"Ziffernblock 6",numpad7:"Ziffernblock 7",numpad8:"Ziffernblock 8", numpad9:"Ziffernblock 9",multiply:"Multiplizieren",add:"Addieren",subtract:"Subtrahieren",decimalPoint:"Punkt",divide:"Dividieren",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Ziffernblock feststellen",scrollLock:"Rollen",semiColon:"Semikolon",equalSign:"Gleichheitszeichen",comma:"Komma",dash:"Bindestrich",period:"Punkt",forwardSlash:"Schrägstrich",graveAccent:"Gravis",openBracket:"Öffnende eckige Klammer",backSlash:"Rückwärtsgewandter Schrägstrich", closeBracket:"Schließende eckige Klammer",singleQuote:"Einfaches Anführungszeichen"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/tt.js0000644000201500020150000001031414514267702025112 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","tt",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Гомуми",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside 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."}, {name:"Editor Context Menu",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."},{name:"Editor List Box",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."}, {name:"Editor Element Path Bar",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."}]},{name:"Командалар",items:[{name:"Кайтару",legend:"${undo} басыгыз"},{name:"Кабатлау",legend:"${redo} басыгыз"},{name:"Калын",legend:"${bold} басыгыз"},{name:"Курсив",legend:"${italic} басыгыз"},{name:"Астына сызылган",legend:"${underline} басыгыз"}, {name:"Сылталама",legend:"${link} басыгыз"},{name:" Toolbar Collapse command",legend:"${toolbarCollapse} басыгыз"},{name:" Access previous focus space command",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."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:" Accessibility Help",legend:"${a11yHelp} басыгыз"}]}],backspace:"Кайтару",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Тыныш",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Сул якка ук",upArrow:"Өскә таба ук",rightArrow:"Уң якка ук",downArrow:"Аска таба ук",insert:"Өстәү","delete":"Бетерү",leftWindowKey:"Сул Windows төймəсе",rightWindowKey:"Уң Windows төймəсе",selectKey:"Select төймəсе",numpad0:"Numpad 0",numpad1:"Numpad 1", numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Тапкырлау",add:"Кушу",subtract:"Алу",decimalPoint:"Унарлы нокта",divide:"Бүлү",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Нокталы өтер",equalSign:"Тигезлек билгесе",comma:"Өтер",dash:"Сызык",period:"Дәрәҗә",forwardSlash:"Кыек сызык", graveAccent:"Гравис",openBracket:"Җәя ачу",backSlash:"Кире кыек сызык",closeBracket:"Җәя ябу",singleQuote:"Бер иңле куштырнаклар"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/vi.js0000644000201500020150000001225714514267702025111 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","vi",{title:"Hướng dẫn trợ năng",contents:"Nội dung Hỗ trợ. Nhấn ESC để đóng hộp thoại.",legend:[{name:"Chung",items:[{name:"Thanh công cụ soạn thảo",legend:"Nhấn ${toolbarFocus} để điều hướng đến thanh công cụ. Nhấn TAB và SHIFT+TAB để chuyển đến nhóm thanh công cụ khác. Nhấn MŨI TÊN PHẢI hoặc MŨI TÊN TRÁI để chuyển sang nút khác trên thanh công cụ. Nhấn PHÍM CÁCH hoặc ENTER để kích hoạt nút trên thanh công cụ."},{name:"Hộp thoại Biên t",legend:"Inside 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."}, {name:"Trình đơn Ngữ cảnh cBộ soạn thảo",legend:"Nhấn ${contextMenu} hoặc PHÍM ỨNG DỤNG để mở thực đơn ngữ cảnh. Sau đó nhấn TAB hoặc MŨI TÊN XUỐNG để di chuyển đến tuỳ chọn tiếp theo của thực đơn. Nhấn SHIFT+TAB hoặc MŨI TÊN LÊN để quay lại tuỳ chọn trước. Nhấn DẤU CÁCH hoặc ENTER để chọn tuỳ chọn của thực đơn. Nhấn DẤU CÁCH hoặc ENTER hoặc MŨI TÊN SANG PHẢI để mở thực đơn con của tuỳ chọn hiện tại. Nhấn ESC hoặc MŨI TÊN SANG TRÁI để quay trở lại thực đơn gốc. Nhấn ESC để đóng thực đơn ngữ cảnh."}, {name:"Hộp danh sách trình biên tập",legend:"Trong một danh sách chọn, di chuyển đối tượng tiếp theo với phím TAB hoặc phím mũi tên hướng xuống. Di chuyển đến đối tượng trước đó bằng cách nhấn tổ hợp phím SHIFT+TAB hoặc mũi tên hướng lên. Phím khoảng cách hoặc phím ENTER để chọn các tùy chọn trong danh sách. Nhấn phím ESC để đóng lại danh sách chọn."},{name:"Thanh đường dẫn các đối tượng",legend:"Nhấn ${elementsPathFocus} để điều hướng các đối tượng trong thanh đường dẫn. Di chuyển đến đối tượng tiếp theo bằng phím TAB hoặc phím mũi tên bên phải. Di chuyển đến đối tượng trước đó bằng tổ hợp phím SHIFT+TAB hoặc phím mũi tên bên trái. Nhấn phím khoảng cách hoặc ENTER để chọn đối tượng trong trình soạn thảo."}]}, {name:"Lệnh",items:[{name:"Làm lại lện",legend:"Ấn ${undo}"},{name:"Làm lại lệnh",legend:"Ấn ${redo}"},{name:"Lệnh in đậm",legend:"Ấn ${bold}"},{name:"Lệnh in nghiêng",legend:"Ấn ${italic}"},{name:"Lệnh gạch dưới",legend:"Ấn ${underline}"},{name:"Lệnh liên kết",legend:"Nhấn ${link}"},{name:"Lệnh hiển thị thanh công cụ",legend:"Nhấn${toolbarCollapse}"},{name:"Truy cập đến lệnh tập trung vào khoảng cách trước đó",legend:"Ấn ${accessPreviousSpace} để truy cập đến phần tập trung khoảng cách sau phần còn sót lại của khoảng cách gần nhất vốn không tác động đến được , thí dụ: hai yếu tố điều chỉnh HR. Lặp lại các phím kết họep này để vươn đến phần khoảng cách."}, {name:"Truy cập phần đối tượng lệnh khoảng trống",legend:"Ấn ${accessNextSpace} để truy cập đến phần tập trung khoảng cách sau phần còn sót lại của khoảng cách gần nhất vốn không tác động đến được , thí dụ: hai yếu tố điều chỉnh HR. Lặp lại các phím kết họep này để vươn đến phần khoảng cách."},{name:"Trợ giúp liên quan",legend:"Nhấn ${a11yHelp}"}]}],backspace:"Phím Backspace",tab:"Phím Tab",enter:"Phím Tab",shift:"Phím Shift",ctrl:"Phím Ctrl",alt:"Phím Alt",pause:"Phím Pause",capslock:"Phím Caps Lock", escape:"Phím Escape",pageUp:"Phím Page Up",pageDown:"Phím Page Down",end:"Phím End",home:"Phím Home",leftArrow:"Phím Left Arrow",upArrow:"Phím Up Arrow",rightArrow:"Phím Right Arrow",downArrow:"Phím Down Arrow",insert:"Chèn","delete":"Xóa",leftWindowKey:"Phím Left Windows",rightWindowKey:"Phím Right Windows ",selectKey:"Chọn phím",numpad0:"Phím 0",numpad1:"Phím 1",numpad2:"Phím 2",numpad3:"Phím 3",numpad4:"Phím 4",numpad5:"Phím 5",numpad6:"Phím 6",numpad7:"Phím 7",numpad8:"Phím 8",numpad9:"Phím 9", multiply:"Nhân",add:"Thêm",subtract:"Trừ",decimalPoint:"Điểm số thập phân",divide:"Chia",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Dấu chấm phẩy",equalSign:"Đăng nhập bằng",comma:"Dấu phẩy",dash:"Dấu gạch ngang",period:"Phím .",forwardSlash:"Phím /",graveAccent:"Phím `",openBracket:"Open Bracket",backSlash:"Dấu gạch chéo ngược",closeBracket:"Gần giá đỡ",singleQuote:"Trích dẫn"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/cs.js0000644000201500020150000001133514514267702025074 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","cs",{title:"Instrukce pro přístupnost",contents:"Obsah nápovědy. Pro uzavření tohoto dialogu stiskněte klávesu ESC.",legend:[{name:"Obecné",items:[{name:"Panel nástrojů editoru",legend:"Stiskněte${toolbarFocus} k procházení panelu nástrojů. Přejděte na další a předchozí skupiny pomocí TAB a SHIFT+TAB. Přechod na další a předchozí tlačítko panelu nástrojů je pomocí ŠIPKA VPRAVO nebo ŠIPKA VLEVO. Stisknutím mezerníku nebo klávesy ENTER tlačítko aktivujete."},{name:"Dialogové okno editoru", legend:"Uvnitř dialogového okna stiskněte TAB pro přesunutí na další prvek okna, stiskněte SHIFT+TAB pro přesun na předchozí prvek okna, stiskněte ENTER pro odeslání dialogu, stiskněte ESC pro jeho zrušení. Pro dialogová okna, která mají mnoho karet stiskněte ALT+F10 pro zaměření seznamu karet, nebo TAB, pro posun podle pořadí karet.Při zaměření seznamu karet se můžete jimi posouvat pomocí ŠIPKY VPRAVO a VLEVO."},{name:"Kontextové menu editoru",legend:"Stiskněte ${contextMenu} nebo klávesu APPLICATION k otevření kontextového menu. Pak se přesuňte na další možnost menu pomocí TAB nebo ŠIPKY DOLŮ. Přesuňte se na předchozí možnost pomocí SHIFT+TAB nebo ŠIPKY NAHORU. Stiskněte MEZERNÍK nebo ENTER pro zvolení možnosti menu. Podmenu současné možnosti otevřete pomocí MEZERNÍKU nebo ENTER či ŠIPKY DOLEVA. Kontextové menu uzavřete stiskem ESC."}, {name:"Rámeček seznamu editoru",legend:"Uvnitř rámečku seznamu se přesunete na další položku menu pomocí TAB nebo ŠIPKA DOLŮ. Na předchozí položku se přesunete SHIFT+TAB nebo ŠIPKA NAHORU. Stiskněte MEZERNÍK nebo ENTER pro zvolení možnosti seznamu. Stiskněte ESC pro uzavření seznamu."},{name:"Lišta cesty prvku v editoru",legend:"Stiskněte ${elementsPathFocus} pro procházení lišty cesty prvku. Na další tlačítko prvku se přesunete pomocí TAB nebo ŠIPKA VPRAVO. Na předchozí tlačítko se přesunete pomocí SHIFT+TAB nebo ŠIPKA VLEVO. Stiskněte MEZERNÍK nebo ENTER pro vybrání prvku v editoru."}]}, {name:"Příkazy",items:[{name:" Příkaz Zpět",legend:"Stiskněte ${undo}"},{name:" Příkaz Znovu",legend:"Stiskněte ${redo}"},{name:" Příkaz Tučné",legend:"Stiskněte ${bold}"},{name:" Příkaz Kurzíva",legend:"Stiskněte ${italic}"},{name:" Příkaz Podtržení",legend:"Stiskněte ${underline}"},{name:" Příkaz Odkaz",legend:"Stiskněte ${link}"},{name:" Příkaz Skrýt panel nástrojů",legend:"Stiskněte ${toolbarCollapse}"},{name:"Příkaz pro přístup k předchozímu prostoru zaměření",legend:"Stiskněte ${accessPreviousSpace} pro přístup k nejbližšímu nedosažitelnému prostoru zaměření před stříškou, například: dva přilehlé prvky HR. Pro dosažení vzdálených prostorů zaměření tuto kombinaci kláves opakujte."}, {name:"Příkaz pro přístup k dalšímu prostoru zaměření",legend:"Stiskněte ${accessNextSpace} pro přístup k nejbližšímu nedosažitelnému prostoru zaměření po stříšce, například: dva přilehlé prvky HR. Pro dosažení vzdálených prostorů zaměření tuto kombinaci kláves opakujte."},{name:" Nápověda přístupnosti",legend:"Stiskněte ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tabulátor",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pauza",capslock:"Caps lock",escape:"Escape",pageUp:"Stránka nahoru", pageDown:"Stránka dolů",end:"Konec",home:"Domů",leftArrow:"Šipka vlevo",upArrow:"Šipka nahoru",rightArrow:"Šipka vpravo",downArrow:"Šipka dolů",insert:"Vložit","delete":"Smazat",leftWindowKey:"Levá klávesa Windows",rightWindowKey:"Pravá klávesa Windows",selectKey:"Vyberte klávesu",numpad0:"Numerická klávesa 0",numpad1:"Numerická klávesa 1",numpad2:"Numerická klávesa 2",numpad3:"Numerická klávesa 3",numpad4:"Numerická klávesa 4",numpad5:"Numerická klávesa 5",numpad6:"Numerická klávesa 6",numpad7:"Numerická klávesa 7", numpad8:"Numerická klávesa 8",numpad9:"Numerická klávesa 9",multiply:"Numerická klávesa násobení",add:"Přidat",subtract:"Numerická klávesa odečítání",decimalPoint:"Desetinná tečka",divide:"Numerická klávesa dělení",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num lock",scrollLock:"Scroll lock",semiColon:"Středník",equalSign:"Rovnítko",comma:"Čárka",dash:"Pomlčka",period:"Tečka",forwardSlash:"Lomítko",graveAccent:"Přízvuk",openBracket:"Otevřená hranatá závorka", backSlash:"Obrácené lomítko",closeBracket:"Uzavřená hranatá závorka",singleQuote:"Jednoduchá uvozovka"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/tr.js0000644000201500020150000001077214514267702025120 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","tr",{title:"Erişilebilirlik Talimatları",contents:"Yardım içeriği. Bu pencereyi kapatmak için ESC tuşuna basın.",legend:[{name:"Genel",items:[{name:"Düzenleyici Araç Çubuğu",legend:"Araç çubuğunda gezinmek için ${toolbarFocus} basın. TAB ve SHIFT+TAB ile önceki ve sonraki araç çubuğu grubuna taşıyın. SAĞ OK veya SOL OK ile önceki ve sonraki bir araç çubuğu düğmesini hareket ettirin. SPACE tuşuna basın veya araç çubuğu düğmesini etkinleştirmek için ENTER tuşna basın."}, {name:"Diyalog Düzenleyici",legend:"Dialog penceresi içinde, sonraki iletişim alanına gitmek için SEKME tuşuna basın, önceki alana geçmek için SHIFT + TAB tuşuna basın, pencereyi göndermek için ENTER tuşuna basın, dialog penceresini iptal etmek için ESC tuşuna basın. Birden çok sekme sayfaları olan diyalogların, sekme listesine gitmek için ALT + F10 tuşlarına basın. Sonra TAB veya SAĞ OK sonraki sekmeye taşıyın. SHIFT + TAB veya SOL OK ile önceki sekmeye geçin. Sekme sayfayı seçmek için SPACE veya ENTER tuşuna basın."}, {name:"İçerik Menü Editörü",legend:"İçerik menüsünü açmak için ${contextMenu} veya UYGULAMA TUŞU'na basın. Daha sonra SEKME veya AŞAĞI OK ile bir sonraki menü seçeneği taşıyın. SHIFT + TAB veya YUKARI OK ile önceki seçeneğe gider. Menü seçeneğini seçmek için SPACE veya ENTER tuşuna basın. Seçili seçeneğin alt menüsünü SPACE ya da ENTER veya SAĞ OK açın. Üst menü öğesini geçmek için ESC veya SOL OK ile geri dönün. ESC ile bağlam menüsünü kapatın."},{name:"Liste Kutusu Editörü",legend:"Liste kutusu içinde, bir sonraki liste öğesine SEKME VEYA AŞAĞI OK ile taşıyın. SHIFT+TAB veya YUKARI önceki liste öğesi taşıyın. Liste seçeneği seçmek için SPACE veya ENTER tuşuna basın. Liste kutusunu kapatmak için ESC tuşuna basın."}, {name:"Element Yol Çubuğu Editörü",legend:"Elementlerin yol çubuğunda gezinmek için ${ElementsPathFocus} basın. SEKME veya SAĞ OK ile sonraki element düğmesine taşıyın. SHIFT+TAB veya SOL OK önceki düğmeye hareket ettirin. Editör içindeki elementi seçmek için ENTER veya SPACE tuşuna basın."}]},{name:"Komutlar",items:[{name:"Komutu geri al",legend:"$(undo)'ya basın"},{name:"Komutu geri al",legend:"${redo} basın"},{name:" Kalın komut",legend:"${bold} basın"},{name:" İtalik komutu",legend:"${italic} basın"}, {name:" Alttan çizgi komutu",legend:"${underline} basın"},{name:" Bağlantı komutu",legend:"${link} basın"},{name:" Araç çubuğu Toplama komutu",legend:"${toolbarCollapse} basın"},{name:"Önceki komut alanına odaklan",legend:"Düzeltme imleçinden önce, en yakın uzaktaki alana erişmek için ${accessPreviousSpace} basın, örneğin: iki birleşik HR elementleri. Aynı tuş kombinasyonu tekrarıyla diğer alanlarada ulaşın."},{name:"Sonraki komut alanına odaklan",legend:"Düzeltme imleçinden sonra, en yakın uzaktaki alana erişmek için ${accessNextSpace} basın, örneğin: iki birleşik HR elementleri. Aynı tuş kombinasyonu tekrarıyla diğer alanlarada ulaşın."}, {name:"Erişilebilirlik Yardımı",legend:"${a11yHelp}'e basın"}]}],backspace:"Silme",tab:"Sekme tuşu",enter:"Gir tuşu",shift:'"Shift" Kaydırma tuşu',ctrl:'"Ctrl" Kontrol tuşu',alt:'"Alt" Anahtar tuşu',pause:"Durdurma tuşu",capslock:"Büyük harf tuşu",escape:"Vazgeç tuşu",pageUp:"Sayfa Yukarı",pageDown:"Sayfa Aşağı",end:"Sona",home:"En başa",leftArrow:"Sol ok",upArrow:"Yukarı ok",rightArrow:"Sağ ok",downArrow:"Aşağı ok",insert:"Araya gir","delete":"Silme",leftWindowKey:"Sol windows tuşu",rightWindowKey:"Sağ windows tuşu", selectKey:"Seçme tuşu",numpad0:"Nümerik 0",numpad1:"Nümerik 1",numpad2:"Nümerik 2",numpad3:"Nümerik 3",numpad4:"Nümerik 4",numpad5:"Nümerik 5",numpad6:"Nümerik 6",numpad7:"Nümerik 7",numpad8:"Nümerik 8",numpad9:"Nümerik 9",multiply:"Çarpma",add:"Toplama",subtract:"Çıkarma",decimalPoint:"Ondalık işareti",divide:"Bölme",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lk",scrollLock:"Scr Lk",semiColon:"Noktalı virgül",equalSign:"Eşittir", comma:"Virgül",dash:"Eksi",period:"Nokta",forwardSlash:"İleri eğik çizgi",graveAccent:"Üst tırnak",openBracket:"Parantez aç",backSlash:"Ters eğik çizgi",closeBracket:"Parantez kapa",singleQuote:"Tek tırnak"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/ja.js0000644000201500020150000001171214514267702025060 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","ja",{title:"ユーザー補助の説明",contents:"ヘルプ このダイアログを閉じるには ESCを押してください。",legend:[{name:"全般",items:[{name:"エディターツールバー",legend:"${toolbarFocus} を押すとツールバーのオン/オフ操作ができます。カーソルをツールバーのグループで移動させるにはTabかSHIFT+Tabを押します。グループ内でカーソルを移動させるには、右カーソルか左カーソルを押します。スペースキーやエンターを押すとボタンを有効/無効にすることができます。"},{name:"編集ダイアログ",legend:"Inside 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."}, {name:"エディターのメニュー",legend:"${contextMenu} キーかAPPLICATION KEYを押すとコンテキストメニューが開きます。Tabか下カーソルでメニューのオプション選択が下に移動します。戻るには、SHIFT+Tabか上カーソルです。スペースもしくはENTERキーでメニューオプションを決定できます。現在選んでいるオプションのサブメニューを開くには、スペース、もしくは右カーソルを押します。サブメニューから親メニューに戻るには、ESCか左カーソルを押してください。ESCでコンテキストメニュー自体をキャンセルできます。"},{name:"エディターリストボックス",legend:"リストボックス内で移動するには、Tabか下カーソルで次のアイテムへ移動します。SHIFT+Tabで前のアイテムに戻ります。リストのオプションを選択するには、スペースもしくは、ENTERを押してください。リストボックスを閉じるには、ESCを押してください。"},{name:"エディター要素パスバー",legend:"${elementsPathFocus} を押すとエレメントパスバーを操作出来ます。Tabか右カーソルで次のエレメントを選択できます。前のエレメントを選択するには、SHIFT+Tabか左カーソルです。スペースもしくは、ENTERでエディタ内の対象エレメントを選択出来ます。"}]}, {name:"コマンド",items:[{name:"元に戻す",legend:"${undo} をクリック"},{name:"やり直し",legend:"${redo} をクリック"},{name:"太字",legend:"${bold} をクリック"},{name:"斜体 ",legend:"${italic} をクリック"},{name:"下線",legend:"${underline} をクリック"},{name:"リンク",legend:"${link} をクリック"},{name:"ツールバーを縮める",legend:"${toolbarCollapse} をクリック"},{name:"前のカーソル移動のできないポイントへ",legend:"${accessPreviousSpace} を押すとカーソルより前にあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。"},{name:"次のカーソル移動のできないポイントへ",legend:"${accessNextSpace} を押すとカーソルより後ろにあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。"}, {name:"ユーザー補助ヘルプ",legend:"${a11yHelp} をクリック"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"左矢印",upArrow:"上矢印",rightArrow:"右矢印",downArrow:"下矢印",insert:"Insert","delete":"Delete",leftWindowKey:"左Windowキー",rightWindowKey:"右のWindowキー",selectKey:"Select",numpad0:"Num 0",numpad1:"Num 1",numpad2:"Num 2",numpad3:"Num 3",numpad4:"Num 4",numpad5:"Num 5", numpad6:"Num 6",numpad7:"Num 7",numpad8:"Num 8",numpad9:"Num 9",multiply:"掛ける",add:"足す",subtract:"引く",decimalPoint:"小数点",divide:"割る",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"セミコロン",equalSign:"イコール記号",comma:"カンマ",dash:"ダッシュ",period:"ピリオド",forwardSlash:"フォワードスラッシュ",graveAccent:"グレイヴアクセント",openBracket:"開きカッコ",backSlash:"バックスラッシュ",closeBracket:"閉じカッコ",singleQuote:"シングルクォート"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/sl.js0000644000201500020150000001045714514267702025111 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","sl",{title:"Navodila Dostopnosti",contents:"Vsebina Pomoči. Če želite zapreti to pogovorno okno pritisnite ESC.",legend:[{name:"Splošno",items:[{name:"Urejevalna Orodna Vrstica",legend:"Pritisnite ${toolbarFocus} za pomik v orodno vrstico. Z TAB in SHIFT+TAB se pomikate na naslednjo in prejšnjo skupino orodne vrstice. Z DESNO PUŠČICO ali LEVO PUŠČICO se pomikate na naslednji in prejšnji gumb orodne vrstice. Pritisnite SPACE ali ENTER, da aktivirate gumb orodne vrstice."}, {name:"Urejevalno Pogovorno Okno",legend:"Inside 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."},{name:"Urejevalni Kontekstni Meni",legend:"Pritisnite ${contextMenu} ali APPLICATION KEY, da odprete kontekstni meni. Nato se premaknite na naslednjo možnost menija s tipko TAB ali PUŠČICA DOL. Premakniti se na prejšnjo možnost z SHIFT + TAB ali PUŠČICA GOR. Pritisnite SPACE ali ENTER za izbiro možnosti menija. Odprite podmeni trenutne možnosti menija s tipko SPACE ali ENTER ali DESNA PUŠČICA. Vrnite se na matični element menija s tipko ESC ali LEVA PUŠČICA. Zaprite kontekstni meni z ESC."}, {name:"Urejevalno Seznamsko Polje",legend:"Znotraj seznama, se premaknete na naslednji element seznama s tipko TAB ali PUŠČICO DOL. Z SHIFT+TAB ali PUŠČICO GOR se premaknete na prejšnji element seznama. Pritisnite tipko SPACE ali ENTER za izbiro elementa. Pritisnite tipko ESC, da zaprete seznam."},{name:"Urejevalna vrstica poti elementa",legend:"Pritisnite ${elementsPathFocus} za pomikanje po vrstici elementnih poti. S TAB ali DESNA PUŠČICA se premaknete na naslednji gumb elementa. Z SHIFT+TAB ali LEVO PUŠČICO se premaknete na prejšnji gumb elementa. Pritisnite SPACE ali ENTER za izbiro elementa v urejevalniku."}]}, {name:"Ukazi",items:[{name:"Razveljavi ukaz",legend:"Pritisnite ${undo}"},{name:"Ponovi ukaz",legend:"Pritisnite ${redo}"},{name:"Krepki ukaz",legend:"Pritisnite ${bold}"},{name:"Ležeči ukaz",legend:"Pritisnite ${italic}"},{name:"Poudarni ukaz",legend:"Pritisnite ${underline}"},{name:"Ukaz povezave",legend:"Pritisnite ${link}"},{name:"Skrči Orodno Vrstico Ukaz",legend:"Pritisnite ${toolbarCollapse}"},{name:"Dostop do prejšnjega ukaza ostrenja",legend:"Pritisnite ${accessPreviousSpace} za dostop do najbližjega nedosegljivega osredotočenega prostora pred strešico, npr.: dva sosednja HR elementa. Ponovite kombinacijo tipk, da dosežete oddaljene osredotočene prostore."}, {name:"Dostop do naslednjega ukaza ostrenja",legend:"Pritisnite ${accessNextSpace} za dostop do najbližjega nedosegljivega osredotočenega prostora po strešici, npr.: dva sosednja HR elementa. Ponovite kombinacijo tipk, da dosežete oddaljene osredotočene prostore."},{name:"Pomoč Dostopnosti",legend:"Pritisnite ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End", home:"Home",leftArrow:"Levo puščica",upArrow:"Gor puščica",rightArrow:"Desno puščica",downArrow:"Dol puščica",insert:"Insert","delete":"Delete",leftWindowKey:"Leva Windows tipka",rightWindowKey:"Desna Windows tipka",selectKey:"Select tipka",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Zmnoži",add:"Dodaj",subtract:"Odštej",decimalPoint:"Decimalna vejica", divide:"Deli",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Podpičje",equalSign:"enačaj",comma:"Vejica",dash:"Vezaj",period:"Pika",forwardSlash:"Desna poševnica",graveAccent:"Krativec",openBracket:"Oklepaj",backSlash:"Leva poševnica",closeBracket:"Oklepaj",singleQuote:"Opuščaj"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/lv.js0000644000201500020150000001112514514267702025105 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","lv",{title:"Pieejamības instrukcija",contents:"Palīdzības saturs. Lai aizvērtu ciet šo dialogu nospiediet ESC.",legend:[{name:"Galvenais",items:[{name:"Redaktora rīkjosla",legend:"Nospiediet ${toolbarFocus} lai pārvietotos uz rīkjoslu. Lai pārvietotos uz nākošo vai iepriekšējo rīkjoslas grupu izmantojiet pogu TAB un SHIFT+TAB. Lai pārvietotos uz nākošo vai iepriekšējo rīkjoslas pogu izmantojiet Kreiso vai Labo bultiņu. Nospiediet Atstarpi vai ENTER lai aktivizētu rīkjosla pogu."}, {name:"Redaktora dialoga logs",legend:"Inside 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."},{name:"Redaktora satura izvēle",legend:"Nospiediet ${contextMenu} vai APPLICATION KEY lai atvērtu satura izvēlni. Lai pārvietotos uz nākošo izvēlnes opciju izmantojiet pogu TAB vai pogu Bultiņu uz leju. Lai pārvietotos uz iepriekšējo opciju izmantojiet SHIFT+TAB vai pogu Bultiņa uz augšu. Nospiediet SPACE vai ENTER lai izvelētos izvēlnes opciju. Atveriet tekošajā opcija apakšizvēlni ar SAPCE vai ENTER ka ari to var izdarīt ar Labo bultiņu. Lai atgrieztos atpakaļ uz sakuma izvēlni nospiediet ESC vai Kreiso bultiņu. Lai aizvērtu ciet izvēlnes saturu nospiediet ESC."}, {name:"Redaktora saraksta lauks",legend:"Saraksta laukā, lai pārvietotos uz nākošo saraksta elementu nospiediet TAB vai pogu Bultiņa uz leju. Lai pārvietotos uz iepriekšējo saraksta elementu nospiediet SHIFT+TAB vai pogu Bultiņa uz augšu. Nospiediet SPACE vai ENTER lai izvēlētos saraksta opcijas. Nospiediet ESC lai aizvērtu saraksta lauku."},{name:"Redaktora elementa ceļa josla",legend:"Nospiediet ${elementsPathFocus} lai pārvietotos uz elementa ceļa joslu. Lai pārvietotos uz nākošo elementa pogu izmantojiet TAB vai Labo bultiņu. Lai pārvietotos uz iepriekšējo elementa pogu izmantojiet SHIFT+TAB vai Kreiso bultiņu. Nospiediet SPACE vai ENTER lai izvēlētos elementu redaktorā."}]}, {name:"Komandas",items:[{name:"Komanda atcelt darbību",legend:"Nospiediet ${undo}"},{name:"Komanda atkārtot darbību",legend:"Nospiediet ${redo}"},{name:"Treknraksta komanda",legend:"Nospiediet ${bold}"},{name:"Kursīva komanda",legend:"Nospiediet ${italic}"},{name:"Apakšsvītras komanda ",legend:"Nospiediet ${underline}"},{name:"Hipersaites komanda",legend:"Nospiediet ${link}"},{name:"Rīkjoslas aizvēršanas komanda",legend:"Nospiediet ${toolbarCollapse}"},{name:"Piekļūt iepriekšējai fokusa vietas komandai", legend:"Nospiediet ${accessPreviousSpace} lai piekļūtu tuvākajai nepieejamajai fokusa vietai pirms kursora. Piemēram: diviem blakus esošiem līnijas HR elementiem. Atkārtojiet taustiņu kombināciju lai piekļūtu pie tālākām vietām."},{name:"Piekļūt nākošā fokusa apgabala komandai",legend:"Nospiediet ${accessNextSpace} lai piekļūtu tuvākajai nepieejamajai fokusa vietai pēc kursora. Piemēram: diviem blakus esošiem līnijas HR elementiem. Atkārtojiet taustiņu kombināciju lai piekļūtu pie tālākām vietām."}, {name:"Pieejamības palīdzība",legend:"Nospiediet ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/en.js0000644000201500020150000000760314514267702025074 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","en",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside 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."}, {name:"Editor Context Menu",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."},{name:"Editor List Box",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."}, {name:"Editor Element Path Bar",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."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",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."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/no.js0000644000201500020150000001027114514267702025101 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","no",{title:"Instruksjoner for tilgjengelighet",contents:"Innhold for hjelp. Trykk ESC for å lukke denne dialogen.",legend:[{name:"Generelt",items:[{name:"Verktøylinje for editor",legend:"Trykk ${toolbarFocus} for å navigere til verktøylinjen. Flytt til neste og forrige verktøylinjegruppe med TAB og SHIFT+TAB. Flytt til neste og forrige verktøylinjeknapp med HØYRE PILTAST og VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å aktivere verktøylinjeknappen."},{name:"Dialog for editor", legend:"Inside 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."},{name:"Kontekstmeny for editor",legend:"Trykk ${contextMenu} eller MENYKNAPP for å åpne kontekstmeny. Gå til neste alternativ i menyen med TAB eller PILTAST NED. Gå til forrige alternativ med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge menyalternativet. Åpne undermenyen på valgt alternativ med MELLOMROM eller ENTER eller HØYRE PILTAST. Gå tilbake til overordnet menyelement med ESC eller VENSTRE PILTAST. Lukk kontekstmenyen med ESC."}, {name:"Listeboks for editor",legend:"I en listeboks, gå til neste alternativ i listen med TAB eller PILTAST NED. Gå til forrige alternativ i listen med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge alternativet i listen. Trykk ESC for å lukke listeboksen."},{name:"Verktøylinje for elementsti",legend:"Trykk ${elementsPathFocus} for å navigere til verktøylinjen som viser elementsti. Gå til neste elementknapp med TAB eller HØYRE PILTAST. Gå til forrige elementknapp med SHIFT+TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge elementet i editoren."}]}, {name:"Kommandoer",items:[{name:"Angre",legend:"Trykk ${undo}"},{name:"Gjør om",legend:"Trykk ${redo}"},{name:"Fet tekst",legend:"Trykk ${bold}"},{name:"Kursiv tekst",legend:"Trykk ${italic}"},{name:"Understreking",legend:"Trykk ${underline}"},{name:"Link",legend:"Trykk ${link}"},{name:"Skjul verktøylinje",legend:"Trykk ${toolbarCollapse}"},{name:"Gå til forrige fokusområde",legend:"Trykk ${accessPreviousSpace} for å komme til nærmeste fokusområde før skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."}, {name:"Gå til neste fokusområde",legend:"Trykk ${accessNextSpace} for å komme til nærmeste fokusområde etter skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet."},{name:"Hjelp for tilgjengelighet",legend:"Trykk ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point", divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/fr.js0000644000201500020150000001215514514267702025077 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","fr",{title:"Instructions d'accessibilité",contents:"Contenu de l'aide. Pour fermer ce dialogue, appuyez sur la touche ÉCHAP (Echappement).",legend:[{name:"Général",items:[{name:"Barre d'outils de l'éditeur",legend:"Appuyer sur ${toolbarFocus} pour accéder à la barre d'outils. Se déplacer vers les groupes suivant ou précédent de la barre d'outil avec les touches MAJ et MAJ+TAB. Se déplacer vers les boutons suivant ou précédent de la barre d'outils avec les touches FLÈCHE DROITE et FLÈCHE GAUCHE. Appuyer sur la barre d'espace ou la touche ENTRÉE pour activer le bouton de barre d'outils."}, {name:"Dialogue de l'éditeur",legend:"Inside 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."},{name:"Menu contextuel de l'éditeur",legend:"Appuyer sur ${contextMenu} ou entrer le RACCOURCI CLAVIER pour ouvrir le menu contextuel. Puis se déplacer vers l'option suivante du menu avec les touches TAB ou FLÈCHE BAS. Se déplacer vers l'option précédente avec les touches MAJ+TAB ou FLÈCHE HAUT. appuyer sur la BARRE D'ESPACE ou la touche ENTRÉE pour sélectionner l'option du menu. Oovrir le sous-menu de l'option courante avec la BARRE D'ESPACE ou les touches ENTRÉE ou FLÈCHE DROITE. Revenir à l'élément de menu parent avec les touches ÉCHAP ou FLÈCHE GAUCHE. Fermer le menu contextuel avec ÉCHAP."}, {name:"Zone de liste de l'éditeur",legend:"Dans la liste en menu déroulant, se déplacer vers l'élément suivant de la liste avec les touches TAB ou FLÈCHE BAS. Se déplacer vers l'élément précédent de la liste avec les touches MAJ+TAB ou FLÈCHE HAUT. Appuyer sur la BARRE D'ESPACE ou sur ENTRÉE pour sélectionner l'option dans la liste. Appuyer sur ÉCHAP pour fermer le menu déroulant."},{name:"Barre d'emplacement des éléments de l'éditeur",legend:"Appuyer sur ${elementsPathFocus} pour naviguer vers la barre d'emplacement des éléments de l'éditeur. Se déplacer vers le bouton d'élément suivant avec les touches TAB ou FLÈCHE DROITE. Se déplacer vers le bouton d'élément précédent avec les touches MAJ+TAB ou FLÈCHE GAUCHE. Appuyer sur la BARRE D'ESPACE ou sur ENTRÉE pour sélectionner l'élément dans l'éditeur."}]}, {name:"Commandes",items:[{name:" Annuler la commande",legend:"Appuyer sur ${undo}"},{name:"Refaire la commande",legend:"Appuyer sur ${redo}"},{name:" Commande gras",legend:"Appuyer sur ${bold}"},{name:" Commande italique",legend:"Appuyer sur ${italic}"},{name:" Commande souligné",legend:"Appuyer sur ${underline}"},{name:" Commande lien",legend:"Appuyer sur ${link}"},{name:" Commande enrouler la barre d'outils",legend:"Appuyer sur ${toolbarCollapse}"},{name:"Accéder à la précédente commande d'espace de mise au point", legend:"Appuyez sur ${accessPreviousSpace} pour accéder à l'espace hors d'atteinte le plus proche avant le caret, par exemple: deux éléments HR adjacents. Répétez la combinaison de touches pour atteindre les espaces de mise au point distants."},{name:"Accès à la prochaine commande de l'espace de mise au point",legend:"Appuyez sur ${accessNextSpace} pour accéder au plus proche espace de mise au point hors d'atteinte après le caret, par exemple: deux éléments HR adjacents. répétez la combinaison de touches pour atteindre les espace de mise au point distants."}, {name:" Aide Accessibilité",legend:"Appuyer sur ${a11yHelp}"}]}],backspace:"Retour arrière",tab:"Tabulation",enter:"Entrée",shift:"Majuscule",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Verr. Maj.",escape:"Échap",pageUp:"Page supérieure",pageDown:"Page inférieure",end:"Fin",home:"Retour",leftArrow:"Flèche gauche",upArrow:"Flèche haute",rightArrow:"Flèche droite",downArrow:"Flèche basse",insert:"Insertion","delete":"Supprimer",leftWindowKey:"Touche Windows gauche",rightWindowKey:"Touche Windows droite", selectKey:"Touche menu",numpad0:"Pavé numérique 0",numpad1:"Pavé numérique 1",numpad2:"Pavé numérique 2",numpad3:"Pavé numérique 3",numpad4:"Pavé numérique 4",numpad5:"Pavé numérique 5",numpad6:"Pavé numérique 6",numpad7:"Pavé numérique 7",numpad8:"Pavé numérique 8",numpad9:"Pavé numérique 9",multiply:"Multiplier",add:"Addition",subtract:"Soustraire",decimalPoint:"Point décimal",divide:"Diviser",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12", numLock:"Verrouillage numérique",scrollLock:"Arrêt défilement",semiColon:"Point virgule",equalSign:"Signe égal",comma:"Virgule",dash:"Tiret",period:"Point",forwardSlash:"Barre oblique",graveAccent:"Accent grave",openBracket:"Parenthèse ouvrante",backSlash:"Barre oblique inverse",closeBracket:"Parenthèse fermante",singleQuote:"Apostrophe"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/id.js0000644000201500020150000000757614514267702025077 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","id",{title:"Accessibility Instructions",contents:"Bantuan. Tekan ESC untuk menutup dialog ini.",legend:[{name:"Umum",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside 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."}, {name:"Editor Context Menu",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."},{name:"Editor List Box",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."}, {name:"Editor Element Path Bar",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."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",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."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/ug.js0000644000201500020150000001360714514267702025106 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","ug",{title:"قوشۇمچە چۈشەندۈرۈش",contents:"ياردەم مەزمۇنى. بۇ سۆزلەشكۈنى ياپماقچى بولسىڭىز ESC نى بېسىڭ.",legend:[{name:"ئادەتتىكى",items:[{name:"قورال بالداق تەھرىر",legend:"${toolbarFocus} بېسىلسا قورال بالداققا يېتەكلەيدۇ، TAB ياكى SHIFT+TAB ئارقىلىق قورال بالداق گۇرۇپپىسى تاللىنىدۇ، ئوڭ سول يا ئوقتا توپچا تاللىنىدۇ، بوشلۇق ياكى Enter كۇنۇپكىسىدا تاللانغان توپچىنى قوللىنىدۇ."},{name:"تەھرىرلىگۈچ سۆزلەشكۈسى",legend:"Inside 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."}, {name:"تەھرىرلىگۈچ تىل مۇھىت تىزىملىكى",legend:"${contextMenu} ياكى ئەپ كۇنۇپكىسىدا تىل مۇھىت تىزىملىكىنى ئاچىدۇ. ئاندىن TAB ياكى ئاستى يا ئوق كۇنۇپكىسىدا كېيىنكى تىزىملىك تۈرىگە يۆتكەيدۇ؛ SHIFT+TAB ياكى ئۈستى يا ئوق كۇنۇپكىسىدا ئالدىنقى تىزىملىك تۈرىگە يۆتكەيدۇ. بوشلۇق ياكى ENTER كۇنۇپكىسىدا تىزىملىك تۈرىنى تاللايدۇ. بوشلۇق، ENTER ياكى ئوڭ يا ئوق كۇنۇپكىسىدا تارماق تىزىملىكنى ئاچىدۇ. قايتىش تىزىملىكىگە ESC ياكى سول يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. ESC كۇنۇپكىسىدا تىل مۇھىت تىزىملىكى تاقىلىدۇ."},{name:"تەھرىرلىگۈچ تىزىمى", legend:"تىزىم قۇتىسىدا، كېيىنكى تىزىم تۈرىگە يۆتكەشتە TAB ياكى ئاستى يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. ئالدىنقى تىزىم تۈرىگە يۆتكەشتە SHIFT+TAB ياكى ئۈستى يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. بوشلۇق ياكى ENTER كۇنۇپكىسىدا تىزىم تۈرىنى تاللايدۇ.ESC كۇنۇپكىسىدا تىزىم قۇتىسىنى يىغىدۇ."},{name:"تەھرىرلىگۈچ ئېلېمېنت يول بالداق",legend:"${elementsPathFocus} بېسىلسا ئېلېمېنت يول بالداققا يېتەكلەيدۇ، TAB ياكى ئوڭ يا ئوقتا كېيىنكى ئېلېمېنت تاللىنىدۇ، SHIFT+TAB ياكى سول يا ئوقتا ئالدىنقى ئېلېمېنت تاللىنىدۇ، بوشلۇق ياكى Enter كۇنۇپكىسىدا تەھرىرلىگۈچتىكى ئېلېمېنت تاللىنىدۇ."}]}, {name:"بۇيرۇق",items:[{name:"بۇيرۇقتىن يېنىۋال",legend:"${undo} نى بېسىڭ"},{name:"قايتىلاش بۇيرۇقى",legend:"${redo} نى بېسىڭ"},{name:"توملىتىش بۇيرۇقى",legend:"${bold} نى بېسىڭ"},{name:"يانتۇ بۇيرۇقى",legend:"${italic} نى بېسىڭ"},{name:"ئاستى سىزىق بۇيرۇقى",legend:"${underline} نى بېسىڭ"},{name:"ئۇلانما بۇيرۇقى",legend:"${link} نى بېسىڭ"},{name:"قورال بالداق قاتلاش بۇيرۇقى",legend:"${toolbarCollapse} نى بېسىڭ"},{name:"ئالدىنقى فوكۇس نۇقتىسىنى زىيارەت قىلىدىغان بۇيرۇق",legend:"${accessPreviousSpace} بېسىپ ^ بەلگىسىگە ئەڭ يېقىن زىيارەت قىلغىلى بولمايدىغان فوكۇس نۇقتا رايونىنىڭ ئالدىنى زىيارەت قىلىدۇ، مەسىلەن: ئۆز ئارا قوشنا ئىككى HR ئېلېمېنت. بۇ بىرىكمە كۇنۇپكا تەكرارلانسا يىراقتىكى فوكۇس نۇقتا رايونىغا يەتكىلى بولىدۇ."}, {name:"كېيىنكى فوكۇس نۇقتىسىنى زىيارەت قىلىدىغان بۇيرۇق",legend:"${accessNextSpace} بېسىپ ^ بەلگىسىگە ئەڭ يېقىن زىيارەت قىلغىلى بولمايدىغان فوكۇس نۇقتا رايونىنىڭ كەينىنى زىيارەت قىلىدۇ، مەسىلەن: ئۆز ئارا قوشنا ئىككى HR ئېلېمېنت. بۇ بىرىكمە كۇنۇپكا تەكرارلانسا يىراقتىكى فوكۇس نۇقتا رايونىغا يەتكىلى بولىدۇ."},{name:"توسالغۇسىز لايىھە چۈشەندۈرۈشى",legend:"${a11yHelp} نى بېسىڭ"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape", pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1",numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract", decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash",graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/ar.js0000644000201500020150000000762414514267702025077 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","ar",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"عام",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside 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."}, {name:"Editor Context Menu",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."},{name:"Editor List Box",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."}, {name:"Editor Element Path Bar",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."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",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."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"إضافة",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"تقسيم",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"فاصلة",dash:"Dash",period:"نقطة",forwardSlash:"Forward Slash", graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/sr.js0000644000201500020150000000760614514267702025121 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","sr",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"Опште",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside 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."}, {name:"Editor Context Menu",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."},{name:"Editor List Box",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."}, {name:"Editor Element Path Bar",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."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",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."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/en-gb.js0000644000201500020150000000760614514267702025465 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","en-gb",{title:"Accessibility Instructions",contents:"Help Contents. To close this dialog press ESC.",legend:[{name:"General",items:[{name:"Editor Toolbar",legend:"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT+TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button."},{name:"Editor Dialog",legend:"Inside 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."}, {name:"Editor Context Menu",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."},{name:"Editor List Box",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."}, {name:"Editor Element Path Bar",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."}]},{name:"Commands",items:[{name:" Undo command",legend:"Press ${undo}"},{name:" Redo command",legend:"Press ${redo}"},{name:" Bold command",legend:"Press ${bold}"},{name:" Italic command",legend:"Press ${italic}"},{name:" Underline command", legend:"Press ${underline}"},{name:" Link command",legend:"Press ${link}"},{name:" Toolbar Collapse command",legend:"Press ${toolbarCollapse}"},{name:" Access previous focus space command",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."},{name:" Access next focus space command",legend:"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces."}, {name:" Accessibility Help",legend:"Press ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down",end:"End",home:"Home",leftArrow:"Left Arrow",upArrow:"Up Arrow",rightArrow:"Right Arrow",downArrow:"Down Arrow",insert:"Insert","delete":"Delete",leftWindowKey:"Left Windows key",rightWindowKey:"Right Windows key",selectKey:"Select key",numpad0:"Numpad 0",numpad1:"Numpad 1", numpad2:"Numpad 2",numpad3:"Numpad 3",numpad4:"Numpad 4",numpad5:"Numpad 5",numpad6:"Numpad 6",numpad7:"Numpad 7",numpad8:"Numpad 8",numpad9:"Numpad 9",multiply:"Multiply",add:"Add",subtract:"Subtract",decimalPoint:"Decimal Point",divide:"Divide",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Semicolon",equalSign:"Equal Sign",comma:"Comma",dash:"Dash",period:"Period",forwardSlash:"Forward Slash", graveAccent:"Grave Accent",openBracket:"Open Bracket",backSlash:"Backslash",closeBracket:"Close Bracket",singleQuote:"Single Quote"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/a11yhelp/dialogs/lang/hu.js0000644000201500020150000001115514514267702025103 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.plugins.setLang("a11yhelp","hu",{title:"Kisegítő utasítások",contents:"Súgó tartalmak. A párbeszédablak bezárásához nyomjon ESC-et.",legend:[{name:"Általános",items:[{name:"Szerkesztő Eszköztár",legend:"Nyomjon ${toolbarFocus} hogy kijelölje az eszköztárat. A következő és előző eszköztár csoporthoz a TAB és SHIFT+TAB-al juthat el. A következő és előző eszköztár gombhoz a BAL NYÍL vagy JOBB NYÍL gombbal juthat el. Nyomjon SPACE-t vagy ENTER-t hogy aktiválja az eszköztár gombot."},{name:"Szerkesző párbeszéd ablak", legend:"Inside 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."},{name:"Szerkesztő helyi menü",legend:"Nyomjon ${contextMenu}-t vagy ALKALMAZÁS BILLENTYŰT a helyi menü megnyitásához. Ezután a következő menüpontra léphet a TAB vagy LEFELÉ NYÍLLAL. Az előző opciót a SHIFT+TAB vagy FELFELÉ NYÍLLAL érheti el. Nyomjon SPACE-t vagy ENTER-t a menüpont kiválasztásához. A jelenlegi menüpont almenüjének megnyitásához nyomjon SPACE-t vagy ENTER-t, vagy JOBB NYILAT. A főmenühöz való visszatéréshez nyomjon ESC-et vagy BAL NYILAT. A helyi menü bezárása az ESC billentyűvel lehetséges."}, {name:"Szerkesztő lista",legend:"A listán belül a következő elemre a TAB vagy LEFELÉ NYÍLLAL mozoghat. Az előző elem kiválasztásához nyomjon SHIFT+TAB-ot vagy FELFELÉ NYILAT. Nyomjon SPACE-t vagy ENTER-t az elem kiválasztásához. Az ESC billentyű megnyomásával bezárhatja a listát."},{name:"Szerkesztő elem utak sáv",legend:"Nyomj ${elementsPathFocus} hogy kijelöld a elemek út sávját. A következő elem gombhoz a TAB-al vagy a JOBB NYÍLLAL juthatsz el. Az előző gombhoz a SHIFT+TAB vagy BAL NYÍLLAL mehetsz. A SPACE vagy ENTER billentyűvel kiválaszthatod az elemet a szerkesztőben."}]}, {name:"Parancsok",items:[{name:"Parancs visszavonása",legend:"Nyomj ${undo}"},{name:"Parancs megismétlése",legend:"Nyomjon ${redo}"},{name:"Félkövér parancs",legend:"Nyomjon ${bold}"},{name:"Dőlt parancs",legend:"Nyomjon ${italic}"},{name:"Aláhúzott parancs",legend:"Nyomjon ${underline}"},{name:"Link parancs",legend:"Nyomjon ${link}"},{name:"Szerkesztősáv összecsukása parancs",legend:"Nyomjon ${toolbarCollapse}"},{name:"Hozzáférés az előző fókusz helyhez parancs",legend:"Nyomj ${accessNextSpace} hogy hozzáférj a legközelebbi elérhetetlen fókusz helyhez a hiányjel előtt, például: két szomszédos HR elemhez. Ismételd meg a billentyűkombinációt hogy megtaláld a távolabbi fókusz helyeket."}, {name:"Hozzáférés a következő fókusz helyhez parancs",legend:"Nyomj ${accessNextSpace} hogy hozzáférj a legközelebbi elérhetetlen fókusz helyhez a hiányjel után, például: két szomszédos HR elemhez. Ismételd meg a billentyűkombinációt hogy megtaláld a távolabbi fókusz helyeket."},{name:"Kisegítő súgó",legend:"Nyomjon ${a11yHelp}"}]}],backspace:"Backspace",tab:"Tab",enter:"Enter",shift:"Shift",ctrl:"Ctrl",alt:"Alt",pause:"Pause",capslock:"Caps Lock",escape:"Escape",pageUp:"Page Up",pageDown:"Page Down", end:"End",home:"Home",leftArrow:"balra nyíl",upArrow:"felfelé nyíl",rightArrow:"jobbra nyíl",downArrow:"lefelé nyíl",insert:"Insert","delete":"Delete",leftWindowKey:"bal Windows-billentyű",rightWindowKey:"jobb Windows-billentyű",selectKey:"Billentyű választása",numpad0:"Számbillentyűk 0",numpad1:"Számbillentyűk 1",numpad2:"Számbillentyűk 2",numpad3:"Számbillentyűk 3",numpad4:"Számbillentyűk 4",numpad5:"Számbillentyűk 5",numpad6:"Számbillentyűk 6",numpad7:"Számbillentyűk 7",numpad8:"Számbillentyűk 8", numpad9:"Számbillentyűk 9",multiply:"Szorzás",add:"Hozzáadás",subtract:"Kivonás",decimalPoint:"Tizedespont",divide:"Osztás",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",numLock:"Num Lock",scrollLock:"Scroll Lock",semiColon:"Pontosvessző",equalSign:"Egyenlőségjel",comma:"Vessző",dash:"Kötőjel",period:"Pont",forwardSlash:"Perjel",graveAccent:"Visszafelé dőlő ékezet",openBracket:"Nyitó szögletes zárójel",backSlash:"fordított perjel",closeBracket:"Záró szögletes zárójel", singleQuote:"szimpla idézőjel"});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/wsc/0000755000201500020150000000000014514267702020733 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/wsc/README.md0000644000201500020150000000171214514267702022213 0ustar puckpuckCKEditor WebSpellChecker Plugin =============================== This plugin brings Web Spell Checker (WSC) into CKEditor. WSC is "installation-less", using the web-services of [WebSpellChecker.net](http://www.webspellchecker.net/). It's an out of the box solution. Installation ------------ 1. Clone/copy this repository contents in a new "plugins/wsc" folder in your CKEditor installation. 2. Enable the "wsc" plugin in the CKEditor configuration file (config.js): config.extraPlugins = 'wsc'; That's all. WSC will appear on the editor toolbar and will be ready to use. License ------- Licensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html). See LICENSE.md for more information. Developed in cooperation with [WebSpellChecker.net](http://www.webspellchecker.net/). rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/wsc/dialogs/0000755000201500020150000000000014514267702022355 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/wsc/dialogs/wsc_ie.js0000644000201500020150000000637414514267702024176 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ CKEDITOR.dialog.add("checkspell",function(a){function c(a,c){var d=0;return function(){"function"==typeof window.doSpell?("undefined"!=typeof e&&window.clearInterval(e),j(a)):180==d++&&window._cancelOnError(c)}}function j(c){var f=new window._SP_FCK_LangCompare,b=CKEDITOR.getUrl(a.plugins.wsc.path+"dialogs/"),e=b+"tmpFrameset.html";window.gFCKPluginName="wsc";f.setDefaulLangCode(a.config.defaultLanguage);window.doSpell({ctrl:g,lang:a.config.wsc_lang||f.getSPLangCode(a.langCode),intLang:a.config.wsc_uiLang|| f.getSPLangCode(a.langCode),winType:d,onCancel:function(){c.hide()},onFinish:function(b){a.focus();c.getParentEditor().setData(b.value);c.hide()},staticFrame:e,framesetPath:e,iframePath:b+"ciframe.html",schemaURI:b+"wsc.css",userDictionaryName:a.config.wsc_userDictionaryName,customDictionaryName:a.config.wsc_customDictionaryIds&&a.config.wsc_customDictionaryIds.split(","),domainName:a.config.wsc_domainName});CKEDITOR.document.getById(h).setStyle("display","none");CKEDITOR.document.getById(d).setStyle("display", "block")}var b=CKEDITOR.tools.getNextNumber(),d="cke_frame_"+b,g="cke_data_"+b,h="cke_error_"+b,e,b=document.location.protocol||"http:",i=a.lang.wsc.notAvailable,k='', l=a.config.wsc_customLoaderScript||b+"//loader.webspellchecker.net/sproxy_fck/sproxy.php?plugin=fck2&customerid="+a.config.wsc_customerId+"&cmd=script&doc=wsc&schema=22";a.config.wsc_customLoaderScript&&(i+='

        '+a.lang.wsc.errorLoading.replace(/%s/g,a.config.wsc_customLoaderScript)+"

        ");window._cancelOnError=function(c){if("undefined"==typeof window.WSC_Error){CKEDITOR.document.getById(d).setStyle("display", "none");var b=CKEDITOR.document.getById(h);b.setStyle("display","block");b.setHtml(c||a.lang.wsc.notAvailable)}};return{title:a.config.wsc_dialogTitle||a.lang.wsc.title,minWidth:485,minHeight:380,buttons:[CKEDITOR.dialog.cancelButton],onShow:function(){var b=this.getContentElement("general","content").getElement();b.setHtml(k);b.getChild(2).setStyle("height",this._.contentSize.height+"px");"function"!=typeof window.doSpell&&CKEDITOR.document.getHead().append(CKEDITOR.document.createElement("script", {attributes:{type:"text/javascript",src:l}}));b=a.getData();CKEDITOR.document.getById(g).setValue(b);e=window.setInterval(c(this,i),250)},onHide:function(){window.ooo=void 0;window.int_framsetLoaded=void 0;window.framesetLoaded=void 0;window.is_window_opened=!1},contents:[{id:"general",label:a.config.wsc_dialogTitle||a.lang.wsc.title,padding:0,elements:[{type:"html",id:"content",html:""}]}]}}); CKEDITOR.dialog.on("resize",function(a){var a=a.data,c=a.dialog;"checkspell"==c._.name&&((c=(c=c.getContentElement("general","content").getElement())&&c.getChild(2))&&c.setSize("height",a.height),c&&c.setSize("width",a.width))});rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/wsc/dialogs/wsc.js0000644000201500020150000013452514514267702023521 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ (function(){function v(a){return a&&a.domId&&a.getInputElement().$?a.getInputElement():a&&a.$?a:!1}function E(a){if(!a)throw"Languages-by-groups list are required for construct selectbox";var c=[],d="",e;for(e in a)for(var f in a[e]){var g=a[e][f];"en_US"==g?d=g:c.push(g)}c.sort();d&&c.unshift(d);return{getCurrentLangGroup:function(c){a:{for(var d in a)for(var e in a[d])if(e.toUpperCase()===c.toUpperCase()){c=d;break a}c=""}return c},setLangList:function(){var c={},d;for(d in a)for(var e in a[d])c[a[d][e]]= e;return c}()}}var h=function(){var a=function(a,b,e){var e=e||{},f=e.expires;if("number"==typeof f&&f){var g=new Date;g.setTime(g.getTime()+1E3*f);f=e.expires=g}f&&f.toUTCString&&(e.expires=f.toUTCString());var b=encodeURIComponent(b),a=a+"="+b,i;for(i in e)b=e[i],a+="; "+i,!0!==b&&(a+="="+b);document.cookie=a};return{postMessage:{init:function(a){window.addEventListener?window.addEventListener("message",a,!1):window.attachEvent("onmessage",a)},send:function(a){var b=Object.prototype.toString,e= a.fn||null,f=a.id||"",g=a.target||window,i=a.message||{id:f};a.message&&"[object Object]"==b.call(a.message)&&(a.message.id||(a.message.id=f),i=a.message);a=window.JSON.stringify(i,e);g.postMessage(a,"*")},unbindHandler:function(a){window.removeEventListener?window.removeEventListener("message",a,!1):window.detachEvent("onmessage",a)}},hash:{create:function(){},parse:function(){}},cookie:{set:a,get:function(a){return(a=document.cookie.match(RegExp("(?:^|; )"+a.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, "\\$1")+"=([^;]*)")))?decodeURIComponent(a[1]):void 0},remove:function(c){a(c,"",{expires:-1})}},misc:{findFocusable:function(a){var b=null;a&&(b=a.find("a[href], area[href], input, select, textarea, button, *[tabindex], *[contenteditable]"));return b},isVisible:function(a){return!(0===a.offsetWidth||0==a.offsetHeight||"none"===(document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(a,null).display:a.currentStyle?a.currentStyle.display:a.style.display))}, hasClass:function(a,b){return!(!a.className||!a.className.match(RegExp("(\\s|^)"+b+"(\\s|$)")))}}}}(),a=a||{};a.TextAreaNumber=null;a.load=!0;a.cmd={SpellTab:"spell",Thesaurus:"thes",GrammTab:"grammar"};a.dialog=null;a.optionNode=null;a.selectNode=null;a.grammerSuggest=null;a.textNode={};a.iframeMain=null;a.dataTemp="";a.div_overlay=null;a.textNodeInfo={};a.selectNode={};a.selectNodeResponce={};a.langList=null;a.langSelectbox=null;a.banner="";a.show_grammar=null;a.div_overlay_no_check=null;a.targetFromFrame= {};a.onLoadOverlay=null;a.LocalizationComing={};a.OverlayPlace=null;a.sessionid="";a.LocalizationButton={ChangeTo_button:{instance:null,text:"Change to",localizationID:"ChangeTo"},ChangeAll:{instance:null,text:"Change All"},IgnoreWord:{instance:null,text:"Ignore word"},IgnoreAllWords:{instance:null,text:"Ignore all words"},Options:{instance:null,text:"Options",optionsDialog:{instance:null}},AddWord:{instance:null,text:"Add word"},FinishChecking_button:{instance:null,text:"Finish Checking",localizationID:"FinishChecking"}, FinishChecking_button_block:{instance:null,text:"Finish Checking",localizationID:"FinishChecking"}};a.LocalizationLabel={ChangeTo_label:{instance:null,text:"Change to",localizationID:"ChangeTo"},Suggestions:{instance:null,text:"Suggestions"},Categories:{instance:null,text:"Categories"},Synonyms:{instance:null,text:"Synonyms"}};var F=function(b){var c,d,e;for(e in b)c=(c=a.dialog.getContentElement(a.dialog._.currentTabId,e))?c.getElement():b[e].instance.getElement().getFirst()||b[e].instance.getElement(), d=b[e].localizationID||e,c.setText(a.LocalizationComing[d])},G=function(b){var c,d,e;for(e in b)if(c=a.dialog.getContentElement(a.dialog._.currentTabId,e),c||(c=b[e].instance),c.setLabel)d=b[e].localizationID||e,c.setLabel(a.LocalizationComing[d]+":")},n,w;a.framesetHtml=function(b){return"'};a.setIframe=function(b,c){var d; d=a.framesetHtml(c);var e=a.iframeNumber+"_"+c;b.getElement().setHtml(d);d=document.getElementById(e);d=d.contentWindow?d.contentWindow:d.contentDocument.document?d.contentDocument.document:d.contentDocument;d.document.open();d.document.write('iframe

        rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/wsc/dialogs/tmpFrameset.html0000644000201500020150000000361714514267702025541 0ustar puckpuck rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/wsc/dialogs/wsc.css0000644000201500020150000000232014514267702023660 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.html or http://ckeditor.com/license */ html, body { background-color: transparent; margin: 0px; padding: 0px; } body { padding: 10px; } body, td, input, select, textarea { font-size: 11px; font-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana; } .midtext { padding:0px; margin:10px; } .midtext p { padding:0px; margin:10px; } .Button { border: #737357 1px solid; color: #3b3b1f; background-color: #c7c78f; } .PopupTabArea { color: #737357; background-color: #e3e3c7; } .PopupTitleBorder { border-bottom: #d5d59d 1px solid; } .PopupTabEmptyArea { padding-left: 10px; border-bottom: #d5d59d 1px solid; } .PopupTab, .PopupTabSelected { border-right: #d5d59d 1px solid; border-top: #d5d59d 1px solid; border-left: #d5d59d 1px solid; padding: 3px 5px 3px 5px; color: #737357; } .PopupTab { margin-top: 1px; border-bottom: #d5d59d 1px solid; cursor: pointer; } .PopupTabSelected { font-weight: bold; cursor: default; padding-top: 4px; border-bottom: #f1f1e3 1px solid; background-color: #f1f1e3; } rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/wsc/LICENSE.md0000644000201500020150000000270214514267702022340 0ustar puckpuckSoftware License Agreement ========================== **CKEditor WSC Plugin** Copyright © 2012, [CKSource](http://cksource.com) - Frederico Knabben. All rights reserved. Licensed under the terms of any of the following licenses at your choice: * GNU General Public License Version 2 or later (the "GPL"): http://www.gnu.org/licenses/gpl.html * GNU Lesser General Public License Version 2.1 or later (the "LGPL"): http://www.gnu.org/licenses/lgpl.html * Mozilla Public License Version 1.1 or later (the "MPL"): http://www.mozilla.org/MPL/MPL-1.1.html You are not required to, but if you want to explicitly declare the license you have chosen to be bound to when using, reproducing, modifying and distributing this software, just include a text file titled "legal.txt" in your version of this software, indicating your license choice. Sources of Intellectual Property Included in this plugin -------------------------------------------------------- Where not otherwise indicated, all plugin content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, the plugin will incorporate work done by developers outside of CKSource with their express permission. Trademarks ---------- CKEditor is a trademark of CKSource - Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders. rt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/clipboard/0000755000201500020150000000000014514267702022076 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/clipboard/dialogs/0000755000201500020150000000000014514267702023520 5ustar puckpuckrt-4.4.7/devel/third-party/ckeditor-4.5.3/plugins/clipboard/dialogs/paste.js0000644000201500020150000000702514514267702025176 0ustar puckpuck/* Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved. For licensing, see LICENSE.md or http://ckeditor.com/license */ CKEDITOR.dialog.add("paste",function(c){function h(a){var b=new CKEDITOR.dom.document(a.document),f=b.getBody(),d=b.getById("cke_actscrpt");d&&d.remove();f.setAttribute("contenteditable",!0);if(CKEDITOR.env.ie&&8>CKEDITOR.env.version)b.getWindow().on("blur",function(){b.$.selection.empty()});b.on("keydown",function(a){var a=a.data,b;switch(a.getKeystroke()){case 27:this.hide();b=1;break;case 9:case CKEDITOR.SHIFT+9:this.changeFocus(1),b=1}b&&a.preventDefault()},this);c.fire("ariaWidget",new CKEDITOR.dom.element(a.frameElement)); b.getWindow().getFrame().removeCustomData("pendingFocus")&&f.focus()}var e=c.lang.clipboard;c.on("pasteDialogCommit",function(a){a.data&&c.fire("paste",{type:"auto",dataValue:a.data,method:"paste",dataTransfer:CKEDITOR.plugins.clipboard.initPasteDataTransfer()})},null,null,1E3);return{title:e.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?370:350,minHeight:CKEDITOR.env.quirks?250:245,onShow:function(){this.parts.dialog.$.offsetHeight;this.setupContent();this.parts.title.setHtml(this.customTitle|| e.title);this.customTitle=null},onLoad:function(){(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)&&"rtl"==c.lang.dir&&this.parts.contents.setStyle("overflow","hidden")},onOk:function(){this.commitContent()},contents:[{id:"general",label:c.lang.common.generalTab,elements:[{type:"html",id:"securityMsg",html:'
        '+e.securityMsg+"
        "},{type:"html",id:"pasteMsg",html:'
        '+e.pasteMsg+"
        "},{type:"html",id:"editing_area", style:"width:100%;height:100%",html:"",focus:function(){var a=this.getInputElement(),b=a.getFrameDocument().getBody();!b||b.isReadOnly()?a.setCustomData("pendingFocus",1):b.focus()},setup:function(){var a=this.getDialog(),b='